Можно ли заставить isnan () работать в gfortran -O3 -fast-math?

Я хотел бы скомпилировать программу с gfortran и-O3 -ffast-math включен, так как это дает хороший прирост производительности. Я был довольно смущен, что Gfortran'sisnan() поймал некоторые NaN, но не все из них. После прочтения

Проверка, является ли double (или float) NaN в C ++
как сделать переносную функцию isnan / isinf
Отрицательный NaN не является NaN?

У меня сложилось впечатление, что люди могут проверять наличие NaN в C с помощью битов, даже если включена быстрая математика. Тем не менее, это озадачивает меня, так как пост-математика

может привести к неправильному выводу для программ, которые зависят от точной реализации правил / спецификаций IEEE или ISO для математических функций.

Согласно справочной странице gcc 4.7.2. Итак, как вы узнаете, какой бит проверять, если числа не представлены в соответствии со стандартом IEEE? И если вы это знаете, как бы вы реализовали это в Фортране 95/03/08?

Не беспокойтесь отправлять(x \= x) или аналогичные решения, которые зависят от правил IEEE. Они дают тот же результат, что иisnan(), Я тоже в курсе-ffpe-trap=invalid,zero,overflow, но не хочу останавливать программу. Если это поможет, моя ОС будет 64-битной LinuxMint 14. Если это невозможно в Fortran, было бы неплохо использовать водонепроницаемое C-решение.

Ответы на вопрос(2)

Ваш ответ на вопрос