pub fn assert_approx_equal(a: f32, b: f32, tolerance: f32) {
let ret = approx_equal(a, b, tolerance);
if !ret {
panic!("expected {a} but was {b}")
}
}
pub fn approx_equal_f64(a: f64, b: f64, tolerance: f64) -> bool {
let diff = a - b;
diff.abs() <= tolerance
}
pub fn approx_equal(a: f32, b: f32, tolerance: f32) -> bool {
let diff = a - b;
diff.abs() <= tolerance
}
#[cfg(test)]
mod tesxts {
use super::approx_equal;
#[test]
fn test_near_number() {
assert!(approx_equal(0.991, 0.990, 0.1));
assert!(approx_equal(0.991, 0.990, 0.01));
assert!(!approx_equal(0.991, 0.990, 0.0001));
}
#[test]
fn test_near_one_another() {
assert!(approx_equal(0.99, 1.0, 0.1));
assert!(approx_equal(0.99, 1.0, 0.01));
assert!(!approx_equal(0.99, 1.0, 0.001));
}
}