MPFR version 2.3.0 (released on 29 August 2007)

[download] [documentation] [bugs] [changes] [platforms] [timings]

MPFR 2.3.0 requires GMP 4.1.0 or higher.


The MPFR 2.3.0 source can be downloaded in the following archive formats:

Important note: If the MPFR build fails, please read the section In case of problem of the INSTALL file. In particular, GMP is known for using a different ABI from the default one on some 64-bit platforms, and in such a case, if you do not provide the same compiler flags as those automatically selected by GMP, things will probably go wrong, e.g. libgmp not found error message at configure time (this error message will be improved in future MPFR versions).

MPFR is also available via third-party packages and ports.



The bugs listed below have been fixed (latest update: 2008-01-22). The following instructions are for Linux and may be similar for other operating systems. You can apply the patches in several ways:

With the first two ways, the PATCHES file is modified, so that one can know what patches have been applied, using the new mpfr_get_patches function. Moreover a suffix is added to the version string, but note that for practical reasons, not all the files where the version appears are patched; thus one can also track applied patches with the MPFR_VERSION_STRING macro (header) and the mpfr_get_version function (library). However, if some patches are not applied or if patches are applied in a different order, then the patch command will fail to update some chunks, so that the suffix is not always reliable for patches.

Note: These patches are in unified diff format and some vendors' patch commands cannot deal with them; in this case, please use GNU patch (it may already be installed on your system, e.g. as /usr/local/bin/patch or gpatch).

Fixed bugs:

  1. The rule to rebuild the get_patches.c file is not correct when the build directory is different from the source directory. This is fixed by the get_patches patch.
  2. Assertion failure in mpfr_acosh on arguments that are slightly larger than 1. This bug can occur only if the precision of the destination is strictly smaller than the precision of the input argument. This is fixed by the mpfr_acosh patch (with testcase).
  3. If the underflow flag is set before calling mpfr_atan2 and the second input argument is positive, then mpfr_atan2 generally returns an incorrect result (as if the result were an underflow). This is fixed by the mpfr_atan2 patch (with testcase).
  4. The mpfr_subnormalize function sometimes returns an incorrect result and assumes that emax-emin is greater or equal to the precision of the MPFR number. The mpfr_subnormalize patch fixes these bugs, adds corresponding testcases and updates the MPFR manual; the condition on the exponent range is replaced by: If the result cannot be represented in the current exponent range (due to a too small emax), the behavior is undefined.

Some other bugs have been found and fixed both in the trunk and in the 2.3 branch. The ones that may affect the user are listed below. The corresponding patches are not published (these bugs will be fixed in the future 2.3.1 release), but the changeset numbers (in the 2.3 branch) are given for the reference.

Other bugs: please see the BUGS file.

Changes from versions 2.2.* to version 2.3.0

Platforms Known to Support MPFR

MPFR 2.3.0 has been successfully compiled and checked on the following platforms:

Back to the MPFR page.