将其用OpenMP增量式并行化
#include <omp.h>
#include <stdio.h>
#define NUM_THREADS 2
static long int N=1000000000;
void main()
{
long double pi, x, w=1.0/N, sum=0.0;
long int i;
omp_set_num_threads(NUM_THREADS);
#pragma omp parallel default(none) private(i, x, sum) shared(w, pi, N)
{
int id=omp_get_thread_num();
sum=0.0;
/* 用共享任务结构并行化 */
#pragma omp critical
for (i=0; i<N; i++) {
x=(i+0.5)*w;
sum+=4.0/(1.0+x*x);
}
#pragma omp critical
pi+=sum*w;
}
printf("pi=%.16Lf!\n", pi);
}