【发布时间】:2018-02-13 18:22:48
【问题描述】:
有没有一种方法可以将NaN 和普通数字以不同于通常在 Fortran 中完成的方式组合在一起?
我有几个包含“安全”术语的汇总,不能是NaN,还有一些其他术语可以是NaN。
我希望表达式的评估忽略加数,以防它们是NaN。
当它们为NaN 时,我不能只是将它们乘以一个空因子,因为NaN x 0 无论如何都会给出NaN。
想法?
谢谢
【问题讨论】:
有没有一种方法可以将NaN 和普通数字以不同于通常在 Fortran 中完成的方式组合在一起?
我有几个包含“安全”术语的汇总,不能是NaN,还有一些其他术语可以是NaN。
我希望表达式的评估忽略加数,以防它们是NaN。
当它们为NaN 时,我不能只是将它们乘以一个空因子,因为NaN x 0 无论如何都会给出NaN。
想法?
谢谢
【问题讨论】:
没有不传播NaN 的算术运算。所以像乘以 0 这样的想法是行不通的。
您唯一的解决方案是忽略总和中的 NaN 项。使用基于
IF (IEEE_IS_NAN(x))
如果您不使用 IEEE754 或使用较旧的 FORTRAN 标准,则可以使用
IF(x .NE. x)
当且仅当 x 为 NaN 时为真。
【讨论】:
x .ne. x,所以要小心。始终为每个系统测试您的 NaN 检测器。
IF(x .NE. x)。