[][src]Macro float_eq::assert_float_eq

macro_rules! assert_float_eq {
    ($left:expr, $right:expr, $eq1:ident <= $max_diff_1:expr, $eq2:ident <= $max_diff_2:expr, $eq3:ident <= $max_diff_3:expr) => { ... };
    ($left:expr, $right:expr, $eq1:ident <= $max_diff_1:expr, $eq2:ident <= $max_diff_2:expr) => { ... };
    ($left:expr, $right:expr, $eq1:ident <= $max_diff_1:expr) => { ... };
    ($left:expr, $right:expr, $($eq:ident <= $max_diff:expr,)+) => { ... };
    ($left:expr, $right:expr, $eq1:ident <= $max_diff_1:expr, $eq2:ident <= $max_diff_2:expr, $eq3:ident <= $max_diff_3:expr, $($arg:tt)+) => { ... };
    ($left:expr, $right:expr, $eq1:ident <= $max_diff_1:expr, $eq2:ident <= $max_diff_2:expr, $($arg:tt)+) => { ... };
    ($left:expr, $right:expr, $eq1:ident <= $max_diff_1:expr, $($arg:tt)+) => { ... };
}

Asserts that two floating point expressions are equal to each other (using float_eq!).

On panic, this macro will print the values of the expressions with their debug representations, with additional information from the comparison operations (using FloatEqDebug and FloatDiff).

Like assert!, this macro has a second form, where a custom panic message can be provided.

Examples

let a: f32 = 4.;
let b: f32 = 4.0000025;

assert_float_eq!(a, 3.9999998, rel <= f32::EPSILON);
assert_float_eq!(a - b, 0., abs <= 0.00001, rel <= f32::EPSILON);
assert_float_eq!(a - b, 0., abs <= 0.00001, ulps <= 10);

assert_float_eq!(a - b, 0., abs <= 0.00001, ulps <= 10, "Checking that {} == {}", a, b);