Gromacs
2024.3
|
#include <testutils/include/testutils/testasserts.h>
Computes and represents a floating-point 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 single-precision difference. More... | |
FloatingPointDifference (double ref, double value) | |
Initializes a double-precision 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 non-negative). | |
uint64_t | asUlps () const |
Returns the difference as ULPs (always non-negative). More... | |
bool | signsDiffer () const |
Whether the compared values were of different sign. More... | |
bool | isDouble () const |
Whether the difference is between single- or double-precision 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 single-precision 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 double-precision 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 non-negative).
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.