Récupérer des réels non NaN dans un fichier
Bonjour,
je rencontre un problème depuis un certains temps :
en appliquant plusieurs fois une fonction qui renvoie normalement un réel,
j'obtiens parfois la valeur NaN (Not a number) sans explications.
Je stocke à chaque appel de la fonction la valeur obtenue dans un fichier text graĉe à
WRITE(unit=10, file = ....
Ainsi à la fin le fichier contient, en colonne, des réels, mais aussi des NaN :
ça ressemble à ceci :
24323
0.45261277E-9
NaN
0.11112345E-5
NaN
NaN
etc....
Je souhaiterais créer une fonction qui récupère dans ce fichier
uniquement les valeurs réelles (non NaN) et les stocke dans un vecteur VECTREELS.
Ainsi je fait (pseudo algo) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
OPEN FICHIER.TXT
i=1
DO
READ(10,iostat=io) valeur
if (valeur /= "NaN") then
VECTREELS(i) = valeur
end if
if (io <0) exit
i=i+1
END DO
|
MAis j'obtiens une erreur car Fortran me dit que "valeur" a le type réel et ne peut etre comparé à un type caractère ("NaN").
J'ai trouvé sur le net une fonction isnan mais le problème c'est que dans le fichier NaN n'est plus vraiment un NaN mais une chaine de caractère.
lors de la lecture du fichier, comment READ valeur considère valeur
quand il met NaN dans valeur, sachant que valeur doit etre de type réel ?
C'est à dir, quand je fais :
READ(10,*) valeur
dans le fichier, si il rencontre NaN, quelle valeur met-il dans valeur de type réel?
J'ai cherché des heures sans succès pour récupérer uniquement des réels dans un fichiers. J'ai vu des fonctions comme transfer, ieor mais je comprends pas bien.
En fait je voudrais afficher les données binaires de valeur apres chaque read pour voir comment est représenter le NaN en binaire pour pouvoir comparer cette données binaires avec les données binaires des réels.
Plus généralement comment faire pour récupérer des données d'un type donné dans un fichier? par exemple récupérer uniquement les entièrs présents, uniquement les réels, ... ?
Merci d'avance si vous trouvez ce difficile problème.