]> SALOME platform Git repositories - tools/medcoupling.git/commitdiff
Salome HOME
staffan :
authorvbd <vbd>
Thu, 23 Aug 2007 14:21:58 +0000 (14:21 +0000)
committervbd <vbd>
Thu, 23 Aug 2007 14:21:58 +0000 (14:21 +0000)
* added epsilonEqualRelative for better equality checing of doubles

src/INTERP_KERNEL/VectorUtils.hxx

index f8e58d9d8c34885a25fddeb9fac71f3f91482cd8..a85525de0656951695cd5691aa017f53641eef4d 100644 (file)
@@ -55,9 +55,22 @@ namespace INTERP_UTILS
 
   inline bool epsilonEqual(const double x, const double y, const double errTol = 1.0e-12)
   {
-    return std::abs(x - y) < errTol;
+    return std::abs(x - y) <= errTol;
+  }
+
+  inline bool epsilonEqualRelative(const double x, const double y, const double relTol = 1.0e-6, const double absTol = 1.0e-17)
+  {
+    // necessary for comparing values close to zero
+    // in order to avoid division
+    if(std::abs(x - y) < absTol)
+      {
+       return true;
+      }
+
+    const double relError = std::abs((x - y) / std::max(x, y));
+
+    return relError <= relTol;
   }
-  
 
 };