Finite field morphisms using Givaro

Special implementation for givaro finite fields of:

  • embeddings between finite fields
  • frobenius endomorphisms

SEEALSO:

:mod:`sage.rings.finite_rings.hom_finite_field`

AUTHOR:

  • Xavier Caruso (2012-06-29)
class sage.rings.finite_rings.hom_finite_field_givaro.FiniteFieldHomomorphism_givaro

Bases: sage.rings.finite_rings.hom_finite_field.FiniteFieldHomomorphism_generic

TESTS:

sage: from sage.rings.finite_rings.hom_finite_field_givaro import FiniteFieldHomomorphism_givaro
sage: k.<t> = GF(3^2)
sage: K.<T> = GF(3^4)
sage: f = FiniteFieldHomomorphism_givaro(Hom(k, K)); f
Ring morphism:
  From: Finite Field in t of size 3^2
  To:   Finite Field in T of size 3^4
  Defn: t |--> 2*T^3 + 2*T^2 + 1

sage: k.<t> = GF(3^10)
sage: K.<T> = GF(3^20)
sage: f = FiniteFieldHomomorphism_givaro(Hom(k, K)); f
Traceback (most recent call last):
...
TypeError: The codomain is not an instance of FiniteField_givaro
class sage.rings.finite_rings.hom_finite_field_givaro.FrobeniusEndomorphism_givaro

Bases: sage.rings.finite_rings.hom_finite_field.FrobeniusEndomorphism_finite_field

TESTS:

sage: k.<t> = GF(5^3)
sage: Frob = k.frobenius_endomorphism(); Frob
Frobenius endomorphism t |--> t^5 on Finite Field in t of size 5^3
sage: type(Frob)
<type 'sage.rings.finite_rings.hom_finite_field_givaro.FrobeniusEndomorphism_givaro'>

sage: k.<t> = GF(5^20)
sage: Frob = k.frobenius_endomorphism(); Frob
Frobenius endomorphism t |--> t^5 on Finite Field in t of size 5^20
sage: type(Frob)
<type 'sage.rings.finite_rings.hom_finite_field.FrobeniusEndomorphism_finite_field'>
fixed_field()

Return the fixed field of self.

OUTPUT:

  • a tuple \((K, e)\), where \(K\) is the subfield of the domain consisting of elements fixed by self and \(e\) is an embedding of \(K\) into the domain.

Note

The name of the variable used for the subfield (if it is not a prime subfield) is suffixed by _fixed.

EXAMPLES:

sage: k.<t> = GF(5^6)
sage: f = k.frobenius_endomorphism(2)
sage: kfixed, embed = f.fixed_field()
sage: kfixed
Finite Field in t_fixed of size 5^2
sage: embed
Ring morphism:
  From: Finite Field in t_fixed of size 5^2
  To:   Finite Field in t of size 5^6
  Defn: t_fixed |--> 4*t^5 + 2*t^4 + 4*t^2 + t

sage: tfixed = kfixed.gen()
sage: embed(tfixed)
4*t^5 + 2*t^4 + 4*t^2 + t
class sage.rings.finite_rings.hom_finite_field_givaro.SectionFiniteFieldHomomorphism_givaro

Bases: sage.rings.finite_rings.hom_finite_field.SectionFiniteFieldHomomorphism_generic

TESTS:

sage: from sage.rings.finite_rings.hom_finite_field_givaro import FiniteFieldHomomorphism_givaro
sage: k.<t> = GF(3^2)
sage: K.<T> = GF(3^4)
sage: f = FiniteFieldHomomorphism_givaro(Hom(k, K))
sage: g = f.section(); g
Section of Ring morphism:
  From: Finite Field in t of size 3^2
  To:   Finite Field in T of size 3^4
  Defn: t |--> 2*T^3 + 2*T^2 + 1