Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/01/2014, à 15:49

dva2tlse

[résolu] Mon fortran ne tourne pas sur la machine rapide

Bonjour le forum; j'ai déjà posé sur ce forum des questions relatives au développement que j'ai à faire. C'est un gros programme en fortran, gros pour moi en tous cas, qui ne suis pas du tout développeur mais ingénieur mécanicien, et le problème qui se pose à moi est que sur une machine linux qui tourne vite (Red Hat je crois, 20 proc's), ça n'affiche pas bien les résultats.
  Dès les résultats intermédiaires, j'ai des "=Infinity" ou des =********* quand la valeur est trop grande pour être affichée selon le format prévu, et ça se reporte évidemment sur les résutats finaux.
  La machine sur laquelle ça tourne bien, est un vieille HP indigo neurasthénique qui est vraiment lente pour développer comme je le fais par essais-erreurs-corrections.
  Est il envisageable que la machine linux ait moins de dynamique numérique que l'aïeule, et me donne des résultats faux quand un diviseur approche zéro ?
  Merci de me donner vos avis sur la question, et y aurait il avec le compilateur gfortran une option en double registre ou double précision pour remédier à ça ?


  [.../...]




Je réponds tout seul, l'option -fdefault-real-8 que je ne connaissais pas à l'air de donner de bons résultats.
Bon week end,
David (merci alx qui a répondu plus bas)

Dernière modification par dva2tlse (Le 24/01/2014, à 16:12)


xubuntu 22.04 dans un PC assemblé
PS: Dis toto, pourquoi l'univers existe-t'il ?
Je vais y réfléchir avec Morphée et lui dès avant 22h55, donc ici, il faut se contacter auparavant.

Hors ligne

#2 Le 24/01/2014, à 16:08

Compte anonymisé

Re : [résolu] Mon fortran ne tourne pas sur la machine rapide

Bonjour,

C'est signe d'une division par zéro dans tes calculs. Le format flottant IEEE prévoit les cas Infinity et Nan (not a number) : http://fr.wikipedia.org/wiki/IEEE_754
Ta "vielle" machine ne devait pas gérer le IEEE et devait retourner la valeur max flottante quand tu divisais par zéro. La nouvelle retourne Infinty et les calculs suivants qui dépendent de cette valeur sont faux. La seule solution est de tester le diviseur avant la division et s'il est nul forcer le résultat à une grande valeur du style 1E30 (flottant 64 bits).