IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Fortran Discussion :

erreur incomprehensible dans un petit code


Sujet :

Fortran

  1. #1
    Débutant
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Points : 119
    Points
    119
    Par défaut erreur incomprehensible dans un petit code
    Bonjour,
    Je veux bien tracer une courbe 1D à une varible donner comme suit :
    gamma(x)=2 si x entre -0.5 et 0.5
    gamma(x)=1 ailleurs.
    J ai taper un petit code sur mon PC avec windows, ca marche tres bien, mais quand je suis passer à une machine lunix avec gfortran tout est boulverser, alors ou est le problème?

    Voila ce que j ai recu sur lunix :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     ht=  5.00000000000000028E-002
     gamma=   9.5135076986687324
    et voilà mon petit code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    C     fonction test
     
            real function gamma(x)
     
            double precision x
     
            if(x.GT.-0.5.AND.0.5.GT.x) then
     
                 gamma =2.d0
     
            else
     
                 gamma =1.d0
     
            end if
     
            return
     
            end
     
     
            program ghg
           integer i,j,f,j1,j2,ss,M,p
     
           parameter (M=2**5)
     
           parameter(p=22)
            double precision ht
            ht=0.05d0
            print*,'ht=',ht
            print*,'gamma=',gamma(2.d0*ht)
           open(2,file='gammanexx.dat',status='unknown')
     
            do i=-p,p
     
                write(2,*) i*ht, gamma(i*ht)
     
            end do
     
            close(2)
            end
    merci

  2. #2
    Membre habitué Avatar de Grame
    Profil pro
    Inscrit en
    Août 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Août 2007
    Messages : 148
    Points : 192
    Points
    192
    Par défaut
    J'obtiens le même résultat.

    En ajoutant des print *, pour déboguer, je m'aperçois
    que le programme n'entre pas dans la fonction gamma.

    Conclusion : le fortran unix que j'utilise (gfortran) contient une fonction intrinsèque gamma.

    En renommant ta fonction zzzgamma, j'obtiens bien ce que tu veux :

    ht= 5.00000000000000028E-002
    zzzgamma= 2.0000000
    Voili, voila.
    Sois prudent en utilisant des réels simple et double précision dans la même
    routine, il y a toujours un moment où on risque de s'emmêler les pinceaux.

Discussions similaires

  1. erreur dans petit code
    Par sarainformatique dans le forum Débuter
    Réponses: 3
    Dernier message: 15/01/2009, 11h26
  2. [DataGridView] lenteur incompréhensible dans un petit code
    Par AsPrO dans le forum Windows Forms
    Réponses: 21
    Dernier message: 26/06/2008, 15h03
  3. code erreur #nom dans formulaire
    Par valerie02 dans le forum IHM
    Réponses: 15
    Dernier message: 23/08/2007, 23h17
  4. erreur syntaxe dans le code
    Par Daniela dans le forum Access
    Réponses: 3
    Dernier message: 18/12/2006, 12h43
  5. Erreur 3141 dans exécution de code
    Par zoom61 dans le forum Access
    Réponses: 13
    Dernier message: 23/03/2006, 17h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo