High-Precision Software Directory
Update: 18 April 2018
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 (formerly at LBNL), Yozo Hida (formerly at U.C. Berkeley), Xiaoye S. Li (LBNL), Brandon Thompson (formerly at U.C. Berkeley), Karthik Jeyabalan (formerly at LBNL) and Alex Kaiser (formerly at LBNL). Please send any comments or questions for this site to:
NEW: A Hindi translation of this page is available HERE. Please note, however, that this is an external site not affiliated with LBNL or the authors of this software. While we believe the translation to be correct, we cannot certify or be responsible for the Hindi page.
*** IMPORTANT NOTE: By downloading or using this software you are affirming your agreement to the terms of the LBNL-BSD license that is in the file LBNL-BSD-License.doc. If you have any questions regarding this license, please contact the LBNL Innovation and Partnerships Office at IPO@lbl.gov.
These software packages are available:
- MPFUN2015 (A thread-safe arbitrary precision package)
Unix-based systems (including Apple MAC OSX systems):
DHB software site
This package permits one to perform floating-point computations (real and complex) to arbitrarily high numeric precision, by making only relatively minor changes to existing Fortran-90 programs (mostly changes to type statements). All basic arithmetic operations and transcendental functions are supported, together with several special functions.
The package comes in two versions: (a) a completely self-contained, all-Fortran version that is simple to install; and (b) a version based on the MPFR package (for lower-level operations) that is somewhat more complicated to install but is approximately 3X faster. The two versions are "plug-compatible" in the sense that applications written for one also run with the other. Both versions employ advanced algorithms, including FFT-based arithmetic, for optimal performance. They also detect, and provide means to overcome, accuracy problems rooted in the usage of inexact double-precision constants and expressions. A high-level Fortran-90 interface, supporting both multiprecision real and complex datatypes, is provided for each, so that most users need only to make minor changes to existing double-precision code.
A technical paper describing the package and providing details for usage is available here.
NOTE: This software was written independently by Bailey. The above links are 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 (A C++/Fortran-90 arbitrary precision package)
Unix-based systems (including Apple Macintosh systems):
arprec-2.2.19.tar.gz
Before downloading or installing this software, please read
LBNL-BSD-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/writ 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.
- QD (A C++/Fortran-90 double-double and quad-double package)
Unix-based systems (including Apple Macintosh systems):
qd-2.3.20.tar.gz
Before downloading or installing this software, please read
LBNL-BSD-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 (A 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
LBNL-BSD-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.