aberth


aberth, a MATLAB code which implements the Aberth-Ehrlich algorithm for computing all the roots of a complex polynomial simultaneously. Convergence is asymptotically cubic. However convergence is not guaranteed.

Licensing:

The information on this web page is distributed under the MIT license.

Languages:

aberth is available in a MATLAB version and a Octave version and a Python version.

Related Data and Programs:

aberth_test

bisection, a MATLAB code which applies the bisection method to seek a root of f(x) over a change-of-sign interval a <= x <= b.

bisection_rc, a MATLAB code which seeks a solution to the equation F(X)=0 using bisection within a user-supplied change of sign interval [A,B]. The procedure is written using reverse communication.

companion_matrix, a MATLAB code which computes the companion matrix for a polynomial. The polynomial may be represented in the standard monomial basis, or as a sum of Chebyshev, Gegenbauer, Hermite, Laguerre, or Lagrange basis polynomials. All the roots of the polynomial can be determined as the eigenvalues of the corresponding companion matrix.

newton_maehly, a MATLAB code which implements the Newton-Maehly algorithm for computing all the roots of a complex polynomial. The algorithm repeatedly applies the Newton method to determine a root, and then deflation.

polynomial_root_bound, a MATLAB code which computes the Cauchy bound on the magnitude of all roots of a polynomial with complex coefficients.

r8poly, a MATLAB code which operates on real polynomials, including evaluation, differentiation, integration, multiplication, synthetic division, shifting the base, computing a power, taking the norm. It also defines Chebyshev, Lagrange and Legendre polynomials.

root_rc, a MATLAB code which seeks a solution of a scalar nonlinear equation f(x) = 0, or a system of nonlinear equations, using reverse communication (RC), by Gaston Gonnet.

roots_rc, a MATLAB code which seeks solutions of a system of nonlinear equations, using reverse communication (RC), by Gaston Gonnet.

test_zero, a MATLAB code which defines some test functions for which zeroes can be sought.

wdk, a MATLAB code which implements the Weierstrass-Durand-Kerner algorithm for computing all the roots of a complex polynomial simultaneously. Convergence is asymptotically quadratic. However convergence is not guaranteed.

zero_brent, a MATLAB code which seeks a solution of a scalar nonlinear equation f(x) = 0, by Richard Brent.

zero_chandrupatla, a MATLAB code which finds a zero of a scalar function of a scalar variable, starting from a change of sign interval, using the Chandrupatla method, which can converge faster than bisection, regula falsi, or Brent's method, by Tirupathi Chandrapatla.

zero_itp, a MATLAB code which finds a zero of a scalar function of a scalar variable, starting from a change of sign interval, using the Interpolate/Truncate/Project (ITP) method, which has faster convergence than the bisection method.

zero_laguerre, a MATLAB code which uses Laguerre's method to find the zero of a function. The method needs first and second derivative information. The method almost always works when the function is a polynomial.

zero_rc, a MATLAB code which seeks solutions of a scalar nonlinear equation f(x) = 0, or a system of nonlinear equations, using reverse communication (RC).

Reference:

  1. Oliver Aberth,
    Iteration methods for finding all zeros of a polynomial simultaneously,
    Mathematics of Computation,
    Volume 27, Number 122, pages 339-344, 1973.

Source Code:


Last revised on 12 January 2026.