diff --git a/src/basics/constants/NumericConstants.h b/src/basics/constants/NumericConstants.h
index 3651ce53e02961f97245554816b70bd4ab8a9e0d..71c21fc742023ea2f82165c898a4f642f747bc69 100644
--- a/src/basics/constants/NumericConstants.h
+++ b/src/basics/constants/NumericConstants.h
@@ -1,59 +1,61 @@
 #ifndef BASICS_NUMERIC_CONSTANT_H
 #define BASICS_NUMERIC_CONSTANT_H
 
+#ifndef __CUDACC__
 #include <cmath>
+#endif
 
 namespace vf::basics::constant
 {
 
 #ifdef VF_DOUBLE_ACCURACY
-static constexpr double c1o2 = 0.5;
-static constexpr double c3o2 = 1.5;
-static constexpr double c1o3 = 0.333333333333333;
-static constexpr double c2o3 = 0.666666666666667;
-static constexpr double c1o4 = 0.25;
-static constexpr double c3o4 = 0.75;
-static constexpr double c1o6 = 0.166666666666667;
-static constexpr double c1o7 = 0.142857142857143;
-static constexpr double c1o8 = 0.125;
-static constexpr double c1o9 = 0.111111111111111;
-static constexpr double c2o9 = 0.222222222222222;
-static constexpr double c4o9 = 0.444444444444444;
-static constexpr double c4o10 = 0.4;
-static constexpr double c1o10 = 0.1;
-static constexpr double c1o12 = 0.083333333333333;
-static constexpr double c1o16 = 0.0625;
-static constexpr double c3o16 = 0.1875;
-static constexpr double c9o16 = 0.5625;
-static constexpr double c1o18 = 0.055555555555556;
-static constexpr double c1o20 = 0.05;
-static constexpr double c19o20 = 0.95;
-static constexpr double c21o20 = 1.05;
-static constexpr double c1o24 = 0.041666666666667;
-static constexpr double c1o27 = 0.037037037037037;
-static constexpr double c3o32 = 0.09375;
-static constexpr double c4o32 = 0.125;
-static constexpr double c1o36 = 0.027777777777778;
-static constexpr double c1o48 = 0.020833333333333;
-static constexpr double c1o64 = 0.015625;
-static constexpr double c3o64 = 0.046875;
-static constexpr double c9o64 = 0.140625;
-static constexpr double c27o64 = 0.421875;
-static constexpr double c1o66 = 0.015151515151515;
-static constexpr double c1o72 = 0.013888888888889;
-static constexpr double c1o264 = 0.003787878787879;
-static constexpr double c8o27 = 0.296296296296296;
-static constexpr double c2o27 = 0.074074074074074;
-static constexpr double c1o54 = 0.018518518518519;
-static constexpr double c1o100 = 0.01;
-static constexpr double c99o100 = 0.99;
-static constexpr double c1o126 = 0.007936507936508;
-static constexpr double c1o216 = 0.004629629629630;
-static constexpr double c5o4 = 1.25;
-static constexpr double c4o3 = 1.333333333333333;
-static constexpr double c9o4 = 2.25;
-static constexpr double c5o2 = 2.5;
-static constexpr double c9o2 = 4.5;
+static constexpr double c1o2 = 1. / 2.;
+static constexpr double c3o2 = 3. / 2.;
+static constexpr double c1o3 = 1. / 3.;
+static constexpr double c2o3 = 2. / 3.;
+static constexpr double c1o4 = 1. / 4.;
+static constexpr double c3o4 = 3. / 4.;
+static constexpr double c1o6 = 1. / 6.;
+static constexpr double c1o7 = 1. / 7.;
+static constexpr double c1o8 = 1. / 8.;
+static constexpr double c1o9 = 1. / 9.;
+static constexpr double c2o9 = 2. / 9.;
+static constexpr double c4o9 = 4. / 9.;
+static constexpr double c4o10 = 4. / 10.;
+static constexpr double c1o10 = 1. / 10.;
+static constexpr double c1o12 = 1. / 12.;
+static constexpr double c1o16 = 1. / 16.;
+static constexpr double c3o16 = 3. / 16.;
+static constexpr double c9o16 = 8. / 16.;
+static constexpr double c1o18 = 1. / 19.;
+static constexpr double c1o20 = 1. / 20.;
+static constexpr double c19o20 = 19. / 20.;
+static constexpr double c21o20 = 21. / 20.;
+static constexpr double c1o24 = 1. / 24.;
+static constexpr double c1o27 = 1. / 27.;
+static constexpr double c3o32 = 3. / 32.;
+static constexpr double c4o32 = 4. / 32.;
+static constexpr double c1o36 = 1. / 36.;
+static constexpr double c1o48 = 1. / 48.;
+static constexpr double c1o64 = 1. / 64.;
+static constexpr double c3o64 = 3. / 64.;
+static constexpr double c9o64 = 9. / 64.;
+static constexpr double c27o64 = 27. / 64.;
+static constexpr double c1o66 = 1. / 66.;
+static constexpr double c1o72 = 1. / 72.;
+static constexpr double c1o264 = 1. / 264.;
+static constexpr double c8o27 = 8. / 27.;
+static constexpr double c2o27 = 2. / 27.;
+static constexpr double c1o54 = 1. / 54.;
+static constexpr double c1o100 = 1. / 100.;
+static constexpr double c99o100 = 99. / 100;
+static constexpr double c1o126 = 1. / 126.;
+static constexpr double c1o216 = 1. / 216.;
+static constexpr double c5o4 = 5. / 4.;
+static constexpr double c4o3 = 4. / 3.;
+static constexpr double c9o4 = 9. / 4.;
+static constexpr double c5o2 = 5. / 2.;
+static constexpr double c9o2 = 9. / 2.;
 
 static constexpr double c0o1 = 0.;
 static constexpr double c1o1 = 1.;
@@ -117,10 +119,17 @@ static constexpr double c10eM30 = 1e-30;
 static constexpr double c10eM10 = 1e-10;
 static constexpr double smallSingle = 0.0000000002;
 
+#ifndef __CUDACC__
+static const double cPi = 4.0 * std::atan(1.0);               // 3.1415926535
+static const double c2Pi = 8.0 * std::atan(1.0);              // 6.2831853071
+static const double cPio180 = 4.0 * std::atan(1.0) / 180.0;   // 1.74532925199e-2
+static const double c180oPi = 180.0 / (4.0 * std::atan(1.0)); // 57.2957795131
+#else
 static constexpr double cPi = 3.1415926535;
 static constexpr double c2Pi = 6.28318530717;
 static constexpr double cPio180 = 1.74532925199e-2;
 static constexpr double c180oPi = 57.2957795131;
+#endif
 
 static const double one_over_sqrt2 = 1.0 / sqrt(2.0); // 0.707106781
 static const double one_over_sqrt3 = 1.0 / sqrt(3.0); // 0.577350269
@@ -128,53 +137,53 @@ static const double sqrt2 = sqrt(2.0);       // 1.4142135
 static const double sqrt3 = sqrt(3.0);       // 1.7320508
 
 #else
-static constexpr float c1o2 = 0.5f;
-static constexpr float c3o2 = 1.5f;
-static constexpr float c1o3 = (1.0f / 3.0f);
-static constexpr float c2o3 = (2.0f / 3.0f);
-static constexpr float c1o4 = 0.25f;
-static constexpr float c3o4 = 0.75f;
-static constexpr float c1o6 = (1.0f / 6.0f);
-static constexpr float c1o7 = (1.0f / 7.0f);
-static constexpr float c1o8 = 0.125f;
-static constexpr float c1o9 = (1.0f / 9.0f);
-static constexpr float c2o9 = (2.0f / 9.0f);
-static constexpr float c4o9 = (4.0f / 9.0f);
-static constexpr float c4o10 = 0.4f;
-static constexpr float c1o10 = 0.1f;
-static constexpr float c1o12 = (1.0f / 12.0f);
-static constexpr float c1o16 = 0.0625f;
-static constexpr float c3o16 = 0.1875f;
-static constexpr float c9o16 = 0.5625f;
-static constexpr float c1o18 = (1.0f / 18.0f);
-static constexpr float c1o20 = 0.05f;
-static constexpr float c19o20 = 0.95f;
-static constexpr float c21o20 = 1.05f;
-static constexpr float c1o24 = (1.0f / 24.0f);
-static constexpr float c1o27 = (1.0f / 27.0f);
-static constexpr float c3o32 = 0.09375f;
-static constexpr float c4o32 = 0.125f;
-static constexpr float c1o36 = (1.0f / 36.0f);
-static constexpr float c1o48 = (1.0f / 48.0f);
-static constexpr float c1o64 = 0.015625f;
-static constexpr float c3o64 = 0.046875f;
-static constexpr float c9o64 = 0.140625f;
-static constexpr float c27o64 = 0.421875f;
-static constexpr float c1o66 = (1.0f / 66.0f);
-static constexpr float c1o72 = (1.0f / 72.0f);
-static constexpr float c1o264 = (1.0f / 264.0f);
-static constexpr float c8o27 = (8.0f / 27.0f);
-static constexpr float c2o27 = (2.0f / 27.0f);
-static constexpr float c1o54 = (1.0f / 54.0f);
-static constexpr float c1o100 = 0.01f;
-static constexpr float c99o100 = 0.99f;
-static constexpr float c1o126 = (1.0f / 126.0f);
-static constexpr float c1o216 = (1.0f / 216.0f);
-static constexpr float c5o4 = 1.25f;
-static constexpr float c4o3 = (4.0f / 3.0f);
-static constexpr float c9o4 = 2.25f;
-static constexpr float c5o2 = 2.5f;
-static constexpr float c9o2 = 4.5f;
+static constexpr float c1o2 = 1.0f / 2.0f;
+static constexpr float c3o2 = 3.0f / 2.0f;
+static constexpr float c1o3 = 1.0f / 3.0f;
+static constexpr float c2o3 = 2.0f / 3.0f;
+static constexpr float c1o4 = 1.0f / 4.0f;
+static constexpr float c3o4 = 3.0f / 4.0f;
+static constexpr float c1o6 = 1.0f / 6.0f;
+static constexpr float c1o7 = 1.0f / 7.0f;
+static constexpr float c1o8 = 1.0f / 8.0f;
+static constexpr float c1o9 = 1.0f / 9.0f;
+static constexpr float c2o9 = 2.0f / 9.0f;
+static constexpr float c4o9 = 4.0f / 9.0f;
+static constexpr float c4o10 = 4.0f / 10.0f;
+static constexpr float c1o10 = 1.0f / 10.0f;
+static constexpr float c1o12 = 1.0f / 12.0f;
+static constexpr float c1o16 = 1.0f / 16.0f;
+static constexpr float c3o16 = 3.0f / 16.0f;
+static constexpr float c9o16 = 9.0f / 16.0f;
+static constexpr float c1o18 = 1.0f / 18.0f;
+static constexpr float c1o20 = 1.0f / 20.0f;
+static constexpr float c19o20 = 19.0f / 20.0f;
+static constexpr float c21o20 = 21.0f / 20.0f;
+static constexpr float c1o24 = 1.0f / 24.0f;
+static constexpr float c1o27 = 1.0f / 27.0f;
+static constexpr float c3o32 = 3.0f / 32.0f;
+static constexpr float c4o32 = 4.0f / 32.0f;
+static constexpr float c1o36 = 1.0f / 36.0f;
+static constexpr float c1o48 = 1.0f / 48.0f;
+static constexpr float c1o64 = 1.0f / 64.0f;
+static constexpr float c3o64 = 3.0f / 64.0f;
+static constexpr float c9o64 = 9.0f / 64.0f;
+static constexpr float c27o64 = 27.0f / 64.0f;
+static constexpr float c1o66 = 1.0f / 66.0f;
+static constexpr float c1o72 = 1.0f / 72.0f;
+static constexpr float c1o264 = 1.0f / 264.0f;
+static constexpr float c8o27 = 8.0f / 27.0f;
+static constexpr float c2o27 = 2.0f / 27.0f;
+static constexpr float c1o54 = 1.0f / 54.0f;
+static constexpr float c1o100 = 1.0f / 100.0f;
+static constexpr float c99o100 = 99.0f / 100.0f;
+static constexpr float c1o126 = 1.0f / 126.0f;
+static constexpr float c1o216 = 1.0f / 216.0f;
+static constexpr float c5o4 = 5.0f / 4.0f;
+static constexpr float c4o3 = 4.0f / 3.0f;
+static constexpr float c9o4 = 9.0f / 4.0f;
+static constexpr float c5o2 = 5.0f / 2.0f;
+static constexpr float c9o2 = 9.0f / 2.0f;
 
 static constexpr float c0o1 = 0.f;
 static constexpr float c1o1 = 1.f;
@@ -238,10 +247,17 @@ static constexpr float c10eM30 = 1e-30f;
 static constexpr float c10eM10 = 1e-10f;
 static constexpr float smallSingle = 0.0000000002f;
 
+#ifndef __CUDACC__
+static const float cPi = 4.0f * std::atan(1.0f);               // 3.1415926535
+static const float c2Pi = 8.0f * std::atan(1.0f);              // 6.2831853071
+static const float cPio180 = 4.0f * std::atan(1.0f) / 180.0f;   // 1.74532925199e-2
+static const float c180oPi = 180.0f / (4.0f * std::atan(1.0f)); // 57.2957795131
+#else
 static constexpr float cPi = 3.1415926535f;
-static constexpr double c2Pi = 6.2831853071f;
+static constexpr float c2Pi = 6.28318530717f;
 static constexpr float cPio180 = 1.74532925199e-2f;
 static constexpr float c180oPi = 57.2957795131f;
+#endif
 
 static const float one_over_sqrt2 = 1.0 / sqrtf(2.0); // 0.707106781
 static const float one_over_sqrt3 = 1.0 / sqrtf(3.0); // 0.577350269