Gromacs
2021

#include <testutils/testasserts.h>
Computes and represents a floatingpoint difference value.
Methods in this class do not throw, except for toString(), which may throw std::bad_alloc.
Public Member Functions  
FloatingPointDifference (float ref, float value)  
Initializes a singleprecision difference. More...  
FloatingPointDifference (double ref, double value)  
Initializes a doubleprecision difference. More...  
bool  isNaN () const 
Whether one or both of the compared values were NaN. More...  
double  asAbsolute () const 
Returns the difference as an absolute number (always nonnegative).  
uint64_t  asUlps () const 
Returns the difference as ULPs (always nonnegative). More...  
bool  signsDiffer () const 
Whether the compared values were of different sign. More...  
bool  isDouble () const 
Whether the difference is between single or doubleprecision numbers.  
std::string  toString () const 
Formats the difference as a string for assertion failure messages.  
double  termMagnitude () const 
Returns the magnitude of the original second term of the difference.  
gmx::test::FloatingPointDifference::FloatingPointDifference  (  float  ref, 
float  value  
) 
Initializes a singleprecision difference.
ref  First term in difference 
value  Second term in difference 
For absolute and ULP differences the two parameters are equivalent, since the difference is symmetric. For relative differences the first term is interpreted as the reference value, from which we extract the magnitude to compare with.
gmx::test::FloatingPointDifference::FloatingPointDifference  (  double  ref, 
double  value  
) 
Initializes a doubleprecision difference.
ref  First term in difference 
value  Second term in difference 
For absolute and ULP differences the two parameters are equivalent, since the difference is symmetric. For relative differences the first term is interpreted as the reference value, from which we extract the magnitude to compare with.

inline 
Returns the difference as ULPs (always nonnegative).
The ULPs are calculated for the type that corresponds to the constructor used to initialize the difference. The ULP difference between 0.0 and 0.0 is zero.
bool gmx::test::FloatingPointDifference::isNaN  (  )  const 
Whether one or both of the compared values were NaN.
If this returns true
, other accessors return meaningless values.

inline 
Whether the compared values were of different sign.
0.0 and 0.0 are treated as positive and negative, respectively.