26 个版本
新 0.4.15 | 2024 年 8 月 18 日 |
---|---|
0.4.14 | 2024 年 6 月 22 日 |
0.4.10 | 2024 年 5 月 31 日 |
0.4.5 | 2024 年 2 月 12 日 |
0.2.5 | 2022 年 7 月 18 日 |
#604 in 数学
37,092 个月下载量
用于 84 个 Crates (8 直接)
4MB
81K SLoC
而不是直接使用此 Crates,请使用 malachite
元 Crates。它导出此 Crates 的所有公共成员。
在 malachite-base
的文档测试中,您通常会看到以 malachite_base::
开头的导入路径。当使用 malachite
Crates 时,将路径的这一部分替换为 malachite::
。
malachite-base
此 Crates 包含许多由 malachite-nz
和 malachite-q
Crates 使用的工具。这些工具包括
- 包装标准库函数的特剛,如
CheckedAdd
。 - 为原始类型提供额外功能的特剛,如
Gcd
、FloorSqrt
和BitAccess
。 - 生成测试值的迭代函数。以下是一个生成所有
u32
值的迭代器的示例use malachite_base::num::exhaustive::exhaustive_unsigneds; use malachite_base::tuples::exhaustive::exhaustive_pairs_from_single; let mut pairs = exhaustive_pairs_from_single(exhaustive_unsigneds::<u32>()); assert_eq!( pairs.take(20).collect::<Vec<_>>(), &[ (0, 0), (0, 1), (1, 0), (1, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 0), (2, 1), (3, 0), (3, 1), (2, 2), (2, 3), (3, 2), (3, 3), (0, 4), (0, 5), (1, 4), (1, 5) ] );
RoundingMode
枚举,允许您指定各种函数的舍入行为。NiceFloat
包装器,它为浮点值提供了替代的Eq
、Ord
和Display
实现,这在某些方面比默认值更令人满意。
演示和基准测试
此 Crates 附带了一个 bin
目标,可用于运行演示和基准测试。
- 这个包中几乎所有公共函数都有一个相关的示例。运行示例可以展示函数在大量输入上的行为。例如,要演示对
mod_pow
函数在u32
上的行为,可以使用以下命令
此命令使用cargo run --features bin_build --release -- -l 10000 -m exhaustive -d demo_mod_pow_u32
exhaustive
模式,它会生成所有可能的输入,通常从最简单的输入开始,逐步到更复杂的输入。另一种模式是random
。使用-l
标志指定应生成多少个输入。 - 可以使用类似的命令运行基准测试。以下命令对
u64
的各种 GCD 算法进行基准测试
这将创建一个名为 gcd-bench.gp 的文件。您可以使用 gnuplot 将其转换为 SVG,如下所示cargo run --features bin_build --release -- -l 1000000 -m random -b \ benchmark_gcd_algorithms_u64 -o gcd-bench.gp
gnuplot -e "set terminal svg; l \"gcd-bench.gp\"" > gcd-bench.svg
可用的示例和基准测试列表没有在任何地方记录;您必须通过浏览 bin_util/demo_and_bench
来找到它们。
功能
random
:此功能提供了一些用于随机生成值的函数。默认情况下是关闭的,以避免引入一些额外的依赖项。test_build
:此包中的大部分代码仅用于测试。对于典型用户,构建此代码会导致编译时间过长和不必要的二进制文件大小。其中很大一部分也用于测试malachite-nz
和malachite-q
,因此不能仅限于tests
目录。我的解决方案是在启用test_build
功能时才构建此代码。如果您想运行单元测试,则必须启用test_build
。然而,doctests 不需要它,因为它们只测试公共接口。启用此功能也会启用random
。bin_build
:此功能用于构建用于示例和基准测试的代码,这也会花费很长时间构建。启用此功能也会启用test_build
和random
。
Malachite 由 Mikhail Hogrefe 开发。感谢 b4D8、florian1345、konstin、Rowan Hart、YunWon Jeong、Park Joon-Kyu、Antonio Mamić、OliverNChalk 和 shekohex 的额外贡献。
版权所有 © 2024 Mikhail Hogrefe
依赖关系
~2–10MB
~92K SLoC