いくつかのテストケースを書きながら、いくつかのテストは NaN の結果をチェックします。
使用してみstd::isnan
ましたが、アサートは失敗します:
Assertion `std::isnan(x)' failed.
の値を出力した後、私の場合は完全に受け入れられるx
負の NaN ( ) であることがわかりました。-nan
その事実と を使用しようとした後NaN != NaN
、assert(x == x)
コンパイラは私に「好意」を示し、アサートを最適化します。
独自のisNaN
関数を作成することも最適化されています。
NaNと-NaN の両方が等しいことを確認するにはどうすればよいですか?