#include #include #include #include int main (int argc, char *argv[]) { int i, n; double pi, h, sum, dx, x; double a = M_PI / 8; double b = M_PI * 5 / 8; /* N como argumento o exit */ if (argc < 2) { printf ("Usage: ./open_simpson n \n"); return 1; } n = atoi (argv[1]); dx = (b - a) / n; /* Valores punta */ sum = sin (a) + sin (b); #pragma omp parallel for reduction(+:sum) for (i = 1; i < n; i++) if (i % 2 == 0) sum = sum + (2 * sin (a + dx * i)); else sum = sum + (4 * sin (a + dx * i)); sum = sum * dx / 3; printf ("\nOPENMP - Simpson's Rule\n\n"); printf ("Resultados\n"); printf ("==========\n"); printf ("Num threads = %d\n", omp_get_max_threads()); printf ("a = %1.5lf\n", a); printf ("b = %1.5lf\n", b); printf ("n = %d\n", n); printf ("dx = %1.5lf\n", dx); printf ("Total = %1.32lf\n", sum); return 0; }