我一直在尝试寻找一种符合标准的方法来检查Fortran 90/95中的无穷大和NaN值,但比我想象的难得多。
- 我尝试手动创建使用IEEE 754中描述的二进制表示法的Inf和NaN变量,但未找到此类功能。
- 我知道Fortran 2003中有内置的
ieee_arithmetic
模块,其中包含ieee_is_nan()
和ieee_is_finite()
内部函数。但是,并非所有编译器都支持它(特别是gfortran 版本4.9及以下版本)。
像 pinf = 1./0
和 nan = 0./0
之类的定义无限大和NaN的方法让我觉得不太正规,在我的意见中可能会引发一些构建问题 - 例如,如果某些编译器在编译时检查这一点,则需要提供特殊标志。
有没有一种我可以在标准Fortran 90/95中实现的方法?
function isinf(x)
! Returns .true. if x is infinity, .false. otherwise
...
end function isinf
什么是isnan()
函数?
IEEE_ARITHMETIC
,但旧版本的支持仍然是一个问题,并且在很长一段时间内将继续存在。 - Vladimir F Героям слава