Распараллелить программу с помощью OpenMP
Табулирование функции 1 /(корень 3й степени из x). В input.txt промежуток и шаг, в output.txt результаты. Как можно максимально распараллелить программу?
#include <stdio.h>
double function (double x) {
double a, b;
a = 0;
b = x;
while (1>0) {
a = 0.5*(b + 3*x / (2*b*b + x/b));
if(((a-b)<=(0.1) && (a-b)>=0) || ((a-b)>(-0.01) && (a-b)<0))
return a;
b = a;
//a = 0.5*(b + 3*x / (2*b*b + x/b));
//if (((a-b)<(0.1) && (a-b)>0) || ((a-b)>(-0.1) && (a-b)<0))
//return 1/a;
//a = b;
}
}
int main() {
FILE *f;
FILE *fo;
f = fopen("input.txt", "rt");
fo = fopen("output.txt", "wt");
double a, b, step;
double i;
fscanf(f, "%lf", &a);
fscanf(f, "%lf", &b);
fscanf(f, "%lf", &step);
#pragma omp for (i = a; i <= b; i += step) {
fprintf(fo, "%.14f\n", function(i));
}
fclose(f);
fclose(fo);
}
Источник: Stack Overflow на русском