2016-10-01 6 views
4

コードです:このコードはpiを高精度でどのように計算しますか?ここで

#include <stdio.h> 

long f[2801]; 

int main() 
{ 
    long i = 0, c = 2800, d = 0, e = 0, g = 0; 
    for (i = 0; i < c; ++i) 
     f[i] = 2000; 
    for (;;) { 
     d = 0; 
     g = c * 2; 
     if (!g) 
      break; 
     i = c; 
     for(;;) { 
      d += f[i] * 10000; 
      --g; 
      f[i] = d % g; 
      d /= g; 
      --g; 
      --i; 
      if (!i) break; 
      d *= i; 
     } 
     printf("%.4ld",e+d/10000); 
     e = d % 10000; 
     c -= 14; 
    } 
    return 0; 
} 

私の質問は:このコードを計算高い小数精度でパイと何がそれが使用する数学の式でどのように?

+2

「どのようにこのコードを計算PIない」 - 私はあなたのマシンのソースコードをコンパイルし、コンパイラによって生成されたマシンコードを実行することで言うと思いますが。私たちは「コードを説明する」サイトではありません。そのコードに**具体的な**の質問がありますか? – Olaf

+0

@Olaf私は、コードがどのようにアルゴリズムを使用するのか分かりません。 –

答えて

2

これは、オランダのCWI研究所のDik T. Winterによって書かれたPIプログラムの書式付きのコピーです。もともと難読化された形式で書かれた2行または3行の行には、数学的系列の評価に基づいて異なる数のPIの場所(例えば800,15,000など)を出力するDikなどのいくつかのバリエーションがあります。

「スピゴットアルゴリズム」として知られているプログラムのクラスで、特定の桁数を出力するように設計されています。あなたは、Dik Winterと 'spigotアルゴリズム'に関するGoogleの検索を通じ、より多くを知ることができます。いくつかのヒット例:

Computing Pi in C未解決の質問のアルゴリズムの詳細な分析。

Pi the Number, not the Movie

+0

最初のリンクでは、なぜ "P0 = q0"ですか? –

関連する問題