При написании некоторых тестовых примеров, а некоторые тесты проверяют результат NaN.
Я попытался использовать std::isnan
, но утверждение не удалось:
Assertion `std::isnan(x)' failed.
После печати значения x
оказалось, что это отрицательное NaN (-nan
), что вполне приемлемо в моем случае.
Попытавшись использовать тот факт, что NaN != NaN
и используя assert(x == x)
, компилятор делает мне "пользу" и оптимизирует утверждение.
Кроме того, оптимизируется моя функция isNaN
.
Как я могу проверить как равенство NaN, так и -NaN?