Skip to content

Commit d0f5960

Browse files
committed
---
yaml --- r: 58871 b: refs/heads/incoming c: 3cafe90 h: refs/heads/master i: 58869: 18c185f 58867: a920d7d 58863: 63499af v: v3
1 parent bcb0b5c commit d0f5960

File tree

20 files changed

+365
-404
lines changed

20 files changed

+365
-404
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ refs/heads/try: c50a9d5b664478e533ba1d1d353213d70c8ad589
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c
9-
refs/heads/incoming: a5891bebc132d4c373a5a5ffc93ba1bea2e8beb5
9+
refs/heads/incoming: 3cafe905a406a2645f8bc7a2a6d50f24817faa4a
1010
refs/heads/dist-snap: 00dbbd01c2aee72982b3e0f9511ae1d4428c3ba9
1111
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1212
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/incoming/src/libcore/cmp.rs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,6 @@ totaleq_impl!(uint)
6666

6767
totaleq_impl!(char)
6868

69-
/// Trait for testing approximate equality
70-
pub trait ApproxEq<Eps> {
71-
fn approx_epsilon() -> Eps;
72-
fn approx_eq(&self, other: &Self) -> bool;
73-
fn approx_eq_eps(&self, other: &Self, approx_epsilon: &Eps) -> bool;
74-
}
75-
7669
#[deriving(Clone, Eq)]
7770
pub enum Ordering { Less = -1, Equal = 0, Greater = 1 }
7871

branches/incoming/src/libcore/num/f32.rs

Lines changed: 74 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -210,22 +210,6 @@ impl Eq for f32 {
210210
fn ne(&self, other: &f32) -> bool { (*self) != (*other) }
211211
}
212212

213-
#[cfg(notest)]
214-
impl ApproxEq<f32> for f32 {
215-
#[inline(always)]
216-
fn approx_epsilon() -> f32 { 1.0e-6 }
217-
218-
#[inline(always)]
219-
fn approx_eq(&self, other: &f32) -> bool {
220-
self.approx_eq_eps(other, &ApproxEq::approx_epsilon::<f32, f32>())
221-
}
222-
223-
#[inline(always)]
224-
fn approx_eq_eps(&self, other: &f32, approx_epsilon: &f32) -> bool {
225-
(*self - *other).abs() < *approx_epsilon
226-
}
227-
}
228-
229213
#[cfg(notest)]
230214
impl Ord for f32 {
231215
#[inline(always)]
@@ -826,6 +810,15 @@ mod tests {
826810
use super::*;
827811
use prelude::*;
828812
813+
macro_rules! assert_fuzzy_eq(
814+
($a:expr, $b:expr) => ({
815+
let a = $a, b = $b;
816+
if !((a - b).abs() < 1.0e-6) {
817+
fail!(fmt!("The values were not approximately equal. Found: %? and %?", a, b));
818+
}
819+
})
820+
)
821+
829822
#[test]
830823
fn test_num() {
831824
num::test_num(10f32, 2f32);
@@ -855,91 +848,91 @@ mod tests {
855848

856849
#[test]
857850
fn test_floor() {
858-
assert_approx_eq!(1.0f32.floor(), 1.0f32);
859-
assert_approx_eq!(1.3f32.floor(), 1.0f32);
860-
assert_approx_eq!(1.5f32.floor(), 1.0f32);
861-
assert_approx_eq!(1.7f32.floor(), 1.0f32);
862-
assert_approx_eq!(0.0f32.floor(), 0.0f32);
863-
assert_approx_eq!((-0.0f32).floor(), -0.0f32);
864-
assert_approx_eq!((-1.0f32).floor(), -1.0f32);
865-
assert_approx_eq!((-1.3f32).floor(), -2.0f32);
866-
assert_approx_eq!((-1.5f32).floor(), -2.0f32);
867-
assert_approx_eq!((-1.7f32).floor(), -2.0f32);
851+
assert_fuzzy_eq!(1.0f32.floor(), 1.0f32);
852+
assert_fuzzy_eq!(1.3f32.floor(), 1.0f32);
853+
assert_fuzzy_eq!(1.5f32.floor(), 1.0f32);
854+
assert_fuzzy_eq!(1.7f32.floor(), 1.0f32);
855+
assert_fuzzy_eq!(0.0f32.floor(), 0.0f32);
856+
assert_fuzzy_eq!((-0.0f32).floor(), -0.0f32);
857+
assert_fuzzy_eq!((-1.0f32).floor(), -1.0f32);
858+
assert_fuzzy_eq!((-1.3f32).floor(), -2.0f32);
859+
assert_fuzzy_eq!((-1.5f32).floor(), -2.0f32);
860+
assert_fuzzy_eq!((-1.7f32).floor(), -2.0f32);
868861
}
869862

870863
#[test]
871864
fn test_ceil() {
872-
assert_approx_eq!(1.0f32.ceil(), 1.0f32);
873-
assert_approx_eq!(1.3f32.ceil(), 2.0f32);
874-
assert_approx_eq!(1.5f32.ceil(), 2.0f32);
875-
assert_approx_eq!(1.7f32.ceil(), 2.0f32);
876-
assert_approx_eq!(0.0f32.ceil(), 0.0f32);
877-
assert_approx_eq!((-0.0f32).ceil(), -0.0f32);
878-
assert_approx_eq!((-1.0f32).ceil(), -1.0f32);
879-
assert_approx_eq!((-1.3f32).ceil(), -1.0f32);
880-
assert_approx_eq!((-1.5f32).ceil(), -1.0f32);
881-
assert_approx_eq!((-1.7f32).ceil(), -1.0f32);
865+
assert_fuzzy_eq!(1.0f32.ceil(), 1.0f32);
866+
assert_fuzzy_eq!(1.3f32.ceil(), 2.0f32);
867+
assert_fuzzy_eq!(1.5f32.ceil(), 2.0f32);
868+
assert_fuzzy_eq!(1.7f32.ceil(), 2.0f32);
869+
assert_fuzzy_eq!(0.0f32.ceil(), 0.0f32);
870+
assert_fuzzy_eq!((-0.0f32).ceil(), -0.0f32);
871+
assert_fuzzy_eq!((-1.0f32).ceil(), -1.0f32);
872+
assert_fuzzy_eq!((-1.3f32).ceil(), -1.0f32);
873+
assert_fuzzy_eq!((-1.5f32).ceil(), -1.0f32);
874+
assert_fuzzy_eq!((-1.7f32).ceil(), -1.0f32);
882875
}
883876

884877
#[test]
885878
fn test_round() {
886-
assert_approx_eq!(1.0f32.round(), 1.0f32);
887-
assert_approx_eq!(1.3f32.round(), 1.0f32);
888-
assert_approx_eq!(1.5f32.round(), 2.0f32);
889-
assert_approx_eq!(1.7f32.round(), 2.0f32);
890-
assert_approx_eq!(0.0f32.round(), 0.0f32);
891-
assert_approx_eq!((-0.0f32).round(), -0.0f32);
892-
assert_approx_eq!((-1.0f32).round(), -1.0f32);
893-
assert_approx_eq!((-1.3f32).round(), -1.0f32);
894-
assert_approx_eq!((-1.5f32).round(), -2.0f32);
895-
assert_approx_eq!((-1.7f32).round(), -2.0f32);
879+
assert_fuzzy_eq!(1.0f32.round(), 1.0f32);
880+
assert_fuzzy_eq!(1.3f32.round(), 1.0f32);
881+
assert_fuzzy_eq!(1.5f32.round(), 2.0f32);
882+
assert_fuzzy_eq!(1.7f32.round(), 2.0f32);
883+
assert_fuzzy_eq!(0.0f32.round(), 0.0f32);
884+
assert_fuzzy_eq!((-0.0f32).round(), -0.0f32);
885+
assert_fuzzy_eq!((-1.0f32).round(), -1.0f32);
886+
assert_fuzzy_eq!((-1.3f32).round(), -1.0f32);
887+
assert_fuzzy_eq!((-1.5f32).round(), -2.0f32);
888+
assert_fuzzy_eq!((-1.7f32).round(), -2.0f32);
896889
}
897890

898891
#[test]
899892
fn test_trunc() {
900-
assert_approx_eq!(1.0f32.trunc(), 1.0f32);
901-
assert_approx_eq!(1.3f32.trunc(), 1.0f32);
902-
assert_approx_eq!(1.5f32.trunc(), 1.0f32);
903-
assert_approx_eq!(1.7f32.trunc(), 1.0f32);
904-
assert_approx_eq!(0.0f32.trunc(), 0.0f32);
905-
assert_approx_eq!((-0.0f32).trunc(), -0.0f32);
906-
assert_approx_eq!((-1.0f32).trunc(), -1.0f32);
907-
assert_approx_eq!((-1.3f32).trunc(), -1.0f32);
908-
assert_approx_eq!((-1.5f32).trunc(), -1.0f32);
909-
assert_approx_eq!((-1.7f32).trunc(), -1.0f32);
893+
assert_fuzzy_eq!(1.0f32.trunc(), 1.0f32);
894+
assert_fuzzy_eq!(1.3f32.trunc(), 1.0f32);
895+
assert_fuzzy_eq!(1.5f32.trunc(), 1.0f32);
896+
assert_fuzzy_eq!(1.7f32.trunc(), 1.0f32);
897+
assert_fuzzy_eq!(0.0f32.trunc(), 0.0f32);
898+
assert_fuzzy_eq!((-0.0f32).trunc(), -0.0f32);
899+
assert_fuzzy_eq!((-1.0f32).trunc(), -1.0f32);
900+
assert_fuzzy_eq!((-1.3f32).trunc(), -1.0f32);
901+
assert_fuzzy_eq!((-1.5f32).trunc(), -1.0f32);
902+
assert_fuzzy_eq!((-1.7f32).trunc(), -1.0f32);
910903
}
911904

912905
#[test]
913906
fn test_fract() {
914-
assert_approx_eq!(1.0f32.fract(), 0.0f32);
915-
assert_approx_eq!(1.3f32.fract(), 0.3f32);
916-
assert_approx_eq!(1.5f32.fract(), 0.5f32);
917-
assert_approx_eq!(1.7f32.fract(), 0.7f32);
918-
assert_approx_eq!(0.0f32.fract(), 0.0f32);
919-
assert_approx_eq!((-0.0f32).fract(), -0.0f32);
920-
assert_approx_eq!((-1.0f32).fract(), -0.0f32);
921-
assert_approx_eq!((-1.3f32).fract(), -0.3f32);
922-
assert_approx_eq!((-1.5f32).fract(), -0.5f32);
923-
assert_approx_eq!((-1.7f32).fract(), -0.7f32);
907+
assert_fuzzy_eq!(1.0f32.fract(), 0.0f32);
908+
assert_fuzzy_eq!(1.3f32.fract(), 0.3f32);
909+
assert_fuzzy_eq!(1.5f32.fract(), 0.5f32);
910+
assert_fuzzy_eq!(1.7f32.fract(), 0.7f32);
911+
assert_fuzzy_eq!(0.0f32.fract(), 0.0f32);
912+
assert_fuzzy_eq!((-0.0f32).fract(), -0.0f32);
913+
assert_fuzzy_eq!((-1.0f32).fract(), -0.0f32);
914+
assert_fuzzy_eq!((-1.3f32).fract(), -0.3f32);
915+
assert_fuzzy_eq!((-1.5f32).fract(), -0.5f32);
916+
assert_fuzzy_eq!((-1.7f32).fract(), -0.7f32);
924917
}
925918

926919
#[test]
927920
fn test_real_consts() {
928-
assert_approx_eq!(Real::two_pi::<f32>(), 2f32 * Real::pi::<f32>());
929-
assert_approx_eq!(Real::frac_pi_2::<f32>(), Real::pi::<f32>() / 2f32);
930-
assert_approx_eq!(Real::frac_pi_3::<f32>(), Real::pi::<f32>() / 3f32);
931-
assert_approx_eq!(Real::frac_pi_4::<f32>(), Real::pi::<f32>() / 4f32);
932-
assert_approx_eq!(Real::frac_pi_6::<f32>(), Real::pi::<f32>() / 6f32);
933-
assert_approx_eq!(Real::frac_pi_8::<f32>(), Real::pi::<f32>() / 8f32);
934-
assert_approx_eq!(Real::frac_1_pi::<f32>(), 1f32 / Real::pi::<f32>());
935-
assert_approx_eq!(Real::frac_2_pi::<f32>(), 2f32 / Real::pi::<f32>());
936-
assert_approx_eq!(Real::frac_2_sqrtpi::<f32>(), 2f32 / Real::pi::<f32>().sqrt());
937-
assert_approx_eq!(Real::sqrt2::<f32>(), 2f32.sqrt());
938-
assert_approx_eq!(Real::frac_1_sqrt2::<f32>(), 1f32 / 2f32.sqrt());
939-
assert_approx_eq!(Real::log2_e::<f32>(), Real::e::<f32>().log2());
940-
assert_approx_eq!(Real::log10_e::<f32>(), Real::e::<f32>().log10());
941-
assert_approx_eq!(Real::log_2::<f32>(), 2f32.log());
942-
assert_approx_eq!(Real::log_10::<f32>(), 10f32.log());
921+
assert_fuzzy_eq!(Real::two_pi::<f32>(), 2f32 * Real::pi::<f32>());
922+
assert_fuzzy_eq!(Real::frac_pi_2::<f32>(), Real::pi::<f32>() / 2f32);
923+
assert_fuzzy_eq!(Real::frac_pi_3::<f32>(), Real::pi::<f32>() / 3f32);
924+
assert_fuzzy_eq!(Real::frac_pi_4::<f32>(), Real::pi::<f32>() / 4f32);
925+
assert_fuzzy_eq!(Real::frac_pi_6::<f32>(), Real::pi::<f32>() / 6f32);
926+
assert_fuzzy_eq!(Real::frac_pi_8::<f32>(), Real::pi::<f32>() / 8f32);
927+
assert_fuzzy_eq!(Real::frac_1_pi::<f32>(), 1f32 / Real::pi::<f32>());
928+
assert_fuzzy_eq!(Real::frac_2_pi::<f32>(), 2f32 / Real::pi::<f32>());
929+
assert_fuzzy_eq!(Real::frac_2_sqrtpi::<f32>(), 2f32 / Real::pi::<f32>().sqrt());
930+
assert_fuzzy_eq!(Real::sqrt2::<f32>(), 2f32.sqrt());
931+
assert_fuzzy_eq!(Real::frac_1_sqrt2::<f32>(), 1f32 / 2f32.sqrt());
932+
assert_fuzzy_eq!(Real::log2_e::<f32>(), Real::e::<f32>().log2());
933+
assert_fuzzy_eq!(Real::log10_e::<f32>(), Real::e::<f32>().log10());
934+
assert_fuzzy_eq!(Real::log_2::<f32>(), 2f32.log());
935+
assert_fuzzy_eq!(Real::log_10::<f32>(), 10f32.log());
943936
}
944937

945938
#[test]
@@ -981,15 +974,6 @@ mod tests {
981974
assert!(!NaN.is_negative());
982975
}
983976

984-
#[test]
985-
fn test_approx_eq() {
986-
assert!(1.0f32.approx_eq(&1f32));
987-
assert!(0.9999999f32.approx_eq(&1f32));
988-
assert!(1.000001f32.approx_eq_eps(&1f32, &1.0e-5));
989-
assert!(1.0000001f32.approx_eq_eps(&1f32, &1.0e-6));
990-
assert!(!1.0000001f32.approx_eq_eps(&1f32, &1.0e-7));
991-
}
992-
993977
#[test]
994978
fn test_primitive() {
995979
assert_eq!(Primitive::bits::<f32>(), sys::size_of::<f32>() * 8);

0 commit comments

Comments
 (0)