【发布时间】:2021-06-26 16:55:46
【问题描述】:
上下文:安静的 NaN 并不总是安静的,可能会引发浮点异常。
详情:安静的 NaN 仅在某些情况下安静:
- 算术运算 (C11, 5.2.4.2.2, p3)
- 表 5.3 (IEEE 754, 5.11, p4) 中的无序安静谓词
- 等。 (您可以精确到 cmets)
问题:为什么 C 标准的创建者让安静的 NaN 并不总是安静?
【问题讨论】:
-
这看起来像是一道考试题。你有一些可以发布的代码吗?你能找出你想要解决的现实问题吗?
-
“为什么 C 标准的创建者让安静的 NaN 并不总是安静?” --> 允许支持安静和非安静(信号)NAN 的实现。
-
@RobertHarvey 确定您要解决的实际问题:清楚地了解 C 和 IEEE 754 标准,以便开发(修复现有)C符合/兼容的编译器/标准库。但是,here 用户 Nate Eldredge 问道:您知道哪些编译器/库组合实现明确声明完全符合 ISO C11 的示例?我想我不知道任何。
-
@chux-ReinstateMonica 根据 IEEE 754,表 5.3
NAN == NAN应不导致引发 FP 异常。 (请注意,每个 C11 宏NAN是安静的 NaN)。但是,根据 C11,F.4 浮点到整数转换lrintf(NAN)将导致引发“无效”浮点异常。因此,我试图理解:为什么不同类型的 FP 操作(算术运算、比较、转换等)的行为与 w.r.t 不一致。引发 FP 异常? -
@pmor Compliant C 不需要遵守 IEEE 754 或附录 F。这是可选的。 “未定义 STDC_IEC_559 的实现不需要符合这些规范”
标签: c floating-point nan ieee-754 c11