/fpe

構文:

/fpe:level

/fpe:level オプションは,主プログラムの実行時の浮動小数点例外処理を制御します。これには,例外浮動小数点値が許容されるかどうかや,実行時例外がどの程度正確に報告されるかなどが含まれます。/fpe:level オプションは,コンパイラが次の浮動小数点例外をどのように処理すべきかを指定します。

性能上の理由から,基本設定は次のようになっています。

ビジュアル開発環境では,「Fortran」タブの「Floating Point」カテゴリの「Floating-Point Exception Handling」を指定します。

/fpe:level オプションは,以下のとおりです。

/fpe:level オプション アンダーフローの処理 ゼロによる除算,オーバーフロー,および無効なデータの演算処理
/fpe:0 (ia64 システムの基本設定) 計算され規格化されていない値 (結果) をゼロに設定し,プログラムを続行します。算術式中で規格化されていない値 (有限でないデータ) を使用すると,無効な演算エラーが発生し,プログラムは終了します。/check:underflow も指定されている場合にのみメッセージが表示されます。 例外値は許容されません。プログラムはメッセージを表示した後に終了します。
/fpe:3 (ia32 システムの基本設定) 計算され規格化されていない値はそのままにします。プログラムが続行され,アンダーフローが起こる可能性があります。算術式中で規格化されていない値 (または例外番号) を使用すると,プログラムは続行されますが,性能が低下します。 プログラムは続行されます。メッセージは表示されません。NaN または無限大 (正または負) が生成されます。

プログラムに含まれる個々のルーチンを個別にコンパイルするときには,同じ /fpe:level を使用しなくてはなりません。

/fpe オプション,/check:underflow オプション,および MATHERRQQ ルーチンの ia32 システムでの相互作用を以下に示します。

指定された /fpe:n オプション /check:underflow が指定されているか? ユーザー定義の MATHERRQQ ルーチンが存在するか? ia32 システムの Visual Fortran 実行システムによるアンダーフローの処理
/fpe:0 いいえ いいえ アンダーフローした結果はゼロ (0) に設定されます。プログラムは続行されます。
/fpe:0 いいえ はい アンダーフローした結果はゼロ (0) に設定されます。プログラムは続行されます。
/fpe:0 はい いいえ アンダーフローした結果はゼロ (0) に設定されます。プログラムは続行されます。アンダーフローした結果数が数えられ,最初の 2 つのアンダーフローについてメッセージが表示されます。
/fpe:0 はい はい アンダーフローした結果はゼロ (0) に設定されます。プログラムは続行されます。アンダーフローした結果数が数えられ,最初の 2 つのアンダーフローについてメッセージが表示されます。
/fpe:3 いいえ いいえ 規格化されていない結果は許容され,プログラムは続行されます。トラップはマスクされ,ハンドラは何も呼び出されません。
/fpe:3 いいえ はい 規格化されていない結果は許容され,プログラムは続行されます。トラップはマスクされ,ハンドラは何も呼び出されません。
/fpe:3 はい いいえ バージョン 6.0 では,致命的なエラーが発生し,プログラムは終了します。
/fpe:3 はい はい アンダーフローを発生させたソース・プログラムに依存します。
  • アンダーフローが組込み手続中で起こった場合,不定の結果はそのまま残されます。プログラムは,ユーザー定義の MATHERRQQ ハンドラが結果の修正を行うという前提のもとで続行されます。

  • アンダーフローが組込み手続中で起こらなかった場合,バージョン 6.0 では,致命的なエラーが発生し,プログラムは終了します。

関連情報