GETCONTROLFPQQ (ia32 のみ)

実行時サブルーチン:プロセッサーの浮動小数点コントロール・ワードを返します。このルーチンは,ia32 プロセッサーのみで利用可能です。

モジュールUSE DFLIB

形式

CALL GETCONTROLFPQQ (controlword)

controlword
(出力) INTEGER(2)。プロセッサーの浮動小数点コントロール・ワード。

浮動小数点コントロール・ワードは,浮動小数点数値演算プロセッサーの様々なモードを制御するビット・フラグです。\DF98\INCLUDE サブディレクトリの DFLIB.F90 モジュール・ファイルは,次表のようなコントロール・ワードの定義値を含んでいます。

パラメタ名 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 ビット精度,最も近い値に丸める,および規格化されていない数,アンダーフロー,オーバーフロー,無効な値,および不正確な精度の例外を無効にするです。例外は,そのフラグが 1 に設定されていれば無効で,0 にクリアされていれば有効です。例外は,SETCONTROLFPQQ でフラグを 1 に設定することで無効にすることができます。

例外が無効にされると,それが発生した時の割り込みが発生しません。その代わりとして,浮動小数点プロセスは適切な特別な値 (NaN または符号付き無限大) を生成しますが,プログラムは継続されます。

(もしあれば) GETSTATUSFPQQ を呼び出すことで,例外の発生を検出することができます。浮動小数点例外でのエラーが有効 (SETCONTROLFPQQ でフラグを 0 にクリアすることで) になっている場合,オペレーティング・システムは例外が発生した時に割り込みを生成します。基本設定では,これらの割り込みは実行時エラーを引き起こしますが,SIGNALQQ で割り込みを捕らえ,自分のエラー処理ルーチンに分岐させることができます。

GETCONTROLFPQQ で現在のコントロール・ワードを取り出すことができ,SETCONTROLFPQQ でコントロール・ワードを変更することができます。多くのユーザーは,基本設定を変更する必要はありません。浮動小数点コントロール・ワード,例外,エラー処理に関しての詳細は,「浮動小数点環境」を参照してください。

互換性

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB

関連情報

GETSTATUSFPQQMATHERRQQSETCONTROLFPQQSIGNALQQ

	USE DFLIB
	INTEGER(2) control
	CALL GETCONTROLFPQQ (control)
	IF (IAND(control, FPCW$DOWN) .NE. FPCW$DOWN) THEN
	  control = IAND(control, NOT(FPCW$MCW_RC))	! すべての丸めをクリア
	  control = IOR(control, FPCW$DOWN)		! 丸めに設定
	  CALL SETCONTROLFPQQ(control)
	END IF
	END