インテル® C++ コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
浮動小数点環境とは、浮動小数点機械語命令の動作を制御するレジスターの集合で、現在の浮動小数点のステータスを示します。浮動小数点環境には、丸めモード制御、例外マスク、FTZ (Flush-to-Zero) 制御、例外ステータスフラグ、およびその他の浮動小数点関連の機能が含まれます。
例えば、MXCSR レジスターのビット 15 は FTZ (Flush-to-Zero) モードを有効にします。このモードは、SIMD (single-instruction multiple data) 浮動小数点アンダーフローに対するマスク処理を制御します。
浮動小数点環境は、多くの浮動小数点演算に影響を与えます。そのため、ニーズに合うよう設定されていることが重要です。例えば、例外マスクビットは、どのような例外条件の際にプロセッサーに例外として発行されるかを定義します。一般に、デフォルトの浮動小数点環境はオペレーティング・システムによって設定されます。この環境がニーズに合わない場合を除いて、自分で設定する必要はありません。
変更が必要な場合、その方法はいくつかあります。例えば、インライン・アセンブリー、コンパイラーのビルトイン関数、ライブラリー関数、またはコマンドライン・オプションを使用します。
デフォルトの浮動小数点環境を変更すると、ランタイム時の結果のみ影響されます。コンパイル時にあらかじめ行われる計算には影響しません。
厳密な再現性や一貫性が重要である場合は、-fp-model strict オプション (Linux* または macOS*) や /fp:strict オプション (Windows*)、あるいは pragma fenv_access 組込み関数を使用して、浮動小数点環境を変更してください。