大数除法之迭代法

上一篇文章讲到了估商法的原理,有了一个不错的效率,但在要求精度较大时,速度和迭代法相比差距很大。

      除法:u/y=u*(1/y);

      先讲一下倒数迭代式:x1=(2-y*x0)*x0,x0是y的倒数的近似值,它必须要小于y的倒数。另外迭代式中的乘法子程序要选用快速乘法(如FFT算法的乘法子程序)。

      否则迭代法的除法速度是很慢的,远远小于估商法。

     以求9的倒数为例演示迭代法的使用,求9的32精度的倒数:

     1/9=1.1111111111111111111111111111111e-1;这里计算的是9的32位精度的倒数
    (2-9*0.11)*0.11=1.111e-1;                  现在我们用初值0.11迭代计算32位精度的倒数
    (2-9*0.1111)*0.1111=1.1111111e-1;
    (2-9*0.11111111)*0.11111111=1.111111111111111e-1;
    (2-9*1.111111111111111e-1)*1.111111111111111e-1 = 1.1111111111111111111111111111111e-1;

    对于如何确定y的初值,网上找不到相关的文献,我最早是有估商法算y的前N位的初值,然后迭代算出精度更高的倒数。

     但是这种方法在综合运算时,估商法存在大量的进制转换,和指数对位,效率不高。

    前一段时间才突破用计算器的cpu的除法功能计算除数倒数的初值,这个问题原理很简单:(就是取除数的前几位有效数,用cpu算倒数,然后取倒数的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值