mpir
partial Rust porting of mpir multiple precision library based on gmp mpfr
Sample
see also sum_arctan_gregory() source
mpf_set_default_prec; // 64 bits default
// inv_f
let a = &from;
let mut f = a.inv_f;
assert_eq!;
f *= 3;
assert_eq!;
// inv_f
let a = &from;
let f = a.inv_f;
assert_eq!;
// inv_q
let a = &from;
let q = &mut a.inv_q;
assert_eq!;
assert_eq!;
assert_eq!;
// mpf from mpq
let f = from;
assert_eq!;
assert_eq!;
// mpq from &str
let f = &mut from;
assert_eq!;
assert_eq!;
// mpf from &str
let f = from;
assert_eq!;
// mpz from &str
let f = from;
assert_eq!;
// mpz and mpf check about (default) significant digits
let a = from;
assert_eq!; // 21 digits
let mut f = from;
f /= from; // drift
assert_eq!; // 20 digits by default formatter
assert_eq!; // 21 digits ok
// mpf
assert_eq!; // 1 / 3
assert_eq!; // 1 / 3
assert_eq!; // 1 / 3
assert_eq!; // 2 / 3
assert_eq!; // 2 / 3
assert_eq!; // 2 / 3
// mpz fact
let facts = vec!; // 18-20
.for_each;
// mpz fact cached
let m = &mut new;
.for_each;
// mpq
let q = &from;
assert_eq!;
// mpf prec
// assert_eq!(mpf_get_default_prec(), 64); // may be 64
mpf_set_default_prec; // 100 set to 128 bits (step by 2**n)
// assert_eq!(mpf_get_default_prec(), 128); // may be 128 (about 38 digits)
let digits = calc_digits_from_bits;
assert_eq!; // may be 38
// mpf significant digits test loss of digits on display
let disp_digits = digits + 3; // set disp_digits to over prec
let f = &mut from;
let e = &from;
assert_eq!;
assert_eq!;
// f.add(e) as 0.99999999999999999999e-19 without mpf_set_default_prec(100)
assert_eq!; // disp over prec
assert_eq!; // disp as match with prec
// mpf calc napier
let digits = 150;
mpf_set_default_prec;
let e = &from.calc_napier;
assert_eq!;
assert_eq!;
/*
2.
7182818284 5904523536 0287471352 6624977572 4709369995
9574966967 6277240766 3035354759 4571382178 5251664274
2746639193 2003059921 8174135966 2904357290 0334295260
...
*/
Misc
Links
Requirements
License
MIT License