Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / BilatTools_CPP / src / core / tools / header / MathTools.h
diff --git a/WCudaMSE/BilatTools_CPP/src/core/tools/header/MathTools.h b/WCudaMSE/BilatTools_CPP/src/core/tools/header/MathTools.h
new file mode 100755 (executable)
index 0000000..fb4b55b
--- /dev/null
@@ -0,0 +1,111 @@
+#ifndef MATH_TOOLS_\r
+#define MATH_TOOLS_\r
+\r
+#define PI_FLOAT 3.141592653589793f\r
+\r
+#ifndef PI\r
+#define PI 3.1415926535897932384626433832795028841971693993751\r
+#endif\r
+\r
+#ifndef MIN\r
+#define MIN(X,Y) ((X)<(Y)?(X):(Y))\r
+#endif\r
+\r
+#ifndef MAX\r
+#define MAX(X,Y) ((X)>(Y)?(X):(Y))\r
+#endif\r
+\r
+class MathTools\r
+    {\r
+    public:\r
+\r
+       /*--------------------------------------*\\r
+        |*             Constructor             *|\r
+        \*-------------------------------------*/\r
+\r
+       MathTools();\r
+\r
+       /*--------------------------------------*\\r
+        |*             Destructor              *|\r
+        \*-------------------------------------*/\r
+\r
+       virtual ~MathTools();\r
+\r
+       /*--------------------------------------*\\r
+        |*             Methodes Static         *|\r
+        \*-------------------------------------*/\r
+\r
+       /*---------------*\\r
+       |*      Float   *|\r
+        \*---------------*/\r
+\r
+       /**\r
+        * Relatif au max(x1,x2)\r
+        */\r
+       static bool isEquals(float x1, float x2, float epsilon = 0);\r
+\r
+       /**\r
+        * Relatif a reference\r
+        * epsilon pas de valeur par default, sinon meme signature que autre methode (overload)\r
+        */\r
+       static bool isEquals(float a, float b, float reference, float epsilon); //\r
+\r
+       /**\r
+        * Relatif, un a un (au max des 2)\r
+        * Hyp: tab de meme size n\r
+        */\r
+       static bool isEquals(float* tabA, float* tabB, int n, float epsilon = 0);\r
+\r
+       /**\r
+        * Relatif par rapport au max de la série\r
+        * Hyp: tab de meme size n\r
+        */\r
+       static bool isEqualsRelatifMax(float* tabA, float* tabB, int n, float epsilon = 0);\r
+\r
+       /*---------------*\\r
+       |*      Double  *|\r
+        \*---------------*/\r
+\r
+       /**\r
+        * Relatif au max(x1,x2)\r
+        */\r
+       static bool isEquals(double x1, double x2, double epsilon = 0);\r
+\r
+\r
+       /*---------------*\\r
+       |*      Long    *|\r
+        \*---------------*/\r
+\r
+       /**\r
+        * Absolu\r
+        */\r
+       static bool isEquals(long x1, long x2);\r
+\r
+       /*---------------*\\r
+       |*      isPower2  *|\r
+       \*---------------*/\r
+\r
+       static bool isPower2(long i);\r
+       static bool isPower2(int i);\r
+       static bool isPower2(unsigned int i);\r
+\r
+    private:\r
+\r
+       /*--------------------------------------*\\r
+       |*              Methodes                *|\r
+        \*-------------------------------------*/\r
+\r
+       static float maxAbs(float a, float b);\r
+\r
+       /**\r
+        * Hyp: tab de meme size n\r
+        */\r
+       static float maxAbs(float* tabA, float* tabB, int n);\r
+\r
+       /*--------------------------------------*\\r
+       |*              Attributs               *|\r
+        \*-------------------------------------*/\r
+\r
+    };\r
+\r
+#endif\r