GNU MPFR version 3.0.0 (released on 10 June 2010)

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

The boudin aux pommes release.

MPFR 3.0.0 requires GMP 4.1.0 or higher (GMP 4.2.3 or higher is recommended).

Download

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

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

Documentation

Bugs

The bugs listed below have been fixed (latest update: 2010-07-10). The patches are distributed under the same license as this version of MPFR, that is, the GNU Lesser General Public License (GNU Lesser GPL), version 3 or later.

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, with patches:

  1. The integer value returned by the mpfr_out_str function is incorrect on NaN and infinities. Moreover output errors are not handled, and if such an error occurs, the return value is incorrect (it should have been 0). These bugs are fixed by the mpfr_out_str patch (which also provides additional tests of mpfr_out_str).
  2. On some environments such as Solaris with Sun's compiler, MPFR is not built correctly; this can be seen with make check, where a typical error is the symbol alloca being undefined. The real reason of this failure is that HAVE_ALLOCA_H is not defined. This problem has been introduced in MPFR 3.0.0. It is fixed in the alloca patch.
  3. The underflow detection in mpfr_gamma is incorrect. A possible consequence is that the function can freeze. This bug is fixed by the gamma_underflow patch (which also provides a testcase for 32-bit machines).

On some platforms (typically non-64-bit ones), mpfr_get_sj can have the following problem. If the resulting integer is a non-zero value that is small enough in absolute value, then the function can perform a right shift with a shift count larger than or equal to the width of the left operand; this has an undefined behavior. However such a shifted value is always 0 here, so that most current platforms (if not all) should be unaffected by this problem (except if compiler features to dynamically detect undefined behavior are used). This problem is fixed in the trunk (r7047).

When MPFR has been built with _GMP_IEEE_FLOATS defined (e.g. because the --with-gmp-build configure option was used), the generated code may be wrong for due to broken aliasing rules. Potentially affected functions: those that convert a MPFR number to a native floating-point number. No wrong code has actually been reported, but since some tests failed in the past for a similar bug, concerned users may want to apply the fix from the 3.0 branch (r7080).

Other bugs: please see the tracker and the BUGS file.

Note: if you are trying to build GCC and get the error header files gmp-impl.h and longlong.h not found, please look at GCC bug 44455. This problem is a consequence of a correction in the detection of a GMP build directory.

Changes from versions 2.4.* to version 3.0.0

Platforms Known to Support MPFR

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

Back to the MPFR page.