8个版本
0.1.7 | 2021年7月1日 |
---|---|
0.1.6 | 2021年6月29日 |
#780 in 数学
24次每月下载
在 4 个Crate 中使用
85KB
1.5K SLoC
大统一有限域库*
实现不同“自然”大小的GF(2x),例如28、216和232。
我对这个crate的目标是
-
帮助我学习如何编写好的Rust模块;
-
帮助感兴趣的用户了解有限域(即伽罗瓦域);
-
提供有限域上基本数学(加、乘、除等)的泛型基线实现;
-
探索各种优化/适应(包括基于表的查找和特定架构的SIMD代码),可以选择性地覆盖默认实现的一部分或全部,同时与其他实现保持兼容。
还要
-
提供一些有用的实用函数,这些函数超越了仅仅是
add
、mul
、div
等(例如,确定域多项式是否为原多项式,或为不同类型的优化生成查找表); -
通过实现使用库的各种应用程序来实现“吃自己的狗粮”;
-
基准测试感兴趣的特定实现。
基本用法:在特定域中进行数学运算
使用此库的步骤
-
决定您想要使用哪种“类别”的域(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