Homework 5-2 修改程序为不使用reduction

题目链接

给出以下 openmp 程序(点击参考代码获取),修改代码为不使用 reduction 的版本。

原网页上下下来的代码很坑,乘号和减号都不是 ascii 字符……

这个求 PI 的代码也很迷,步长必须设成1e-3才能得到比较精确的值…

#include <stdio.h>
#include <omp.h>
double calculate_pi(double step)
{
	int i;
	double x, sum = 0.0;
#pragma omp parallel for private(x)
	for (i = 0; i < 1000000; ++i)
	{
		x = (i - 0.5) * step;
#pragma omp critical
		sum += 2.0 / (1.0 + x * x);
	}
	return step * sum;
}
int main()
{
	printf("%.9f", calculate_pi(1e-3));
}