15个版本

0.3.6 2022年9月17日
0.3.5 2022年3月12日
0.3.4 2021年11月3日
0.3.2 2021年5月3日
0.0.0 2020年11月20日

#84 in 数学

Download history 2164/week @ 2024-03-14 2367/week @ 2024-03-21 2393/week @ 2024-03-28 3350/week @ 2024-04-04 3752/week @ 2024-04-11 2399/week @ 2024-04-18 2444/week @ 2024-04-25 2206/week @ 2024-05-02 2053/week @ 2024-05-09 2044/week @ 2024-05-16 2226/week @ 2024-05-23 2408/week @ 2024-05-30 2285/week @ 2024-06-06 2489/week @ 2024-06-13 2128/week @ 2024-06-20 1963/week @ 2024-06-27

9,151每月下载量
用于 17 个Crates(14个直接使用)

MIT/Apache

380KB
10K SLoC

ibig

crate docs rustc 1.49+ tests

高性能的大整数库。

该库使用纯Rust实现了高效的大整数算术。

两个整数类型是 UBig(无符号整数)和 IBig(有符号整数)。

通过模块 modular 支持模运算。

示例

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)");

可选依赖项

  • std(默认):用于 std::error::Error
  • num-traits(默认):整数特性。
  • rand(默认):随机数生成。
  • serde:序列化和反序列化。

基准测试

基准测试 包含了Rust大整数库的快速基准测试。

许可证

许可协议为以下之一

任选其一。

贡献

除非你明确声明,否则任何有意提交以包含在作品中的贡献,根据Apache-2.0许可证的定义,应按照上述方式双重许可,不附加任何额外条款或条件。

依赖关系

~375–680KB
~12K SLoC