0
点赞
收藏
分享

微信扫一扫

[Julia语言]使用Chudnovsky 算法快速计算圆周率 Pi (π) 值

技术只适用于干活 2022-03-12 阅读 96

   计算1万位的Pi值,用Julia实现的Chudnovsky算法耗时0.16秒,作为比较,用Julia实现的另一个算法([Julia&Delphi]快速计算圆周率 Pi (π) 值_BlueStorm的博客-CSDN博客)耗时4.87秒, 相比起来性能提高了20倍。

function CalcPi_2()
    #Decimal.precision = this.digits + 2;
    decimalwidth = 10000;
    digitsPerIteration = 14
    precision = (div(trunc(Int64, decimalwidth*log2(10)), 64) + 1) * 64
    setprecision(BigFloat, precision)
    iterations = div(decimalwidth, digitsPerIteration-1) + 1;

    C = 426880 * sqrt(big(10005))
    f1 = big(1); f3 = big(1); f6 = big(1);
    Mk = big(1)
    Lk = big(13591409)
    Xk = big(1)
    pi = Mk * Lk / Xk
    for i in 1:iterations
        k = big(i)
        f1 *= i;
        for j in (3i-2):i
            f3 *= j 
        end
        for j in (6i-5):i
            f6 *= j
        end
        Mk = f6/(f3 * f1^3)
        Lk += 545140134
        Xk *= (-262537412640768000)
        pi += Mk * Lk / Xk
    end
    pi = C/pi;
end;

@time CalcPi2();
举报

相关推荐

0 条评论