FiniteFieldFunctions GFΒΆ

FiniteFieldFunctions(GF) is a package with functions concerning finite extension fields of the finite ground field GF, e.g. Zech logarithms.

createLowComplexityNormalBasis: PositiveInteger -> Union(SparseUnivariatePolynomial GF, Vector List Record(value: GF, index: SingleInteger))

createLowComplexityNormalBasis(n) tries to find a a low complexity normal basis of degree n over GF and returns its multiplication matrix If no low complexity basis is found it calls createNormalPoly(n) to produce a normal polynomial of degree n over GF

createLowComplexityTable: PositiveInteger -> Union(Vector List Record(value: GF, index: SingleInteger), failed)

createLowComplexityTable(n) tries to find a low complexity normal basis of degree n over GF and returns its multiplication matrix Fails, if it does not find a low complexity basis

createMultiplicationMatrix: Vector List Record(value: GF, index: SingleInteger) -> Matrix GF

createMultiplicationMatrix(m) forms the multiplication table m into a matrix over the ground field.

createMultiplicationTable: SparseUnivariatePolynomial GF -> Vector List Record(value: GF, index: SingleInteger)

createMultiplicationTable(f) generates a multiplication table for the normal basis of the field extension determined by f. This is needed to perform multiplications between elements represented as coordinate vectors to this basis. See FFNBP, FFNBX.

createZechTable: SparseUnivariatePolynomial GF -> PrimitiveArray SingleInteger

createZechTable(f) generates a Zech logarithm table for the cyclic group representation of a extension of the ground field by the primitive polynomial f(x), i.e. Z(i), defined by x^Z(i) = 1+x^i is stored at index i. This is needed in particular to perform addition of field elements in finite fields represented in this way. See FFCGP, FFCGX.

sizeMultiplication: Vector List Record(value: GF, index: SingleInteger) -> NonNegativeInteger

sizeMultiplication(m) returns the number of entries of the multiplication table m.