What is the difference between quiet NaN and signaling NaN? Ask Question

What is the difference between quiet NaN and signaling NaN? Ask Question

I have read about floating-point and I understand that NaN could result from operations. But I can't understand what these are concepts exactly. What is the difference between them?

Which one can be produced during C++ programming? As a programmer, could I write a program that causes an sNaN?

ベストアンサー1

演算の結果が静かな NaN になった場合、プログラムが結果をチェックして NaN を確認するまで、異常なことは何もありません。つまり、浮動小数点ユニット (FPU) または浮動小数点がソフトウェアで実装されている場合はライブラリからのシグナルがなくても計算は続行されます。シグナル NaN は、通常 FPU からの例外の形でシグナルを生成します。例外がスローされるかどうかは、FPU の状態によって異なります。

C++11ではいくつかの言語が追加されました浮動小数点環境の制御そして提供するNaNの作成とテストの標準化された方法ただし、コントロールが実装されているかどうかは十分に標準化されておらず、浮動小数点例外は通常、標準の C++ 例外と同じ方法でキャッチされません。

POSIX/Unixシステムでは、浮動小数点例外は通常、ハンドラを使用してキャッチされます。SIGFPE

おすすめ記事