* Includes all fixes from mpfr-4.2.0-cummulative.patch which is
subsequently removed.
* Improved MPFR manual.
* Configure tests: replaced the test of the link with GMP, in order
to avoid the use of a function without a prototype (Autoconf issue), as
this is obsolescent in ISO C. The new test should be more robust.
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/mpfr?expand=0&rev=82
* the mpfr_reldiff function, which computes |b-c|/b, is buggy on special
values, e.g. on the following (b,c) values: (+Inf,+Inf) gives ±0
instead of NaN (like NaN/Inf); (+0,+0) gives 1 instead of NaN (like 0/0);
(+0,1) gives 1 instead of Inf (like 1/0). Moreover, the sign of 0 for
(+Inf,+Inf) or (-Inf,-Inf) is not set, i.e. it is just the sign of the
destination before the call; as a consequence, results are not even
consistent.
* the reuse tests are incomplete: the sign of a result zero is not checked,
so that it can miss bugs (one of the mpfr_reldiff bugs mentioned above,
in particular).
* the general code for the power function (mpfr_pow_general internal
function) has two bugs in particular cases: the first one is an incorrect
computation of the error bound when there has been an intermediate
underflow or overflow (in such a case, the computation is performed
again with a rescaling, thus with an additional error term, but there is
a bug in the computation of this term), so that the result may be
rounded incorrectly (in particular, a spurious overflow is possible);
the second one occurs in a corner case (destination precision 1,
rounding to nearest, and where the rounded result assuming an unbounded
exponent range would be 2emin-2 and the exact result is larger than this
value), with the only consequence being a missing underflow exception
(the underflow flag is not set).
* 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
* MPFR can crash when a formatted output function is called with
%.2147483648Rg in the format string.
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/mpfr?expand=0&rev=80
mpfr 4.2.0:
* A test of the thousands separator in tsprintf.c is based on the
output from the GNU C Library up to 2.36, which is incorrect.
* The mpfr_ui_pow_ui function has infinite loop in case of overflow.
* The tfprintf and tprintf tests may fail in locales where decimal_point
has several bytes, such as ps_AF.
* In particular cases that are very hard to round, mpfr_rec_sqrt may yield
a stack overflow due to many small allocations in the stack, based on
alloca().
- Remove tests-tsprintf.patch that's included in the above set.
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/mpfr?expand=0&rev=78
* New functions mpfr_cosu, mpfr_sinu, mpfr_tanu, mpfr_acosu, mpfr_asinu,
mpfr_atanu and mpfr_atan2u.
* New functions mpfr_cospi, mpfr_sinpi, mpfr_tanpi, mpfr_acospi, mpfr_asinpi,
mpfr_atanpi and mpfr_atan2pi.
* New functions mpfr_log2p1, mpfr_log10p1, mpfr_exp2m1, mpfr_exp10m1 and
mpfr_compound_si.
* New functions mpfr_fmod_ui, mpfr_powr, mpfr_pown, mpfr_pow_uj, mpfr_pow_sj
and mpfr_rootn_si (mpfr_pown is actually a macro defined as an alias for
mpfr_pow_sj).
* Bug fixes.
In particular, for the formatted output functions (mpfr_printf, etc.),
the case where the precision consists only of a period has been fixed
to be like ".0" as specified in the ISO C standard, and the manual has
been corrected and clarified.
The macros of the custom interface have also been fixed: they now behave
like functions (except a minor limitation for mpfr_custom_init_set).
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/mpfr?expand=0&rev=74
* New function mpfr_get_str_ndigits about conversion to a string of digits.
* New function mpfr_dot for the dot product (incomplete, experimental).
* New functions mpfr_get_decimal128 and mpfr_set_decimal128 (available only
when MPFR has been built with decimal float support).
* New function mpfr_cmpabs_ui.
* New function mpfr_total_order_p for the IEEE 754 totalOrder predicate.
* The mpfr_out_str function now accepts bases from -2 to -36, in order to
follow mpfr_get_str and GMP's mpf_out_str functions (these cases gave an
assertion failure, as with other invalid bases).
* Shared caches: cleanup; really detect lock failures (abort in this case).
* The behavior of the formatted output functions (mpfr_printf, etc.) with
an empty precision field has improved: trailing zeros are kept in a way
similar to the formatted output functions from C.
* Improved mpfr_add and mpfr_sub when all operands have a precision equal to
twice the number of bits per word, e.g., 128 bits on a 64-bit platform.
* Optimized the tuning parameters for various architectures.
* Improved test coverage to 98.6% of code for x86_64.
* Bug fixes.
* MPFR manual: corrected/completed the mpfr_get_str description in order to
follow the historical behavior and GMP's mpf_get_str function.
- Remove mpfr-4.0.2-p6.patch and floating-point-format-no-lto.patch
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/mpfr?expand=0&rev=62
* A subtraction of two numbers of the same sign or addition of two
numbers of different signs can be rounded incorrectly (and the
ternary value can be incorrect) when one of the two inputs is
reused as the output (destination) and all these MPFR numbers
have exactly GMP_NUMB_BITS bits of precision (typically, 32 bits
on 32-bit machines, 64 bits on 64-bit machines).
* The mpfr_fma and mpfr_fms functions can behave incorrectly in case
of internal overflow or underflow.
* The result of the mpfr_sqr function can be rounded incorrectly
in a rare case near underflow when the destination has exactly
GMP_NUMB_BITS bits of precision (typically, 32 bits on 32-bit
machines, 64 bits on 64-bit machines) and the input has at most
GMP_NUMB_BITS bits of precision.
* The behavior and documentation of the mpfr_get_str function are
inconsistent concerning the minimum precision (this is related to
the change of the minimum precision from 2 to 1 in MPFR 4.0.0). The
get_str patch fixes this issue in the following way: the value 1
can now be provided for n (4th argument of mpfr_get_str); if n = 0,
then the number of significant digits in the output string can now
be 1, as already implied by the documentation (but the code was
increasing it to 2).
* The mpfr_cmp_q function can behave incorrectly when the rational
(mpq_t) number has a null denominator.
* The mpfr_inp_str and mpfr_out_str functions might behave
incorrectly when the stream is a null pointer: the stream is
replaced by stdin and stdout, respectively. This behavior is
useless, not documented (thus incorrect in case a null pointer
would have a special meaning), and not consistent with other
input/output functions.
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/mpfr?expand=0&rev=51
* The "dinde aux marrons" release.
* MPFR now depends on GMP 5.0+ instead of 4.1+.
* API change:
Applications that call GMP's mp_set_memory_functions function to change
the allocators must first call the new function mpfr_mp_memory_cleanup
in all threads where MPFR is potentially used; this new function is
currently equivalent to mpfr_free_cache.
The reason is that the way memory allocation is done by MPFR has changed
(again), so that the current GMP allocators are used (since for some
applications, the old allocators may become invalid).
Note: Freeing the caches like this might have a performance impact on some
particular applications; if this is an issue, this could be handled for a
future MPFR version.
* Mini-gmp support via the --enable-mini-gmp configure option (experimental).
* The minimum precision MPFR_PREC_MIN is now 1, with rounding defined as
in the errata of IEEE 754-2008 and in the following IEEE 754 revision
(ties rounded away from zero).
* Shared caches for multithreaded applications.
New function mpfr_free_cache2.
* Partial support of MPFR_RNDF (faithful rounding).
* New functions: mpfr_fpif_export and mpfr_fpif_import to export and import
numbers in a floating-point interchange format, independent both on the
number of bits per word and on the endianness.
* New function mpfr_fmodquo to return the low bits of the quotient
corresponding to mpfr_fmod.
* New functions mpfr_flags_clear, mpfr_flags_set, mpfr_flags_test,
mpfr_flags_save and mpfr_flags_restore to operate on groups of flags.
* New functions mpfr_set_float128 and mpfr_get_float128 to convert from/to
the __float128 type (requires --enable-float128 and compiler support).
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/mpfr?expand=0&rev=47
* The mpfr_urandom and mpfr_urandomb functions now return identical
values on processors with different word size.
* Speed improvement for the mpfr_sqr and mpfr_div functions using
Mulders' algorithm.
* Much faster formatted output (mpfr_printf, etc.) with %Rg and similar.
* New divide-by-zero exception (flag) and associated functions.
- Remove bogus provides/obsoletes for old shared library version.
- Fix license, it is LGPL v3 or later.
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/mpfr?expand=0&rev=16