Crate ibig

Source
Expand description

A big integer library with good performance.

The library implements efficient large integer arithmetic in pure Rust.

The two main integer types are UBig (for unsigned integers) and IBig (for signed integers).

Modular arithmetic is supported by the module modular.

§Examples

use ibig::{ibig, modular::ModuloRing, ubig, UBig};

let a = ubig!(12345678);
let b = ubig!(0x10ff);
let c = ibig!(-azz base 36);
let d: UBig = "15033211231241234523452345345787".parse()?;
let e = 2 * &b + 1;
let f = a * b.pow(10);

assert_eq!(e, ubig!(0x21ff));
assert_eq!(c.to_string(), "-14255");
assert_eq!(
    f.in_radix(16).to_string(),
    "1589bda8effbfc495d8d73c83d8b27f94954e"
);
assert_eq!(
    format!("hello {:#x}", d % ubig!(0xabcd1234134132451345)),
    "hello 0x1a7e7c487267d2658a93"
);

let ring = ModuloRing::new(&ubig!(10000));
let x = ring.from(12345);
let y = ring.from(55443);
assert_eq!(format!("{}", x - y), "6902 (mod 10000)");

§Optional dependencies

  • std (default): for std::error::Error.
  • num-traits (default): integral traits.
  • rand (default): random number generation.
  • serde: serialization and deserialization.

Modules§

error
Error types.
fmt
Formatting helpers.
modular
Modular arithmetic.
ops
Traits for number operations.
rand
Random distributions.

Macros§

ibig
Create an IBig value.
ubig
Create a UBig value.

Structs§

IBig
Signed big integer.
UBig
Unsigned big integer.