This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F280049C:如何在计算后在 CLA 上测试 float32_t 的非常规数值(DEN)?

Guru**** 2341440 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1481743/tms320f280049c-how-do-i-test-a-float32_t-on-the-cla-for-denormal-values-after-calculations-den

器件型号:TMS320F280049C

工具与软件:

我偶尔会在一些计算后得到去规范化的值、我试图确定它 是否会影响以后的计算、以及如何测试这些值。

在所有情况下、我都使用 float32_t、并在上使用宽松浮点选项。

例如、如果 x 是 float32_t 并且是 DEN、那么如果你取 sin (x)、CLA 会发生什么情况?  它是否认为 x 为0?  它以任何方式失败或者生成异常标志或者中断吗?

如何测试 x 以查看它是否已被去规范化?  在 C28x 上、我会使用以下代码、但在 cla_math.h 中未针对 CLA 实现 fpclassify ()(在 math.h 中找到)

    if (fpclassify(x) == FP_SUBNORMAL)
    {
        x = 0.0f;
    }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在 C28x FPU 和 CLA 上、IEEE-754标准有一些简化

    简化为 IEEE-754格式(FPU 和 CLA 也是如此)
    标志和比较运算:

    • 负零被视为正零
    • 非归一化值被视为零
    • 非数(NaN)被视为无穷大

    您可能也会发现此帖子很有用: