这段代码如何高精度地计算pi?

pjp*_*jpj 5 c precision 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;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:这段代码如何以高十进制精度计算 pi 以及它使用的数学公式是什么?

cdl*_*ane 3

这是荷兰 CWI 研究所的 Dik T. Winter 编写的 PI 程序的格式化副本。最初以模糊形式编写,分为两行或三行,Dik 和其他人有几种变体,根据数学级数的评估输出不同数量的 PI(例如 800、15,000 等)。

它是一类被称为“插头算法”的程序,旨在输出特定数量的数字。您可以通过 Google 搜索 Dik Winter 和“spigot 算法”了解更多信息。一些点击示例:

用 C 计算 Pi对算法的详细分析以及未解答的问题。

Pi 是数字,而不是电影