É possível fazer isnan () funcionar em gfortran -O3 -ffast-math?

Eu gostaria de compilar um programa com gfortran e-O3 -ffast-math habilitado, desde que dá um bom impulso de desempenho. Eu estava bastante confuso, que o gfortranisnan() pegou alguns NaN, mas não todos eles. Depois de ler

Verificando se um double (ou float) é NaN em C ++
como faço uma função isnan / isinf portátil?
NaN negativo não é um NaN?

Tenho a impressão de que as pessoas são capazes de verificar o NaN em C por meio do uso de bit-fiddle, mesmo com a matemática rápida ativada. No entanto, isso me intriga desde a matemática rápida

pode resultar em saída incorreta para programas que dependem de uma implementação exata das regras / especificações do IEEE ou ISO para funções matemáticas.

De acordo com a página man do gcc 4.7.2. Então, como você sabe qual bit verificar se os números não estão representados de acordo com o padrão IEEE? E se você sabe, como você o implementaria no Fortran 95/03/08?

Não se preocupe em postar(x \= x) ou soluções simlar que dependem das regras do IEEE. Eles dão o mesmo resultado queisnan(). Eu também estou ciente de-ffpe-trap=invalid,zero,overflow, mas não quer parar o programa. Se isso ajudar, meu sistema operacional é o LinuxMint de 64 bits. Se isso não for possível no Fortran, uma solução C à prova d'água também seria interessante.

questionAnswers(2)

yourAnswerToTheQuestion