High-Precision Software Directory

Updated 16 February 2021


This website contains software written by David H. Bailey, either solely (items 1-3) or in collaboration with other authors (items 4-5). Please send any comments or questions for this site to:

Here are the software packages that are available:
  1. MPFUN2020: A new thread-safe arbitrary precision package.

    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: one completely self-contained, all-Fortran version that is simple to install; and one version based on the MPFR package that is somewhat more complicated to install but runs faster on most applications. Both versions are completely thread-safe. Both versions 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. The two versions are "plug-compatible" in the sense that applications written for one also run with the other (with some restrictions).

    A technical paper describing the package and providing details for usage is available here: MPFUN2020 technical paper.

    *** IMPORTANT NOTE: Please read this license document carefully before using the MPFUN package: DHB-License.docx. By downloading or using this software you are agreeing to the modified BSD license that is in this file. If you wish to use this software for any commercial purpose, please contact the author.

  2. The two versions of the software are available here:

  3. MPFUN2015: A thread-safe arbitrary precision package.

    This is an older all-Fortran version of the MPFUN software, based on floating-point arithmetic. It is several times slower than MPFUN2020. This version is still supported, but MPFUN2020 should be used for new development.

    A technical paper describing the package and providing details for usage is available here: MPFUN2015 technical paper.

    *** IMPORTANT NOTE: Please read this license document carefully before using the MPFUN package: DHB-License.docx. By downloading or using this software you are agreeing to the modified BSD license that is in this file. If you wish to use this software for any commercial purpose, please contact the author.

  4. The software is available here:

  5. DQFUN for Unix-based systems (including Apple OS X systems): dqfun-v01.tar.gz

    Note: On some systems, notably a Mac with Safari, the browser may automatically unzip the file as it downloads it. In that case, you may need to rename the file, say from "dqfun-v01.tar.gz" to "dqfun-v01.tar" before proceeding.

    For installation instructions, see this README file. The README file also includes a brief summary of programming instructions.

    *** IMPORTANT NOTE: Please read this license document carefully before using the DQFUN package: DHB-License.docx. By downloading or using this software you are agreeing to the modified BSD license that is in this file. If you wish to use this software for any commercial purpose, please contact the author.

  6. ARPREC: An arbitrary precision package for Fortran and C++.

    This package is an older arbitrary precision package. It is not thread-safe, but, unlike MPFUN2020, is available with both a Fortran-90 and a C++ high-level interface.

    ARPREC for Unix-based systems (including Apple OS X systems): arprec-2.2.20.tar.gz

    Note: On some systems, notably a Mac with Safari, the browser may automatically unzip the file as it downloads it. In that case, you may need to rename the file, say from "arprec-2.2.20.tar.gz" to "arprec-2.2.20.tar" before proceeding.

    *** IMPORTANT NOTE: David H. Bailey offers this software on this site as a convenience, but does NOT assume any responsibility for maintenance or managing appropriate usage. Please read this license document carefully before using: LBNL-BSD-License.docx. By downloading or using this software you are agreeing to the modified BSD license that is in this file. If you wish to use this software for any commercial purpose, please contact the Intellectual Property Office at the Lawrence Berkeley National Laboratory, ipo@lbl.gov.

  7. QD: A double-double and quad-double package for Fortran and C++.

    This package is an older package that provides double-double (approximately 31-digit precision) and quad-double (approximately 62-digit precision) functionality. It is not thread-safe, but, unlike MPFUN2020, is available with both a Fortran-90 and a C++ high-level interface.

    QD for Unix-based systems (including Apple OS X systems): qd-2.3.22.tar.gz

    Note: On some systems, notably a Mac with Safari, the browser may automatically unzip the file as it downloads it. In that case, you may need to rename the file, say from "qd-2.3.22.tar.gz" to "qd-2.3.22.tar" before proceeding.

    *** IMPORTANT NOTE: David H. Bailey offers this software on this site as a convenience, but does NOT assume any responsibility for maintenance or managing appropriate usage. Please read this license document carefully before using: LBNL-BSD-License.docx. By downloading or using this software you are agreeing to the modified BSD license that is in this file. If you wish to use this software for any commercial purpose, please contact the Intellectual Property Office at the Lawrence Berkeley National Laboratory, ipo@lbl.gov.