用Chudnovsky算法计算圆周率
Calculating Pi number with Chudnovsky algorithm
因此,这里有一些C++代码,用于根据Chudnovsky算法计算Pi:
#include <iostream>
#include <cmath>
#include <iomanip>
int fact(int digit)
{
int result = 1;
for (int i=digit; i>1; i--)
{
result *= i;
}
return result;
}
int main()
{
long double pi = 0.0;
int precision = 10;
for ( int k=0; k<=precision; k++)
{
pi += ( pow(-1, k)*fact((6*k))*(13591409+545140134*k))/(fact(3*k)*pow(fact(k),3)*pow(640320, (3*k+1.5)));
}
pi = 1.0/(12*pi);
std::cout<<std::setprecision(80)<<pi<<'n'<<M_PI<<'n';
}
问题是,这个代码只返回PI数字的15个右数字,其中的另一部分是垃圾。。。当精度变量设置为12或更大时,它返回-nan。有人能帮我吗?TIA
编辑:Ubuntu 12.10 x64,gcc 4.7.2
使用双精度表示fact()返回类型以及act()内部的"result"变量。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 递归函数计算序列中的平方和(并输出过程)
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- 在计算中使用二的幂有多有利可图
- 如何计算文件中的"columns"数?
- 计算排序向量的向量中唯一值的计数
- 如何使用 std::累积在 C++ 中计算总和立方体
- 使用Qt C++计算类似Git的SHA1哈希
- OpenCV C++.快速计算混淆矩阵
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- C++如何计算用户输入的数字中的偶数位数
- 如何计算数据类型的范围,例如int
- 用C++计算圆周率;我在哪里搞砸了
- 在C++OpenMP中使用蒙特卡罗方法以两种方式计算圆周率
- 用泰勒方法计算圆周率
- 用C++计算圆周率
- 用Chudnovsky算法计算圆周率
- 用泰勒方法和循环计算圆周率
- 计算圆周率的数字