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.

[参考译文] TMS320F2800137:log ()和 logf ()显示了不同的计算结果

Guru**** 2465890 points
Other Parts Discussed in Thread: TIDM-02010

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1486854/tms320f2800137-log-and-logf-shows-different-calculation-result

器件型号:TMS320F2800137
主题中讨论的其他器件:TIDM-02010

工具与软件:

尊敬的 Champs:

我会在以下情况下使用 FPU 运行日志

(1.0f /((1.0f / 298.15f)+(1.0f / 4133.0f)* logf ((8250.0f *((4095.0f / ADC_val)- 1.0f))/ 47000.0f))- 273.15f

adc_val = 563时、情况下会显示完全错误的值。

但当我使用 math.h 运行时

(1.0f /((1.0f / 298.15f)+(1.0f / 4133.0f)* log ((8250.0f *((4095.0f / ADC_val)- 1.0f))/ 47000.0f))- 273.15f

它显示的值正确。 什么会导致计算错误?

此致、

TED

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

    您好!

    我们的主题专家是 OOO 至3月17日。 请预计会延迟响应

    此致、

    Subham

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

    Ted、

    在 CCS 工程编译器设置中 FP_MODE =宽松吗? 我怀疑 logf 是使用 TMU 实现的、输入范围超出了 TMU 可以准确处理的范围。

    您能告诉我输入值是多少吗?

    LOG2F32和 IEXP2F32 TMU 指令适用于特定的输入范围。 如果需要、我可以提供此范围的详细信息。

    谢谢!

    SIRA

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

    尊敬的 Sira:

    在 logf ()中、值为 8250.0f *((4095.0f / adc_val)- 1.0f)/ 47000.0f、ADC_val 为560。 因此、logf 的内部为1.108045。

    我认为它不超出范围。 您可以检查一下吗?

    -O 2、-mf 3、--fp_mode relaxed、--fp_reassoc on

    编译器是 TI v22.6.0.1.LTS

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

    尊敬的 Ted:

    让我在最后尝试一下、看看我是否可以重现该问题。 请给我一天。

    谢谢!

    SIRA  

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

    Ted、

    您的 TMU 设置为什么?

    另外、请向我展示基于 logf()的操作生成的反汇编。

    谢谢!

    SIRA

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

    TMU 设置为 tmu1。 这是 TMU 设置吗?

    关于反汇编、我很快会更新。

    TED

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

    Ted、

    F280013x 具有 TMU0、而不是 TMU1。 因此、LOG2F32和 IEXP2F32指令不受支持。 问题是您选择了错误的 TMU、编译器正在使用 logf ()和 relaxed fp_mode 生成适当的 TMU 代码、并且由于器件上没有 TMU1、在运行时会失败。

    谢谢!

    SIRA

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

    好的。 我将对其进行测试。

    并将告知 TIDM-02010示例代码设置错误。

    此致、

    TED