SLV

SLV: a software for real root isolation. The problem of isolating the real roots of a univariate polynomial with integer coefficients is an important problem in computational mathematics. Given a polynomial with integer coefficients, f=∑ i=0 d a i x i ∈ℤ[x], the objective is to isolate the real roots of f, that is to compute intervals with rational endpoints that contain one and only one root of f. SLV is an open source software package written in C that provides functions for isolating the real roots of univariate polynomials with integer coefficients. It also provides functionality to approximate the isolated roots up to an arbitrary precision. Currently, it is realizes a subdivision algorithm based on Descartes’ rule of sign, with modifications to improve its performance. SLV assumes that the input is a square-free polynomial. It performs all the operations using exact arithmetic based on the library gmp and it exploits as much as possible computations with dyadic numbers, that is numbers of the form a/2 k where a and k are integers. It builds upon a constant memory variant of Descartes’ rule of sign [F. Rouillier and P. Zimmermann, J. Comput. Appl. Math. 162, No. 1, 33–50 (2004; Zbl 1040.65041)]. To minimize the number of allocations in the memory we wrote a small wrapper to use the queue.h library of OpenBSD, in order to have access to a fast implementation of lists and queues. Even though queue.h is written in C, it is a library that follows the generic programming paradigm, and if it is programmed carefully, it could be used with various data sets.