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.

F28035的CLAsqrt函数有bug?

Expert 1795 points


问题很偏,随便聊聊~~~偶尔发现CLAsqrt函数有时会产生+inf 的结果,后来发现有一个固定的规律,只要开了编译优化,对0开方就一定得到+inf结果,我觉得这应该是有内部bug。其实不一定开优化就有异常,只是其他异常太诡异,很难说清楚,总之这个函数就是怪怪的。现在这对这个问题,我先把0值拦截下来再开方就没事了,问题也不算大,就是CLA中做逻辑判断很费空间和时间,如果能解决这个问题最好了。

装的最新的CCS6.1.3,芯片F28035,编译器版本是15.1.2,以前用6点几的版本也一样有bug。

  • 在CLA math的user guide 中,被开方数等于0会导致LVF 位等于0,LVF表示CLA计算溢出,所以不建议让输入参数等于0,另外你开了优化,可能会把这个函数中间的一些变量优化掉,所以就容易出现你看到的溢出情况。

  • 谢谢您的解释!就算我看到手册,也不明白LVF是什么意思~不过这个真的很难想象,0开方本就是0,TI为什么要这么调皮?

  • LVF是CLA的累加溢出标志,

    Latched Overflow Flag
    The following instructions will set this flag to 1 if an overflow occurs: MMPYF32, MADDF32, MSUBF32,
    MMACF32, MEINVF32, MEISQRTF32
    The MSETFLG and MMOV32 MSTF, mem32 instructions can also be used to modify this flag.