InnerNormalBasisFieldFunctions GF

ffnb.spad line 1 [edit on github]

InnerNormalBasisFieldFunctions(GF) (unexposed): This package has functions used by every normal basis finite field extension domain.

*: (Vector GF, Vector GF) -> Vector GF

x*y is undocumented. See *

/: (Vector GF, Vector GF) -> Vector GF

x/y is undocumented. See /

^: (Vector GF, Integer) -> Vector GF

x^n is undocumented. See ^

basis: PositiveInteger -> Vector Vector GF

basis(n) is undocumented. See basis

dAndcExp: (Vector GF, NonNegativeInteger, SingleInteger) -> Vector GF

dAndcExp(v, n, k) computes v^e interpreting v as an element of normal basis field. A divide and conquer algorithm similar to the one from D.R.Stinson, “Some observations on parallel Algorithms for fast exponentiation in GF(2^n)”, Siam J. Computation, Vol.19, No.4, pp.711-717, August 1990 is used. Argument k is a parameter of this algorithm.

expPot: (Vector GF, SingleInteger, SingleInteger) -> Vector GF

expPot(v, e, d) returns the sum from i = 0 to e - 1 of v^(q^i*d), interpreting v as an element of a normal basis field and where q is the size of the ground field. Note: for a description of the algorithm, see T.Itoh and S.Tsujii, “A fast algorithm for computing multiplicative inverses in GF(2^m) using normal bases”, Information and Computation 78, pp.171-177, 1988.

index: (PositiveInteger, PositiveInteger) -> Vector GF

index(n, m) is a index function for vectors of length n over the ground field.

inv: Vector GF -> Vector GF

inv x is undocumented. See inv

lookup: Vector GF -> PositiveInteger

lookup(x) is undocumented. See lookup

minimalPolynomial: Vector GF -> SparseUnivariatePolynomial GF

minimalPolynomial(x) is undocumented. See minimalPolynomial

norm: (Vector GF, PositiveInteger) -> Vector GF

norm(x, n) is undocumented. See norm

normal?: Vector GF -> Boolean

normal?(x) is undocumented. See normal?

normalElement: PositiveInteger -> Vector GF

normalElement(n) is undocumented. See normalElement

pol: Vector GF -> SparseUnivariatePolynomial GF

pol(v) turns the vector [v0, ..., vn] into the polynomial v0+v1*x+ ... + vn*x^n.

qPot: (Vector GF, Integer) -> Vector GF

qPot(v, e) computes v^(q^e), interpreting v as an element of normal basis field, q the size of the ground field. This is done by a cyclic e-shift of the vector v.

random: PositiveInteger -> Vector GF

random(n) creates a vector over the ground field with random entries.

repSq: (Vector GF, NonNegativeInteger) -> Vector GF

repSq(v, e) computes v^e by repeated squaring, interpreting v as an element of a normal basis field.

setFieldInfo: (Vector List Record(value: GF, index: SingleInteger), GF) -> Void

setFieldInfo(m, p) initializes the field arithmetic, where m is the multiplication table and p is the respective normal element of the ground field GF.

trace: (Vector GF, PositiveInteger) -> Vector GF

trace(x, n) is undocumented. See trace

xn: NonNegativeInteger -> SparseUnivariatePolynomial GF

xn(n) returns the polynomial x^n-1.