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.

[参考译文] TMS320F28388D:如果与其他数学运算一同使用、则 ATAN2未定义

Guru**** 2578945 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1229817/tms320f28388d-atan2-undefined-if-used-with-other-math-operations

器件型号:TMS320F28388D

这看起来像是编译器错误、但请告诉我对此是否有其他解释。 该代码块生成 atan2未定义的错误:

浮点角;
浮点 tempBeta = 1.0f;
浮点 tempAlpha = 0.5f;
浮点 tempPhase = 14.0f;
角度= atan2 (tempBeta、tempAlpha)+ tempPhase * 2.0f;

请注意、我包含 Math.h 如果我更改上面的最后一行以分隔数学操作、则编译此代码时不会出现错误:

浮点角;
浮点 tempBeta = 1.0f;
浮点 tempAlpha = 0.5f;
浮点 tempPhase = 14.0f;
角度= atan2 (tempBeta、tempAlpha);
角度+=温度相位;
角度*= 2.0f;

我使用 CCS 12.3、优化级别为-03。 如果您需要更多信息、请告诉我。  

谢谢。

吉姆

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

    您好!
    您是否知道这两个代码示例计算出的结果有所不同?
    第二个示例与等效  
    angle = (atan2(tempBeta, tempAlpha) + tempPhase) * 2.0f;

    Andy

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

    我只是 简化了代码、这样它就不会与我特定于应用的变量纠缠在一起。 问题是--如果 atan2行在同一行中添加了数学运算,它将无法编译。  

    谢谢。

    吉姆

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

    您正在使用哪个编译器版本?

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

    TI v22.6.0.LTS

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

    我尝试编译同一段代码、并且编译时没有错误。
    请注意、atan2需要 float64参数、并且 float32变量会在调用 atan2之前转换为 float64。 您可以改用 atan2f。
    但我不知道为什么会得到误差。

    Andy

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

    我无法重现此行为...

    Jingang Ye 说:
    此代码块产生未定义 atan2的错误

    请将源代码恢复到产生错误的状态。  然后、 请按照 如何提交编译器测试用例一文中的说明进行操作

    谢谢。此致、

    -George.