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 :

Double precision et print


Sujet :

Fortran

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2013
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Double precision et print
    Bonjour,

    Je suis en train d’écrire un programme ou j'ai besoin d'une grande précision (double precision). Cependant je constate une chose bizarre lorsque je fais un print de mes variables. Par exemple j'ai un vecteur complexe (dimension 3) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    beta=(/(1.246663751424521,0.249332750284904),(0,0),(0,0)/)*1d4
    Si je fais un print de ce nombre a partir de la 8eme décimale le nombre est différent de celui que j'ai rentré. pourtant j'ai bien déclaré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    complex(kind=8),dimension(3) :: beta
    Je pense bien que c'est un problème d'arrondis et de double precision mais je ne vois pas ou j'ai commis l'erreur.
    Merci pour votre aide

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Salut,
    C'est parce que les composantes des nombres complexes sont déclarées en simple précision, puis converties pour initialiser le nombre (qui ensuite est multiplié par 1.d4). Il me semble que la syntaxe est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    program main
        implicit none
        complex(kind=8) :: c1, c2
     
        c1 = (1.246663751424521,     0.249332750284904) * 1.d4
        print '(2e24.16)', c1
     
        c2 = (0.1246663751424521D5,   0.249332750284904D4)
        print '(2e24.16)', c2
    end program main
    Ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      0.1246663808822632E+05  0.2493327558040619E+04    ! -> pb
      0.1246663751424521E+05  0.2493327502849040E+04    ! -> ok

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2013
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci bien! C'est vrai seulement pour les complexes ou aussi pour les arrays?

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    C'est valable pour déclarer tout nombre (réel ou complexe), qu'il soit scalaire ou dans un tableau.

Discussions similaires

  1. Optimisation de code et double precision
    Par Bénarès77 dans le forum Fortran
    Réponses: 4
    Dernier message: 26/11/2009, 18h34
  2. [c] double precision
    Par nakor dans le forum C
    Réponses: 4
    Dernier message: 30/10/2009, 17h06
  3. Champ BCD & Champ DOUBLE PRECISION
    Par WebPac dans le forum Oracle
    Réponses: 10
    Dernier message: 21/03/2007, 17h21
  4. IBExpert : troncature des double precision ?
    Par Magnus dans le forum Outils
    Réponses: 1
    Dernier message: 25/08/2005, 15h07
  5. Passer de DOUBLE PRECISION en NUMERIC
    Par alex4 dans le forum SQL
    Réponses: 5
    Dernier message: 18/10/2004, 16h24

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