質問: 別件で回答しているときに、IEEE 754の浮動小数点数で、`NaN`にも正負があることを知りました。C言語では、`copysign`や`signbit`といった関数で、NaNについても符号の確認・設定が行えるようになっています。 quiet NaNとsignalling NaNを区別するビットは別にありますし、「数ではない」ものに正負を考えるのも無理があると思うのですが、正のNaNと負のNaNに有意な違いはありますでしょうか?「特定の環境では正負のNaNで動作が違う」というようなものでも構いません。 それとも、単に違いが目立つだけで、符号ビットも`NaN`のペイロードの1つに過ぎない、ということでしょうか?
回答: IEEE754 の定義として、交換形式に常に符号ビットが存在するために、仕様上 +NaN と -NaN が存在するということかと思います。 例えば 0 × ±∞ は NaN を生成しますが、かけたのが正負どちらかだったかを伝播する目的で符号ビットが使われるのであって、NaN 自体に正負があるわけではなく、分析用の痕跡に過ぎないと言うことでしょう。