为什么安静的 NaN 并不总是安静的并且可能导致引发浮点异常?
Why quiet NaN is not always quiet and may lead to raising of floating-point exceptions?
上下文:安静的 NaN 并不总是安静的,可能会导致引发浮点异常。
代码示例和调用:参见 。
详细信息:安静的 NaN 是仅在某些情况下安静:
- 算术运算(C11、5.2.4.2.2、p3)
- Table 5.3(IEEE 754、5.11、p4)中的无序安静谓词
- 等(你可以在评论中精确)
问题:为什么 C 标准的创建者让安静的 NaN 不总是安静?
Why the creators of C standard have made quiet NaN not always quiet?
据我所知,C 标准没有在任何地方直接或间接指定在某些情况下使用安静的 NaN 必须导致引发 FP 异常。因此,标准委员会没有让安静的NaN不能总是安静的。
当然,委员会也没有要求安静 NaN 的使用绝不能导致引发 FP 异常,并且允许(但不要求)安静 NaN 确实导致 FP 异常的情况。但这与上一段并不矛盾。
该标准旨在支持在各种硬件上实施,为此,FP 行为的许多细节都未指定。这允许根据主机(存在的地方)的本机 FP 行为自然地实现 C。除其他事项外,C 没有指定 FP 表示,因此标准在谈论 NaN 时的含义,无论是安静的还是其他的,比 IEEE 754 对相同术语的含义更通用。
上下文:安静的 NaN 并不总是安静的,可能会导致引发浮点异常。
代码示例和调用:参见
详细信息:安静的 NaN 是仅在某些情况下安静:
- 算术运算(C11、5.2.4.2.2、p3)
- Table 5.3(IEEE 754、5.11、p4)中的无序安静谓词
- 等(你可以在评论中精确)
问题:为什么 C 标准的创建者让安静的 NaN 不总是安静?
Why the creators of C standard have made quiet NaN not always quiet?
据我所知,C 标准没有在任何地方直接或间接指定在某些情况下使用安静的 NaN 必须导致引发 FP 异常。因此,标准委员会没有让安静的NaN不能总是安静的。
当然,委员会也没有要求安静 NaN 的使用绝不能导致引发 FP 异常,并且允许(但不要求)安静 NaN 确实导致 FP 异常的情况。但这与上一段并不矛盾。
该标准旨在支持在各种硬件上实施,为此,FP 行为的许多细节都未指定。这允许根据主机(存在的地方)的本机 FP 行为自然地实现 C。除其他事项外,C 没有指定 FP 表示,因此标准在谈论 NaN 时的含义,无论是安静的还是其他的,比 IEEE 754 对相同术语的含义更通用。