Fortran 90/95 で Infinite 値と NaN 値をチェックする標準に準拠した方法を見つけようとしましたが、思ったより難しいことがわかりました。
- IEEE 754 で説明されているバイナリ表現を使用して Inf および NaN 変数を手動で作成しようとしましたが、そのような機能は見つかりませんでした。
ieee_arithmetic
Fortran 2003 の組み込みモジュールieee_is_nan()
と組み込み関数を認識していieee_is_finite()
ます。ただし、すべてのコンパイラ (特にバージョン 4.9 のgfortran ) でサポートされているわけではありません。
最初に無限大と NaN を定義するのはハックのようでpinf = 1. / 0
、nan = 0. / 0
IMHO はいくつかの構築上の問題を引き起こす可能性があります。たとえば、一部のコンパイラがコンパイル時にこれをチェックする場合、特別なフラグを提供する必要があります。
標準の Fortran 90/95 で実装できる方法はありますか?
function isinf(x)
! Returns .true. if x is infinity, .false. otherwise
...
end function isinf
そしてisnan()
?