[−][src]Macro float_eq::assert_float_eq
Asserts that two floating point expressions are equal to each other.
Comparisons are applied in order from left to right, shortcutting to return early if a positive result is found.
abs <= max_diffis an absolute epsilon comparison.rmax <= max_diffis a relative epsilon comparison.rmin <= max_diffis a relative epsilon comparison.r1st <= max_diffis a relative epsilon comparison.r2nd <= max_diffis a relative epsilon comparison.ulps <= max_diffis an ULPs comparison.
When comparing composite types, variants that use a uniform max_diff
value across all fields are also available:
abs_all <= max_diffis an absolute epsilon comparison.rmax_all <= max_diffis a relative epsilon comparison.rmin_all <= max_diffis a relative epsilon comparison.r1st_all <= max_diffis a relative epsilon comparison.r2nd_all <= max_diffis a relative epsilon comparison.ulps_all <= max_diffis an ULPs comparison.
On panic, this macro will print the values of the expressions with their debug
representations, with additional information from the comparison operations
(using AssertFloatEq and AssertFloatEqAll).
Like assert!, this macro has a second form, where a custom panic message can
be provided.
Examples
let a: f32 = 4.0; let b: f32 = 4.000_002_5; assert_float_eq!(a, 3.999_999_6, rmax <= 2.0 * f32::EPSILON); assert_float_eq!(a - b, 0.0, abs <= 0.000_01); assert_float_eq!(a, b, abs <= 0.000_01, ulps <= 10); assert_float_eq!(a - b, 0.0, abs <= 0.000_01, ulps <= 10, "Checking that {} == {}", a, b);