Analog Devices 的 BFF-533 处理器不提供 native 浮点支持,但提供浮点仿真。
使用 IDE VisualDSP++,用户可以在高性能浮点和严格的 IEEE 合规性之间进行选择。
据我了解,the difference between these two 会导致内存中浮点值的不同表示,因此我做了以下测试:
union TestType
{
float hello;
char test[4];
};
TestType tt;
tt.hello = 0.00123456789;
我使用这两个选项编译并运行它,期望在测试数组中看到不同的值,但每次运行都得到相同的值:
有人可以解释一下为什么我在两次运行中都看到了 IEEE 表示吗?
最佳答案
您引用的文档讨论了用户定义的 fastfloat16
类型。您在此处使用 native float
类型。我不认为它们是等效的,无论 VisualDSP 设置如何。
“严格的 IEEE 合规性”通常被解释为“即使是边缘情况也能正确处理”。 IEE754 的边缘情况包括非正规数、除以零、无穷大、非数字等。例如,在 IEEE754 NaN != NaN
中。这意味着您无法进行快速 32 位比较。另一个例子是 IEEE754 要求基本数学运算精确到最后一位。使用 IEEE754 float 布局可以显着提高速度,但不能使用 IEEE754 数学。
关于c++ - IEEE 浮点和内存中的快速浮点表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45586128/