|
| 1 | +extern mod std; |
| 2 | + |
| 3 | +use std::cmp::FuzzyEq; |
| 4 | + |
1 | 5 | #[abi = "rust-intrinsic"]
|
2 | 6 | extern mod rusti {
|
3 | 7 | fn sqrtf32(x: f32) -> f32;
|
@@ -36,44 +40,44 @@ fn main() {
|
36 | 40 |
|
37 | 41 | use rusti::*;
|
38 | 42 |
|
39 |
| - assert(sqrtf32(64f32) == 8f32); |
40 |
| - assert(sqrtf64(64f64) == 8f64); |
| 43 | + assert(sqrtf32(64f32).fuzzy_eq(&8f32)); |
| 44 | + assert(sqrtf64(64f64).fuzzy_eq(&8f64)); |
41 | 45 |
|
42 |
| - assert(powif32(25f32, -2i32) == 0.0016f32); |
43 |
| - assert(powif64(23.2f64, 2i32) == 538.24f64); |
| 46 | + assert(powif32(25f32, -2i32).fuzzy_eq(&0.0016f32)); |
| 47 | + assert(powif64(23.2f64, 2i32).fuzzy_eq(&538.24f64)); |
44 | 48 |
|
45 |
| - assert(sinf32(0f32) == 0f32); |
46 |
| - assert(sinf64(f64::consts::pi / 2f64) == 1f64); |
| 49 | + assert(sinf32(0f32).fuzzy_eq(&0f32)); |
| 50 | + assert(sinf64(f64::consts::pi / 2f64).fuzzy_eq(&1f64)); |
47 | 51 |
|
48 |
| - assert(cosf32(0f32) == 1f32); |
49 |
| - assert(cosf64(f64::consts::pi * 2f64) == 1f64); |
| 52 | + assert(cosf32(0f32).fuzzy_eq(&1f32)); |
| 53 | + assert(cosf64(f64::consts::pi * 2f64).fuzzy_eq(&1f64)); |
50 | 54 |
|
51 |
| - assert(powf32(25f32, -2f32) == 0.0016f32); |
52 |
| - assert(powf64(400f64, 0.5f64) == 20f64); |
| 55 | + assert(powf32(25f32, -2f32).fuzzy_eq(&0.0016f32)); |
| 56 | + assert(powf64(400f64, 0.5f64).fuzzy_eq(&20f64)); |
53 | 57 |
|
54 |
| - assert(fabsf32(expf32(1f32) - f32::consts::e) < 0.000001f32); |
55 |
| - assert(expf64(1f64) == f64::consts::e); |
| 58 | + assert(fabsf32(expf32(1f32) - f32::consts::e).fuzzy_eq(&0f32)); |
| 59 | + assert(expf64(1f64).fuzzy_eq(&f64::consts::e)); |
56 | 60 |
|
57 |
| - assert(exp2f32(10f32) == 1024f32); |
58 |
| - assert(exp2f64(50f64) == 1125899906842624f64); |
| 61 | + assert(exp2f32(10f32).fuzzy_eq(&1024f32)); |
| 62 | + assert(exp2f64(50f64).fuzzy_eq(&1125899906842624f64)); |
59 | 63 |
|
60 |
| - assert(fabsf32(logf32(f32::consts::e) - 1f32) < 0.000001f32); |
61 |
| - assert(logf64(1f64) == 0f64); |
| 64 | + assert(fabsf32(logf32(f32::consts::e) - 1f32).fuzzy_eq(&0f32)); |
| 65 | + assert(logf64(1f64).fuzzy_eq(&0f64)); |
62 | 66 |
|
63 |
| - assert(log10f32(10f32) == 1f32); |
64 |
| - assert(log10f64(f64::consts::e) == f64::consts::log10_e); |
| 67 | + assert(log10f32(10f32).fuzzy_eq(&1f32)); |
| 68 | + assert(log10f64(f64::consts::e).fuzzy_eq(&f64::consts::log10_e)); |
65 | 69 |
|
66 |
| - assert(log2f32(8f32) == 3f32); |
67 |
| - assert(log2f64(f64::consts::e) == f64::consts::log2_e); |
| 70 | + assert(log2f32(8f32).fuzzy_eq(&3f32)); |
| 71 | + assert(log2f64(f64::consts::e).fuzzy_eq(&f64::consts::log2_e)); |
68 | 72 |
|
69 |
| - assert(fmaf32(1.0f32, 2.0f32, 5.0f32) == 7.0f32); |
70 |
| - assert(fmaf64(0.0f64, -2.0f64, f64::consts::e) == f64::consts::e); |
| 73 | + assert(fmaf32(1.0f32, 2.0f32, 5.0f32).fuzzy_eq(&7.0f32)); |
| 74 | + assert(fmaf64(0.0f64, -2.0f64, f64::consts::e).fuzzy_eq(&f64::consts::e)); |
71 | 75 |
|
72 |
| - assert(fabsf32(-1.0f32) == 1.0f32); |
73 |
| - assert(fabsf64(34.2f64) == 34.2f64); |
| 76 | + assert(fabsf32(-1.0f32).fuzzy_eq(&1.0f32)); |
| 77 | + assert(fabsf64(34.2f64).fuzzy_eq(&34.2f64)); |
74 | 78 |
|
75 |
| - assert(floorf32(3.8f32) == 3.0f32); |
76 |
| - assert(floorf64(-1.1f64) == -2.0f64); |
| 79 | + assert(floorf32(3.8f32).fuzzy_eq(&3.0f32)); |
| 80 | + assert(floorf64(-1.1f64).fuzzy_eq(&-2.0f64)); |
77 | 81 |
|
78 | 82 | // Causes linker error
|
79 | 83 | // undefined reference to llvm.ceil.f32/64
|
|
0 commit comments