¿Es posible hacer que isnan () funcione en gfortran -O3 -stast-math?

Me gustaría compilar un programa con gfortran y-O3 -ffast-math habilitado, ya que da un buen aumento de rendimiento. Estaba bastante confundido, que los de Gfortranisnan() Cogí algunas NaN pero no todas. Despues de leer

Comprobando si un doble (o flotador) es NaN en C ++
¿Cómo hago una función isnan / isinf portátil?
NaN negativo no es un NaN?

Tengo la impresión de que las personas pueden comprobar si hay NaN en C a través de la manipulación de bits, incluso con la función matemática rápida habilitada. Sin embargo, esto me desconcierta desde rápido-matemática

puede dar como resultado resultados incorrectos para los programas que dependen de una implementación exacta de las normas / especificaciones IEEE o ISO para las funciones matemáticas.

Según la página del manual de gcc 4.7.2. Entonces, ¿cómo sabe qué bit debe verificar si los números no están representados de acuerdo con el estándar IEEE? Y si lo sabes, ¿cómo lo implementarías en Fortran 95/03/08?

No te molestes en publicar(x \= x) o soluciones similares que dependen de las reglas IEEE. Dan el mismo resultado queisnan(). También soy consciente de-ffpe-trap=invalid,zero,overflow, pero no quiero detener el programa. Si ayuda, mi sistema operativo es LinuxMint 14. de 64 bits. Si no es posible en Fortran, una solución impermeable de C también estaría bien.

Respuestas a la pregunta(2)

Su respuesta a la pregunta