CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
closeWithinTolerance.h
Go to the documentation of this file.
1 #ifndef NPSTAT_CLOSEWITHINTOLERANCE_HH_
2 #define NPSTAT_CLOSEWITHINTOLERANCE_HH_
3 
15 #include <cmath>
16 #include <algorithm>
18 
19 namespace npstat {
25  inline bool closeWithinTolerance(const double& a, const double& b,
26  const double& tol)
27  {
28  if (tol < 0.0)
29  throw npstat::NpstatInvalidArgument("In npstat::closeWithinTolerance: "
30  "negative tolerance is not allowed");
31  if (a == b)
32  return true;
33  else
34  return fabs(a - b)/std::max(fabs(a), fabs(b)) <= tol;
35  }
36 }
37 
38 #endif // NPSTAT_CLOSEWITHINTOLERANCE_HH_
39 
bool closeWithinTolerance(const double &a, const double &b, const double &tol)
Exceptions for the npstat namespace.
const T & max(const T &a, const T &b)
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121