在Fortran中将变量设置为+ Infinity最安全的方法是什么?目前我正在使用:
program test
implicit none
print *,infinity()
contains
real function infinity()
implicit none
real :: x
x = huge(1.)
infinity = x + x
end function infinity
end program test
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有更好的方法?
如果您的编译器支持 ISO TR 15580 IEEE Arithmetic,它是所谓的Fortran 2003标准的一部分,那么您可以使用ieee_*modules中的过程.
PROGRAM main
USE ieee_arithmetic
IMPLICIT NONE
REAL :: r
IF (ieee_support_inf(r)) THEN
r = ieee_value(r, ieee_negative_inf)
END IF
PRINT *, r
END PROGRAM main
Run Code Online (Sandbox Code Playgroud)