56、Cortex - M33处理器浮点单元(FPU)的使用与优化

Cortex - M33处理器浮点单元(FPU)的使用与优化

1. 单双精度计算问题

在进行浮点计算时,很多开发者希望将代码中的浮点计算限制为单精度,因为某些处理器仅支持单精度计算,双精度运算需由软件借助开发工具链插入的运行时库函数来完成。然而,开发者在代码中意外使用双精度浮点运算的情况并不少见。

例如,以下来自Whetstone基准测试的代码:

X=T*atan(T2*sin(X)*cos(X)/(cos(X+Y)+cos(X-Y)-1.0));
Y=T*atan(T2*sin(Y)*cos(Y)/(cos(X+Y)+cos(X-Y)-1.0));

即便将变量 X Y T T2 定义为 float (单精度),C编译器仍会生成包含双精度运算的编译代码。这是因为默认情况下,使用的数学函数是双精度的,常量 1.0 也被视为双精度。

若要生成单精度计算版本的代码,需进行如下修改:

X=T*atanf(T2*sinf(X)*cosf(X)/(cosf(X+Y)+cosf(X-Y)-1.0F));
Y=T*atanf(T2*sinf(Y)*cosf(Y)/(cosf(X+Y)+cosf(X-Y)-1.0F));

为确认编译代码未意外使用双精度计算,可通过编译报告文件检查编译代码中是否

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值