floating-point - Fortran 中具有 NaN 值的参数(常量)变量

标签 floating-point fortran nan gfortran

是否可以用 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/

相关文章:

python - 删除 MultiIndex 中带有重复项的 NaN 行

c# - Mathf.Approximately(0.0f, float.Epsilon) == true 其行为是否正确?

python - 为什么 math.modf 返回 float ?

compilation - 子程序中未定义语句的Fortran问题

compilation - f951 错误 : unrecognized command line option

c# NaN 比较 Equals() 和 == 的区别

matlab - 找到聚集的 NaN,但单独留下单独的 NaN

floating-point - 正确舍入两个处理溢出的 float 之和的 sqrt 计算

c++ - 程序正在读取太多的小数点

pointers - 指针的 Fortran 副本