More documentation available on docs.rs.
num
crate (rational
module)Fraction
struct implementation uses two u64
numbers and arithmetic on stackBigFraction
struct implementation uses two limitless BigUint
numbers and arithmetic on heap```rust use fraction::Fraction;
fn main () { let mut fr = Fraction::zero ();
fr = fr + Fraction::from (2); // 0 + 2 = 2 fr = fr / Fraction::from (0.5); // 2 / 0.5 = 4
asserteq! (fr, Fraction::from (4)); asserteq! (4.0f64, fr.to_f64 ()); } ```
```rust use std::collections::HashMap; use fraction::Fraction;
fn main () { let f = Fraction::from (0.75);
let mut map: HashMap map.insert (f, ()); assert! (map.containskey (&Fraction::new (3u64, 4u64))); // 0.75 == 3/4
assert! (map.containskey (&Fraction::new (6u64, 8u64))); // 0.75 == 6/8
assert! (map.containskey (&Fraction::new (12u64, 16u64))); // 0.75 == 12/16
assert! (! map.containskey (&Fraction::from (0.5))); // 0.75 != 1/2
}
``` ```rust
use fraction::Fraction; fn main () {
let f14 = Fraction::new (1u64, 4u64); // 1/4 == 0.25
let f12 = Fraction::new (1u64, 2u64); // 1/2 == 0.50
let f24 = Fraction::new (2u64, 4u64); // 2/4 == 0.50
let f34 = Fraction::new (3u64, 4u64); // 3/4 == 0.75 asserteq! (f12, f24); // 1/2 == 2/4
asserteq! (f34, f12 + f14); // 3/4 == 1/2 + 1/4
assert_eq! (f14, Fraction::from (0.25)); // 1/4 == 0.25
}
``` Look into CHANGELOG.md for detailsComparison
Change Log