hydrobricks
Loading...
Searching...
No Matches
NumericConstants.h
Go to the documentation of this file.
1#ifndef HYDROBRICKS_NUMERIC_CONSTANTS_H
2#define HYDROBRICKS_NUMERIC_CONSTANTS_H
3
4#include <cmath>
5#include <limits>
6
15namespace NumericConstants {
16
21static const double EPSILON_D = std::numeric_limits<double>::epsilon();
22
27static const double EPSILON_F = std::numeric_limits<float>::epsilon();
28
34static const double PRECISION = 0.00000001;
35
41static const double TOLERANCE_LOOSE = 0.0001;
42
51inline bool NearlyEqual(double a, double b, double tolerance = PRECISION) {
52 return std::fabs(a - b) <= tolerance;
53}
54
62inline bool NearlyZero(double value, double tolerance = PRECISION) {
63 return std::fabs(value) <= tolerance;
64}
65
74inline bool GreaterThan(double a, double b, double tolerance = PRECISION) {
75 return a > b + tolerance;
76}
77
86inline bool LessThan(double a, double b, double tolerance = PRECISION) {
87 return a < b - tolerance;
88}
89
98inline bool GreaterThanOrEqual(double a, double b, double tolerance = PRECISION) {
99 return a >= b - tolerance;
100}
101
110inline bool LessThanOrEqual(double a, double b, double tolerance = PRECISION) {
111 return a <= b + tolerance;
112}
113
114} // namespace NumericConstants
115
116// Expose constants in global namespace
117using NumericConstants::EPSILON_D;
118using NumericConstants::EPSILON_F;
119using NumericConstants::PRECISION;
120using NumericConstants::TOLERANCE_LOOSE;
121
122// Convenience functions in global namespace
129
130#endif // HYDROBRICKS_NUMERIC_CONSTANTS_H
bool NearlyZero(double value, double tolerance=PRECISION)
Definition NumericConstants.h:62
bool LessThan(double a, double b, double tolerance=PRECISION)
Definition NumericConstants.h:86
bool GreaterThan(double a, double b, double tolerance=PRECISION)
Definition NumericConstants.h:74
bool GreaterThanOrEqual(double a, double b, double tolerance=PRECISION)
Definition NumericConstants.h:98
bool LessThanOrEqual(double a, double b, double tolerance=PRECISION)
Definition NumericConstants.h:110
bool NearlyEqual(double a, double b, double tolerance=PRECISION)
Definition NumericConstants.h:51