求一个高精度求 pi 的程序
  • 板块学术版
  • 楼主OnlyExtreme
  • 当前回复11
  • 已保存回复11
  • 发布时间2020/6/10 21:56
  • 上次更新2023/11/7 00:52:43
查看原帖
求一个高精度求 pi 的程序
247202
OnlyExtreme楼主2020/6/10 21:56

求一个高精度求 pipi 的程序……

原型程序如下(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

2020/6/10 21:56
加载中...