ナビゲーション:前へ 上へ 次へ
ナビゲーション:前へ 上へ 次へ
6.5 IEEE_EXCEPTIONS
IEEE浮動小数点例外を処理するためのデータ型、定数、総称手続きを提供します。6.5.1 型と定数
TYPE IEEE_STATUS_TYPEこの型の変数は浮動小数点のステータス値を保持することができます。 ステータス値はすべてのモード設定とフラグを結合したものです。
TYPE IEEE_FLAG_TYPEこの型の値は個々のIEEE例外フラグを示します。関連する定数は以下の通りです。
IEEE_DIVIDE_BY_ZERO | ゼロによる除算フラグ |
IEEE_INEXACT | 不正確な結果フラグ |
IEEE_INVALID | 無効な演算フラグ |
IEEE_OVERFLOW | オーバーフローフラグ |
IEEE_UNDERFLOW | アンダーフローフラグ |
更に2つの配列定数が良く使われるフラグの組合せを表すために利用可能です。
TYPE(IEEE_FLAG_TYPE),PARAMETER :: & IEEE_USUAL(3) = (/ IEEE_DIVIDE_BY_ZERO,IEEE_INVALID,IEEE_OVERFLOW /), & IEEE_ALL(5) = (/ IEEE_DIVIDE_BY_ZERO,IEEE_IEEE_INVALID,IEEE_OVERFLOW, & IEEE_UNDERFLOW,IEEE_INEXACT /)
6.5.2 手続き
IEEE_EXCEPTIONSで提供される手続きは以下の通りです。ELEMENTAL SUBROUTINE IEEE_GET_FLAG(FLAG,FLAG_VALUE) TYPE(IEEE_FLAG_TYPE),INTENT(IN) :: FLAG LOGICAL,INTENT(OUT) :: FLAG_VALUEFLAGで示される例外が設定されている場合にFLAG_VALUEを.TRUE.に設定し、 そうでない場合には.FALSE.に設定します。
ELEMENTAL SUBROUTINE IEEE_GET_HALTING_MODE(FLAG,HALTING) TYPE(IEEE_FLAG_TYPE),INTENT(IN) :: FLAG LOGICAL,INTENT(OUT) :: HALTINGFLAGで示される浮動小数点例外によりプログラムが終了する場合には HALTINGを.TRUE.に設定し、そうでない場合には.FALSE.に設定します。
PURE SUBROUTINE IEEE_GET_STATUS(STATUS_VALUE) TYPE(IEEE_STATUS_TYPE),INTENT(OUT) :: STATUS_VALUESTATUS_VALUEを現在の浮動小数点ステータスに設定します。 ステータスには現在のすべての例外フラグとモード設定が含まれます。
PURE SUBROUTINE IEEE_SET_FLAG(FLAG,FLAG_VALUE) TYPE(IEEE_FLAG_TYPE),INTENT(IN) :: FLAG LOGICAL,INTENT(IN) :: FLAG_VALUEFLAGで示される例外フラグをFLAG_VALUEに設定します。 FLAGは重複値がない限りどのような次元数の配列であっても構いません。 この場合FLAG_VALUEはスカラもしくは同じ形状の配列となります。
PURE SUBROUTINE IEEE_SET_HALTING_MODE(FLAG,HALTING) TYPE(IEEE_FLAG_TYPE),INTENT(IN) :: FLAG LOGICAL,INTENT(IN) :: HALTINGFLAGで示される例外の停止モードをHALTINGに設定します。 FLAGは重複値がない限りどのような次元数の配列であっても構いません。 この場合FLAG_VALUEはスカラもしくは同じ形状の配列となります。
PURE SUBROUTINE IEEE_SET_STATUS(STATUS_VALUE) TYPE(IEEE_STATUS_TYPE),INTENT(IN) :: STATUS_VALUESTATUS_VALUEに格納されているステータスを浮動小数点ステータスに設定します。 ステータスはそれ以前にIEEE_GET_STATUSを呼び出して取得されたものである必要があります。
PURE LOGICAL FUNCTION IEEE_SUPPORT_FLAG(FLAG) TYPE(IEEE_FLAG_TYPE),INTENT(IN) :: FLAGFLAGで示される例外フラグがすべての種別のREALでサポートされているかどうかを返します。
PURE LOGICAL FUNCTION IEEE_SUPPORT_FLAG(FLAG,X) TYPE(IEEE_FLAG_TYPE),INTENT(IN) :: FLAG REAL(*),INTENT(IN) :: XFLAGで示される例外フラグがX種別のREALでサポートされているかどうかを返します。
PURE LOGICAL FUNCTION IEEE_SUPPORT_HALTING(FLAG) TYPE(IEEE_FLAG_TYPE),INTENT(IN) :: FLAGFLAGで示される例外フラグに対する“停止モード”の制御がサポートされているかどうかを返します。
ナビゲーション:前へ 上へ 次へ