Если я скомпилирую код с плавающей запятой в clang с параметром -fno-honor-nans
, как это повлияет на сравнение?
Для следующего предположим:
a
это не-нано-число с плавающей точкой b
это нано c
другое отличное нано
Я представляю себе, сравнения a > b
, b > a
и b == c
"больше не будут работать должным образом".
Однако как насчет b == b
?
Есть ли способ проверить, является ли указанное значение c значением nan с -fno-honor-nans
?
Чтобы предвидеть вопрос: мне нужно использовать -fno-honor-nans
, чтобы включить векторизацию в clang, но все еще хочу обрабатывать nans в моем коде.
Я пытался экспериментировать немного с компилятором, чтобы увидеть, как он обрабатывает вышеупомянутые случаи, но мои тесты продолжают оптимизироваться ... Мой скомпилированный код вообще не содержит никаких сравнений.