8个版本

0.1.7 2021年7月1日
0.1.6 2021年6月29日

#780 in 数学

24次每月下载
4 个Crate 中使用

GPL-2.0-or-later OR LGPL-2.0-or-later

85KB
1.5K SLoC

大统一有限域库*

实现不同“自然”大小的GF(2x),例如28、216和232

我对这个crate的目标是

  1. 帮助我学习如何编写好的Rust模块;

  2. 帮助感兴趣的用户了解有限域(即伽罗瓦域);

  3. 提供有限域上基本数学(加、乘、除等)的泛型基线实现;

  4. 探索各种优化/适应(包括基于表的查找和特定架构的SIMD代码),可以选择性地覆盖默认实现的一部分或全部,同时与其他实现保持兼容。

还要

  1. 提供一些有用的实用函数,这些函数超越了仅仅是addmuldiv等(例如,确定域多项式是否为原多项式,或为不同类型的优化生成查找表);

  2. 通过实现使用库的各种应用程序来实现“吃自己的狗粮”;

  3. 基准测试感兴趣的特定实现。

基本用法:在特定域中进行数学运算

使用此库的步骤

  • 决定您想要使用哪种“类别”的域(GF(28)、GF(216)等);

  • 决定您是否想要使用优化的适应或对默认的泛型代码感到满意;

  • 通过调用适当的构造函数,使用您选择的域多项式(即“不可约多项式”)创建该类的新域对象(我们称之为f);

  • 使用该对象在该域中进行数学运算:例如,result = f.mul(a,b)

crate名称

* crate名称故意夸张

名词guff - 不良行为(尤其是荒谬的虚假陈述)

版权和许可

本作品版权所有(c)Declan Malone,2021。

您可以在以下条款下自由复制和修改本作品:

  • GNU通用公共许可证版本2或更高版本

如果您希望将此作品嵌入到另一部作品中,您可以在以下条款下进行:

  • GNU Lesser General Public License(LGPL)第2版或更高版本

免责声明:此软件不提供任何明示或暗示的保证。

依赖项

~465KB