Finds roots of polynomials by Weierstrauss' method
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
test Upgrade to 1.0 Jul 2, 2015
.gitignore adding files May 7, 2013
.travis.yml Upgrade to 1.0 Jul 2, 2015
LICENSE adding LICENSE May 14, 2013 Travis badge. Jul 2, 2015
package.json Upgrade to 1.0 Jul 2, 2015
roots.js Upgrade to 1.0 Jul 2, 2015


Finds all the roots of a polynomial by Weierstrass' method (or known in Abramowitz&Stegun as the Durand-Kerner method). This is basically a generalization of Newton's method that works for multiple roots.

build status


To find the roots for 1 + 1*x - 1*x^2:

var findRoots = require("durand-kerner")

var roots = findRoots([1, 1, -1])

// Now:
//      roots[0] = real part of roots
//      roots[1] = imaginary part of roots

for(var i=0; i<roots.length; ++i) {
  console.log(roots[0][i] + "+" + roots[1][i] + "i")




Install using npm:

npm install durand-kerner


require("durand-kerner")(r_coeff[, i_coeff, n_iters, tolerance, initial])

Finds the roots of a polynomial whose real coefficients are given by r_coeff and imaginary coefficients by i_coeff.

  • r_coeff - the real part of the polynomial's coefficients, stored in an array
  • i_coeff - the imaginary part of the polynomial's coefficients (default all 0)
  • n_iters - Maximum number of iterations to run before bailout. Default is 100 * n * n
  • tolerance - Stopping threshold. Default is 1e-6
  • initial - Initial guess for solution vector (must have the same length as r_coeff). This also gets the solution (optional)

Returns An array of roots.


(c) 2013 Mikola Lysenko. MIT License