High-Precision Software Directory
Update: 29 Apr 2015
This web site (see software package links below) contains the LBNL
double-double precision, quad-double precision and arbitrary precision
(also termed "multiprecision" or "multiple precision") software, which
was written over a period of several years by David H. Bailey (LBNL),
Yozo Hida (U.C. Berkeley), Xiaoye S. Li (LBNL), Brandon Thompson
(formerly of U.C. Berkeley, now at Synopsis), Karthik Jeyabalan (formerly
at LBNL, now at Cornell) and Alex Kaiser (LBNL, now at NYU).
Here are links to some of the authors' websites:
*** IMPORTANT NOTE ***
By downloading or using this software you are agreeing to the modified
BSD license that is in file
BSD-LBNL-License.doc and in the packages below. If you wish to
use the software for commercial purposes please contact the LBNL
Technology Transfer Department at TTD@lbl.gov or call 510-286-6457.
Please send any comments or questions for this site to:

Here are the software packages that are available:
- MPFUN2015 (*NEW* Fortran-90 arbitrary precision package)
Unix-based systems (including Apple MAC OSX systems):
DHB software site
This is a new Fortran-based package that is 100% thread-safe, even at the language interface level, by means of data structures and algorithmic techniques that avoid the need for any "context" (i.e., read/write global variables) or, except for exceedingly high precision, any initialization step, yet still permit the working precision level to be changed within the application. The package employs advanced algorithms, including FFT-based arithmetic and quadratically convergent transcendentals, for optimal performance even at very high precision levels. It also incorporates design features that detect, and provide means to overcome, accuracy problems that are rooted in the usage of inexact double-precision constants and expressions. A full-featured Fortran-90 interface, supporting both multiprecision real and complex datatypes, is provided, so that most users need only to make minor changes (typically type statements and I/O) to existing double-precision code.
NOTE: This software was written independently by Bailey. The link above is to Bailey's personal website. This software was not written with support from the Lawrence Berkeley National Laboratory, nor does the Laboratory assume any responsibility for its usage or maintenance.
- ARPREC (C++/Fortran-90 arbitrary precision package)
Unix-based systems (including Apple Macintosh systems):
arprec-2.2.17.tar.gz
Before downloading or installing this software, please read
BSD-LBNL-License.doc
(which contains license information) and the README file.
This package supports a flexible, arbitrarily high level of
numeric precision -- the equivalent of hundreds or even thousands of
decimal digits (up to approximately ten million digits if needed).
Special routines are provided for extra-high precision (above 1000
digits). The entire library is written in C++. High-precision real,
integer and complex datatypes are supported. Both C++ and Fortran-90
translation modules are also provided that permit one to
convert an existing C++ or Fortran-90 program to use the library with
only minor changes to the source code. In most cases only the type
statements and (in the case of Fortran-90 programs) read/write
statements need be changed. Six implementations of PSLQ (one-, two-
and three-level, regular and multi-pair) are included, as well as
three high-precision quadrature programs. New users are encouraged to
use this package, rather than MPFUN90 or MPFUN77 (see below).
This verion of the ARPREC package now includes "The Experimental
Mathematician's Toolkit", which is available as the program "mathtool"
in the subdirectory "toolkit". This is a complete interactive
high-precision arithmetic computing environment. One enters
expressions in a Mathematica-style syntax, and the operations are
performed using the ARPREC package, with a level of precision that can
be set from 100 to 1000 decimal digit accuracy. Variables and vector
arrays can be defined and referenced. This program supports all basic
arithmetic operations, common transcendental and combinatorial
functions, multi-pair PSLQ (one-, two- or three-level versions),
high-precision quadrature, i.e. numeric integration (Gaussian, error
function or tanh-sinh), and summation of series.
- QD (C++/Fortran-90 double-double and quad-double package)
Unix-based systems (including Apple Macintosh systems):
qd-2.3.15.tar.gz
Before downloading or installing this software, please read
BSD-LBNL-License.doc
(which contains license information) and the README file.
This package supports both a double-double datatype
(approx. 32 decimal digits) and a quad-double datatype (approx. 64
decimal digits). The computational library is written in C++. Both
C++ and Fortran-90 high-level language interfaces are provided to
permit one to use convert an existing C++ or Fortran-90 program to use
the library with only minor changes to the source code. In most cases
only a few type statements and (for Fortran-90 programs) read/write
statements need to be changed. PSLQ and numerical quadrature programs
are included.
-
MPFUN90 (Fortran-90 arbitrary precision package)
Unix-based systems (including Apple Macintosh systems):
mpfun90.tar.gz (version date 2010-08-25)
Before downloading or installing this software, please read
BSD-LBNL-License.doc
(which contains license information) and the README file.
This package is similar to the ARPREC package, except that it
is written exclusively in Fortran-90 (i.e., no C++). As with the
ARPREC package, Fortran-90 translation modules are also provided that
permit one to convert an existing Fortran-90 program to use the
library with only minor changes to the source code. The MPFUN90
package was recently revamped and improved to be completely
compatible, at the Fortran user level, with the ARPREC package. In
other words, a high-level Fortran-90 user program that works with the
MPFUN90 software should also work with the ARPREC package. For
instance, the F90 quadrature and PSLQ programs mentioned above that
are included with the ARPREC package also work with MPFUN90, and are
included in the MPFUN90 package. In addition, the Experimental
Mathematician's Toolkit now works with MPFUN package as well.
NOTE: This software is now quite old. The newer packages MPFUN2015 and ARPREC (see above) are recommended instead.