What is MPSolve?
MPSolve stands for Multiprecision Polynomial SOLVEr. It is a software that aims to provide an easy to use (hopefully) universal blackbox for solving polynomials and secular equations.
Among its features you can find:
- Arbitrary precision approximation.
- Guaranteed inclusion radii for the results.
- Exploiting of polynomial structures: it can take advantage of sparsity as well as coefficients in a particular domain (i.e. integers or rationals).
- It can be specialized for specific classes of polynomials. As an example, see the roots of the Mandelbrot polynomial of degree 2.097.151 computed in about 10 days on a dual Xeon server.
If you have installed MPSolve you can read the documentation to see how to specify polynomials.
If you use MPSolve in your research, please cite it as follows:
Bini, Dario A., Fiorentino, Giuseppe, Design, analysis, and implementation of a multiprecision polynomial rootfinder. Numerical Algorithms 23.2-3 (2000): 127-173.
Bini, Dario A., and Robol, Leonardo. Solving secular and polynomial equations: A multiprecision algorithm. Journal of Computational and Applied Mathematics 272 (2014): 276-292.
How do I get it?
The easiest way to use MPSolve is to use a prebuilt binary version.
- Packages for Ubuntu can be installed with the following commands:
sudo apt-add-repository ppa:leo.robol/mpsolve sudo apt-get update && sudo apt-get install xmpsolve mpsolve
Additional modules (such as Octave and Python bindings) can be installed with the packages
- An installer for Windows can be downloaded from the Downloads page.
The latest release is version 3.2.1: mpsolve-3.2.1.tar.bz2,mpsolve-3.2.1.tar.gz. The installer for Windows can be downloaded as well: setupmpsolve-3.2.1.exe. If you want to checkout the latest (possibly not working or untested) version, you can use git from the official Github repository:
git clone git://github.com/robol/MPSolve.git
You can grab the older release tarballs on the Downloads page.
MPSolve should be compilable on all the operating systems that provide a C99 compiler (or a C compiler with minimal C99 semantics) and which can run GMP. If you grab the archive file of the latest release you can build and install MPSolve following these steps:
tar xvf mpsolve-x.y.z.tar.gz cd mpsolve-x.y.z ./configure make sudo make install sudo ldconfig
x.y.z stands for the version of MPSolve that you have downloaded. You may want to skip the last command if you don’t want to install the package on the machine or simply don’t have administrator privileges. In that case you can use
./src/mpsolve/mpsolve in place of the
mpsolve command that you find in the documentation.
MPSolve ships with an executable file, called
mpsolve.exe, depending if you are using Microsoft Windows or not) that can be used to solve polynomials given a file that represent their coefficients.
Some example polynomials can be found in the directory
src/tests/unisolve/ while some secular equations can be found in
src/tests/secsolve. For further documentation on how to write an input file, see the section on Polynomial Files.
Once you have the pol file, you can solve it by calling
or, if you wish to use the secular algorithm,
mpsolve -as my.pol
Other options for MPSolve can be used to tweak the resolution settings, such as the number of digits required in the output and desired target to reach before stopping (i.e. isolate the roots, approximate the roots or count the roots). A list of all the possible options can be seen with the command
From version 3.1.0 MPSolve has a graphical user interface that you can use launching the command
./src/xmpsolve/xmpsolve from the source folder. Note that the user interface will be built only if you have the required development packages, namely libqt4-dev or libqt5.