How to interpret assert failure messages
Assertion failure messages provide context information that hopefully helps in determining how a check failed. For example, this line:
#![allow(unused)] fn main() { assert_float_eq!(4.0f32, 4.000_008, rmax <= 0.000_001); }
Panics with this error message:
thread 'main' panicked at 'assertion failed: `float_eq!(left, right, rmax <= t)`
left: `4.0`,
right: `4.000008`,
abs_diff: `0.000008106232`,
ulps_diff: `Some(17)`,
[rmax] t: `0.000004000008`', assert_failure.rs:15:5
Where:
- rmax <= t - indicates the type of comparison which was carried out.
- left - the value of the first operand.
- right - the value of the second operand.
- abs_diff - the absolute difference between
left
andright
. - ulps_diff - the difference between
left
andright
in ULPs. If it is None, that is because they have different signs or at least one isNaN
. - [rmax] t - the tolerance used in the comparison against the relevant
difference, here
abs_diff
, after it has been scaled relative to an operand, in this casemax(left, right)
since it isrmax
.