fp-model、fp

 

浮動小数点演算のセマンティクスを制御します。

IDE オプション

Windows: [Code Generation (コード生成)] > [Floating Point Model (浮動小数点モデル)]

[Code Generation (コード生成)] > [Enable Floating Point Exceptions (浮動小数点の例外を有効にする)]

[Code Generation (コード生成)] > [Floating Point Expression Evaluation (浮動小数点式の評価)]

Linux: [Floating point (浮動小数点)] > [Floating Point Model (浮動小数点モデル)]

Mac OS X: [Floating point (浮動小数点)] > [Floating Point Model (浮動小数点モデル)]

[Floating point (浮動小数点)] > [Reliable floating-point exceptions model (信頼性のある浮動小数点例外モデル)]

アーキテクチャー

IA-32、インテル® 64、IA-64 アーキテクチャー

構文

Linux および Mac OS X:

-fp-model keyword

Windows:

/fp:keyword

引数

keyword

使用するセマンティクスを指定します。設定可能な値は以下のとおりです。

precise

浮動小数点データの精度に影響しない最適化を有効にします。

fast[=1|2]

浮動小数点データにより強力な最適化を有効にします。

strict

precise と except を有効にし、縮約を無効にし、プラグマ stdc fenv_access を有効にします。

source

中間結果をソースで定義された精度まで丸め、精度に影響しない最適化を有効にします。

double

中間結果を 53 ビット (double) 精度まで丸めます。

extended

中間結果を 64 ビット (extended) 精度まで丸めます。

[no-]except (Linux および Mac OS X) または except[-] (Windows)

浮動小数点例外セマンティクスを使用するかどうかを決定します。

デフォルト

-fp-model fast=1
または /fp:fast=1

コンパイラーは浮動小数点演算に、より強力な最適化を有効にします。

説明

浮動小数点演算のセマンティクスを制御します。

keyword は次のグループに分けられます。

複数の keyword を使用できます。ただし、次の規則が適用されます。

オプション

説明

-fp-model precise または /fp:precise

浮動小数点の演算時に、厳密に精度に影響しない最適化を行うようコンパイラーに指示します。浮動小数点演算の結果を変更してしまう最適化は無効になります。ANSI 規格に厳密に準拠していなければなりません。 これらのセマンティクスは、浮動小数点演算の精度を保証しますが、パフォーマンスを低下させる可能性があります。

コンパイラーはデフォルトの浮動小数点環境を想定します。変更はできません。

中間結果は、グループ B の keyword で上書きされない限り、次の表で示される精度によって計算されます。

 

Windows

Linux

Mac OS X

IA-32 アーキテクチャー

倍精度

拡張

拡張

インテル® 64 アーキテクチャー

ソース

ソース

ソース

IA-64 アーキテクチャー

拡張

拡張

N/A



浮動小数点セマンティクスはデフォルトで無効です。これらのセマンティクスを有効にするには、-fp-model except または /fp:except を指定しなければなりません。

ソースコードで浮動小数点演算の解釈に適用されるセマンティクスについての情報は、「浮動小数点演算」の「-fp-model オプションまたは /fp オプションの使用」precise を参照してください。

-fp-model fast[=1|2] または /fp:fast[=1|2]

浮動小数点の演算時に、より強力な最適化を行うようコンパイラーに指示します。これらの最適化で速度は向上しますが、浮動小数点演算の精度を変更してしまう可能性があります。

fast を指定することは fast=1 を指定するのと同じです。fast=2 を指定するとより早く結果を生成できますが、精度が落ちます。

浮動小数点例外セマンティクスはデフォルトでは無効です。同じコンパイル処理で fast と except を一緒に指定できないため、有効にすることはできません。例外セマンティクスを有効にするには、別の keyword (詳細は、ほかの keyword の説明を参照してください) を明示的に指定する必要があります。

ソースコードで浮動小数点演算の解釈に適用されるセマンティクスについての情報は、「浮動小数点演算」の「-fp-model オプションまたは /fp オプションの使用」fast を参照してください。

-fp-model strict または /fp:strict

浮動小数点の演算時に、厳密に精度に影響しない最適化を行うようコンパイラーに指示し、浮動小数点例外セマンティクスを有効にします。これは最も厳密な浮動小数点モデルです。

コンパイラーはデフォルトの浮動小数点環境を想定しません。変更することが可能です。

浮動小数点例外セマンティクスは、明示的に -fp-model no-except または /fp:except- を指定することで無効にできます。

ソースコードで浮動小数点演算の解釈に適用されるセマンティクスについての情報は、「浮動小数点演算」の「-fp-model オプションまたは /fp オプションの使用」strict を参照してください。

-fp-model source または /fp:source

このオプションは、中間結果をソースコードで定義された精度に丸めます。また、グループ A の keyword で上書きされない限り、precise の keyword を意味します。

中間式では、より高い精度のオペランドのソースが使用されます (該当する場合)。

long double

64 ビット精度

80 ビット・データ型

指数部 15 ビット

double

53 ビット精度

64 ビット・データ型

指数部 11 ビット。IA-32 アーキテクチャー・ベースの Windows システムでは、x87 レジスターで値が保持される場合、指数部は 15 ビットです。

float

24 ビット精度

32 ビット・データ型

指数部 8 ビット



コンパイラーはデフォルトの浮動小数点環境を想定します。変更はできません。

ソースコードで浮動小数点演算の解釈に適用されるセマンティクスについての情報は、「浮動小数点演算」の「-fp-model オプションまたは /fp オプションの使用」source を参照してください。

-fp-model double または /fp:double

このオプションは、中間結果を次のように丸めます。

53 ビット (double) 精度

64 ビット・データ型

指数部 11 ビット。IA-32 アーキテクチャー・ベースの Windows システムでは、x87 レジスターで値が保持される場合、指数部は 15 ビットです。



このオプションは、グループ A の keyword で上書きされない限り、precise の keyword を意味します。

コンパイラーはデフォルトの浮動小数点環境を想定します。変更はできません。

ソースコードで浮動小数点演算の解釈に適用されるセマンティクスについての情報は、「浮動小数点演算」の「-fp-model オプションまたは /fp オプションの使用」double を参照してください。

-fp-model extended または /fp:extended

このオプションは、中間結果を次のように丸めます。

64 ビット (extended) 精度

80 ビット・データ型

指数部 15 ビット



このオプションは、グループ A の keyword で上書きされない限り、precise の keyword を意味します。

コンパイラーはデフォルトの浮動小数点環境を想定します。変更はできません。

ソースコードで浮動小数点演算の解釈に適用されるセマンティクスについての情報は、「浮動小数点演算」の「-fp-model オプションまたは /fp オプションの使用」double を参照してください。

-fp-model except または /fp:except

浮動小数点例外セマンティクスを使用するようコンパイラーに指示します。

Note icon

IA-32 アーキテクチャーの Windows および Linux システムでは、コンパイラーは、デフォルトで SSE2 と SSE 命令を使用して、浮動小数点 (FP) 演算を実装します。このため、以前の x87 と比較する際、浮動小数点結果に差異が生じる可能性があります。

代替オプション

なし

このオプションの使用方法については、「浮動小数点演算」「-fp-model オプションまたは /fp オプションの使用」を参照してください。

関連情報