#root #polynomial #real #find #milliseconds #huge

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

#1082 in Math

Download history 32/week @ 2024-08-26 50/week @ 2024-09-02 68/week @ 2024-09-09 79/week @ 2024-09-16 99/week @ 2024-09-23 85/week @ 2024-09-30 132/week @ 2024-10-07 62/week @ 2024-10-14 110/week @ 2024-10-21 84/week @ 2024-10-28 128/week @ 2024-11-04

421 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