FLINT3.7.0-dev

_fmpz_poly_sqrtrem_classical, fmpz_poly_sqrtrem_classical, _fmpz_poly_sqrtrem_divconquer, fmpz_poly_sqrtrem_divconquer

Synopsis#include <flint/fmpz_poly.h>
int _fmpz_poly_sqrtrem_classical(fmpz * res, fmpz * r, const fmpz * poly, slong len)source
int fmpz_poly_sqrtrem_classical(fmpz_poly_t b, fmpz_poly_t r, const fmpz_poly_t a)source
int _fmpz_poly_sqrtrem_divconquer(fmpz * res, fmpz * r, const fmpz * poly, slong len, fmpz * temp)source
int fmpz_poly_sqrtrem_divconquer(fmpz_poly_t b, fmpz_poly_t r, const fmpz_poly_t a)source

If aa can be written as b2+rb^2 + r with b∈Z[x]b \in \mathbb{Z}[x] and deg⁡r<deg⁡a/2\deg r < \deg a / 2 (equivalently, deg⁡r<deg⁡b\deg r < \deg b), set bb and rr and return 1; otherwise return 0. The underscore versions write len/2+1\mathit{len}/2 + 1 coefficients of bb and require room for len coefficients in rr, which may be equal to poly; the divide-and-conquer version also takes a temporary array of len coefficients.

Cite this page

The FLINT team, “_fmpz_poly_sqrtrem_classical, fmpz_poly_sqrtrem_classical, _fmpz_poly_sqrtrem_divconquer, fmpz_poly_sqrtrem_divconquer (fmpz_poly.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/fmpz_poly/_fmpz_poly_sqrtrem_classical.html (generated 2026-11-02).