3个版本

0.1.2 2021年8月11日
0.1.1 2020年12月3日
0.1.0 2020年12月3日

#1221 in 数学

自定义许可证

175KB
3.5K SLoC

no_std Rust中使用有限域

Build Status Latest Version Coverage Status

该crate暴露了多种小型有限域类型。它不依赖于标准库。

截至编写本文时,在谷歌搜索“rust有限域”的前几个结果中显示

  • 一个不再编译,且完全不能正确实现有限域的crate
  • 一个只实现特征值为二的域的crate
  • 一个实现了一般有限域,但未公开高次有限域加法之外的算术的crate

该crate试图提供

  • 一个当链接时占用空间小的库
  • 支持尽可能多的域,为不可约多项式编写足够的能量
  • 小型有限域元素(仅限32位)
  • 仅支持小型特征域(适合一个u8

该crate不试图

  • 特别快速
  • 处理适合,例如,密码学的大素数

该crate在未来应该

  • 处理适合u32的所有有限域
  • 永远不要依赖于std
  • 易于使用,具有直观的接口
  • 易于理解的代码,无需不必要的优化

为使上述内容成为现实,最欢迎的将是拉取请求。

欢迎在GitHub跟踪器上的问题。

示例用法

# use tinyfield::prime_power_field::*;
type F = tinyfield::fields::GF9;

let delta = F::elts()
              .filter(|x| x * x - 2.into() == F::zero)
              .next()
              .expect("GF9 should contain a square root of two");

无运行时依赖