Я пытаюсь вычислить значение определенного интеграла с трапециевидным правилом, используя openMP. Как мне установить метод сокращения для этого?
float trapezoidalOMP(float a, float b, float n)
{
float dx = (b - a) / (float)(n - 1);
int Thr = 4;
float sum = (y(a) + y(b)) / 2.;
#pragma omp parallel for reduction(+:sum) num_threads(Thr)
for (int i = 1; i < n - 1; i++)
{
float x = a + dx * (float)i;
float f = y(x);
sum += f;
}
return sum *= dx;
}
float y(float x)
{
return sqrt(pow(x,2)+1);
}