--- /dev/null
+#include <omp.h>\r
+#include "00_pi_tools.h"\r
+#include "OmpTools.h"\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |* Declaration *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |* Imported *|\r
+ \*-------------------------------------*/\r
+\r
+\r
+\r
+/*--------------------------------------*\\r
+ |* Public *|\r
+ \*-------------------------------------*/\r
+\r
+bool isPiOMPforReduction_Ok(int n);\r
+\r
+/*--------------------------------------*\\r
+ |* Private *|\r
+ \*-------------------------------------*/\r
+\r
+static double piOMPforReduction(int n);\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |* Implementation *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |* Public *|\r
+ \*-------------------------------------*/\r
+\r
+bool isPiOMPforReduction_Ok(int n)\r
+ {\r
+ return isAlgoPI_OK(piOMPforReduction, n, "Pi OMP for reduction-integrer");\r
+ }\r
+\r
+/*--------------------------------------*\\r
+ |* Private *|\r
+ \*-------------------------------------*/\r
+\r
+/**\r
+ * pattern omp usefull : idem desyncronisation-promotionTab ,mais avec syntaxe plus courte!\r
+ * Si on enleve le pragma, le code est le meme que le sequentiel!\r
+ */\r
+double piOMPforReduction(int n)\r
+ {\r
+ double sum = 0;\r
+ double xi;\r
+ const double DX = 1.0/(double)n;\r
+\r
+#pragma omp parallel for private(xi) reduction(+:sum)\r
+ for (int i = 0; i < n; i++)\r
+ {\r
+ xi = i*DX;\r
+ sum += fpi(xi);\r
+ }\r
+\r
+ return sum * DX;\r
+ }\r
+\r
+\r
+\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |* End *|\r
+ \*---------------------------------------------------------------------*/\r
+\r