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