FLINT3.7.0-dev

arb_fmpz_poly_gauss_period_minpoly

Synopsis#include <flint/arb_fmpz_poly.h>
void arb_fmpz_poly_gauss_period_minpoly(fmpz_poly_t res, ulong q, ulong n)source

Sets 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).
Cite this page

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).