JSPM

cubic-roots

2.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 122
  • Score
    100M100P100Q88983F
  • License MIT

Implementation of Kahan's cubic root finder.

Package Exports

  • cubic-roots

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (cubic-roots) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

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.