虽然,据我所知,IEEE 754没有提及关于刷新到零的模式来更快地处理非规范化数字,但是一些架构提供了这种模式(例如http://docs.sun.com/source/806-3568/ncg_lib .html).
在本技术文档的特定情况下,非规范化数字的标准处理是默认值,并且必须明确激活flush-to-zero.在默认模式下,非规范化数字也在软件中处理,这比较慢.
我在嵌入式C的静态分析器上工作,试图预测在运行时可能发生的值的正确(如果有时不精确)范围.它的目的是正确的,因为它可用于排除在运行时出现错误的可能性(例如对于关键的嵌入式代码).这需要在分析期间捕获所有可能的行为,因此在浮点计算期间产生所有可能的值.
在这方面,我的问题是双重的:
在嵌入式架构中,是否存在仅提供从零到零的架构?他们可能没有权利将自己宣传为"IEEE 754",但可以提供足够接近IEEE 754风格的浮点运算.
对于在嵌入式环境中提供两者的体系结构,可能不会被系统激活为零,以使反应时间更可预测(这些嵌入式系统的常见约束)?
在我用于浮点值的区间运算中处理flush-to-zero非常简单,如果我知道我必须这样做,我的问题是我是否必须这样做.
我正在为基本类型编写类,因此代码在多个平台和编译器上在逻辑上是相同的(例如int_least16_tfor int)。为了娱乐!(我还是一名学生。)\n我读到了这个:
\n\n\n
更糟糕的是:
\n\n\n\n
这意味着浮点可能是无符号的...
[编辑:是的,这是不同的事情,但没有:“,但必须支持负数”。哟,如果标准中没有这样的东西,它可能不支持正常的 0...(我没有规范。)请参阅]
我知道这就像__int128一样,标准只是一个标准,\n但仍然...\nIEEE-754 是 1985 年的,但有些机器可能很奇怪,\n而且一些旧硬件没有浮动单位。
\n据我了解, float 是强制性的(不像 int16_t 那样是可选的),\n但可以在任何标准中,并且任何值集都可以吗?
\n我们唯一拥有的就是一些宏 ( <cfloat>):
FLT_MIN, FLT_MAX- 即使FLT_MIN = IEEE-754::FLT_MIN, float 也可以是非 IEEE-754。\n例如 float:带有分数的翻转指数...
FLT_RADIX- 基础系统?如果是这样,可以帮忙写出准确的值。但是,float 仍然可以是 3 位或 200 位(大小)...