相关疑难解决方法(0)

浮点运算中的flush-to-zero行为

虽然,据我所知,IEEE 754没有提及关于刷新到零的模式来更快地处理非规范化数字,但是一些架构提供了这种模式(例如http://docs.sun.com/source/806-3568/ncg_lib .html).

在本技术文档的特定情况下,非规范化数字的标准处理是默认值,并且必须明确激活flush-to-zero.在默认模式下,非规范化数字也在软件中处理,这比较慢.

我在嵌入式C的静态分析器上工作,试图预测在运行时可能发生的值的正确(如果有时不精确)范围.它的目的是正确的,因为它可用于排除在运行时出现错误的可能性(例如对于关键的嵌入式代码).这需要在分析期间捕获所有可能的行为,因此在浮点计算期间产生所有可能的值.

在这方面,我的问题是双重的:

  1. 在嵌入式架构中,是否存在仅提供从零到零的架构?他们可能没有权利将自己宣传为"IEEE 754",但可以提供足够接近IEEE 754风格的浮点运算.

  2. 对于在嵌入式环境中提供两者的体系结构,可能不会被系统激活为零,以使反应时间更可预测(这些嵌入式系统的常见约束)?

在我用于浮点值的区间运算中处理flush-to-zero非常简单,如果我知道我必须这样做,我的问题是我是否必须这样做.

c embedded floating-point ieee-754

13
推荐指数
1
解决办法
4278
查看次数

如何检测非 IEEE-754 浮点,以及如何使用它们?

我正在为基本类型编写类,因此代码在多个平台和编译器上在逻辑上是相同的(例如int_least16_tfor int)。为了娱乐!(我还是一名学生。)\n我读到了这个:

\n
\n

float [...] 匹配 IEEE-754 binary32 格式(如果支持)。

\n
\n

更糟糕的是:

\n
\n

浮点类型可以支持特殊值:\n \xe2\x88\x9e、 NaN 或 -0

\n
\n

这意味着浮点可能是无符号的...
[编辑:是的,这是不同的事情,但没有:“,但必须支持负数”。哟,如果标准中没有这样的东西,它可能不支持正常的 0...(我没有规范。)请参阅]

\n

我知道这就像__int128一样,标准只是一个标准,\n但仍然...\nIEEE-754 是 1985 年的,但有些机器可能很奇怪,\n而且一些旧硬件没有浮动单位。

\n

据我了解, float 是强制性的(不像 int16_t 那样是可选的),\n但可以在任何标准中,并且任何值集都可以吗?

\n
\n

我们唯一拥有的就是一些宏 ( <cfloat>):

\n
    \n
  • FLT_MIN, FLT_MAX- 即使FLT_MIN = IEEE-754::FLT_MIN, float 也可以是非 IEEE-754。\n例如 float:带有分数的翻转指数...

    \n
  • \n
  • FLT_RADIX- 基础系统?如果是这样,可以帮忙写出准确的值。但是,float 仍然可以是 3 位或 200 位(大小)...

    \n …

c c++ legacy floating-point standards

4
推荐指数
1
解决办法
791
查看次数

标签 统计

c ×2

floating-point ×2

c++ ×1

embedded ×1

ieee-754 ×1

legacy ×1

standards ×1