Frobenius map, norm, trace and roots
- Cost
- Frobenius : multiplications in ; trace: operations in once per element ( terms in ); norm: one resultant of degree- polynomials; square root: multiplications with .
The Galois group of , , is cyclic of order , generated by the Frobenius automorphism [LN1997]. The trace and the norm are
which lie in ; equivalently they are the trace and the determinant of the -linear map on . This section describes how the polynomial representations fq and fq_nmod compute them, with for an irreducible of degree with roots (the conjugates of the generator); for the Zech representation see Zech logarithms.
The Frobenius map#
fq_frobenius computes , for reduced to , by binary exponentiation with exponent (_fq_pow), which costs about squarings and fewer multiplications. For (a constant representative) the result is .
The Frobenius map is -linear, so a matrix of would make each application cost operations in after an precomputation, and with , so it can also be computed by modular composition (Composition and modular composition) [GatSho1992]; FLINT uses these techniques for polynomials over (the iterated Frobenius of fq_poly_iterated_frobenius_preinv) but not for single elements. The -th root, the inverse of , is computed as by successive -th powers (fq_pth_root). The lift of the Frobenius map to the unramified -adic extension is described in Frobenius automorphism and Teichmüller lifts in unramified extensions.
The trace#
Since the trace is -linear, , and the traces of the basis elements are the power sums of the roots of .
Lemma 1 (Newton's identities). Let be monic with roots and . Then and, for ,
Proof. From we get as a series in . Multiplying by gives ; comparing the coefficients of for gives with , that is , which is the claim.
_fq_trace computes by the recurrence of Lemma 1, using only the nonzero coefficients of the monic version of , so the cost is operations for a polynomial with nonzero terms, and then the dot product . The same power sums appear in fq_embed_mono_to_dual_matrix, which computes for all from the series expansion of , the reversed form of the series in the proof.
The norm#
Proposition 2. For with and the defining polynomial with leading coefficient , .
_fq_norm computes the resultant with _fmpz_mod_poly_resultant (_nmod_poly_resultant for fq_nmod), which uses the Euclidean or half-GCD algorithm (Half-GCD), and divides by when is not monic. For it returns .
Square roots and squares#
The group is cyclic of order , so for odd exactly half of its elements are squares, and is a square if and only if (Euler's criterion; fq_is_square). In characteristic 2 every element is a square, with the unique square root .
Input: a square in , odd, and a non-square . Write with odd.
Output: with .
- , , , .
- While : find the least with (if , is not a square); set , , , , .
- Return .
The invariant is , with in the subgroup of order and a generator of the subgroup of order ; each iteration decreases the order of , so there are at most iterations of at most squarings each [Ton1891] [Sha1973]. fq_sqrt takes as the generator of the field if the context was created from a Conway polynomial, which is primitive and hence not a square, and otherwise draws random elements until it finds a non-square (half of all elements qualify). The cost is multiplications for the three powers and for the loop. fq_poly_sqrt computes square roots of polynomials with a power series square root and fq_sqrt for the lowest nonzero coefficient.
Multiplicative order#
The order of divides . fq_multiplicative_order factors with fmpz_factor, and for each prime divides the candidate order by as long as raised to the result is still 1; this needs exponentiations. For large the factorisation of dominates. An element is primitive if and only if its order is (fq_is_primitive), and a defining polynomial is primitive if and only if its root fq_gen is.
Use in FLINT#
fq_frobenius,fq_nmod_frobenius(exponentiation),fq_zech_frobenius(multiplication of the logarithm by ), andfq_default_frobenius.fq_trace,fq_nmod_trace(Lemma 1);fq_zech_trace(sum of the conjugates).fq_norm,fq_nmod_norm(Proposition 2);fq_zech_norm(a power of the norm of the generator).fq_pth_root,fq_nmod_pth_root,fq_sqrt,fq_nmod_sqrt(Algorithm 1),fq_is_square,fq_multiplicative_orderand the correspondingfq_nmodandfq_defaultfunctions;fq_zechcomputes square roots and -th roots on logarithms.
Referenced from#
- Embeddings of finite fields (algorithm)
- Arithmetic in unramified extensions (algorithm)
- Factoring polynomials over finite fields (algorithm)
- Frobenius map, norm and trace
- fq.h (module)
- fq_default.h (module)
References#
- [LN1997] R. Lidl and H. Niederreiter. Finite Fields. Second edition, Encyclopedia of Mathematics and its Applications 20, Cambridge University Press, 1997.
- [GatSho1992] J. von zur Gathen and V. Shoup, "Computing Frobenius maps and factoring polynomials", Computational Complexity 2 (1992), 187-224. https://doi.org/10.1007/BF01272074
- [GG2003] J. von zur Gathen and J. Gerhard, Modern Computer Algebra, second edition, Cambridge University Press (2003)
- [Ton1891] A. Tonelli, "Bemerkung über die Auflösung quadratischer Congruenzen", Nachrichten von der Königlichen Gesellschaft der Wissenschaften und der Georg-Augusts-Universität zu Göttingen (1891), 344–346
- [Sha1973] D. Shanks, "Five number-theoretic algorithms", Proceedings of the Second Manitoba Conference on Numerical Mathematics, Congressus Numerantium 7 (1973), 51–70
The FLINT team, “Frobenius map, norm, trace and roots,” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/algorithms/finite-fields/frobenius-norm-trace.html (generated 2026-11-02).
@misc{flint-doc-algorithms-finite-fields-frobenius-norm-trace,
author = {{The FLINT team}},
title = {{Frobenius map, norm, trace and roots}},
howpublished = {FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev},
year = {2026},
url = {https://flintlib.org/doc/algorithms/finite-fields/frobenius-norm-trace.html},
note = {Generated 2026-11-02}
}