assert_float_eq

Macro assert_float_eq 

Source
macro_rules! assert_float_eq {
    ($left:expr, $right:expr, $eq1:ident <= $tol_1:expr, $eq2:ident <= $tol_2:expr, $eq3:ident <= $tol_3:expr) => { ... };
    ($left:expr, $right:expr, $eq1:ident <= $tol_1:expr, $eq2:ident <= $tol_2:expr) => { ... };
    ($left:expr, $right:expr, $eq1:ident <= $tol_1:expr) => { ... };
    ($left:expr, $right:expr, $($eq:ident <= $tol:expr,)+) => { ... };
    ($left:expr, $right:expr, $eq1:ident <= $tol_1:expr, $eq2:ident <= $tol_2:expr, $eq3:ident <= $tol_3:expr, $($arg:tt)+) => { ... };
    ($left:expr, $right:expr, $eq1:ident <= $tol_1:expr, $eq2:ident <= $tol_2:expr, $($arg:tt)+) => { ... };
    ($left:expr, $right:expr, $eq1:ident <= $tol_1:expr, $($arg:tt)+) => { ... };
}
Expand description

Asserts that two floating point expressions are equal to each other.

See the top level documentation for a list of available comparison algorithms.

On panic, this macro will print the values of the expressions with their debug representations, with additional information from the comparison operations. 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, b, ulps <= 10);
assert_float_eq!(a, 3.999_999_6, rmax <= 2.0 * f32::EPSILON);
assert_float_eq!(a - b, 0.0, abs <= 0.000_01, "Checking that {} == {}", a, b);