floats.h

00001 #ifndef UTIL_FLOATS_H
00002 #define UTIL_FLOATS_H
00003 
00004 namespace util
00005 {
00006 #ifndef VVE_REL_EPSILON
00007 
00013 #define VVE_REL_EPSILON 1e-8
00014 #endif
00015 
00016 #ifndef VVE_EPSILON
00017 
00023 #define VVE_EPSILON 1e-9
00024 #endif
00025 
00029   inline bool greater(double v1, double v2, double abs_epsilon = VVE_EPSILON, double rel_epsilon = VVE_REL_EPSILON)
00030   {
00031     return (v1*(1+rel_epsilon/2) + abs_epsilon/2) > (v2*(1-rel_epsilon/2) - abs_epsilon/2);
00032   }
00033 
00037   inline bool less(double v1, double v2, double abs_epsilon = VVE_EPSILON, double rel_epsilon = VVE_REL_EPSILON)
00038   {
00039     return greater(v2, v1, abs_epsilon, rel_epsilon);
00040   }
00041 
00045   inline bool approx(double v1, double v2, double abs_epsilon = VVE_EPSILON, double rel_epsilon = VVE_REL_EPSILON)
00046   {
00047     double diff = fabs(v1-v2);
00048     if(diff < abs_epsilon) return true;
00049     double tot = fabs(v1)+fabs(v2);
00050     return (diff/tot) < rel_epsilon;
00051   }
00052 
00056   inline bool notequal(double v1, double v2, double abs_epsilon = VVE_EPSILON, double rel_epsilon = VVE_REL_EPSILON)
00057   {
00058     return !approx(v1, v2, abs_epsilon, rel_epsilon);
00059   }
00060 
00061 }
00062 
00063 #endif // UTIL_FLOATS_H
00064 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Generated on Fri May 31 15:37:53 2013 for VVE by  doxygen 1.6.3