Index: src/LinearAlgebra/Line.cpp
===================================================================
--- src/LinearAlgebra/Line.cpp	(revision 5605793b50554c75171309f425f1848783edb5d0)
+++ src/LinearAlgebra/Line.cpp	(revision 71129f9baea5c7b294d5612a2cf24cf00ef7b14e)
@@ -134,5 +134,5 @@
   //  cout << endl;
   //}
-  if (fabs(M->Determinant()) > LINALG_MYEPSILON) {
+  if (fabs(M->Determinant()) > LINALG_MYEPSILON()) {
     Log() << Verbose(1) << "Determinant of coefficient matrix is NOT zero." << endl;
     throw SkewException(__FILE__,__LINE__);
@@ -148,5 +148,5 @@
   Vector d = Line2b - Line1b;
   Log() << Verbose(1) << "INFO: a = " << a << ", b = " << b << ", c = " << c << "." << endl;
-  if ((a.NormSquared() <= LINALG_MYEPSILON) || (b.NormSquared() <= LINALG_MYEPSILON)) {
+  if ((a.NormSquared() <= LINALG_MYEPSILON()) || (b.NormSquared() <= LINALG_MYEPSILON())) {
    res.Zero();
    Log() << Verbose(1) << "At least one of the lines is ill-defined, i.e. offset equals second vector." << endl;
@@ -157,8 +157,8 @@
   Vector parallel;
   double factor = 0.;
-  if (fabs(a.ScalarProduct(b)*a.ScalarProduct(b)/a.NormSquared()/b.NormSquared() - 1.) <= LINALG_MYEPSILON) {
+  if (fabs(a.ScalarProduct(b)*a.ScalarProduct(b)/a.NormSquared()/b.NormSquared() - 1.) <= LINALG_MYEPSILON()) {
     parallel = Line1a - Line2a;
     factor = parallel.ScalarProduct(a)/a.Norm();
-    if ((factor > -LINALG_MYEPSILON) && (factor - 1. <= LINALG_MYEPSILON)) {
+    if ((factor > -LINALG_MYEPSILON()) && (factor - 1. <= LINALG_MYEPSILON())) {
       res = Line2a;
       Log() << Verbose(1) << "Lines conincide." << endl;
@@ -167,5 +167,5 @@
       parallel = Line1a - Line2b;
       factor = parallel.ScalarProduct(a)/a.Norm();
-      if ((factor > -LINALG_MYEPSILON) && (factor - 1. <= LINALG_MYEPSILON)) {
+      if ((factor > -LINALG_MYEPSILON()) && (factor - 1. <= LINALG_MYEPSILON())) {
         res = Line2b;
         Log() << Verbose(1) << "Lines conincide." << endl;
@@ -186,5 +186,5 @@
   temp2.VectorProduct(b);
   Log() << Verbose(1) << "INFO: temp1 = " << temp1 << ", temp2 = " << temp2 << "." << endl;
-  if (fabs(temp2.NormSquared()) > LINALG_MYEPSILON)
+  if (fabs(temp2.NormSquared()) > LINALG_MYEPSILON())
     s = temp1.ScalarProduct(temp2)/temp2.NormSquared();
   else
Index: src/LinearAlgebra/MatrixContent.cpp
===================================================================
--- src/LinearAlgebra/MatrixContent.cpp	(revision 5605793b50554c75171309f425f1848783edb5d0)
+++ src/LinearAlgebra/MatrixContent.cpp	(revision 71129f9baea5c7b294d5612a2cf24cf00ef7b14e)
@@ -575,12 +575,12 @@
     size_t I=0;
     for (size_t i=0; i<greaterDimension; i++) { // only copy real space part
-      if (fabs(GSL_REAL(gsl_vector_complex_get(eval,i))) > LINALG_MYEPSILON) { // only take eigenvectors with value > 0
+      if (fabs(GSL_REAL(gsl_vector_complex_get(eval,i))) > LINALG_MYEPSILON()) { // only take eigenvectors with value > 0
         std::cout << i << "th eigenvalue is (" << GSL_REAL(gsl_vector_complex_get(eval,i)) << "," << GSL_IMAG(gsl_vector_complex_get(eval,i)) << ")" << std::endl;
         for (size_t j=0; j<greaterDimension; j++) {
-          if (fabs(GSL_IMAG(gsl_matrix_complex_get(evec,j,i))) > LINALG_MYEPSILON)
+          if (fabs(GSL_IMAG(gsl_matrix_complex_get(evec,j,i))) > LINALG_MYEPSILON())
             std::cerr << "MatrixContent::transformToEigenbasis() - WARNING: eigenvectors are complex-valued!" << std::endl;
           gsl_matrix_set(content, j,I, GSL_REAL(gsl_matrix_complex_get(evec,j,i)));
         }
-        if (fabs(GSL_IMAG(gsl_vector_complex_get(eval,I))) > LINALG_MYEPSILON)
+        if (fabs(GSL_IMAG(gsl_vector_complex_get(eval,I))) > LINALG_MYEPSILON())
           std::cerr << "MatrixContent::transformToEigenbasis() - WARNING: eigenvectors are complex-valued!" << std::endl;
         gsl_vector_set(eval_real, I, GSL_REAL(gsl_vector_complex_get(eval, i)));
@@ -805,5 +805,5 @@
 
 /** Equality operator.
- * Note that we use numerical sensible checking, i.e. with threshold LINALG_MYEPSILON.
+ * Note that we use numerical sensible checking, i.e. with threshold LINALG_MYEPSILON().
  * \param &rhs MatrixContent to checks against
  */
@@ -813,5 +813,5 @@
     for(int i=rows;i--;){
       for(int j=columns;j--;){
-        if(fabs(at(i,j)-rhs.at(i,j))>LINALG_MYEPSILON){
+        if(fabs(at(i,j)-rhs.at(i,j))>LINALG_MYEPSILON()){
           return false;
         }
Index: src/LinearAlgebra/Plane.cpp
===================================================================
--- src/LinearAlgebra/Plane.cpp	(revision 5605793b50554c75171309f425f1848783edb5d0)
+++ src/LinearAlgebra/Plane.cpp	(revision 71129f9baea5c7b294d5612a2cf24cf00ef7b14e)
@@ -28,6 +28,4 @@
 #include "CodePatterns/Verbose.hpp"
 #include "Exceptions/MultipleSolutionsException.hpp"
-#include "Helpers/defs.hpp"
-#include "Helpers/helpers.hpp"
 #include "LinearAlgebra/defs.hpp"
 #include "LinearAlgebra/fast_functions.hpp"
@@ -44,5 +42,5 @@
   Vector x1 = y1 -y2;
   Vector x2 = y3 -y2;
-  if ((fabs(x1.Norm()) <= LINALG_MYEPSILON) || (fabs(x2.Norm()) <= LINALG_MYEPSILON) || (fabs(x1.Angle(x2)) <= LINALG_MYEPSILON)) {
+  if ((fabs(x1.Norm()) <= LINALG_MYEPSILON()) || (fabs(x2.Norm()) <= LINALG_MYEPSILON()) || (fabs(x1.Angle(x2)) <= LINALG_MYEPSILON())) {
     throw LinearDependenceException(__FILE__,__LINE__);
   }
@@ -70,9 +68,9 @@
   Vector x1 = y1;
   Vector x2 = y2;
-  if ((fabs(x1.Norm()) <= LINALG_MYEPSILON) || (fabs(x2.Norm()) <= LINALG_MYEPSILON)) {
+  if ((fabs(x1.Norm()) <= LINALG_MYEPSILON()) || (fabs(x2.Norm()) <= LINALG_MYEPSILON())) {
     throw ZeroVectorException(__FILE__,__LINE__);
   }
 
-  if((fabs(x1.Angle(x2)) <= LINALG_MYEPSILON)) {
+  if((fabs(x1.Angle(x2)) <= LINALG_MYEPSILON())) {
     throw LinearDependenceException(__FILE__,__LINE__);
   }
@@ -181,5 +179,5 @@
 
   double factor1 = getNormal().ScalarProduct(line.getDirection());
-  if(fabs(factor1) <= LINALG_MYEPSILON){
+  if(fabs(factor1) <= LINALG_MYEPSILON()){
     // the plane is parallel... under all circumstances this is bad luck
     // we no have either no or infinite solutions
@@ -227,5 +225,5 @@
 Vector Plane::getClosestPoint(const Vector &point) const{
   double factor = point.ScalarProduct(*normalVector)-offset;
-  if(fabs(factor) <= LINALG_MYEPSILON){
+  if(fabs(factor) <= LINALG_MYEPSILON()){
     // the point itself lies on the plane
     return point;
Index: src/LinearAlgebra/RealSpaceMatrix.cpp
===================================================================
--- src/LinearAlgebra/RealSpaceMatrix.cpp	(revision 5605793b50554c75171309f425f1848783edb5d0)
+++ src/LinearAlgebra/RealSpaceMatrix.cpp	(revision 71129f9baea5c7b294d5612a2cf24cf00ef7b14e)
@@ -257,5 +257,5 @@
 RealSpaceMatrix RealSpaceMatrix::invert() const{
   double det = determinant();
-  if(fabs(det) <= LINALG_MYEPSILON){
+  if(fabs(det) <= LINALG_MYEPSILON()){
     throw NotInvertibleException(__FILE__,__LINE__);
   }
Index: src/LinearAlgebra/Space.cpp
===================================================================
--- src/LinearAlgebra/Space.cpp	(revision 5605793b50554c75171309f425f1848783edb5d0)
+++ src/LinearAlgebra/Space.cpp	(revision 71129f9baea5c7b294d5612a2cf24cf00ef7b14e)
@@ -22,5 +22,4 @@
 #include <limits>
 
-#include "Helpers/defs.hpp"
 #include "LinearAlgebra/defs.hpp"
 #include "LinearAlgebra/Space.hpp"
@@ -43,4 +42,4 @@
 
 bool Space::isContained(const Vector &point) const{
-  return (distance(point)) <= LINALG_MYEPSILON;
+  return (distance(point)) <= LINALG_MYEPSILON();
 }
Index: src/LinearAlgebra/Vector.cpp
===================================================================
--- src/LinearAlgebra/Vector.cpp	(revision 5605793b50554c75171309f425f1848783edb5d0)
+++ src/LinearAlgebra/Vector.cpp	(revision 71129f9baea5c7b294d5612a2cf24cf00ef7b14e)
@@ -280,5 +280,5 @@
 bool Vector::IsZero() const
 {
-  return (fabs(at(0))+fabs(at(1))+fabs(at(2)) < MYEPSILON);
+  return (fabs(at(0))+fabs(at(1))+fabs(at(2)) < LINALG_MYEPSILON());
 };
 
@@ -288,5 +288,5 @@
 bool Vector::IsOne() const
 {
-  return (fabs(Norm() - 1.) < MYEPSILON);
+  return (fabs(Norm() - 1.) < LINALG_MYEPSILON());
 };
 
@@ -296,5 +296,5 @@
 bool Vector::IsNormalTo(const Vector &normal) const
 {
-  if (ScalarProduct(normal) < MYEPSILON)
+  if (ScalarProduct(normal) < LINALG_MYEPSILON())
     return true;
   else
@@ -309,5 +309,5 @@
   bool status = true;
   for (int i=0;i<NDIM;i++) {
-    if (fabs(at(i) - a[i]) > MYEPSILON)
+    if (fabs(at(i) - a[i]) > LINALG_MYEPSILON())
       status = false;
   }
@@ -323,8 +323,8 @@
   double norm1 = Norm(), norm2 = y.Norm();
   double angle = -1;
-  if ((fabs(norm1) > MYEPSILON) && (fabs(norm2) > MYEPSILON))
+  if ((fabs(norm1) > LINALG_MYEPSILON()) && (fabs(norm2) > LINALG_MYEPSILON()))
     angle = this->ScalarProduct(y)/norm1/norm2;
-  // -1-MYEPSILON occured due to numerical imprecision, catch ...
-  //Log() << Verbose(2) << "INFO: acos(-1) = " << acos(-1) << ", acos(-1+MYEPSILON) = " << acos(-1+MYEPSILON) << ", acos(-1-MYEPSILON) = " << acos(-1-MYEPSILON) << "." << endl;
+  // -1-LINALG_MYEPSILON() occured due to numerical imprecision, catch ...
+  //Log() << Verbose(2) << "INFO: acos(-1) = " << acos(-1) << ", acos(-1+LINALG_MYEPSILON()) = " << acos(-1+LINALG_MYEPSILON()) << ", acos(-1-LINALG_MYEPSILON()) = " << acos(-1-LINALG_MYEPSILON()) << "." << endl;
   if (angle < -1)
     angle = -1;
@@ -525,5 +525,5 @@
   SubtractVector(x1);
   for (int i=NDIM;i--;)
-    result = result || (fabs(at(i)) > MYEPSILON);
+    result = result || (fabs(at(i)) > LINALG_MYEPSILON());
 
   return result;
@@ -550,5 +550,5 @@
   // find two components != 0
   for (j=0;j<NDIM;j++){
-    if (fabs(GivenVector[j]) > MYEPSILON)
+    if (fabs(GivenVector[j]) > LINALG_MYEPSILON())
       Components[Last++] = j;
     else
Index: src/LinearAlgebra/VectorContent.cpp
===================================================================
--- src/LinearAlgebra/VectorContent.cpp	(revision 5605793b50554c75171309f425f1848783edb5d0)
+++ src/LinearAlgebra/VectorContent.cpp	(revision 71129f9baea5c7b294d5612a2cf24cf00ef7b14e)
@@ -27,5 +27,4 @@
 
 #include "CodePatterns/Assert.hpp"
-#include "Helpers/defs.hpp"
 #include "LinearAlgebra/defs.hpp"
 #include "LinearAlgebra/Vector.hpp"
@@ -257,5 +256,5 @@
   ASSERT(dimension == b.dimension, "Dimenions of VectorContents to compare differ");
   for (size_t i=0;i<dimension;i++)
-    status = status && (fabs(at(i) - b.at(i)) <= LINALG_MYEPSILON);
+    status = status && (fabs(at(i) - b.at(i)) <= LINALG_MYEPSILON());
   return status;
 };
@@ -376,5 +375,5 @@
   for (size_t i = dimension; i--; )
     result += fabs(at(i));
-  return (result <= LINALG_MYEPSILON);
+  return (result <= LINALG_MYEPSILON());
 };
 
@@ -387,5 +386,5 @@
   for (size_t i=dimension;--i;)
     NormValue += at(i)*at(i);
-  return (fabs(NormValue - 1.) <= LINALG_MYEPSILON);
+  return (fabs(NormValue - 1.) <= LINALG_MYEPSILON());
 };
 
@@ -452,8 +451,8 @@
   double norm1 = Norm(), norm2 = y.Norm();
   double angle = -1;
-  if ((fabs(norm1) > LINALG_MYEPSILON) && (fabs(norm2) > LINALG_MYEPSILON))
+  if ((fabs(norm1) > LINALG_MYEPSILON()) && (fabs(norm2) > LINALG_MYEPSILON()))
     angle = this->ScalarProduct(y)/norm1/norm2;
-  // -1-LINALG_MYEPSILON occured due to numerical imprecision, catch ...
-  //Log() << Verbose(2) << "INFO: acos(-1) = " << acos(-1) << ", acos(-1+LINALG_MYEPSILON) = " << acos(-1+LINALG_MYEPSILON) << ", acos(-1-LINALG_MYEPSILON) = " << acos(-1-LINALG_MYEPSILON) << "." << endl;
+  // -1-LINALG_MYEPSILON() occured due to numerical imprecision, catch ...
+  //Log() << Verbose(2) << "INFO: acos(-1) = " << acos(-1) << ", acos(-1+LINALG_MYEPSILON()) = " << acos(-1+LINALG_MYEPSILON()) << ", acos(-1-LINALG_MYEPSILON()) = " << acos(-1-LINALG_MYEPSILON()) << "." << endl;
   if (angle < -1)
     angle = -1;
Index: src/LinearAlgebra/defs.hpp
===================================================================
--- src/LinearAlgebra/defs.hpp	(revision 5605793b50554c75171309f425f1848783edb5d0)
+++ src/LinearAlgebra/defs.hpp	(revision 71129f9baea5c7b294d5612a2cf24cf00ef7b14e)
@@ -18,5 +18,11 @@
 #include <limits>
 
-#define LINALG_MYEPSILON numeric_limits<double>::epsilon()*100.
+#ifdef HAVE_INLINE
+inline
+#endif
+double LINALG_MYEPSILON()
+{
+  return (std::numeric_limits<double>::epsilon()*100.);
+}
 
 enum { NDIM = 3 };   //!< number of spatial dimensions
Index: src/LinearAlgebra/fast_functions.hpp
===================================================================
--- src/LinearAlgebra/fast_functions.hpp	(revision 5605793b50554c75171309f425f1848783edb5d0)
+++ src/LinearAlgebra/fast_functions.hpp	(revision 71129f9baea5c7b294d5612a2cf24cf00ef7b14e)
@@ -16,5 +16,5 @@
 #include <cmath>
 
-#include "Helpers/defs.hpp"
+#include "LinearAlgebra/defs.hpp"
 
 /**
@@ -42,5 +42,5 @@
 inline sign_t sign(double value)
 {
-  if(fabs(value)<MYEPSILON){
+  if(fabs(value)<LINALG_MYEPSILON()){
     return Zero;
   }
Index: src/LinearAlgebra/unittests/LinearSystemOfEquationsUnitTest.cpp
===================================================================
--- src/LinearAlgebra/unittests/LinearSystemOfEquationsUnitTest.cpp	(revision 5605793b50554c75171309f425f1848783edb5d0)
+++ src/LinearAlgebra/unittests/LinearSystemOfEquationsUnitTest.cpp	(revision 71129f9baea5c7b294d5612a2cf24cf00ef7b14e)
@@ -118,5 +118,5 @@
   s->GetSolutionAsArray(array);
   for (int i=0;i<4;i++) {
-    CPPUNIT_ASSERT( fabs(x_array[i] - array[i]) <= LINALG_MYEPSILON );
+    CPPUNIT_ASSERT( fabs(x_array[i] - array[i]) <= LINALG_MYEPSILON() );
   }
   delete[](array);
Index: src/LinearAlgebra/unittests/MatrixUnitTest.cpp
===================================================================
--- src/LinearAlgebra/unittests/MatrixUnitTest.cpp	(revision 5605793b50554c75171309f425f1848783edb5d0)
+++ src/LinearAlgebra/unittests/MatrixUnitTest.cpp	(revision 71129f9baea5c7b294d5612a2cf24cf00ef7b14e)
@@ -272,5 +272,5 @@
   // arbitrary rotation matrix has det = 1
   res.setRotation(M_PI/3.,1.,M_PI/7.);
-  CPPUNIT_ASSERT(fabs(fabs(res.determinant()) -1.) <= LINALG_MYEPSILON);
+  CPPUNIT_ASSERT(fabs(fabs(res.determinant()) -1.) <= LINALG_MYEPSILON());
 
   // inverse is rotation matrix with negative angles
Index: src/LinearAlgebra/unittests/PlaneUnitTest.cpp
===================================================================
--- src/LinearAlgebra/unittests/PlaneUnitTest.cpp	(revision 5605793b50554c75171309f425f1848783edb5d0)
+++ src/LinearAlgebra/unittests/PlaneUnitTest.cpp	(revision 71129f9baea5c7b294d5612a2cf24cf00ef7b14e)
@@ -160,13 +160,13 @@
   {
     Vector t = (1./3.)*(unitVec[0]+unitVec[1]+unitVec[2]);
-    CPPUNIT_ASSERT(fabs(p1->distance(zeroVec)-t.Norm()) <= LINALG_MYEPSILON);
+    CPPUNIT_ASSERT(fabs(p1->distance(zeroVec)-t.Norm()) <= LINALG_MYEPSILON());
     CPPUNIT_ASSERT_EQUAL(t,p1->getClosestPoint(zeroVec));
   }
 
-  CPPUNIT_ASSERT(fabs(p2->distance(unitVec[2])-1) <= LINALG_MYEPSILON);
+  CPPUNIT_ASSERT(fabs(p2->distance(unitVec[2])-1) <= LINALG_MYEPSILON());
   CPPUNIT_ASSERT_EQUAL(zeroVec,p2->getClosestPoint(unitVec[2]));
-  CPPUNIT_ASSERT(fabs(p3->distance(unitVec[1])-1) <= LINALG_MYEPSILON);
+  CPPUNIT_ASSERT(fabs(p3->distance(unitVec[1])-1) <= LINALG_MYEPSILON());
   CPPUNIT_ASSERT_EQUAL(zeroVec,p3->getClosestPoint(unitVec[1]));
-  CPPUNIT_ASSERT(fabs(p4->distance(unitVec[0])-1) <= LINALG_MYEPSILON);
+  CPPUNIT_ASSERT(fabs(p4->distance(unitVec[0])-1) <= LINALG_MYEPSILON());
   CPPUNIT_ASSERT_EQUAL(zeroVec,p4->getClosestPoint(unitVec[0]));
 }
Index: src/LinearAlgebra/unittests/VectorUnitTest.cpp
===================================================================
--- src/LinearAlgebra/unittests/VectorUnitTest.cpp	(revision 5605793b50554c75171309f425f1848783edb5d0)
+++ src/LinearAlgebra/unittests/VectorUnitTest.cpp	(revision 71129f9baea5c7b294d5612a2cf24cf00ef7b14e)
@@ -28,5 +28,4 @@
 #include "CodePatterns/Log.hpp"
 #include "Exceptions/LinearDependenceException.hpp"
-#include "Helpers/defs.hpp"
 #include "LinearAlgebra/defs.hpp"
 #include "LinearAlgebra/Plane.hpp"
@@ -233,7 +232,7 @@
   CPPUNIT_ASSERT_EQUAL( M_PI, zero.Angle(unit) );
   CPPUNIT_ASSERT_EQUAL( 0., unit.Angle(unit) );
-  CPPUNIT_ASSERT_EQUAL( true, fabs(M_PI/2. - otherunit.Angle(unit)) <= LINALG_MYEPSILON );
-  CPPUNIT_ASSERT_EQUAL( true, fabs(M_PI/2. - unit.Angle(notunit)) <= LINALG_MYEPSILON );
-  CPPUNIT_ASSERT_EQUAL( true, fabs(M_PI/4. - otherunit.Angle(notunit)) <= LINALG_MYEPSILON );
+  CPPUNIT_ASSERT_EQUAL( true, fabs(M_PI/2. - otherunit.Angle(unit)) <= LINALG_MYEPSILON() );
+  CPPUNIT_ASSERT_EQUAL( true, fabs(M_PI/2. - unit.Angle(notunit)) <= LINALG_MYEPSILON() );
+  CPPUNIT_ASSERT_EQUAL( true, fabs(M_PI/4. - otherunit.Angle(notunit)) <= LINALG_MYEPSILON() );
 };
 
@@ -258,20 +257,20 @@
   // first one-component system
   CPPUNIT_ASSERT(testVector.GetOneNormalVector(unit));
-  CPPUNIT_ASSERT(testVector.ScalarProduct(unit) <= LINALG_MYEPSILON);
+  CPPUNIT_ASSERT(testVector.ScalarProduct(unit) <= LINALG_MYEPSILON());
 
   // second one-component system
   CPPUNIT_ASSERT(testVector.GetOneNormalVector(otherunit));
-  CPPUNIT_ASSERT(testVector.ScalarProduct(otherunit) <= LINALG_MYEPSILON);
+  CPPUNIT_ASSERT(testVector.ScalarProduct(otherunit) <= LINALG_MYEPSILON());
 
   // first two-component system
   CPPUNIT_ASSERT(testVector.GetOneNormalVector(notunit));
-  CPPUNIT_ASSERT(testVector.ScalarProduct(notunit) <= LINALG_MYEPSILON);
+  CPPUNIT_ASSERT(testVector.ScalarProduct(notunit) <= LINALG_MYEPSILON());
 
   // second two-component system
   CPPUNIT_ASSERT(testVector.GetOneNormalVector(two));
-  CPPUNIT_ASSERT(testVector.ScalarProduct(two) <= LINALG_MYEPSILON);
+  CPPUNIT_ASSERT(testVector.ScalarProduct(two) <= LINALG_MYEPSILON());
 
   // three component system
   CPPUNIT_ASSERT(testVector.GetOneNormalVector(three));
-  CPPUNIT_ASSERT(testVector.ScalarProduct(three) <= LINALG_MYEPSILON);
-}
+  CPPUNIT_ASSERT(testVector.ScalarProduct(three) <= LINALG_MYEPSILON());
+}
