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