9 stable releases

new 3.0.0 Dec 7, 2024
2.2.3 Nov 30, 2024
2.1.0 Jul 13, 2024
2.0.0 Jun 15, 2024
1.0.2 Jun 8, 2024

#297 in Math

Download history 6/week @ 2024-09-22 4/week @ 2024-11-03 770/week @ 2024-11-24 214/week @ 2024-12-01

984 downloads per month

MIT license

59KB
1.5K SLoC

BIG NUM MATH

Library for computations on large numbers.

  • underdeveloped:
    1. no plan for new functions (goniometric, radix, …)
    2. upcoming optimizations (memory consumption, speed up on some computations, ergonomy, …)
    3. divrem can perform unbearably when divisor is significantly smaller than dividend (as per point 2)
  • primitive simple functions only:
    • addition +substraction,
    • multiplication +division
    • relation operators
    • power

Usage Samples

power
let row = PlacesRow::new_from_num(u128::MAX);
let pow = pow(&row, 500);
let number = pow.to_number();

assert!(number.starts_with("8312324609993336522"));
assert_eq!(19266, number.len());
division with remainder
let dividend = PlacesRow::new_from_str("3402823669209384634633746074317682114565556668744123").unwrap();
let divisor  = PlacesRow::new_from_str(  "14034568236692093846346337460345176821145655563453").unwrap();
let ratio = "242";        
let remainder = "6458155929897923817932408914149323848308022388497";
        
let ratrem = divrem(&dividend, &divisor).unwrap();
        
assert_eq!(ratio, ratrem.0.to_number());
assert_eq!(remainder, ratrem.1.to_number());
decimal places relation
let number    = Row::new_from_str("1489754132134687989463132131").unwrap();
let comparand = Row::new_from_str(        "48645698946456531371").unwrap();
let decrel = rel_dec(&number, &comparand);

assert_eq!(RelDec::Greater((28, 20, 8)), decrel);

No runtime deps

Features