求一个高精度求 pi 的程序……
原型程序如下(OMP多线程)
#include <stdio.h>
#include <omp.h>
void* work(float* c,int N);
void add();
float dotProdWrong(float* a,float* b,int N);
float dotProdRight(float* a,float* b,int N);
double getpi();
float a[3]={1.0,2.0,3.0};
float b[3]={1.0,2.0,3.0};
static long numsteps=400;
double step,pi;
int main()
{
//#pragma omp parallel
printf("hello world!\n");
getpi();
return 1;
}
double getpi()
{
int i;
double x,sum=0;
step=1.0/(double)numsteps;
#pragma omp parallel for reduction (+:sum)
for(i=0; i<numsteps; i++)
{
x=(i+0.5)*step;
sum=sum+4.0/(1.0+x*x);
printf("sum=%f\n",sum);
}
pi=step*sum;
printf("pi=%f\n",pi);
return pi;
}
//#pragam omp single 确保一个线程
//#pragam omp master 确保主线程执行
//debug openmp api
//icl /Qopenmp testOpenMp.cpp
400次循环可以求到 3.141593 也就是 double 的界限,我想要一个可以无限算下去的。谢谢各位大佬了!Orz Orz Orz