4

Chudnovskyアルゴリズムと呼ばれるπアルゴリズムに出会いました。Python の実装は、Python に付属のパッケージを使用するウィキペディアに示されています。decimalしかし最近、ガウス・ルジャンドルのアルゴリズムをテストしたところ、高精度の計算を扱う場合mpmathよりもパッケージの実行がはるかに効率的であることがわかったので、このアルゴリズムが で動作することを願っています。これが私のコードです:decimalmpmath

#!/usr/bin/env python

from mpmath import *
import pi_compare # A module aim to compare result with standard pi

mp.dps = 1000
def pi():
    K, M, L, X, S = 6, mpf('1'), 13591409, 1, mpf('13591409')
    for i in xrange(0,100):
        M = (K**3 - K*16) * M / K**3
        L += 545140134
        X *= -262537412640768000
        S += (M * L) / X
        K += 12
    return mpf('426880') * mpf('10005').sqrt() / S

P = pi()
print P
print pi_compare.compare(str(P))

私は Python 自体が大きな整数を処理できると信じていmpmathますK, L, X。問題は非常に多く発生しS += (M * L) / Xていると思います。Xこんなにたくさんの数に対処するのはとても混乱しました。アドバイスをいただければ幸いです。ありがとうございます。

4

1 に答える 1