【发布时间】:2012-08-20 15:59:57
【问题描述】:
一般
我正在寻找一个能够对大型有限域进行精确计算的库,例如 GF(2128)/????2128 sup> 和 GF(2256)/????2256。我在下面列出了我需要的功能和很酷的功能。显然,图书馆应该尽可能快:-)。啊,因为我不是 C++ 大师(可能大多数库都是 C++),所以示例代码说 生成一个随机元素/一个常数并将其乘以它的乘法逆
必备功能
- 添加字段元素
- 字段元素的乘法
- 求字段元素的乘法逆元
很高兴拥有功能
- 向量/矩阵支持
- 随机元素支持
我已经看过的库可能不会工作
- FFLAS/FFPACK,似乎不适用于如此大的有限域
- Givaro,似乎不适用于这么大的有限域
我已经看过的库可以工作(但我无法使用)
NTL,我无法反转元素,但它应该真的可以工作,因为SAGE 在定义 GF(2^256) 时似乎使用了这个库,并且可以使用 @ 反转元素987654329@- PARI/GP,我无法在文档中找到我需要的所有内容,但 SAGE 文档有点说它应该可以工作
其他说明
- 我正在编写一个 Haskell 程序,稍后将与该库进行接口,因此更简单的 Haskell 接口会更好:-)
【问题讨论】:
-
您是否查看过 SAGE (sagemath.org)?我相信它确实具有这种功能。
-
它有一个 python 接口,它(可以说)比 C++ 更令人愉快:)
-
@Qnan 烦人的乘法逆运算似乎为有限域引发了 NotImplementedError。虽然可能有人可以自己实现扩展的 gcd 算法。
-
@cmh 你的意思是 inverse_mod() 吗?
-
你看en.wikipedia.org/wiki/Finite_field_arithmetic了吗?从那里有一个指向 c++ 库的链接 partow.net/projects/galois/index.html 但我不知道它的质量或效率
标签: c++ math linear-algebra computer-algebra-systems finite-field