Ist es möglich, isnan () in gfortran -O3 -ffast-math zum Laufen zu bringen?

Ich würde gerne ein Programm mit gfortran und kompilieren-O3 -ffast-math aktiviert, da es einen schönen Leistungsschub gibt. Ich war ziemlich verwirrt, dieser Gfortranisnan() Habe ein paar NaNs gefangen, aber nicht alle. Nach dem Lesen

Überprüfen, ob ein double (oder float) in C ++ NaN ist
Wie erstelle ich eine portable isnan / isinf Funktion?
Negatives NaN ist kein NaN?

Ich habe den Eindruck, dass die Leute in der Lage sind, durch Bit-Fiddling nach NaNs in C zu suchen, selbst wenn Fast-Math aktiviert ist. Das verwirrt mich jedoch seitdem schnell-mathe

kann zu fehlerhaften Ausgaben für Programme führen, die von einer genauen Implementierung der IEEE- oder ISO-Regeln / Spezifikationen für mathematische Funktionen abhängen.

Laut der Manpage von gcc 4.7.2. Woher wissen Sie also, welches Bit zu überprüfen ist, wenn die Zahlen nicht gemäß dem IEEE-Standard dargestellt werden? Und wenn Sie es wissen, wie würden Sie es in Fortran 95/03/08 implementieren?

Mach dir nicht die Mühe zu posten(x \= x) oder ähnliche Lösungen, die von den IEEE-Regeln abhängen. Sie geben das gleiche Ergebnis wieisnan(). Das weiß ich auch-ffpe-trap=invalid,zero,overflow, aber ich möchte das Programm nicht stoppen. Wenn es hilft, ist mein Betriebssystem 64-Bit LinuxMint 14. Wenn es in Fortran nicht möglich ist, wäre eine wasserdichte C-Lösung auch schön.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage