Pi的C++ Chudnovsky公式

Con*_*ure 1 c++ pi formula

我正在尝试让C++应用程序为我计算pi.我试图实施Chudnovsky公式,没有运气.

这是我的代码:

#include <iostream>
#include <cmath>

long fac(long num) {
    if (num == 1)
        return 1;
    return fac(num - 1) * num;
}

int main() {
    using namespace std;
    double pi;
    for (long k = 0; k < 10; k++) {
        pi += (pow(-1, k) * fac(6 * k) * (13591409 + (545140134 * k))) / (fac(3 * k) * pow(fac(k), 3) * pow(640320, 3 * k + 3/2));
    }
    pi *= 12;
    cout << 1 / pi << endl;
    system("pause");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这样做的目的是让程序输出Chudnovsky公式的10次迭代.相反,我得到了这个:

call of overloaded `pow(int, long int&)' is ambiguous 
Run Code Online (Sandbox Code Playgroud)

Man*_*rse 8

您永远不会初始化pi,因此您的代码具有未定义的行为.

您的fac功能无法正确处理0(fac(0)应该是1).

3/2求值为1(因为它使用整数除法,它会截断),这会使你的公式评估为完全错误的答案.