AUTHORS:
Bases: sage.rings.finite_rings.finite_field_base.FiniteField
Finite fields whose cardinality is a prime power (not a prime), implemented using PARI’s FFELT type.
INPUT:
OUTPUT:
A finite field of order , generated by a distinguished
element with minimal polynomial modulus. Elements are
represented as polynomials in name of degree less than
.
Note
EXAMPLES:
Some computations with a finite field of order 9:
sage: k = FiniteField(9, 'a', impl='pari_ffelt')
sage: k
Finite Field in a of size 3^2
sage: k.is_field()
True
sage: k.characteristic()
3
sage: a = k.gen()
sage: a
a
sage: a.parent()
Finite Field in a of size 3^2
sage: a.charpoly('x')
x^2 + 2*x + 2
sage: [a^i for i in range(8)]
[1, a, a + 1, 2*a + 1, 2, 2*a, 2*a + 2, a + 2]
sage: TestSuite(k).run()
Next we compute with a finite field of order 16:
sage: k16 = FiniteField(16, 'b', impl='pari_ffelt')
sage: z = k16.gen()
sage: z
b
sage: z.charpoly('x')
x^4 + x + 1
sage: k16.is_field()
True
sage: k16.characteristic()
2
sage: z.multiplicative_order()
15
Illustration of dumping and loading:
sage: K = FiniteField(7^10, 'b', impl='pari_ffelt')
sage: loads(K.dumps()) == K
True
sage: K = FiniteField(10007^10, 'a', impl='pari_ffelt')
sage: loads(K.dumps()) == K
True
alias of FiniteFieldElement_pari_ffelt
Return the characteristic of self.
EXAMPLE:
sage: F = FiniteField(3^4, 'a', impl='pari_ffelt')
sage: F.characteristic()
3
Returns the degree of self over its prime field.
EXAMPLE:
sage: F = FiniteField(3^20, 'a', impl='pari_ffelt')
sage: F.degree()
20
Return a generator of the finite field.
INPUT:
OUTPUT:
A generator of the finite field.
This generator is a root of the defining polynomial of the finite field.
Warning
This generator is not guaranteed to be a generator for the multiplicative group. To obtain the latter, use multiplicative_generator().
EXAMPLE:
sage: R.<x> = PolynomialRing(GF(2))
sage: FiniteField(2^4, 'b', impl='pari_ffelt').gen()
b
sage: k = FiniteField(3^4, 'alpha', impl='pari_ffelt')
sage: a = k.gen()
sage: a
alpha
sage: a^4
alpha^3 + 1
Return the minimal polynomial of the generator of self in self.polynomial_ring().
EXAMPLES:
sage: F = FiniteField(3^2, 'a', impl='pari_ffelt')
sage: F.polynomial()
a^2 + 2*a + 2
sage: F = FiniteField(7^20, 'a', impl='pari_ffelt')
sage: f = F.polynomial(); f
a^20 + a^12 + 6*a^11 + 2*a^10 + 5*a^9 + 2*a^8 + 3*a^7 + a^6 + 3*a^5 + 3*a^3 + a + 3
sage: f(F.gen())
0