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