mpfr_inp_str
function.
]]>8. The mpfr_compound_si
function can take a huge amount of memory and time in some cases (when the argument x is a large even integer and xn is represented exactly in the target precision) and does not correctly detect overflows and underflows.
9. MPFR can crash when a formatted output function is called with %.2147483648Rg in the format string. For instance: mpfr_snprintf (NULL, 0, "%.2147483648Rg\n", x);
mpfr_ui_pow_ui
function in case of overflow; the mpfr_log10
function, which uses mpfr_ui_pow_ui
, is affected by this bug. The fourth patch (associated commit) fixes the mpfr_rec_sqrt
function in some cases that are very hard to round (in practice, the precision of the input needs to be much larger than the one of the destination): such cases may yield a stack overflow due to many small allocations in the stack; a consequence of this fix is that this function should now be much faster in these particular cases.
]]>New functions:
mpfr_cosu
, mpfr_sinu
, mpfr_tanu
, mpfr_acosu
, mpfr_asinu
, mpfr_atanu
, mpfr_atan2u
;
mpfr_cospi
, mpfr_sinpi
, mpfr_tanpi
, mpfr_acospi
, mpfr_asinpi
, mpfr_atanpi
, mpfr_atan2pi
;
mpfr_log2p1
, mpfr_log10p1
, mpfr_exp2m1
, mpfr_exp10m1
, mpfr_compound_si
, mpfr_fmod_ui
, mpfr_powr
, mpfr_pown
, mpfr_pow_uj
, mpfr_pow_sj
, mpfr_rootn_si
(mpfr_pown
is actually a macro defined as an alias for mpfr_pow_sj
).
mpfr_rootn_si
function in the development version of GNU MPFR. It provides the rootn function of the IEEE 754 standard (which appeared in the 2008 revision). It completes the mpfr_rootn_ui
function, which was providing rootn for non-negative values of n only.
]]>https://gitlab.inria.fr/mpfr/mpfr for the MPFR sources (some information on the GNU MPFR website);
https://gitlab.inria.fr/mpfr/misc for miscellaneous files, such as those for the MPFR website and additional tools (in particular, not tied to an MPFR version).
Not all the work related to this migration has been completed yet.
On InriaForge, we were using Subversion as the version control system, so that the single repository, composed of the sources (trunk/branches/tags) and some special misc directory, had to be converted to two Git repositories. I had first done an attempt with git svn, but an analysis of the obtained Git repository for the sources revealed important issues, caused mainly by the following particularities of the Subversion repository.
Some files and directories (for the directories, these were branches) were replaced (on purpose), i.e. deleted, then re-added with a different history (possibly new), either in the same commit or later. The git svn tool was considering that these were the same files or branches, thus was generating a completely incorrect history (as a consequence, the diff
implied by the generated commit was also completely incorrect, even though the resulting contents were correct).
Before Subversion, CVS was used as the version control system, and the CVS repository was converted to Subversion with cvs2svn on 2005-10-24. Unfortunately, cvs2svn had bugs (or was it CVS itself?), and generated an incorrect history for tags (we did not notice this issue at that time, but anyway, it is not clear that we could have done anything to avoid it), in particular with some files coming from the associated branch and others coming from the trunk.
So I decided to use Eric S. Raymond's excellent reposurgeon tool to fix everything, but also to add some metadata, such as the Subversion revisions to each commit message (since such revisions are sometimes referenced), together with the affected branch (since Git cannot retrieve this information). For this repository conversion with reposurgeon, I found various issues (some of them also due to the particularities of the MPFR's Subversion repository, and all of them fixed rather quickly) and did some merge requests. Some files and scripts I wrote for this conversion can be found in the mpfr-conversion.tar.xz archive. Note that there was only one operation between what are now two repositories: Subversion revision 12528, where a file was moved from /misc to /trunk/tools; I checked that it was correctly handled by reposurgeon (but of course, in the Git repositories, this just appears as an addition on one side and as a deletion on the other side, without any link between these two generated operations).
]]>mpfr_get_str_ndigits
function.
]]>mpfr_set
macro (which, by default, is used in place of the function) evaluates its second argument twice.
]]>Due to power outage, the server hosting mpfr.org will be switched off from Friday 22 January 2021, 16:00 CET (15:00 UTC) to Monday 25 January 2021, 10:00 CET (09:00 UTC), except unpredictable incident. Only the mpfr.org website will be affected. The MPFR mailing-list and InriaForge will still work.
]]>