bin+lib malachite-base

一组工具,包括新的算术特性和生成类型所有值的迭代器

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 数学

Download history 7749/week @ 2024-05-02 5801/week @ 2024-05-09 14094/week @ 2024-05-16 12996/week @ 2024-05-23 7455/week @ 2024-05-30 13243/week @ 2024-06-06 9342/week @ 2024-06-13 10172/week @ 2024-06-20 12013/week @ 2024-06-27 8190/week @ 2024-07-04 6104/week @ 2024-07-11 7085/week @ 2024-07-18 6847/week @ 2024-07-25 7414/week @ 2024-08-01 11058/week @ 2024-08-08 10551/week @ 2024-08-15

37,092 个月下载量
用于 84 个 Crates (8 直接)

LGPL-3.0-only

4MB
81K SLoC

而不是直接使用此 Crates,请使用 malachite 元 Crates。它导出此 Crates 的所有公共成员。

malachite-base 的文档测试中,您通常会看到以 malachite_base:: 开头的导入路径。当使用 malachite Crates 时,将路径的这一部分替换为 malachite::

malachite-base

此 Crates 包含许多由 malachite-nzmalachite-q Crates 使用的工具。这些工具包括

  • 包装标准库函数的特剛,如 CheckedAdd
  • 为原始类型提供额外功能的特剛,如 GcdFloorSqrtBitAccess
  • 生成测试值的迭代函数。以下是一个生成所有 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 包装器,它为浮点值提供了替代的 EqOrdDisplay 实现,这在某些方面比默认值更令人满意。

演示和基准测试

此 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 算法进行基准测试
    cargo run --features bin_build --release -- -l 1000000 -m random -b \
        benchmark_gcd_algorithms_u64 -o gcd-bench.gp
    
    这将创建一个名为 gcd-bench.gp 的文件。您可以使用 gnuplot 将其转换为 SVG,如下所示
    gnuplot -e "set terminal svg; l \"gcd-bench.gp\"" > gcd-bench.svg
    

可用的示例和基准测试列表没有在任何地方记录;您必须通过浏览 bin_util/demo_and_bench 来找到它们。

功能

  • random:此功能提供了一些用于随机生成值的函数。默认情况下是关闭的,以避免引入一些额外的依赖项。
  • test_build:此包中的大部分代码仅用于测试。对于典型用户,构建此代码会导致编译时间过长和不必要的二进制文件大小。其中很大一部分也用于测试 malachite-nzmalachite-q,因此不能仅限于 tests 目录。我的解决方案是在启用 test_build 功能时才构建此代码。如果您想运行单元测试,则必须启用 test_build。然而,doctests 不需要它,因为它们只测试公共接口。启用此功能也会启用 random
  • bin_build:此功能用于构建用于示例和基准测试的代码,这也会花费很长时间构建。启用此功能也会启用 test_buildrandom

Malachite 由 Mikhail Hogrefe 开发。感谢 b4D8、florian1345、konstin、Rowan Hart、YunWon Jeong、Park Joon-Kyu、Antonio Mamić、OliverNChalk 和 shekohex 的额外贡献。

版权所有 © 2024 Mikhail Hogrefe

依赖关系

~2–10MB
~92K SLoC