構文:
/fpe:level
/fpe:level オプションは,主プログラムの実行時の浮動小数点例外処理を制御します。これには,例外浮動小数点値が許容されるかどうかや,実行時例外がどの程度正確に報告されるかなどが含まれます。/fpe:level オプションは,コンパイラが次の浮動小数点例外をどのように処理すべきかを指定します。
浮動小数点演算の結果として,ゼロによる除算,オーバーフロー,または無効なデータが発生した場合
浮動小数点演算の結果として,アンダーフロー演算が発生した場合
規格化されていない値,またはその他の例外値 (正の無限大,負の無限大,または NaN) が算術式中に含まれている場合
性能上の理由から,基本設定は次のようになっています。
ia32 システムでの基本設定は /fpe:3 です。/fpe:0 を使用すると,ia32 システムでは実行時性能が低下します。
ia64 システムでの基本設定は /fpe:0 です。多くのプログラムは,規格化されていない値やその他の例外値を扱う必要がありません。/fpe:3 を使用すると,ia64 システムでは実行時性能が低下します。
ビジュアル開発環境では,「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 | はい | はい | アンダーフローを発生させたソース・プログラムに依存します。
|
関連情報
ia32 システムでの /fpe オプションについては,「浮動小数点例外を処理する (/fpe) コンパイラ・オプションの動作内容」を参照してください。
浮動小数点環境と MATHERRQQ ルーチン (ia32 システム) についての詳細は,「浮動小数点環境」を参照してください。
例外と終了ハンドラの作成については,「高度な例外および終了処理の考察」を参照してください。
Visual Fortran が実行時に使用する浮動小数点例外設定を取得または設定できるルーチンについての詳細は,「FOR_SET_FPE」と「FOR_GET_FPE」を参照してください。
IEEE 浮動小数点例外処理についての詳細は,『IEEE Standard for Binary Floating-Point Arithmetic』(ANSI/IEEE Standard 754-1985) を参照してください。