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