Я решил использовать в качестве дефолтного значения параметра функции NAN(так же пробовал std::numeric_limits
Так же пробовал проверить на NAN используя правило нанов, которое голасит, что NAN всегда не равен NAN. Это сработало для неравнества NAN != NAN, но не для x != x. Во втором случае результат был отрицательный.
Последней попыткой было определение переменной внутри используемой функции со значением NAN и проверка ее обоими способами на равенство NAN. Результаты те же, false.
Совершенно не могу понять в чем может быть дело.
Пример:
double abc = NAN;
qDebug()<< abc << (abc != abc) << std::isnan(abc);
Вывод:
nan false false
UPD: Проверил возможность такого использования NAN на cpp.sh и там все оказалось хорошо. Пока что думаю, что может быть не так с проектом.
Ответ
Проблему вызывает использование -ffast-math. Я не знал, что мы используем ее в нашем проекте. Для данной проблемы нет решения, если вы используете -ffast-math. Не используйте NAN в паре с быстрой математикой.
Комментариев нет:
Отправить комментарий