#有理数 #大数 #数值

bin+lib malachite-q

任意精度类型 Rational,部分算法来自 GMP 和 FLINT 的高效算法

25 个版本

新增 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 日

#471数学 类别中

Download history 7784/week @ 2024-04-28 5962/week @ 2024-05-05 8102/week @ 2024-05-12 16466/week @ 2024-05-19 8269/week @ 2024-05-26 7986/week @ 2024-06-02 13847/week @ 2024-06-09 7329/week @ 2024-06-16 9839/week @ 2024-06-23 8166/week @ 2024-06-30 9369/week @ 2024-07-07 4896/week @ 2024-07-14 7392/week @ 2024-07-21 6939/week @ 2024-07-28 7245/week @ 2024-08-04 11103/week @ 2024-08-11

32,855 次每月下载
17 Crates 中使用 (5 个直接使用)

LGPL-3.0-only

12MB
233K SLoC

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

malachite-q 的 doctests 中,您将经常看到以 malachite_q:: 开头的导入路径。当使用 malachite crate 时,将路径的这一部分替换为 malachite::

Rational 类型的导入路径缩短为 malachite::Rational

malachite-q

此 crate 定义了 Rational。此 crate 的名称指的是有理数的数学符号,ℚ。

  • Rational 上定义了许多函数。包括
    • 所有您期望的,如加法、减法、乘法和除法;
    • Rational 和其他类型数字(包括原始浮点数)之间的转换相关的函数;
    • 求解丢番图逼近的函数;
    • Rational 表示为科学记数法的函数。
  • Rational 的分子和分母存储为 Natural,因此具有小分子和小分母的 Rational 可以完全存储在堆栈上。
  • 大多数涉及Rational的算术运算都需要(自动)化简分子和分母。这是通过使用Natural实现的高性能最大公约数和精确除法算法来高效完成的。

演示和基准测试

这个crate附带一个bin目标,可用于运行演示和基准测试。

  • 这个crate中的几乎所有公共函数都有一个关联的演示。运行一个演示可以让你看到函数在大量输入上的行为。例如,要演示Rational加法,可以使用以下命令
    cargo run --features bin_build --release -- -l 10000 -m exhaustive -d demo_rational_add
    
    此命令使用exhaustive模式,它生成每个可能的输入,通常从最简单的输入开始,逐步过渡到更复杂的输入。另一种模式是random-l标志指定应生成多少个输入。
  • 您可以使用类似的命令运行基准测试。以下命令对各种加法算法
    cargo run --features bin_build --release -- -l 1000000 -m random -b \
        benchmark_rational_add_algorithms -o gcd-bench.gp
    
    或其他库的GCD实现进行基准测试
    cargo run --features bin_build --release -- -l 1000000 -m random -b \
        benchmark_rational_add_assign_library_comparison -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来找到它们。

功能

  • 32_bit_limbs:将Limb的类型设置为默认值之外的u32,而不是默认的u64
  • random:此功能提供了一些用于随机生成值的函数。默认情况下关闭,以避免引入一些额外的依赖项。
  • enable_serde:启用使用serde进行序列化和反序列化。
  • test_build:这个crate中很大一部分代码仅用于测试。对于典型用户,构建此代码会导致编译时间过长和生成的二进制文件过大。我的解决方案是仅在启用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–12MB
~145K SLoC