Expand description
Data structures using approximate floating-point comparisons.
Precision is the basic struct used by everything in this crate.
FloatPool is used for interning floats via ApproxInternable to reduce accumulated numerical
error and allow direct comparison and hashing via ApproxHash.
ApproxHashMap is used for looking up approximate values.
For implementing approximate comparison on your own types, see ApproxEq,
ApproxEqZero, and ApproxOrd.
§Example
const APPROX: Precision = Precision::DEFAULT;
assert_ne!(0.1 + 0.2, 0.3_f64);
assert!(APPROX.eq(0.1 + 0.2, 0.3_f64));§Implementation
See Precision for details about how floats are compared.
§Features
The rustc-hash feature is enabled by default, and uses a faster hashing
algorithm for the hash map inside FloatPool.
The derive feature is enabled by default, and provides derive macros for
ApproxEq, ApproxEqZero, and ApproxInternable.
Re-exports§
pub use hash_map::ApproxHashMap;pub use pool::FloatPool;pub use precision::Precision;pub use traits::*;
Modules§
- hash_
map - Hash map that works for
ApproxHashable values. - pool
- Interner that canonicalizes similar floats.
- precision
- Precision level for comparing floats.
- traits
- Common traits related to approximate equality.
Derive Macros§
- Approx
Eq - Derives the
ApproxEqtrait on a struct or enum. - Approx
EqZero - Derives
ApproxEqZeroon a struct. - Approx
Internable - Derives the
ApproxInternabletrait.