IEEE 浮点和内存中的快速浮点表示

IEEE floating point and fast floating point representation in memory

Analog Devices 的 BFF-533 处理器不提供本机浮点支持,但提供浮点仿真。

使用 IDE VisualDSP++,允许用户 select 在高性能浮点和严格的 IEEE 合规性之间。

据我了解,the difference between these two 导致内存中浮点值的不同表示,因此我进行了以下测试:

union TestType
{
    float hello;
    char test[4];   
};

TestType tt;
tt.hello = 0.00123456789;

我编译并 运行 这两个选项,期望在测试数组中看到不同的值,但我每个都得到相同的值 运行:

有人可以解释为什么我在两个 运行 中看到的似乎是 IEEE 表示吗?

您引用的文档讨论了用户定义的 fastfloat16 类型。您在此处使用本机 float 类型。无论 VisualDSP 设置如何,我都不认为它们是等效的。

"Strict IEEE compliance" 通常被解释为 "even the edge cases are handled correctly"。 IEE754 的边缘情况是非正规数、被零除、无穷大、非数字等。一个例子,在 IEEE754 NaN != NaN 中。这意味着您不能进行快速的 32 位比较。另一个例子是 IEEE754 要求基本数学运算精确到最后一位。使用 IEEE754 浮点布局可以实现显着的加速,但不是 IEEE754 数学。