ia32 システムでは,FPU コントロール・ワードには,FPU の精度,丸めモード,および例外が発生したときにシグナルが生成されるかどうかを制御するビットが含まれています。コントロール・ワード値を GETCONTROLFPQQ (ia32 のみ) で読み取って,現在の制御設定を調べることができます。また,SETCONTROLFPQQ (ia32 のみ) でコントロール・ワードを変更することができます。
浮動小数点コントロール・ワードの個々のビットは,浮動小数点数値演算プロセッサーの 1 つのモードに対応しています。...\DF98\INCLUDE フォルダの DFLIB.F90 モジュール・ファイルは,次表に示すように,コントロール・ワードに対して定義された INTEGER(2) パラメタを含んでいます。
パラメタ名 | 16 進値 | 説明 |
FPCW$MCW_IC | #1000 | 無限大の制御マスク |
FPCW$AFFINE | #1000 | アフィン無限大 |
FPCW$PROJECTIVE | #0000 | 射影的無限大 |
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 コンパイラ・オプションか FOR_SET_FPE ルーチンを使用します。
関連情報