FLT_EVAL_METHOD
From cppreference.com
| ヘッダー <cfloat> で定義 |
||
| #define FLT_EVAL_METHOD /* 実装定義 */ |
(C++11以降) | |
代入とキャストを除くすべての浮動小数点演算が実行される精度を指定します。
| 値 | 説明 |
| -1 を除く負の値 | 実装定義の動作 |
| -1 | デフォルトの精度が不明 |
| 0 | すべての演算と定数は、使用される型の範囲と精度で評価されます。さらに、float_t および double_t はそれぞれ float および double と同等です。 |
| 1 | すべての演算と定数は double の範囲と精度で評価されます。さらに、float_t と double_t の両方が double と同等です。 |
| 2 | すべての演算と定数は long double の範囲と精度で評価されます。さらに、float_t と double_t の両方が long double と同等です。 |
[編集] 備考
FLT_EVAL_METHOD の値に関わらず、浮動小数点式は「縮約」される可能性があります。つまり、すべての中間結果が無限の範囲と精度を持つかのように計算されます( #pragma STDC FP_CONTRACT がオフの場合を除く)。
キャストと代入は、余分な範囲と精度を排除します。これは、拡張精度FPUレジスタから標準サイズのメモリ位置に値を格納する動作をモデル化しています。