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 :

[Débutant] Comprendre les différences entre real et real*8


Sujet :

Fortran

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Janvier 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2018
    Messages : 3
    Points : 3
    Points
    3
    Par défaut [Débutant] Comprendre les différences entre real et real*8
    Bonjour à tous,

    Je débute sur Fortran (j'en suis aux bases), et j'ai aujourd'hui écrit un court code pour un tuto :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    program loop
    implicit none
    real :: i
    do i=0,20,0.1
    print *,i
    end do
    end program loop
    Puis je l'ai changé sous les directives d'un collègue en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    program loop
    implicit none
    real*8 :: i
    do i=0,20,0.1
    print *,i
    end do
    end program loop
    Seule différence : "real*8" à la place de "real" simple

    Ce programme loop compte simplement de 0 à 20 par incréments de 0,1.

    Etant donné que la variable est "real", il y a un imprécision dans les deux cas.

    La question est la suivante :

    Pourquoi en "real", on atteint (environ) 20, mais pas en "real*8"?

    Merci pour l'attention apportée

    TyfainFaber

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    Un conseil, change de tuto...
    Je le dis très sérieusement; car aucun tuto ne devrais te dire de faire des boucles avec des indice non-entier.
    Et pour la bonne raison qu'un nombre flottant (qu'il soit simple ou double précision) est nécessairement tronqué; donc la somme de nombres flottants contient nécessairement des erreurs d’arrondi. Ce qui fait que dans un cas "ça marche" et pas dans l'autre.

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Janvier 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2018
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Ehouarn Voir le message
    Bonjour,

    Un conseil, change de tuto...
    Je le dis très sérieusement; car aucun tuto ne devrais te dire de faire des boucles avec des indice non-entier.
    Et pour la bonne raison qu'un nombre flottant (qu'il soit simple ou double précision) est nécessairement tronqué; donc la somme de nombres flottants contient nécessairement des erreurs d’arrondi. Ce qui fait que dans un cas "ça marche" et pas dans l'autre.
    Merci pour ta réponse, Ehouan.

    A vrai dire, le code de base avait "integer" en variable.

    C'est moi qui ai changé pour "real" afin de découvrir les implications des changements de variables.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Citation Envoyé par TyfainFaber Voir le message
    C'est moi qui ai changé pour "real" afin de découvrir les implications des changements de variables.
    Ah OK. Au moins tu auras appris au passage qu'il ne faut pas faire de boucle indicées sur autre chose que des entiers.

    Ceci dit, le compilateur devrait t'avoir averti lors de la compilation que ce n'était pas une bonne idée; à condition que tu ais mis les options de débogage qu'il faut (et c'est très fortement recommandé quand on développe).

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Janvier 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2018
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Ehouarn Voir le message
    Ceci dit, le compilateur devrait t'avoir averti lors de la compilation que ce n'était pas une bonne idée; à condition que tu ais mis les options de débogage qu'il faut (et c'est très fortement recommandé quand on développe).
    Euh, non
    Pas de message quand je compile

    Où sont les options du compilateur? Je ne comprends vraiment rien à la structure de MVS...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    Citation Envoyé par TyfainFaber Voir le message
    Euh, non
    Pas de message quand je compile

    Où sont les options du compilateur? Je ne comprends vraiment rien à la structure de MVS...
    Je n'utilises pas MVS, donc je ne pourrai aider là-dessus.
    Mais il y a forcément ou doc et ou des tutoriels qui traînent...

    Le point clé est de trouver où spécifier les options de compilation, et d'y ajouter celles qui faut (vérification de la bonne initialisation du contenu des variables, du non-dépassement des capacité de tableaux, etc. à nouveau là il faut avoir consulté la doc du compilateur...)

    Bon courage.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/12/2016, 16h29
  2. Réponses: 9
    Dernier message: 12/07/2011, 17h25
  3. Les différences entre Qt3 et GTK pour développer en C ?
    Par piwee dans le forum Bibliothèques
    Réponses: 4
    Dernier message: 12/01/2006, 16h03
  4. Réponses: 3
    Dernier message: 07/05/2002, 16h06

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