std: Implement a fuzzy-equal interface
This commit is contained in:
parent
02b7089e15
commit
d8b113f209
33
src/libstd/cmp.rs
Normal file
33
src/libstd/cmp.rs
Normal file
@ -0,0 +1,33 @@
|
||||
#[doc="Additional general-purpose comparison functionality."]
|
||||
|
||||
const fuzzy_epsilon: float = 1.0e-6;
|
||||
|
||||
iface fuzzy_eq {
|
||||
fn fuzzy_eq(&&other: self) -> bool;
|
||||
}
|
||||
|
||||
impl fuzzy_eq of fuzzy_eq for float {
|
||||
fn fuzzy_eq(&&other: float) -> bool {
|
||||
ret float::abs(self - other) < fuzzy_epsilon;
|
||||
}
|
||||
}
|
||||
|
||||
impl fuzzy_eq of fuzzy_eq for f32 {
|
||||
fn fuzzy_eq(&&other: f32) -> bool {
|
||||
ret f32::abs(self - other) < (fuzzy_epsilon as f32);
|
||||
}
|
||||
}
|
||||
|
||||
impl fuzzy_eq of fuzzy_eq for f64 {
|
||||
fn fuzzy_eq(&&other: f64) -> bool {
|
||||
ret f64::abs(self - other) < (fuzzy_epsilon as f64);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_fuzzy_equals() {
|
||||
assert ((1.0).fuzzy_eq(1.0));
|
||||
assert ((1.0f32).fuzzy_eq(1.0f32));
|
||||
assert ((1.0f64).fuzzy_eq(1.0f64));
|
||||
}
|
||||
|
@ -22,6 +22,7 @@ export bitv, deque, fun_treemap, list, map, smallintmap, sort, treemap;
|
||||
export rope, arena, arc, par;
|
||||
export ebml, dbg, getopts, json, rand, sha1, term, time, prettyprint;
|
||||
export test, tempfile, serialization;
|
||||
export cmp;
|
||||
|
||||
// General io and system-services modules
|
||||
|
||||
@ -70,6 +71,7 @@ mod prettyprint;
|
||||
mod arena;
|
||||
mod arc;
|
||||
mod par;
|
||||
mod cmp;
|
||||
|
||||
#[cfg(unicode)]
|
||||
mod unicode;
|
||||
|
Loading…
Reference in New Issue
Block a user