# FiniteFieldFunctions GFΒΆ

ffdoms.spad line 3152 [edit on github]

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*.