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

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

Проверка, является ли double (или float) NaN в C ++

как сделать переносную функцию isnan / isinf

Отрицательный NaN не является NaN?

У меня сложилось впечатление, что люди могут проверить на NaN 's в 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)

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