関連情報
ナビゲーション:Fortran 2003入門   前へ   上へ   次へ

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_VALUE
FLAGで示される例外が設定されている場合にFLAG_VALUE.TRUE.に設定し、 そうでない場合には.FALSE.に設定します。

ELEMENTAL SUBROUTINE IEEE_GET_HALTING_MODE(FLAG,HALTING)
  TYPE(IEEE_FLAG_TYPE),INTENT(IN) :: FLAG
  LOGICAL,INTENT(OUT) :: HALTING
FLAGで示される浮動小数点例外によりプログラムが終了する場合には HALTING.TRUE.に設定し、そうでない場合には.FALSE.に設定します。

PURE SUBROUTINE IEEE_GET_STATUS(STATUS_VALUE)
  TYPE(IEEE_STATUS_TYPE),INTENT(OUT) :: STATUS_VALUE
STATUS_VALUEを現在の浮動小数点ステータスに設定します。 ステータスには現在のすべての例外フラグとモード設定が含まれます。

PURE SUBROUTINE IEEE_SET_FLAG(FLAG,FLAG_VALUE)
  TYPE(IEEE_FLAG_TYPE),INTENT(IN) :: FLAG
  LOGICAL,INTENT(IN) :: FLAG_VALUE
FLAGで示される例外フラグをFLAG_VALUEに設定します。 FLAGは重複値がない限りどのような次元数の配列であっても構いません。 この場合FLAG_VALUEはスカラもしくは同じ形状の配列となります。

PURE SUBROUTINE IEEE_SET_HALTING_MODE(FLAG,HALTING)
  TYPE(IEEE_FLAG_TYPE),INTENT(IN) :: FLAG
  LOGICAL,INTENT(IN) :: HALTING
FLAGで示される例外の停止モードをHALTINGに設定します。 FLAGは重複値がない限りどのような次元数の配列であっても構いません。 この場合FLAG_VALUEはスカラもしくは同じ形状の配列となります。

PURE SUBROUTINE IEEE_SET_STATUS(STATUS_VALUE)
  TYPE(IEEE_STATUS_TYPE),INTENT(IN) :: STATUS_VALUE
STATUS_VALUEに格納されているステータスを浮動小数点ステータスに設定します。 ステータスはそれ以前にIEEE_GET_STATUSを呼び出して取得されたものである必要があります。

PURE LOGICAL FUNCTION IEEE_SUPPORT_FLAG(FLAG)
  TYPE(IEEE_FLAG_TYPE),INTENT(IN) :: FLAG
FLAGで示される例外フラグがすべての種別のREALでサポートされているかどうかを返します。

PURE LOGICAL FUNCTION IEEE_SUPPORT_FLAG(FLAG,X)
  TYPE(IEEE_FLAG_TYPE),INTENT(IN) :: FLAG
  REAL(*),INTENT(IN) :: X
FLAGで示される例外フラグがX種別のREALでサポートされているかどうかを返します。

PURE LOGICAL FUNCTION IEEE_SUPPORT_HALTING(FLAG)
  TYPE(IEEE_FLAG_TYPE),INTENT(IN) :: FLAG
FLAGで示される例外フラグに対する“停止モード”の制御がサポートされているかどうかを返します。

Results matter. Trust NAG.
Privacy Policy | Trademarks