一、有限域元素
Z(p,d) 或 Z( p^d)
得到的是 GF(p, d) 的本原元。其它元素可以表示为 Z(p^d) 的方幂。
二、有限域元素的运算
- Zero(z)
加法单位
- One(z)
乘法单位
- Characteristic
- Order
- Inverse
- DegreeFFE(z)
包含 b 的最小扩张次数(相对于素域)。此函数之参数可为单个元素,一个向量或一个矩阵。
- LogFFE(z,r)
离散对数,r^i = z
- IntFFE(z)
z 必须在素域中,计算 z 对应的整数表示。
此函数参数不可为向量。见 IntVecFFE
- IntFFESymm(z)
设 z 在素域 Zp 中,z 可以自然地看作一个整数。此函数计算 z 模 p 的最小绝对剩余。
IntFFESymm(vec)
- IntVecFFE
IntFFE 的向量版
三、创建有限域
- DefaultField
包含指定元素(组)的最小有限域
- GaloisField, GF
- GF(p, d), GF(p^d)
- GF(subfield, d)
- GF(subfield, poly)
- GF(p, poly)
- GaloisGroup, Size
- BasisVectors
- PrimitiveRoot
- DefiningPolynomial
- RootOfDefiningPolynomial
四、Frobenius 自同构
- FrobeniusAutomorphism
生成 Frobenius 自同构
五、Conway Polynomial
- ConwayPolynomial(p, n)
- IsCheapConwayPolynomial(p, n)
- RandomPrimitivePolynomial(F, n)
六、输出
例子 1:
生成有限域 F2[x]/(x^3+x+1),已知 f=x^3+x+1 在 F2 上本原。设 a 为 f 的一个根,计算 a^2+a+1 对 a 的离散对数。
F2:=GF(2); x:=Indeterminate(F2, "x"); f:=x^3+x+1; F:=GF(F2, f); a:=PrimitiveRoot(F); Print(LogFFE(a^2+a+1, a), "\n");
|
例子 2:
f=x^4+x+1 在 GF(2) 上本原,f(a)=0。计算 F2[x]/(f) 中元素的基表示。
F2:=GF(2); x:=Indeterminate(F2, "x"); f:=x^4+x+1; F16:=GF(2, f); a:=PrimitiveRoot(F16); B:=Basis(F16); for i in [0..Size(F16)-1] do Print (i, " ", Reversed(IntVecFFE(Coefficients(B, a^i))), "\n"); od;
|
例子:求素数的原根
IntFFE(Z(p)) # 这个算是有限域计算的附属功能。
IntFFE(PrimitiveRoot(GF(7)));
阅读(2133) | 评论(2) | 转发(0) |