在 Fortran 求和中忽略 NaN 项

pug*_*iam 3 fortran nan

有没有办法以NaN与通常在 Fortran 中完成的方式不同的方式组合普通数字?

我有几个总结,其中包含“安全”术语,它们不能是NaN,而其他一些术语可以是NaN。我希望表达式的评估忽略加数,以防它们是NaN

我不能让他们摆脱倍乘以他们空因素,当他们NaNNaN x 0NaN反正。想法?

谢谢

Bat*_*eba 5

没有不传播的算术运算NaN。所以像乘以 0 这样的想法是行不通的。

您唯一的解决方案是错过NaN总和中的条款。用基于的东西做

IF (IEEE_IS_NAN(x)) 
Run Code Online (Sandbox Code Playgroud)

如果您不使用 IEEE754 或使用旧的 FORTRAN 标准,则可以使用

IF(x .NE. x)

当且仅当 x 为 NaN 时才为 TRUE。