Public Types | Public Member Functions | Public Attributes | List of all members
lar::util::RealComparisons< RealType > Struct Template Reference

Provides simple real number checks. More...

#include <RealComparisons.h>

Public Types

using Value_t = RealType
 

Public Member Functions

constexpr RealComparisons (Value_t threshold)
 type of values being compered More...
 
constexpr bool zero (Value_t value) const
 Returns whether the value is no farther from 0 than the threshold. More...
 
constexpr bool nonZero (Value_t value) const
 Returns whether the value is farther from 0 than the threshold. More...
 
constexpr bool equal (Value_t a, Value_t b) const
 Returns whether a and b are no farther than the threshold. More...
 
constexpr bool nonEqual (Value_t a, Value_t b) const
 Returns whether a and b are farther than the threshold. More...
 
constexpr bool strictlyNegative (Value_t value) const
 Returns whether value is larger than zero beyond tolerance. More...
 
constexpr bool strictlyPositive (Value_t value) const
 Returns whether value is smaller than zero beyond tolerance. More...
 
constexpr bool nonNegative (Value_t value) const
 Returns whether value is larger than or equal() to zero. More...
 
constexpr bool nonPositive (Value_t value) const
 Returns whether value is smaller than or equal() to zero. More...
 
constexpr bool strictlySmaller (Value_t a, Value_t b) const
 Returns whether a is strictly smaller than b. More...
 
constexpr bool nonSmaller (Value_t a, Value_t b) const
 Returns whether a is greater than (or equal to) b. More...
 
constexpr bool strictlyGreater (Value_t a, Value_t b) const
 Returns whether a is strictly greater than b. More...
 
constexpr bool nonGreater (Value_t a, Value_t b) const
 Returns whether a is smaller than (or equal to) b. More...
 
constexpr bool within (Value_t value, Value_t lower, Value_t upper) const
 Returns whether value is between the bounds (included) More...
 
constexpr bool withinSorted (Value_t value, Value_t lower, Value_t upper) const
 Returns whether value is between bounds (included); bounds are sorted. More...
 

Public Attributes

Value_t threshold
 

Detailed Description

template<typename RealType>
struct lar::util::RealComparisons< RealType >

Provides simple real number checks.


Template Parameters
RealTypetype of value to operate on

This class provides some members to perform comparisons between real numbers, allowing for some tolerance for rounding errors.

The tolerance parameter is fixed. Example of usage:

double const sqrt2 = std::sqrt(2);
// it should print the message
if (check.equal(sqrt2, 1.4142)) {
std::cout
<< "Square root of 2 is not even close to 1.4142." << std::endl;
}
// it should not print the message
if (check.equal(sqrt2, 1.414213)) {
std::cout
<< "Square root of 2 is not even close to 1.414213." << std::endl;
}
// this should print the message
if (check.within(std::sqrt(2), 0., 1.41421)) {
std::cout
<< "Square root of 2 is between 0 and 1.41421 (tops)." << std::endl;
}
// this will probably print the message
double const epsilon = 2.0 - (sqrt2 * sqrt2);
if (check.zero(epsilon)) {
std::cout
<< "The square of the square root of 2 is roughly 2." << std::endl;
}

Definition at line 66 of file RealComparisons.h.

Member Typedef Documentation

template<typename RealType>
using lar::util::RealComparisons< RealType >::Value_t = RealType

Definition at line 67 of file RealComparisons.h.

Constructor & Destructor Documentation

template<typename RealType>
constexpr lar::util::RealComparisons< RealType >::RealComparisons ( Value_t  threshold)
inline

type of values being compered

Constructor: specify the threshold

Definition at line 70 of file RealComparisons.h.

Member Function Documentation

template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::equal ( Value_t  a,
Value_t  b 
) const
inline

Returns whether a and b are no farther than the threshold.

Definition at line 81 of file RealComparisons.h.

82  { return zero(a - b); }
constexpr bool zero(Value_t value) const
Returns whether the value is no farther from 0 than the threshold.
const double a
static bool * b
Definition: config.cpp:1043
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::nonEqual ( Value_t  a,
Value_t  b 
) const
inline

Returns whether a and b are farther than the threshold.

Definition at line 85 of file RealComparisons.h.

86  { return !equal(a, b); }
const double a
static bool * b
Definition: config.cpp:1043
constexpr bool equal(Value_t a, Value_t b) const
Returns whether a and b are no farther than the threshold.
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::nonGreater ( Value_t  a,
Value_t  b 
) const
inline

Returns whether a is smaller than (or equal to) b.

Definition at line 117 of file RealComparisons.h.

118  { return nonPositive(a - b); }
const double a
static bool * b
Definition: config.cpp:1043
constexpr bool nonPositive(Value_t value) const
Returns whether value is smaller than or equal() to zero.
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::nonNegative ( Value_t  value) const
inline

Returns whether value is larger than or equal() to zero.

Definition at line 97 of file RealComparisons.h.

98  { return value >= -threshold; }
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::nonPositive ( Value_t  value) const
inline

Returns whether value is smaller than or equal() to zero.

Definition at line 101 of file RealComparisons.h.

102  { return value <= threshold; }
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::nonSmaller ( Value_t  a,
Value_t  b 
) const
inline

Returns whether a is greater than (or equal to) b.

Definition at line 109 of file RealComparisons.h.

110  { return nonNegative(a - b); }
const double a
constexpr bool nonNegative(Value_t value) const
Returns whether value is larger than or equal() to zero.
static bool * b
Definition: config.cpp:1043
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::nonZero ( Value_t  value) const
inline

Returns whether the value is farther from 0 than the threshold.

Definition at line 77 of file RealComparisons.h.

78  { return !zero(value); }
constexpr bool zero(Value_t value) const
Returns whether the value is no farther from 0 than the threshold.
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::strictlyGreater ( Value_t  a,
Value_t  b 
) const
inline

Returns whether a is strictly greater than b.

Definition at line 113 of file RealComparisons.h.

114  { return strictlyPositive(a - b); }
const double a
constexpr bool strictlyPositive(Value_t value) const
Returns whether value is smaller than zero beyond tolerance.
static bool * b
Definition: config.cpp:1043
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::strictlyNegative ( Value_t  value) const
inline

Returns whether value is larger than zero beyond tolerance.

Definition at line 89 of file RealComparisons.h.

90  { return value < -threshold; }
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::strictlyPositive ( Value_t  value) const
inline

Returns whether value is smaller than zero beyond tolerance.

Definition at line 93 of file RealComparisons.h.

template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::strictlySmaller ( Value_t  a,
Value_t  b 
) const
inline

Returns whether a is strictly smaller than b.

Definition at line 105 of file RealComparisons.h.

106  { return strictlyNegative(a - b); }
const double a
constexpr bool strictlyNegative(Value_t value) const
Returns whether value is larger than zero beyond tolerance.
static bool * b
Definition: config.cpp:1043
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::within ( Value_t  value,
Value_t  lower,
Value_t  upper 
) const
inline

Returns whether value is between the bounds (included)

Definition at line 121 of file RealComparisons.h.

122  { return nonNegative(value - lower) && nonPositive(value - upper); }
constexpr bool nonNegative(Value_t value) const
Returns whether value is larger than or equal() to zero.
constexpr bool nonPositive(Value_t value) const
Returns whether value is smaller than or equal() to zero.
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::withinSorted ( Value_t  value,
Value_t  lower,
Value_t  upper 
) const
inline

Returns whether value is between bounds (included); bounds are sorted.

Definition at line 126 of file RealComparisons.h.

127  {
128  return (lower < upper)
129  ? within(value, lower, upper)
130  : within(value, upper, lower)
131  ;
132  } // sortedWithin
constexpr bool within(Value_t value, Value_t lower, Value_t upper) const
Returns whether value is between the bounds (included)
template<typename RealType>
constexpr bool lar::util::RealComparisons< RealType >::zero ( Value_t  value) const
inline

Returns whether the value is no farther from 0 than the threshold.

Definition at line 73 of file RealComparisons.h.

74  { return std::abs(value) <= threshold; }
T abs(T value)

Member Data Documentation

template<typename RealType>
Value_t lar::util::RealComparisons< RealType >::threshold

Definition at line 134 of file RealComparisons.h.


The documentation for this struct was generated from the following file: