GF - Maple Help

Online Help

All Products    Maple    MapleSim


Overview of the GF (Galois Field) Package

 

Calling Sequence

Parameters

Description

Examples

Compatibility

Calling Sequence

GF(p, k, a)

Parameters

p

-

prime integer

k

-

positive integer

a

-

(optional) irreducible polynomial of degree k over the integers mod p

Description

• 

The GF command returns a module G of procedures and constants for doing arithmetic in the finite field GF(p^k), a Galois Field with pk elements. The field GF(p^k) is defined by the field extension GF(p)[x]/(a) where a is an irreducible polynomial of degree k over the integers mod p.

• 

If a is not specified, an irreducible polynomial of degree k over the integers mod p is chosen at random.  It can be accessed as the constant G:-extension.  The elements of GF(p^k) are represented using the modp1 representation.

• 

First, you need to define an instance of a Galois field using, for example, G := GF(2, 3). This defines all operations for G, the field of characteristic 2 with 8 elements.

• 

The G:-input and G:-output commands convert from an integer in the range 0..pk1 to the corresponding polynomial and back. Alternatively, G:-ConvertIn and G:-ConvertOut convert an element from GF(p^k) to a Maple sum of products, a univariate polynomial where the variable used is that given in the argument a. Otherwise the name `?` is used. The syntax G(...) can be used instead of G:-ConvertIn(...).

• 

Arithmetic in the field is defined by the following functions.

G:`+`,G:``,G:``,G:`^`,G:inverse,G:`/`

• 

Field arithmetic can be written very naturally by using a use statement; see the examples below.

• 

The additive and multiplicative identities are given by G:-zero and G:-one.

• 

The G:-trace, G:-norm, and G:-order commands compute the trace, norm and multiplicative order of an element from GF(p^k) respectively.

• 

The G:-random command returns a random element from GF(p^k).

• 

The G:-PrimitiveElement command generates a primitive element at random.

• 

The G:-isPrimitiveElement command tests whether an element from GF(p^k) is a primitive element, being a generator for the multiplicative group GF(p^k) - {0}.

• 

For backwards compatibility, exports of the module returned by the GF command can also be accessed by indexed notation, such as G[':-ConvertIn']. However, using the more modern form G:-ConvertIn, you do not need to quote the name to avoid evaluation.

Examples

G16GF2,4,α4+α+1:

aG16:-ConvertInα

aαmod2

(1)

aG16α

aαmod2

(2)

G16:-`*`a,a

α2mod2

(3)

G16:-`^`a,4

α+1mod2

(4)

xG16:-`^`a,8

xα2+1mod2

(5)

G16:-outputx

5

(6)

G16:-ConvertOutx

α2+1

(7)

G16:-isPrimitiveElementa

true

(8)

xG16:-`^`a,1

xα3+1mod2

(9)

G16:-`*`a,x

1mod2

(10)

The use statement, if used carefully, can make arithmetic operations in the field much more natural.

use G16 in
  y := a * ( a + x );
  z := a - y;
  z^3 + y^2
end use;

α+1mod2

(11)

Compatibility

• 

The G(...) syntax for constructing field elements was introduced in Maple 2021.

See Also

Domains

mod

modp1