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.

[参考译文] TMS320F280037:如何在宽松的 FP 项目中调用严格的 FP 函数?

Guru**** 2529140 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1552531/tms320f280037-how-can-i-call-strict-fp-functions-within-a-relaxed-fp-project

器件型号:TMS320F280037


工具/软件:

你好,我的项目是宽松的 FP 模式,但有一个地方我想使用严格的 sinf() 和 sqrtf() 函数来获得最大的精度。  我的主要问题:是否可以从用户代码直接调用严格(库)函数?

我在 math.h 中看到了这些定义  它们在宽松模式下处于活动状态、并将对 sqrtf() 和 sinf() 的调用重新路由到它们的 relaxed (builtin) 等效项、对吗?

如果我处于相反的情况(即如果我想在严格模式项目中调用 relaxed 函数),答案是调用__sinf() 而不是 sinf(),正确吗?

我在另一个线程中看到,宽松的 sinf() 的精度为“1 ulp“。  ULP 代表什么?

谢谢

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

    您好、Chris、

    一种选择是更改进行此调用并希望实现严格的单个特定文件的编译器设置。 您可以在 CCS 中右键点击文件并转到属性等来执行此操作、就像您在整个工程中那样。 或者、如果您使用的是 CCS projectspec,也可以在此处执行此操作 — 告诉我您是否使用此选项,我可以向您发送语法。

    另一方面、是的、您可以使用内在函数。

    ULP =最低精度单位。 在浮点中,精度不是固定的,因此精度的概念是可变的 — ULP 随着数字大小的增加而增加。

    谢谢、

    Sira

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

    谢谢、我没有意识到可以为单个文件更改 FP 模式。  但如果精度的差异很小、我只需将其保持在宽松模式下。