Department of Mathematics



SUNDIALS-CLN

An Arbitrary Precision Extension of the CVODE Library
by Warren Weckesser

CVODE is a widely used C library for solving ordinary differential equations. It is part of the SUNDIALS suite of libraries. CLN is a C++ library that implements arbitrary precision numbers. I have converted the CVODE library to use the CLN floating point class as its representation of real numbers. This means CVODE can solve ordinary differential equations with as much numerical precision as desired.

The development of this software was partially funded by the National Science Foundation (Grant DMS-0514468).


Download

Copy one of these files to your home directory: sundials_cln.tar.bz2 (8.9M), sundials_cln.tar.gz (9.9M).

More information about the software, including how to install it, is included in the file README-WW.

This software is still in the experimental stage. If you have any questions about it, please contact me. Also let me know if you download and install it. Even if you have no problems, I am interested in knowing how this software is used.


Example

We solve the following system of differential equations:

x' = (-y + x - x3/3)/ε
y' = x-a
The following plot shows two solutions. Both were computed with 100 digits of precision. The parameter values were a=-1.5 and ε=0.005. The initial x coordinate for both solutions is x(0)=-2. For the dashed curve, the initial y coordinate is
y(0)=-0.699903492086728166143978401208788824227818610553271339023675758554576281195181698
and for the solid curve it is
y(0)=-0.699903492086728166143978401208788824227818610553271339023675758554576281195181809
The difference in the two initial y values is less than 2e-69. An initial value problem solver that used standard double precision floating point numbers could not compute these solutions.