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.

[参考译文] 编译器/TMS320F28023:想要 sin ()、cos ()和 pow()的 long double 版本

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/830554/compiler-tms320f28023-want-long-double-versions-of-sin-cos-and-pow

器件型号:TMS320F28023

工具/软件:TI C/C++编译器

Win7 32位(SP1)、CCS 6.2.0.00050、F28023。

我一直在尝试使用双精度浮点(64位)数学来制作系数生成器。

我最后想、您需要将每个变量定义为长双精度型、因为只需使用双精度型与浮点型(32位)相同

我还看到、我必须将字母 L 布置到任何常量中、使编译器将它们视为长双精度型(例如、10.0L)

但是、sin (double_variable)、cos (double_variable)和 pow (10.0L、double_variable)等函数在32位浮点大小下仍然执行此操作。

对于以下情况、C 编译器将数字转换为浮点值、执行 sin、然后将其转换回长双精度型值。

long double d_sine_omega;
long double d_omega;
... d_omega 的一些分配...
D_sine_omega = sin (d_omega); 

生成的汇编代码

3f092c:5cad MOVZ AR4、@SP
3f092d:DC92 子 B XAR4、#18
3f092e:5CA4 MOVZ AR4、@AR4
3f092f:767F2FB4 LCR FD$TOFS
3f0931:767F2C07 LCR sin
3f0933:5cad MOVZ AR4、@SP
3f0934:DC98 子 B XAR4、#24
3f0935:88A4 MOVZ AR6、@AR4
3f0936:767F306D LCR FS$$TOFD 

这些函数是否有 long double 函数?

谢谢、Mark。

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

    [quote user="cool Javelin">这些函数是否包含 long double 函数?查看 ti-cgt-C2000_19.6.0.STS 中的 include/math.h 文件可显示以下函数的日志双精度版本(以"l"作为后缀):

    code_access long double col (long double x);
    _code_access long double sol (long double x);
    _code_access long double powl (long double x、long double y); 

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

    切斯特、谢谢、我现在知道有一个解决方案。

    我正在使用库6.4.6、并且 include 没有 sinl。

    我注意到15.12.3.LTS 的库(以及编译器或课程)确实具有 sinl。 我可能必须逐步达到这一点。

    问题是较新的库比我使用的库大60%、可能不适合。

    也许我必须开始创建我自己的包含位和位的库。 我猜我不能像 sinl (以及 cosl 和 powl)可能调用我需要保留的其他*l 例程那样进行太多的修整。

    谢谢、

    标记。