High-Precision Software Directory

Updated 7 Feb 2020


This website contains software written by David H. Bailey, either solely or in collaboration with other authors. Please send any comments or questions for this site to:

Here are the software packages that are available:
  1. MPFUN2015: A 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: (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: MPFUN2015 technical paper.

    The two versions of the software are available here:

    *** IMPORTANT NOTE: PLEASE read this license document carefully before using: 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. DQFUN: A thread-safe double-quad precision package.

    This package permits one to perform floating-point computations (real and complex) to double-quad precision (approximately 66 digits), 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.

    DQFUN for Unix-based systems (including Apple OSX 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 the README.txt file in the main directory. The README.txt file also includes a brief summary of programming instructions.

    *** IMPORTANT NOTE: PLEASE read this license document carefully before using: 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.

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

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

    ARPREC for Unix-based systems (including Apple OSX systems): arprec-2.2.18.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.18.tar.gz" to "arprec-2.2.18.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.

  4. 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 MPFUN2015, is available with both a Fortran-90 and a C++ high-level interface.

    QD for Unix-based systems (including Apple OSX 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.