IA-32 アーキテクチャー・ベース・システムでは、FPU コントロール・ワードには、FPU の精度、丸めモード、および例外が発生したときに信号が生成されるかどうかを制御するビットが含まれています。コントロール・ワード値を GETCONTROLFPQQ (IA-32 アーキテクチャーのみ) で読み取り、現在の制御設定を調べることができます。また、SETCONTROLFPQQ (IA-32 アーキテクチャーのみ) でコントロール・ワードを変更することができます。
GETCONTROLFPQQ ルーチンと SETCONTROLFPQQ ルーチンは、x87 ステータスレジスターのみに影響します。これらのルーチンは、MXCSR レジスター (インテル® SSE 命令とインテル® SSE2 命令のコントロール・レジスターとステータスレジスター) には影響ありません。
浮動小数点コントロール・ワードの各ビットは、浮動小数点算術プロセッサーのモードに対応しています。...\INCLUDE フォルダーの IFORT.F90 モジュールファイルには、次の表で示すように、コントロール・ワードに対して定義された INTEGER(2) パラメーターが含まれています。
パラメーター名 |
16 進値 |
説明 |
---|---|---|
FPCW$MCW_PC |
#0300 |
精度制御マスク |
FPCW$64 |
#0300 |
64 ビット精度 |
FPCW$53 |
#0200 |
53 ビット精度 |
FPCW$24 |
#0000 |
24 ビット精度 |
FPCW$MCW_RC |
#0C00 |
丸めの制御マスク |
FPCW$CHOP |
#0C00 |
切り捨て |
FPCW$UP |
#0800 |
大きい方へ丸める |
FPCW$DOWN |
#0400 |
小さい方へ丸める |
FPCW$NEAR |
#0000 |
最も近い値に丸める |
FPCW$MCW_EM |
#003F |
例外マスク |
FPCW$INVALID |
#0001 |
無効な数値を許容する |
FPCW$DENORMAL |
#0002 |
デノーマル (非常に小さい数字) を許容する |
FPCW$ZERODIVIDE |
#0004 |
ゼロ除算を許容する |
FPCW$OVERFLOW |
#0008 |
オーバーフローを許容する |
FPCW$UNDERFLOW |
#0010 |
アンダーフローを許容する |
FPCW$INEXACT |
#0020 |
不正確な精度を許容する |
次に、コントロール・ワードのデフォルト設定を示します。
53 ビット精度
最も近い値に丸める (丸めモード)
デノーマル、アンダーフロー、オーバーフロー、ゼロ除算、無効な値、および不正確な精度の例外は無効です (例外を生成しない)。例外処理を変更するには、-fpe コンパイラー・オプション (Linux* および Mac OS* X) または /fpe (Windows*) コンパイラー・オプション、あるいは FOR_SET_FPE ルーチンを使用します。