ナビゲーション:前へ 上へ 次へ
ナビゲーション:前へ 上へ 次へ
6.2 例外フラグ、モードと情報の流れ
Fortran 2003で使われるIEEE算術モデルでは、 特定の浮動小数点例外(オーバーフロー等)が発生したかどうかを示すグローバルな一群のフラグ、 浮動小数点演算と例外処理にかかわるいくつかの演算モード、 良いパフォーマンスと信頼性を得るためのフラグやモードの伝搬に関する一群の規則が規定されています。例外フラグに対する伝搬規則では情報が“上方向”に流れます。 従って個々の手続きはフラグをクリアした状態で開始され、 復帰時にフラグが設定されていた場合には呼び出し側の対応するフラグがセットされることになります。 これにより、並列に実行可能な手続きがIEEE例外フラグを介して相互干渉を起さないことが保証されます。 コンピュータハードウェアが1セットのグローバルフラグしかサポートしていない場合には、 手続き内で自らフラグのチェックを行う(IEEE_GET_FLAGまたはIEEE_GET_STATUSを用いる)ことが必要になります。
モードに関する伝搬規則ではモード設定が“下方向”に流れます。 これはすべてのルーチン内でのコードの最適化を可能にします。 そのための唯一の代償は、 モード変更を行う手続きからの復帰時に、 手続きに入った時点でのモードを回復しなくてはならないという点です。
利用可能なモードは次の通りです:
- それぞれの浮動小数点例外によってプログラムを終了させるか、 あるいは(デフォルトの結果を提供し例外フラグを立てて)実行の継続を許すか
- 浮動小数点演算の丸めモード
- アンダーフローモード
ナビゲーション:前へ 上へ 次へ