【发布时间】:2014-06-20 16:49:55
【问题描述】:
如何使用 NTL 库在 Galois 域中获取 int 表示。例如元素
GF2E xx=random_GF2E();
我正在尝试使用
printf("%d",xx._GF2E__rep.HexOutput);
但我得到 0
【问题讨论】:
标签: ntl
如何使用 NTL 库在 Galois 域中获取 int 表示。例如元素
GF2E xx=random_GF2E();
我正在尝试使用
printf("%d",xx._GF2E__rep.HexOutput);
但我得到 0
【问题讨论】:
标签: ntl
GF2E 是一个扩展域,即 GF2E 中的元素存在于GF(2)[X]/(P) 中,其中P 是一个不可约多项式。所以你不能得到一个整数表示。但是你可以得到一个向量的表示。
GF2X P;
SetCoeff(P, 0, 1);
SetCoeff(P, 1, 1);
SetCoeff(P, 2, 1);
// P is now x^2+x+1, this is irreducable since P(1)=1 and P(0)=1
GF2E::init(P);
GF2E xx = random_GF2E();
cout << xx << endl; // Prints something like "[0 1]"
注意:要使用此代码 sn-p,您必须在包含后使用 using namespace NTL; 和 using namespace std; 将命名空间 NTL 和 std 导入您的程序。
另一种方法是将NTL:: 添加到所有NTL 函数,将std:: 添加到cout 和endl。
有关命名空间的更多信息,请参阅this tutorial。
【讨论】:
GF2E 中的元素不是数字,而是多项式。所以向量代表指数。我认为没有将这个多项式表示为整数的规范方法。