7个版本

0.1.6 2022年10月4日
0.1.5 2022年10月4日
0.1.3 2022年9月28日

#718 in 数学

MIT许可证

25KB
365

P-adic数

crate documentation minimum rustc 1.31

Rust中P-adic数的工具集。

包括P-adic类型和有理数类型。

P-adic数的展开符号目前是从左到右。

状态

这个库目前处于开发中,可能是不稳定的。

用法

将此内容添加到您的Cargo.toml

[dependencies]
padic = "0.1.6"
use padic::Ratio;
let ratio = Ratio::new(2, 5);
let padic = r.to_padic(3, 12);
assert_eq!(padic.valuation, 0);
assert_eq!(padic.expansion, vec![1, 1, 2, 1, 0, 1, 2, 1, 0, 1, 2, 1]);
assert_eq!(padic.expansion_cycle(), [1, 2, 1, 0]);
assert_eq!(padic.to_string(), "... 1 2 1 0 1 2 1 0 1 2 1 1");

辅助函数

  • 带有重数的素数因子(a: i64 / b: i64) -> Vec<(prime: u64, exp: u64)>
  • 扩展欧几里得算法及Bezout系数
  • 模逆
  • 双光标窗口循环检测用于p-adic展开中的重复数字

资源

待办事项

有理数

  • 提取符号信息以将比转换为无符号整数变量的元组
  • 使用扩展欧几里得算法将比化简为最简形式
  • 有理数的基本算术运算
  • 使用EGCD的模逆
  • 实现扩展最大公约数以提取Bezout系数

P-adic

  • 素数分解,返回(prime, exponent)元组的向量。
  • 有理数的P-adic值
  • 有理数的P-adic范数
  • 有理数的给定精度P-adic展开
  • 给定精度和给定位值的P-adic字符串表示
  • P-adic展开中的循环检测(滑动窗口算法)
  • P-adic算术运算
  • 将P-adic展开转换为有理数

错误/特性

  • 如果值大于精度,展开将不正确
  • 如果精度低于循环长度,则不会检测到循环

许可证

MIT

无运行时依赖