FLINT3.7.0-dev

_acb_poly_validate_real_roots, acb_poly_validate_real_roots

Synopsis#include <flint/acb_poly.h>
int _acb_poly_validate_real_roots(acb_srcptr roots, acb_srcptr poly, slong len, slong prec)source
int acb_poly_validate_real_roots(acb_srcptr roots, const acb_poly_t poly, slong prec)source

Given a real polynomial poly (stored as an acb_poly_t with zero imaginary parts) and isolating enclosures of all its complex roots, returns nonzero if it can prove that the enclosures whose imaginary part contains zero contain real roots. Then every such root is real (its imaginary part can be set to zero), and every other enclosure contains a nonreal root. Returns zero if this cannot be decided at the accuracy of the input and the precision prec.

Let r be the number of enclosures that meet the real axis. The test requires r \equiv \deg f \pmod 2 (nonreal roots come in conjugate pairs) and checks, at the midpoint between consecutive candidates (in the order of their midpoints), that f has the signs that alternate from the sign at -\infty to the sign at +\infty. Then f changes sign within each candidate interval, which therefore contains a real root, and since each enclosure contains exactly one root, that root is real.

Cite this page

The FLINT team, “_acb_poly_validate_real_roots, acb_poly_validate_real_roots (acb_poly.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/acb_poly/_acb_poly_validate_real_roots.html (generated 2026-10-20).