A new SIPE version (48201 2011-12-12 01:47:58Z) is available. It fixes a few bugs against the 2009-11-17 version. This tool is described and partly proved in my new research report: SIPE: Small Integer Plus Exponent [HAL / in my publication list].
Abstract: SIPE (Small Integer Plus Exponent) is a mini-library in the form of a C header file, to perform computations in very low precisions with correct rounding to nearest. The goal of such a tool is to do proofs of algorithms/properties or computations of error bounds in these precisions, in order to generalize them to higher precisions. The supported operations are the addition, the subtraction, the multiplication, the FMA, and miscellaneous comparisons and conversions.
Patch 3 of GNU MPFR 3.1.0 is available in the bugs section of the MPFR 3.1.0 page. It fixes the following bug.
The formatted output functions (mpfr_*printf) may output/return an incorrect string when the value is rounded up to the next power of 10 (for instance, 999.99999... printed with "%.20RNg" may give "100" instead of "1000"). This bug has always been present (since these functions were introduced in MPFR 2.4.0).
Patch 1 of GNU MPFR 3.1.0 is available in the bugs section of the MPFR 3.1.0 page. It fixes the GCC version of the definition of the MPFR_UNLIKELY internal macro. The compiled code can be affected when a limb is larger than a long (e.g. with some ABI's, such as mode32 on PowerPC). The MPFR_UNLIKELY definition for GCC has been incorrect since this macro was introduced in MPFR 2.1.0, but problems started to be visible only in MPFR 3.1.0 with all assertions checked (the MPFR code is normally written to work with the incorrect definition).
The GNU MPFR 3.1.0 library (canard à l'orange) has been released. The changes from the 3.0.* versions:
The MPFR source has been reorganized.
Dropped ansi2knr support.
TLS support is now detected automatically. If TLS is supported, MPFR is built as thread safe by default. To disable TLS explicitly, configure MPFR with --disable-thread-safe.
New --enable-gmp-internals configure option to use GMP's undocumented functions (not from the public API). Note that library versioning is not guaranteed to work if this option is used.
The mpfr_urandom and mpfr_urandomb functions now return identical values on processors with different word size (assuming the same random seed, and since the GMP random generator does not depend itself on the word size, cf http://gmplib.org/list-archives/gmp-devel/2010-September/001642.html).
The mpfr_add_one_ulp and mpfr_sub_one_ulp macros (which are obsolete and no more documented) will be removed in a future release.
Speed improvement for the mpfr_sqr and mpfr_div functions using Mulders' algorithm. As a consequence, other functions using those routines are also faster.
Much faster formatted output (mpfr_printf, etc.) with %Rg and similar.
The --with-gmp-build configure option can now be used when the GMP source directory and the GMP build directory are different (without having to copy header files manually as before).
New functions mpfr_buildopt_gmpinternals_p, mpfr_buildopt_tune_case, mpfr_frexp, mpfr_grandom and mpfr_z_sub
New divide-by-zero exception (flag) and associated functions.
The mpfr.h header can be included several times, while still supporting optional functions (see Section Headers and Libraries in the manual).
Updated tuning parameters.
Improved MPFR manual.
MPFR tests: libtool no longer generates wrapper scripts with make check
(so that running the tests under valgrind or gdb is easier).
Bug fixes.
The second GNU MPFR 3.1.0 release candidate is available.
GNU MPFR 3.1.0 Release Candidate is available.
The ISO/IEC/IEEE 60559:2011 standard on floating-point arithmetic, corresponding to the IEEE 754-2008 standard, has been published (stage 60-60, 2011-07-07).
mpfr_min_precNote about the GNU MPFR mpfr_min_prec function: it appeared in version 3.0.0, but wasn't listed in the new functions. I've corrected the GNU MPFR 3.0.0 web page, and both the NEWS file and the MPFR manual for the future MPFR versions.
INRIA is recruiting a graduate engineer for development related to the GNU MPFR library (12-month contract, renewable once). Job description / details on the INRIA website. To be eligible, an engineer must have graduated during the year prior to his recruitment (thus 2010 or 2011).
Application deadline: September 30, 2011.
Patch 4 of GNU MPFR 3.0.1 is available in the bugs section of the MPFR 3.0.1 page. It fixes the following bug in the tests (this is not a bug in the library itself).
The texp test doesn't filter out the value 0 (which can appear with some seeds, set by GMP_CHECK_RANDOMIZE) when comparing the mpfr_exp_2 and mpfr_exp_3 internal functions. The consequence is a failure in this test if this happens.
Patch 2 and patch 3 of GNU MPFR 3.0.1 are available in the bugs section of the MPFR 3.0.1 page. They fix the following problems:
The mpfr_rec_sqrt function can have undefined behavior due to the call of mpn_add_1 or mpn_sub_1 (from GMP) with a null size, which is not allowed. The fourth argument of mpn_add_1 or mpn_sub_1 (i.e. the value that should have been added or subtracted) is here also 0, so that the consequences are limited. In practice, with the current GMP version, this yields a small buffer overflow (1 limb, i.e. 32 bits or 64 bits), as shown by valgrind, with the possible consequences: a crash, or memory corruption (very unlikely) if another process or thread modifies the limb at the same time (as in this context, the value is first read then written back by GMP). This bug has always been present since the introduction of the mpfr_rec_sqrt function in MPFR 2.4.0.
The mpfr_atan function calls mpfr_check_range on the unrounded result (no longer allocated) instead of the rounded result. Consequence of this bug: possible incorrect or invalid result and/or incorrect flags if the unrounded result or rounded result is not in the current exponent range. Or possibly worse if the memory used by the unrounded result is modified before the return of the function. This bug has been present since MPFR 2.1.0 (exceptions were not supported before).
Patch 1 of GNU MPFR 3.0.1 has been available in the bugs section of the MPFR 3.0.1 page for a couple of weeks. It fixes the following bug, which should probably never occur in user codes: if the exponent range has been reduced such that emax = 1 or 2, mpfr_asin may give an incorrect result on +1 and -1.
The GNU MPFR 3.0.1 library (boudin aux pommes, patch level 1) has been released. The changes from version 3.0.0: bug fixes (detailed list on the MPFR 3.0.0 page).
We have received an announce saying that the computer systems at the Loria will be stopped from Friday, April 1, 2011 at 18:00 CEST (16:00 UTC) to Monday, April 4, 2011 at 09:00 CEST (07:00 UTC). The mpfr.org web server and the MPFR mailing-list will be affected by this downtime.
As a consequence, the release of GNU MPFR 3.0.1 is postponed to April 4.
Thank you for your understanding.
GNU MPFR 3.0.1 Release Candidate is available (bug fixes).