bin+lib polynomial-roots

Find the real roots of huge polynomials in milliseconds

2 releases (1 stable)

1.0.0 Jan 4, 2024
0.1.0 Jan 6, 2023

#945 in Math

Download history 3/week @ 2024-08-20 38/week @ 2024-08-27 53/week @ 2024-09-03 63/week @ 2024-09-10 85/week @ 2024-09-17 109/week @ 2024-09-24 64/week @ 2024-10-01

333 downloads per month

MIT license

17KB
372 lines

polynomial-roots

Find the real roots of huge polynomials in milliseconds

How to compile?

cargo build --release

How to use?

The coefficients are in degree-ascending order, that is: $x^0 + x^1 + x^2 + x^3 + \cdots$
The coefficients are passed space-separated, therefore to solve the polynomial $3 - 9x + x^3$ you need to run the program the following way:

$ cargo install polynomial-roots
$ polynomial-roots
3 -9 0 1
{ -3.154523; 0.33760893; 2.816914; }

(note: don't forget the zero coefficients)

How it works?

The roots are found using the linear formula ($\dfrac{-b}{a}$), the quadratic formula ($\dfrac{-b \pm \sqrt{b^2 - 4 a c}}{2 a}$), or the false position method over the Cauchy's bound. It can solve polynomials of any degree.

I'm not getting all the roots, what should I do?

If you aren't getting all the roots you should modify the constants from the file src/constants.rs. You can DECREASE PARTITION_SIZE and INCREASE ITERATIONS. That will make the program slower, but with the right tweaks it can solve any polynomial.

No runtime deps