For the users of the `Math::MPFR` Perl module, note that patch 6 makes a bug appear in version 4.03 of this module (current version at the time of writing – **[Update 2018-05-08]** A new version of the module is now available).

`mpfr_div_ui`

function, which was present since the introduction of `mpfr_div_ui`

at the very beginning of the development of MPFR in 1999. But as of version 4.0.0, this bug was also affecting the `mpfr_div`

function.
These versions 4.0.* contain many changes compared to versions 3.1.* (GNU MPFR 3.1.0 had been released in October 2011).

]]>By the way, I did my first MPFR commit 17 years ago.

]]>`mpfr_get_ld`

, `mpfr_get_si`

, `mpfr_get_ui`

, `mpfr_get_sj`

, `mpfr_get_uj`

and `mpfr_get_z`

when called with a very reduced exponent range.
]]>Improved MPFR manual.

Bug fixes (detailed list on the MPFR 3.1.5 page and

`ChangeLog`file).Autotools: Under Linux, make sure that the old dtags (when supported) are used if the

`LD_LIBRARY_PATH`environment variable is defined; otherwise

would check an installed, compatible MPFR library found in`make check``LD_LIBRARY_PATH`instead of the one that has been built with

.`make`

`mpfr_sin`

, `mpfr_cos`

, `mpfr_tan`

) and functions that call them can be very inaccurate (limiting the overall accuracy to about one million bits for these functions on such platforms).
]]>Correctly Rounded Arbitrary-Precision Floating-Point Summation, to be published in IEEE Transactions on Computers. DOI: 10.1109/TC.2017.2690632 (official link). PDF file on my personal web site (freely downloadable, © IEEE). Abstract:

We present a fast algorithm together with its low-level implementation of correctly rounded arbitrary-precision floating-point summation. The arithmetic is the one used by the GNU MPFR library: radix 2; no subnormals; each variable (each input and the output) has its own precision. We also give a worst-case complexity of this algorithm and describe how the implementation is tested.

Optimized Binary64 and Binary128 Arithmetic with GNU MPFR, written with Paul Zimmermann. Accepted at the 24th IEEE Symposium on Computer Arithmetic (ARITH 24), which will take place on 24–26 July 2017 in London, England. Abstract:

We describe algorithms used to optimize the GNU MPFR library when the operands fit into one or two words. On modern processors, a correctly rounded addition of two quadruple precision numbers is now performed in 22 cycles, a subtraction in 24 cycles, a multiplication in 32 cycles, a division in 64 cycles, and a square root in 69 cycles. We also introduce a new

*faithful*rounding mode, which enables even faster computations. Those optimizations will be available in version 4 of MPFR.

The

`tzeta`test should no longer fail on most platforms (IEEE 754 machines with default IEEE exception handling).The

`tsprintf`test still fails (fix in progress). The cause is a major efficiency issue in particular cases (huge precision requested).

Note: Both problems are also present in the released versions, but they have no tests that trigger them.

]]>`mpfr_strtofr`

function can return an incorrect ternary value in the round-to-nearest mode (`MPFR_RNDN`

).
]]>`mpfr_*printf`

) yield an undefined behavior or assertion failure when a precision less than −1 is given as an argument for the C++11 compatibility.

Bug fixes (detailed list on the MPFR 3.1.4 page and

`ChangeLog`file).More tests.

`mpfr_can_round_raw`

internal rounding-test function, used by the `mpfr_can_round`

public function (in particular, the few MPFR math functions that use this rounding test might be rounded incorrectly). Patch 6 fixes the `mpfr_get_ld`

function, which did not round correctly in the subnormal range on x86 platforms.
]]>