FLINT3.7.0-dev

_gr_poly_refine_roots_aberth, _gr_poly_refine_roots_wdk

Synopsis#include <flint/gr_poly.h>
int _gr_poly_refine_roots_aberth(gr_ptr w, gr_srcptr f, gr_srcptr f_prime, slong deg, gr_srcptr z, int progressive, gr_ctx_t ctx)source
int _gr_poly_refine_roots_wdk(gr_ptr w, gr_srcptr f, slong deg, gr_srcptr z, int progressive, gr_ctx_t ctx)source

Given approximations z_1, \ldots, z_{\mathit{deg}} of the complex roots of f = \sum_{i=0}^{\mathit{deg}} f_i x^i, compute corrections w_k such that z_k - w_k approximate the roots better if the initial approximations are close enough and the evaluation of f is accurate. These are meant to be called in a loop, over floating-point rings.

The wdk version performs the Weierstrass-Durand-Kerner update

w_k = \frac{f(z_k)}{f_{\mathit{deg}} \prod_{j \ne k} (z_k - z_j)},

and the aberth version the Aberth-Ehrlich update

w_k = \frac{g_k}{1 - g_k \sum_{j \ne k} (z_k - z_j)^{-1}}, \qquad g_k = \frac{f(z_k)}{f'(z_k)},

which needs the coefficients of f' in f_prime. If progressive is set, the already corrected values z_j - w_j replace z_j in the updates (a Gauss-Seidel variant), which can speed up convergence.

Cite this page

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