arb_fmpz_poly_gauss_period_minpoly
#include <flint/arb_fmpz_poly.h>void arb_fmpz_poly_gauss_period_minpoly(fmpz_poly_t res, ulong q, ulong n)sourceSets res to the minimal polynomial of the Gaussian periods \sum_{a \in H} \zeta^a, where \zeta = e^{2 \pi i / q} and H runs over the cosets of the subgroup of order d = (q-1)/n of (\mathbb{Z} / q\mathbb{Z})^{\times}. The result has degree n; for d = 1 it is the cyclotomic polynomial \Phi_q. Requires q prime, n \mid q - 1 and \gcd(n, d) = 1; otherwise res is set to zero.
The periods are computed numerically with acb_dirichlet_roots, the product \prod (x - \eta_k) is formed in ball arithmetic, and the integer coefficients are recovered with arb_poly_get_unique_fmpz_poly, doubling the precision until this succeeds. If additionally (q-1)/f is coprime to n, where f is the multiplicative order of a prime p modulo q, the polynomial is irreducible over \mathbb{F}_p [CraPom2005], which gives a fast way to construct finite field extensions of a given degree (see Defining polynomials).
References#
- [CraPom2005] R. Crandall and C. Pomerance, Prime Numbers: A Computational Perspective, second edition, Springer (2005).
The FLINT team, “arb_fmpz_poly_gauss_period_minpoly (arb_fmpz_poly.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/arb_fmpz_poly/arb_fmpz_poly_gauss_period_minpoly.html (generated 2026-10-20).
@misc{flint-doc-arb-fmpz-poly-arb-fmpz-poly-gauss-period-minpoly,
author = {{The FLINT team}},
title = {{arb\_fmpz\_poly\_gauss\_period\_minpoly (arb\_fmpz\_poly.h)}},
howpublished = {FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev},
year = {2026},
url = {https://flintlib.org/doc/arb_fmpz_poly/arb_fmpz_poly_gauss_period_minpoly.html},
note = {Generated 2026-10-20}
}