pub fn assert_close(actual: f64, expected: f64, tolerance: f64) {
let diff = (actual - expected).abs();
assert!(
diff <= tolerance,
"expected {expected}, got {actual}, diff {diff}, tolerance {tolerance}"
);
}
pub fn assert_slice_close(actual: &[f64], expected: &[f64], tolerance: f64) {
assert_eq!(
actual.len(),
expected.len(),
"slice length mismatch: expected {}, got {}",
expected.len(),
actual.len()
);
for (actual_value, expected_value) in actual.iter().zip(expected.iter()) {
assert_close(*actual_value, *expected_value, tolerance);
}
}