故意在Fortran中使用NaN

时间:2018-01-29 12:12:32

标签: fortran ieee-754

我已阅读有关Fortran比较中使用NaN的信息性帖子(herehere)  而且我认为我已经大致了解了发生了什么。

我的问题更多是关于NaN的使用。

假设我收集了一些实物,但我不知道他们的价值观是什么。因此,我将它们全部设置为NaN,实际上,我使用NaN来部分地表示未分配的'。似乎有一些debate关于这是否是一个好主意我已经阅读了使用巨大(1.0)或其他一些神奇数字'的建议。代替。

但是使用NaN似乎具有实际的好处,因为任何涉及任何值NaN变量的计算都将导致NaN。这是有帮助的(并且可能在数学意义上是正确的)。

例如,如果x设置为NaN,y为1.23则

z = x + y
z = x - y
z = x * y
z = x / y

总是导致z为NaN(至少在Windows上为Intel v18) - 这就是我想要的:z未知,因为x未知。

那么 - 这是否可以接受NaN?或者我是否创造了我尚未意识到的问题?

1 个答案:

答案 0 :(得分:1)

您可以使用-finit-real等开关在许多编译器中自动执行此操作。它可能很有用,这就是他们提供此开关的原因。许多编译器提供此功能。

请注意,有两种NaN。安静的NaN和信号NaN。使用信令NaN将触发浮点异常。

它是否优先于不同的哨兵价值几乎只是一种意见,所以我不会回答这个问题,基于意见的问题和民意调查在这里是偏离主题的。我们不能在你所链接的辩论中继续这里(Is it a good idea to use IEEE754 floating point NaN for values which are not set?)。在今天的标准中,我认为这不是一个好的问题(注意它的年龄有多大!),而且许多答案今天都不会有,但如果有人有更多要补充的东西,他们可以在那个问题上做到这一点,这里没有任何意义。

相关问题