c++gmpgslpolynomials

Polynomial solving with arbitrary precision


We have been using GSL to solve polynomials. However, we wish to use arbitrary precision to solve polynomials. I looked into GMP and Boost multi-precision library, however, I couldn't find any routine for polynomial solving with floating point coefficients.

  1. Does there exist any library, which is free and open-source, for solving polynomials with arbitrary precision or a very high precision (>200 positions after decimal)?

  2. Is it possible to make use of GSL polynomial solver routine with the change in data-type to be that of GMP arbitrary precision?

  3. Would it rather be easy to write polynomial solver, using one of the standard algorithms, with GMP arbitrary precision data types?

Please feel free to comment if it is not clear.


Solution

    1. MPSolve provides a library to solve polynomials using multi-precision. Internally it uses GMP.

    Following can be observed:


    1. It is tedious to fork the GSL polynomial solver to use GMP data-type. It will be rather easier and also the code will be more in one's control and understanding, if the solver is written (see no. 3).

    1. As suggested in the answer, GMP and MPFR multi-precision libraries can be used and a polynomial solver can be written using standard polynomial solving techniques, such as Jenkins-Traub Algorithm or QR based techniques.

    Boost C++ Libraries provide wrappers for using GMP and MPFR which might be very handy to use.