[−][src]Macro float_eq::float_eq
Checks if 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.
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));