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 :

Fichiers data double précision et affichage en real


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Par défaut Fichiers data double précision et affichage en real
    Bonjour,
    j'ai un truc très bizarre qui passe avec moi.
    J'ai écrit un programme qui calcule une fonction, ensuite met ses valeurs dans un fichier data, mais malgré que tout mon programme est écrit en double précision, quand j'ai affiché mon fichier data, il est affiché en real ! ce qui m'étonne, alors où est le problème ?
    Merci

    Voilà mon 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
    43
    44
    45
    46
    47
     
          program rien
          integer i
          double precision h
          h=1.d-2
           open(1,file='gamma8.dat',status='unknown')
              do i=-100,100
                  write(1,*) i*h, gammasuppcompact(i*h,100,500)
              end do
            close(1)
           end
     
     
          function gammasuppcompact(x,n,m)
          integer n,m,i
          double precision f1,f2,h,pi,x,gammasuppcompact
          pi=4.d0*datan(1.d0)
          f1=0.d0
          f2=0.d0
          h=2.d0/(dble(n)*dble(m))
          do i=1,m-1
             f1=f1+gamma(x+1.d0/dble(n)-i*h)*dble(n)*
    &              (dcos((n*pi/2.d0)*(-1.d0/dble(n)+i*h)))**2
          enddo
          do i=0,m-1
             f2=f2+gamma(x+1.d0/dble(n)-i*h-h/2.d0)*n*
    &                (dcos((dble(n)*pi/2.d0)*(-1.d0/dble(n)+i*h+h/2.d0)))**2
          enddo
          gammasuppcompact=(h/6.d0)*(2.d0*f1+4.d0*f2)
          return
          end
     
          function gamma(x)
          double precision x,gamma
          gamma=1.d0+(1.d0+signe(-x**2/4.d-2+1.d0))/2.d0
          return
          end
     
          function signe(x)
          double precision x,signe
          if(x.ge.0.d0) then
             signe=1.d0
          else
             signe=-1.d0
          end if
          return
          end

  2. #2
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    utilisez les format les gars!!!!

    dans ton write tu lui demande de mettre le format par défaut ( * ) donc, comme de normalement il t'affiche les double comme cela l'arrange....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    write(1,'(2d25.15)')i*h, gammasuppcompact(i*h,100,500)
    là, il t'affichera un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    0.582325236512548D+00 0.882322876512548D+08
    tu peux lui dire de mettre un E à la place du D en utilisant le format:
    '(2e25.15)'

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Par défaut
    Merci genteur slayer , t a totalement raison, j ai oublié de mettre le format,
    par contre peut me detailler un peut cette ecriture (2d25.15)?
    merci

  4. #4
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    pour plus de précision, va voir le cours
    http://www.idris.fr/data/cours/lang/...tran_cours.pdf

    et le chapitre format (car il y en a plein d'autre)

    mais pour le 2d25.15 cela signifi, dans l'ordre: 2 objets / d :double précision / 25 caractère / 15 chiffres après la virgule

    dans les caractère, il faut compter : l'espace devant, le signe, le "0.", les chiffres significatif (ici 15), la lettre "D" et l'exposant (+00 par exemple)

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Par défaut
    bon mais quand je met write(1,'(2d25.20)') ou plus que 20 ( do i=1,74
    write(*,'(2d25.20)'),'rho(',i,')=',PP(i))
    enddo, des choses bizares apparaisent :
    *************************

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Par défaut
    Bonjour M. l'irréductible du implicit none.

    L'ensemble de tes problèmes de précision, d'affichage (même avec * comme format), ... découlent du fait que tu ne déclare pas en double precision les fonctions dans les appelants. Les fonctions retournent donc des doubles, mais ces résultats sont interprétés comme des simples par les appelants.

    Avec des implicit none, tu aurais trouvé l'erreur à la première compilation...

Discussions similaires

  1. pgadmin affichage double précision
    Par rupteur dans le forum Outils
    Réponses: 9
    Dernier message: 04/07/2012, 14h47
  2. [9i] taille des fichiers data
    Par muslem dans le forum Oracle
    Réponses: 7
    Dernier message: 20/12/2005, 10h55
  3. Réponses: 4
    Dernier message: 23/11/2005, 14h25
  4. Réponses: 3
    Dernier message: 12/11/2005, 07h32
  5. Problème ouverture fichier par double clic...
    Par sankookai dans le forum MFC
    Réponses: 4
    Dernier message: 11/05/2005, 09h13

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