--- /dev/null
+#include <omp.h>\r
+#include "OmpTools.h"\r
+\r
+#define MULTIPLIER 1366\r
+#define ADDEND 150889\r
+#define PMOD 714025\r
+\r
+long random_last = 0;\r
+#pragma omp threadprivate(random_last)\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |* Implementation *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |* Constructor *|\r
+ \*-------------------------------------*/\r
+\r
+OmpTools::OmpTools()\r
+ {\r
+ // rien\r
+ }\r
+\r
+OmpTools::~OmpTools()\r
+ {\r
+ // rien\r
+ }\r
+\r
+/*--------------------------------------*\\r
+ |* Methodes *|\r
+ \*-------------------------------------*/\r
+\r
+/*----------------------*\\r
+ |* static public *|\r
+ \*---------------------*/\r
+\r
+int OmpTools::setAndGetNaturalGranularity()\r
+ {\r
+ // ko sur ARM, 1 core detecte only\r
+// {\r
+// int nbThread = omp_get_num_procs();\r
+// omp_set_num_threads(nbThread);\r
+// return nbThread;\r
+// }\r
+\r
+#ifndef __arm__\r
+\r
+ int nbThread = omp_get_num_procs();\r
+\r
+#else\r
+\r
+ //omp_get_num_procs ne donne pas la bonne valeurs sur kayla\r
+\r
+ int nbThread=4;//4 car kayla à 4 coeurs.\r
+\r
+#endif\r
+\r
+ omp_set_num_threads(nbThread);\r
+ return nbThread;\r
+ }\r
+\r
+/*--------*\\r
+ |* get *|\r
+ \*-------*/\r
+\r
+int OmpTools::getNbCore()\r
+ {\r
+ return omp_get_num_procs();\r
+ }\r
+\r
+int OmpTools::getNbThread()\r
+ {\r
+ return omp_get_num_threads();\r
+ }\r
+\r
+int OmpTools::getTid()\r
+ {\r
+ return omp_get_thread_num();\r
+ }\r
+\r
+/*--------*\\r
+ |* set *|\r
+ \*-------*/\r
+\r
+void OmpTools::setNbThread(int nbThread)\r
+ {\r
+ omp_set_num_threads(nbThread);\r
+ }\r
+\r
+/*--------*\\r
+ |* math *|\r
+ \*-------*/\r
+\r
+double OmpTools::uniform01(void)\r
+ {\r
+ long random_next;\r
+\r
+ random_next = (MULTIPLIER * random_last + ADDEND) % PMOD;\r
+ random_last = random_next;\r
+\r
+ return ((double) random_next / (double) PMOD);\r
+ }\r
+\r
+double OmpTools::uniform(double a, double b)\r
+ {\r
+ return a + uniform01() * (b - a);\r
+ }\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |* End *|\r
+ \*---------------------------------------------------------------------*/\r
+\r