Oracle Solaris Studio 12.2: C ユーザーガイド

D.1.1 浮動小数点評価における精度

5.2.4.2.2 項 浮動小数点型 <float.h> の特性

浮動小数点オペランドを持つ演算の値、および通常の算術変換および浮動小数点定数両方の影響を受ける値は、その型が必要とするより大きくすることが可能な範囲および精度を持つ形式で評価されます。使用する評価形式は、FLT_EVAL_METHOD の実装定義値によって決まります。

表 D–1 FLT_EVAL_METHOD の値

値  

意味  

-1 

判定不能 

コンパイラは、すべての演算および定数を正確にその型の範囲と精度で評価します。 

コンパイラは、float および double 型の演算および定数を double 型の範囲および精度で評価します。long double 型の演算および定数は long double 型の範囲と精度で評価します。 

コンパイラは、すべての演算および定数を 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_METHOD2 に展開され、すべての浮動小数点式は long double として評価されます。詳細については、「B.2.21 -flteval[={any|2}]」を参照してください。

-xarch=sse2 (または sse3ssse3sse4_1sse4_2 など、SSE2 プロセッサファミリのそれ以降のバージョン) または -m64 を x86 で指定して、float.h をインクルードすると、FLT_EVAL_METHOD は 0 に展開され、すべての浮動小数点式はその型に従って評価されます。

浮動小数点式が double として評価されても、-Xt オプションがFLT_EVAL_METHOD の展開内容に影響することはありません。詳細については、「B.2.68 -X[c|a|t|s]」を参照してください。

-fsingle オプションを指定すると、浮動小数点式が単精度で評価されます。詳細については、「B.2.30 -fsingleを参照してください。

-xarch=sse2 (または sse3ssse3sse4_1sse4_2 など、SSE2 プロセッサファミリのそれ以降のバージョン) または -m64 を使用して x86 アーキテクチャーで -fprecision を指定して、float.h をインクルードすると、FLT_EVAL_METHOD-1 に展開されます。