MPSOLVE - multiprecision polynomial root finding

This is a library, derived from an excellent program, developed by the University of Pisa, department of Mathematics. The original package contains the source code for an executable image, which can be called from a script or simply from the command line. I have developed a library, suitable for inclusion in one's own programs. The derived work, presented here, and the link provided here, are published with the permission of the authors of the original work, and they know about this derived work.

MPSOLVE can be used to determine the zeros of a polynomial of a single variable of arbitrary degree. The zeros can be determined at arbitrary precision or at the precision, allowed by the precision at which the coefficients are given. Up to now, I did not succeed in finding a polynomial, which could not be solved by the software. The algorithm also handles roots of multiplicity larger than 1 and clusters of close roots exceptionally well.

The original package has some limitations, which are mostly overcome by the library version. The library version allows simple integration of polynomial root finding functionality in your own programs. The library calls for solving polynomial equations are very simple and perform all of their computations on their own dedicated MP-stack. This allows number crunching on different polynomials simultaneously by different threads in the same process. Besides this major change, some smaller bugs and some inefficiencies in the original package were fixed.

Both the original package and the derived library use GMP for doing multi-precision arithmetic. The library version of the software contains extensive instructions on how to build GMP and how to use this. GMP is an open source product, which can be obtained here: GMP on its own already is a great product, definitely worth looking at. The mpsolve software is tested with version 5.0.2, but it also works with older 3.x and 4.x versions. A patched version of GMP is available here. This simply is version 5.0.2, with the patches from the gmplib-site applied to the original source tree.

Most credits for the MPSOLVE package go to Dario Bini and Giuseppe Fiorentino for providing the excellent package and algorithm as open source product.

back to main software page

back to top of page