1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
const DEFAULT_DELTA: f64 = 1e-5;
pub fn almost_eq(a: f64, b: f64) -> bool {
almost_eq_delta(a, b, DEFAULT_DELTA)
}
pub fn almost_eq_delta(a: f64, b: f64, d: f64) -> bool {
(abs(a - b) / a) < d
}
pub fn assert_almost_eq(a: f64, b: f64) {
assert_almost_eq_delta(a, b, DEFAULT_DELTA);
}
pub fn assert_almost_eq_delta(a: f64, b: f64, d: f64) {
if !almost_eq_delta(a, b, d) {
panic!("assertion failed: {:?} != {:?} (within {:?})", a, b, d);
}
}
fn abs(x: f64) -> f64 {
if x > 0.0 {
x
} else {
-x
}
}