« #Calc 1.1.4 | トップページ | 「求まる」 »

2006年8月29日 (火)

#Calc 1.1.4 その 2

今日は円周率を求めるルーチンを実装。

アルゴリズムは、FFT と AGM による円周率計算プログラムにある AGM アルゴリズムを使用。

  ---- a formula based on the AGM (Arithmetic-Geometric Mean) ----
    c = sqrt(0.125);
    a = 1 + 3 * c;
    b = sqrt(a);
    e = b - 0.625;
    b = 2 * b;
    c = e - c;
    a = a + e;
    npow = 4;
    do {
        npow = 2 * npow;
        e = (a + b) / 2;
        b = sqrt(a * b);
        e = e - b;
        b = 2 * b;
        c = c - e;
        a = e + b;
    } while (e > SQRT_SQRT_EPSILON);
    e = e * e / 4;
    a = a + b;
    pi = (a * a - e - e / 2) / (a * c - e) / npow;
  ---- modification ----
    This is a modified version of Gauss-Legendre formula
    (by T.Ooura). It is faster than original version.

手元の環境では、円周率を小数点以下一万桁求めるのに約 18 秒かかった。同じ桁数のネイピア数が約 0.5 秒で求められるのに比べれば格段に遅い。他の計算ソフトでは計算時間はどのくらいなのだろう?

|

« #Calc 1.1.4 | トップページ | 「求まる」 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/169172/11673731

この記事へのトラックバック一覧です: #Calc 1.1.4 その 2:

« #Calc 1.1.4 | トップページ | 「求まる」 »