2.0.0 • Published 7 years ago

cubic-roots v2.0.0

Weekly downloads
11
License
MIT
Repository
github
Last release
7 years ago

cubic-roots

Implementation of Kahan's cubic root finder.

Motivation

According to Kahan, standard cubic root finders based on classical methods are prone to numerical inaccuracies. This is an implementation of a numerically stable method illustrated in Kahan's notes titled "To Solve a Real Cubic Equation".

The notes can be found here: http://people.eecs.berkeley.edu/~wkahan/Math128/Cubic.pdf.

Usage

The quadratic equation solved is Ax2 + Bx + C = 0. The cubic equation solved is Ax3 + Bx2 + Cx + D = 0.

  • getQuadraticRoots(A, B, C)
    • returns 4 real numbers: A1, B1, A2, B2
    • this corresponds to the (possibly) complex roots A1 + B1 i and A2 + B2 i.
  • getCubicRoots(A, B, C, D)
    • returns 5 real numbers: A0, A1, B1, A2, B2
    • this corresponds to the 1 real and 2 (possibly) complex roots A0, A1 + B1 i, and A2 + B2 i.

Author

Algorithm and pseudocode by William Kahan. Implementation in Javascript by Tim Bright

License

(c) Tim Bright, 2017. MIT License.