#整数 #无符号整数 #有符号整数 #整数算术 #算术 #大整数

twibint

用于任意大整数的算术运算。同时也提供Python绑定。

9个版本

新版本 0.2.7 2024年8月14日
0.2.6 2024年7月6日
0.2.4 2024年6月2日
0.2.3 2024年5月30日
0.1.0 2023年9月2日

#249 in 数学

Download history 263/week @ 2024-05-10 59/week @ 2024-05-17 97/week @ 2024-05-24 199/week @ 2024-05-31 17/week @ 2024-06-07 3/week @ 2024-06-14 105/week @ 2024-06-28 143/week @ 2024-07-05 6/week @ 2024-07-12 24/week @ 2024-07-26 2/week @ 2024-08-02 52/week @ 2024-08-09

每月 78 次下载

GPL-3.0-only

210KB
6K SLoC

twibint

Rust crate,用于任意大整数(有符号或无符号)的运算。

crate documentation

此crate不需要任何依赖,仅依赖于标准库。一些依赖项是可选的,取决于特定的功能(见下方的功能列表)。

此crate的主要API是导出2个类型:BigUint和BigInt,用于表示绝对值任意大的无符号或有符号整数。它们几乎可以像常规整数一样使用,尽管它们不实现Copy特性。

构建、文档、基准测试和测试可以通过以下方式获得

cargo build
cargo docs
cargo test

对于基准测试,请访问benches文件夹。

性能

有关性能的更多详细信息和分析脚本可在benches文件夹中找到。

TL;DR -> 目前twibint(v0.2.7)的性能状态是:加法、减法和乘法的速度比Python整数快,并且在某些规模上比num-bigint快。除法仍然非常慢。

功能列表

  • rand:导出函数gen_random_biguint:允许生成具有特定位数数的随机整数。使用rand crate作为依赖项。
  • pyo3:仅用于生成Python绑定,它只能通过pip install .命令间接使用。使用pyo3 crate作为依赖项。
  • unsafe:启用使用不安全Rust的加速。默认启用。可以通过标志--no-default-features禁用,以使用纯安全Rust(编译时强制执行)。

作为Python包安装

只需从基础目录使用即可

python3 -m pip install .

这个crate在加法和乘法运算上似乎比默认的Python整数在超过一定位数(1000到10000位之间)时更快。

Python测试可以在pytest框架中运行。它们位于tests文件夹中,并应提供足够的示例用法。使用以下命令运行测试:

pytest tests

Python默认整数性能比较可在benches文件夹中找到。

0.2版本更改日志

这个新版本在x86_64机器上的加法、减法和乘法运算方面进行了大量的加速。我没有使用x86的现代扩展,因此这些加速应该可以在这一系列机器之间移植。这也可能对许多其他功能产生性能影响。

这些加速主要归因于移除了核心循环中的内联汇编,并基于unsafe Rust。其他使用的unsafe功能包括通过指针智能地在&[u32]&[u64]切片之间切换(当对齐幸运时)。

要禁用任何unsafe代码,请使用带有标志--no-default-features的慢速体验,但完全使用安全的Rust编译。

依赖项

~0–5.5MB
~13K SLoC