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 :

Sortie de type Nan , QNaN


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de phy4me
    Inscrit en
    Octobre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 116
    Par défaut Sortie de type Nan , QNaN
    Bonjour,

    Lors de l'exécution de certains programmes Fortran je tombe des fois sur des sortie de type NaN , ou des fois QNAN, je souhaite connaitre plus sur ce types de sortie ( les deux déja cité et d'autre s'il yen a ) pour contourner les problèmes origines dans le programme principal. Merci de m'éclaircir ce point , et si vous pouvez me renvoyer sur d'autre liens pour une lecture plus approfondie je serai trés reconnaissant
    Merci beaucoup

    phy4me

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 98
    Par défaut
    salut,

    je ne suis pas expert, mais NaN signifie "Not a Number" et survient lorsque, entre autres opérations illégales, on effectue une division par zéro (ou presque, avec sortie de la gamme de représentation de la variable en question)

    Ca m'est arrivé souvent, avec des résolutions de grand systèmes linéaires mal conditionnés... il me semble que les compilateurs offrent des options pour stopper le programme sur un NaN, pour traquer la source de l'erreur.

    A priori, avec la norme Fortran2003, il est possible de gérer correctement ce genre d'exceptions.

    Quant à te donner des liens... à part google, je ne vois pas

  3. #3
    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
    Not a Number il y a ça souvent lorsque tu utilise des résolution d'équa diff... certaine fois lorsque tu utilise des log négatif, arcosinus en dehors des bornes etc...

    il arrive parfois que des sortie INF et -INF survienne (je pense que c assez explicit....) mais certaine fois, ces sortir sont remplacées pas des NaN

    aussi il peut y avoir des conflits de conversion entre des real(kind=2) et real(kind=4) (ou real et double precision) ce genre de chose....

    quant à QNaN je l'ait jamais rencontrer... tu l'as eu quand? quel est ton compilo (parce que ces sorties dépendent du compilo utilisé....)

  4. #4
    Membre confirmé Avatar de phy4me
    Inscrit en
    Octobre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 116
    Par défaut
    Bonjour à tous,

    NaN je pense qu'il est plus ou moins populaire la plupart la connaitre.
    mais jusqu'au moment j'ai beacoup chercher dans le net sur des doc
    mais sans résultats

    Citation Envoyé par genteur slayer
    quant à QNaN je l'ait jamais rencontrer... tu l'as eu quand? quel est ton compilo (parce que ces sorties dépendent du compilo utilisé....)
    voila un éxtrait de mes sorties :

    VARIABLES = "X", "Y", "H"
    ZONE F=FEPOINT, ET=TRIANGLE, N= 5273, E= 10264
    40. 19.5930004 -1.#QNAN
    40. 19.0970001 1.
    39.5810013 19.3540001 -1.#QNAN
    40. 20.0879993 -1.#QNAN
    39.6230011 19.8640003 -1.#QNAN


    le problème parait au niveau de la 3ème colonne,

    bon pour le compilateur j'utilise FORCE 2.0, je travail sur Windows ( j'ai essayé de compiler avec le compilo de Microsoft developer studio, mais il me génére des erreurs -- warnings -- )

    NB : le code avec qui je travail donne de bonne resultats dans certain geometrie d'autre geo me pose ce problème !!

    merci à tous

  5. #5
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Un NaN est effectivement un Not a Number, le résultat d'une opération interdite (division par zéro, logarithme d'un nombre négatif, etc.). Un QNaN est un quiet NaN, par opposition à un signalling NaN (parfois noté sNaN ou NANS). La différence est qu'un QNaN ne lève pas d'exception.
    Pour ton problème, il faut que vérifie la valeur de tes variables lorsque tu fais des opérations qui travaillent sur un domaine particulier (log, sqrt) ou qui sont mathématiquement impossibles (division par zéro). Il est probable que ton compilateur propose une option pour arrêter l'execution dès qu'une NaN est rencontrée. Voir la doc.

  6. #6
    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
    Déjà un premier conseil: change de compilo, Force2 est un des pires.... de plus si intel fortran compileur te donne des érreurs à la compilation c'est lui qu'il faut suivre et pas l'inverse.... de plus les Warning ne stoppe pas la compilation mais te donnent des indication sur les dépassement de tableaux, les valeurs mauvaise... etc... et donc t'aide à débogger ton code....

    Ton tableau est-il bien déclaré? t'aurais pas inversé les indices? t'aurais pas oublié un dabs dans un Log? les apels de fonctions? sinon que se passe-t-il quand tu formatte ta sortie?

Discussions similaires

  1. PROC FORMAT : format de sortie de type numérique
    Par nanou2183 dans le forum SAS Base
    Réponses: 5
    Dernier message: 04/06/2012, 21h43
  2. Une file d'attente en sortie de type PRT
    Par mtsmida dans le forum AS/400
    Réponses: 1
    Dernier message: 20/07/2010, 18h31
  3. Sortie des valeurs de type double
    Par otspot dans le forum C++
    Réponses: 2
    Dernier message: 29/06/2008, 20h26
  4. Requête+Sortie de type spool
    Par yoyopi dans le forum DB2
    Réponses: 6
    Dernier message: 24/05/2006, 10h02
  5. [Double][NaN] identification d'un Type Not A Number
    Par bahamouth dans le forum Langage
    Réponses: 2
    Dernier message: 12/11/2004, 17h06

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