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