整数开方算法

1 目的

  本文阐述了常用的开方算法的原理,重点描述了整数开方算法的实现并给出实例源码,旨在提高不带FPU的处理器处理开发的效率。

2 常用的开方算法

2.1 逼近法

        2.1.1 二分法逼近

                选取一个平方值大于目标值a的值b,和一个小于目标值的值c,取中间值d=(b+c)/2的平方e与a比较,若偏大,设置b的新值为d,否则设置c的新值为d,直至d的平方等于a或者b和c相等位置。这种猜测操作简单,但迭代次数过多,这里不详细描述,亦不给出源码。

        2.1.2 牛顿法逼近

                我们知道,在二维曲线的上的一点,沿着切线方向的变化速度最大。所以,如果我们确定了一个函数g(x),并且知道了它的目标值a对应的x的值,求g(x)=a等效于求g(x)-a的零点。取起点为x0,只考虑泰勒展开的前面两项,就是f(x)=g(x)-a=0的切线,亦即f(x0)+f'(x0)*(x-x0)=0,那么x=x0-f(x0)/f'(x0),对于开方,f(x)=x^2,那么,我们求的x=x0-(x0^2-a)/(2*x0)=(x0+a/x0)/2,再以x为新起点不断迭代,直至x和x0相等或者x的平方等于a为止。

2.2 数学法分离

       类似于我们数学的常规思维,以10机制为例,我们知道,每一位的平方的结果,要么是个一位数(eg.2x2=4),要么是个两位数(eg.7x

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值