2016-10-01 63 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

“请问这个代码计算皮” - 我想通过执行这是通过源代码编译为您的机器编译器生成的机器码说。我们不是“解释代码”网站。该代码是否有**特定的**问题? – Olaf

+0

@Olaf我只是不明白代码使用的算法是如何工作的。 –

回答

2

这是荷兰CWI研究所Dik T. Winter编写的PI程序的格式拷贝。 Dik和其他人根据对数学系列的评估输出不同数量的PI位置(例如800,15,000等),最初以混淆的形式写成两行或三行。

这是一类被称为“插口算法”的程序,用于输出特定数量的数字。您可以通过Dik Winter上的Google搜索和'spigot algorithms'找到更多信息。一些示例点击:

Computing Pi in C详细分析了未回答问题的算法。

Pi the Number, not the Movie

+0

在第一个链接中,为什么“P0 = q0”? –