5.2.4.2.2 項 浮動小数点型 <float.h> の特性
浮動小数点オペランドを持つ演算の値、および通常の算術変換および浮動小数点定数両方の影響を受ける値は、その型が必要とするより大きくすることが可能な範囲および精度を持つ形式で評価されます。使用する評価形式は、FLT_EVAL_METHOD の実装定義値によって決まります。
表 D–1 FLT_EVAL_METHOD の値
値 |
意味 |
---|---|
-1 |
判定不能 |
0 |
コンパイラは、すべての演算および定数を正確にその型の範囲と精度で評価します。 |
1 |
コンパイラは、float および double 型の演算および定数を double 型の範囲および精度で評価します。long double 型の演算および定数は long double 型の範囲と精度で評価します。 |
2 |
コンパイラは、すべての演算および定数を long double 型の範囲と精度で評価します。 |
SPARC アーキテクチャーで float.h をインクルードすると、デフォルトでは、FLT_EVAL_METHOD は }0 に展開され、すべての浮動小数点式はその型に従って評価されます。
x86 アーキテクチャーで float.h をインクルードすると、デフォルトでは、FLT_EVAL_METHOD は -1 に展開され (-xarch=sse2 または -xarch=amd64 の場合を除く)、すべての浮動小数点定数式はその型として、ほかのすべての浮動小数点式は long double として評価されます。
-flteval=2 を指定して、float.h をインクルードすると、FLT_EVAL_METHOD は 2 に展開され、すべての浮動小数点式は long double として評価されます。詳細については、「B.2.21 -flteval[={any|2}]」を参照してください。
x86 で -xarch=sse2 または -xarch=amd64 を指定して、float.h をインクルードすると、FLT_EVAL_METHOD は 0 に展開され、すべての浮動小数点式はその型に従って評価されます。
浮動小数点式が double として評価されても、-Xt オプションが FLT_EVAL_METHOD の展開内容に影響することはありません。詳細については、「B.2.67 -X[c|a|t|s]」を参照してください。
-fsingle を指定すると、浮動小数点式が単精度で評価されます。詳細については、「B.2.30 -fsingle」を参照してください。
x86 アーキテクチャーで -xarch=sse2 または -xarch=amd64 とともに -fprecision を指定して、float.h をインクルードすると、FLT_EVAL_METHOD は -1 に展開されます。