是否可以用 NaN 设置参数变量?并将其放在特定的模块中。我想用它来初始化一些其他变量。因此,如果它们没有更新,我将面临运行时错误,而不是使用一些随机数运行模拟。
我正在使用 GFortran。
最佳答案
添加到Vladimir F's answer我会提到 gfortran 5.0(但不是更早版本)支持 IEEE 内在模块。
而不是
real x
x=0
x=0/x
可以使用
use, intrinsic :: iso_fortran_env
use, intrinsic :: ieee_arithmetic
integer(int32) i
real(real32) x
x = ieee_value(x, ieee_quiet_nan)
i = transfer(x,i)
这为您提供了获得哪些 NaN 值的灵 active 。您也不必担心任何信号无效标志。 [但请注意,请求 ieee_signaling_nan
可能并不能真正满足您的要求。]
请注意,ieee_value()
不能直接在初始化中使用:对它的引用不是常量表达式。对于此类使用,请采用此方法来获取位模式并应用其他答案的方法。
您还需要确保支持每种数据类型的功能。
关于floating-point - Fortran 中具有 NaN 值的参数(常量)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31971836/