MCU裸系统下快速平方根实现

在ROM资源有限的MCU平台上,当需要计算平方根时,可以使用逼近法实现快速平方根函数。该算法仅依赖整数乘法,通过二分法定位边界值,将计算复杂度降低到近似Log2(N),有效节省了空间并提高了效率。程序堆栈开销小,编译后通常直接使用寄存器操作。
摘要由CSDN通过智能技术生成

很多MCU平台均没有支持完整的数学运算指令,此时如果计算算术平方根就需要利用软件函数库,但是这些库代码一般都会占用不少的ROM空间,当ROM区域特别紧张时可能无法利用现成的库代码,此时就要自己实现一个快速平方根。以下是一个典型的逼近法实现的快速平方根函数,只用了整数乘法就可以做到32位范围内的整数平方根计算,并且计算中边界值始终按照二分法定位可以显著缩短查找逼近时间,算法复杂度近似于Log2(N)。

算法:

0) 声明并准备如下变量:
    value - 要计算平方根的原始输入数值
    s 	- 平方根结果变量
    n 	- 下一个逼近结果变量
    s2 	- 临时变量用于储存平方数值
    d 	- 当前平方数值和输入数值的误差	
1)读入要计算的数值变量value,按照value/2准备计算边界变量t(t最大655342)当value为0,1,2时直接返回结果0,1,1,否则继续
3)初始化结果变量s为2,初始化差值变量d为value当前数值
4)判断结果变量,当s>t时直接返回s作为最终结果,否则继续
5)计算s2=s*s,当s2等于value时直接返回s,否则继续
6)如果s2大于value并且s2-value大于差值变量d,则返回数值s-1作为最终结
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值