mpir-0.1.4 has been yanked.
mpir
partial Rust porting of mpir multiple precision library based on gmp mpfr
Sample
let a = &mut mpz_s::init();
let f = &mut mpf_s::init();
let g = &mut mpf_s::init();
assert_eq!(format!("{}", a.set_str("987654321098765432109", 10)),
"987654321098765432109"); assert_eq!(format!("{}", f.set_z(a).div(g.set_str("1.0e+11", 10))), "0.98765432109876543211e+10"); assert_eq!(mpf_get_fmtstr(f, 10, 22).expect("fmtstr"), "0.987654321098765432109e+10");
assert_eq!(format!("{}", f.set_ui(3).ui_div(1)),
"0.33333333333333333333e+0"); assert_eq!(format!("{}", g.set_ui(1).div_ui(3)),
"0.33333333333333333333e+0"); assert_eq!(format!("{}", f.set_ui(3).ui_div(1)),
format!("{}", g.set_ui(1).div_ui(3))); assert_eq!(format!("{}", f.set_ui(3).ui_div(2)),
"0.66666666666666666667e+0"); assert_eq!(format!("{}", g.set_ui(2).div_ui(3)),
"0.66666666666666666667e+0"); assert_eq!(format!("{}", f.set_ui(3).ui_div(2)),
format!("{}", g.set_ui(2).div_ui(3)));
let facts = vec![
"1", "1", "2", "6", "24", "120", "720", "5040", "40320", "362880", "3628800", "39916800", "479001600", "6227020800", "87178291200", "1307674368000", "20922789888000", "355687428096000", "6402373705728000", "121645100408832000", "2432902008176640000"]; (0..=20).into_iter().for_each(|n: usize| {
let t = &mut mpz_s::fact(n as ui_t);
assert_eq!(format!("{}! = {}", n, t), format!("{}! = {}", n, facts[n]));
let u = &mut mpz_s::fac_ui(n as ui_t);
assert_eq!(format!("{}! = {}", n, t), format!("{}! = {}", n, u));
});
let m = &mut HashMap::<ui_t, mpz_s>::new();
(0..=20).into_iter().for_each(|n: usize| {
let t = &mut mpz_s::fact_cached(n as ui_t, m);
assert_eq!(format!("{}! = {}", n, t), format!("{}! = {}", n, facts[n]));
});
let q = &mut mpq_s::init();
assert_eq!(format!("{}", q.set_ui(2, 8)), "2/8");
Misc
Links
Requirements
License
MIT License