Skip to main content

Crate approx_collections

Crate approx_collections 

Source
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§

ApproxEq
Derives the ApproxEq trait on a struct or enum.
ApproxEqZero
Derives ApproxEqZero on a struct.
ApproxInternable
Derives the ApproxInternable trait.