NTL 库中的扩展多项式
Extended polynomials in library NTL
有代码是用NTL库写的:
int main()
{
ZZ_p::init(ZZ(5)); // define GF(5)
ZZ_pX P;
BuildIrred(P, 4); // generate an irreducible polynomial P
// of degree 4 over GF(5)
ZZ_pE::init(P); // define GF(5^4)
ZZ_pEX f, g, h; // declare polynomials over GF(5^4)
random(f, 3); // f is a random, monic polynomial of degree 3
SetCoeff(f, 3);
cout << f << endl<< endl;
}
输出为:
[[3 1 1 4] [2 1 3 2] [1 0 3 1] [1]]
例如,[1 2 3]
的意思是 3x² + 2x + 1
。
在这种情况下,GF 上的符号多项式的形式是什么?
你的问题有点难懂。如果我理解正确,问题是如何解释有限域上具有 5⁴ 元素的多项式的 NTL 表示 [[3 1 1 4] [2 1 3 2] [1 0 3 1] [1]]
。
首先:具有 5⁴ 个元素的有限域中的元素(称为 GF(5⁴)
)表示为多项式 GF(5)[X] mod f
,其中 f
是 4 次不可约多项式。
这意味着 GF(5⁴)
上的多项式是一个多项式,其中系数是 GF(5)[X] mod f
中的多项式。
所以[[3 1 1 4] [2 1 3 2] [1 0 3 1] [1]]
可以解释为
Y³ + (X³ + 3X² + 1)⋅Y² + (2X³ + 3X² + X + 2)⋅Y + (4X³ + X² + X + 3)
注意:评论在
random(f, 3); // f is a random, monic polynomial of degree 3
SetCoeff(f, 3);
有点误导。 random(f,3)
将 f
设置为 次小于 的随机多项式 3. SetCoeff(f, 3)
将 Y³
的系数设置为 1
之后是 3 次多项式。
有代码是用NTL库写的:
int main()
{
ZZ_p::init(ZZ(5)); // define GF(5)
ZZ_pX P;
BuildIrred(P, 4); // generate an irreducible polynomial P
// of degree 4 over GF(5)
ZZ_pE::init(P); // define GF(5^4)
ZZ_pEX f, g, h; // declare polynomials over GF(5^4)
random(f, 3); // f is a random, monic polynomial of degree 3
SetCoeff(f, 3);
cout << f << endl<< endl;
}
输出为:
[[3 1 1 4] [2 1 3 2] [1 0 3 1] [1]]
例如,[1 2 3]
的意思是 3x² + 2x + 1
。
在这种情况下,GF 上的符号多项式的形式是什么?
你的问题有点难懂。如果我理解正确,问题是如何解释有限域上具有 5⁴ 元素的多项式的 NTL 表示 [[3 1 1 4] [2 1 3 2] [1 0 3 1] [1]]
。
首先:具有 5⁴ 个元素的有限域中的元素(称为 GF(5⁴)
)表示为多项式 GF(5)[X] mod f
,其中 f
是 4 次不可约多项式。
这意味着 GF(5⁴)
上的多项式是一个多项式,其中系数是 GF(5)[X] mod f
中的多项式。
所以[[3 1 1 4] [2 1 3 2] [1 0 3 1] [1]]
可以解释为
Y³ + (X³ + 3X² + 1)⋅Y² + (2X³ + 3X² + X + 2)⋅Y + (4X³ + X² + X + 3)
注意:评论在
random(f, 3); // f is a random, monic polynomial of degree 3
SetCoeff(f, 3);
有点误导。 random(f,3)
将 f
设置为 次小于 的随机多项式 3. SetCoeff(f, 3)
将 Y³
的系数设置为 1
之后是 3 次多项式。