FLINT3.7.0-dev

_gr_poly_sqrt_series, gr_poly_sqrt_series, _gr_poly_sqrt_series_basecase, gr_poly_sqrt_series_basecase, _gr_poly_sqrt_series_miller, gr_poly_sqrt_series_miller, _gr_poly_sqrt_series_newton, gr_poly_sqrt_series_newton, _gr_poly_rsqrt_series, gr_poly_rsqrt_series, _gr_poly_rsqrt_series_basecase, gr_poly_rsqrt_series_basecase, _gr_poly_rsqrt_series_miller, gr_poly_rsqrt_series_miller, _gr_poly_rsqrt_series_newton, gr_poly_rsqrt_series_newton

Synopsis#include <flint/gr_poly.h>
int _gr_poly_sqrt_series(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx)source
int gr_poly_sqrt_series(gr_poly_t res, const gr_poly_t f, slong len, gr_ctx_t ctx)source
int _gr_poly_sqrt_series_basecase(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx)source
int gr_poly_sqrt_series_basecase(gr_poly_t res, const gr_poly_t f, slong len, gr_ctx_t ctx)source
int _gr_poly_sqrt_series_miller(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx)source
int gr_poly_sqrt_series_miller(gr_poly_t res, const gr_poly_t f, slong len, gr_ctx_t ctx)source
int _gr_poly_sqrt_series_newton(gr_ptr res, gr_srcptr f, slong flen, slong len, slong cutoff, gr_ctx_t ctx)source
int gr_poly_sqrt_series_newton(gr_poly_t res, const gr_poly_t f, slong len, slong cutoff, gr_ctx_t ctx)source
int _gr_poly_rsqrt_series(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx)source
int gr_poly_rsqrt_series(gr_poly_t res, const gr_poly_t f, slong len, gr_ctx_t ctx)source
int _gr_poly_rsqrt_series_basecase(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx)source
int gr_poly_rsqrt_series_basecase(gr_poly_t res, const gr_poly_t f, slong len, gr_ctx_t ctx)source
int _gr_poly_rsqrt_series_miller(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx)source
int gr_poly_rsqrt_series_miller(gr_poly_t res, const gr_poly_t f, slong len, gr_ctx_t ctx)source
int _gr_poly_rsqrt_series_newton(gr_ptr res, gr_srcptr f, slong flen, slong len, slong cutoff, gr_ctx_t ctx)source
int gr_poly_rsqrt_series_newton(gr_poly_t res, const gr_poly_t f, slong len, slong cutoff, gr_ctx_t ctx)source

Set res to the power series square root f^{1/2} or reciprocal square root f^{-1/2} modulo x^{\mathit{len}}. The constant term is computed with gr_sqrt or gr_rsqrt and must exist; the computation then divides by 2 and by the constant term.

The basecase versions solve for one coefficient at a time with dot products. The miller versions use the recurrence of gr_poly_pow_series_fmpq_recurrence with exponent \pm 1/2, which costs O(\mathit{flen} \cdot \mathit{len}) operations but divides by 1, \ldots, \mathit{len} - 1. The newton versions use the third-order iteration for the reciprocal square root (each step about triples the precision), and obtain the square root from the reciprocal square root to half the length with a final Karp-Markstein step.

The default methods GR_METHOD_POLY_SQRT_SERIES and GR_METHOD_POLY_RSQRT_SERIES use Miller's recurrence for short inputs (\mathit{flen} \le 8 < \mathit{len}) over exact rings; otherwise the square root uses Newton iteration, and the reciprocal square root the basecase for \mathit{len} \le 8 or classical multiplication and Newton iteration otherwise. A GR_DOMAIN failure of the square root is turned into GR_UNABLE unless the ring is a field of characteristic other than 2, since in other rings a square root may exist that the algorithm cannot find. The underscore versions require \mathit{flen} \ge 1, write len coefficients and do not allow aliasing.

Cite this page

The FLINT team, “_gr_poly_sqrt_series, gr_poly_sqrt_series, _gr_poly_sqrt_series_basecase, gr_poly_sqrt_series_basecase, _gr_poly_sqrt_series_miller, gr_poly_sqrt_series_miller, _gr_poly_sqrt_series_newton, gr_poly_sqrt_series_newton, _gr_poly_rsqrt_series, gr_poly_rsqrt_series, _gr_poly_rsqrt_series_basecase, gr_poly_rsqrt_series_basecase, _gr_poly_rsqrt_series_miller, gr_poly_rsqrt_series_miller, _gr_poly_rsqrt_series_newton, gr_poly_rsqrt_series_newton (gr_poly.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/gr_poly/_gr_poly_sqrt_series.html (generated 2026-10-20).