C99 是否假定支持次正规数?

问题描述

C99 是否假设支持次正规数?

来自:

  • FP_SUBnorMAL 分类宏的存在
  • 事实上,IEEE 754 要求支持次正规数

我得出的结论是 C99 支持次正规数。这个结论正确吗?

解决方法

C99 是否假设支持次正规数?

没有。 5.2.4.2.2。该语言定义了一个浮点数模型。然后该语言定义了该模型中的次正规浮点。然后建立一个接口,如何检测和处理次正规浮点数,以及如何在极端情况下处理它们 - 我的意思是,何时引发异常,何时不引发。

这并不意味着底层架构使用这个模型来表示浮点数。其目的是以 abstract 的方式编写标准,试图提供一个接口而不需要它应该如何实现。 Note 16

  1. 浮点模型旨在阐明每个浮点特性的描述,并不要求实现的浮点算法完全相同。

如果实现实现 Annex F浮点类型与 IEC 60559 中描述的格式匹配,因此它将具有次正规数。这是推荐做法,但可选,使用宏检测 - 没有要求。

FP_SUBNORMAL 分类宏的存在

可能有更多 FP_[A-Z]* 宏由实现提供,用于额外的“浮点值种类”。

事实上,IEEE 754 需要支持次正规数

但 C 不需要 IEEE 754 支持。