pub(crate) fn abs_diff_eq(a: f32, b: f32, tol: f32) -> bool {
(a - b).abs() < tol
}
macro_rules! assert_approx_eq {
($left:expr, $right:expr $(,)?) => {
match (&$left, &$right) {
(left_val, right_val) => {
assert!(
abs_diff_eq(*left_val, *right_val, 1e-5),
"assertion failed: expected={} actual={} delta={} tol=1e-5(default)",
left_val,
right_val,
(left_val - right_val).abs(),
);
}
}
};
($left:expr, $right:expr, $tol:expr $(,)?) => {
match (&$left, &$right, &$tol) {
(left_val, right_val, tol_val) => {
assert!(
abs_diff_eq(*left_val, *right_val, *tol_val),
"assertion failed: expected={} actual={} delta={} tol={}",
left_val,
right_val,
(left_val - right_val).abs(),
tol_val
);
}
}
};
}
pub(crate) use assert_approx_eq;