Changes from version 4.0.0 to version 4.0.1:
- Bug fixes (see ChangeLog file), in particular in mpfr_div_ui, which
could yield an incorrectly rounded result to nearest when using
different precisions; this bug had been present since the introduction
of mpfr_div_ui, and in MPFR 4.0.0, it was affecting mpfr_div too.
Changes from versions 3.1.* to version 4.0.0:
- 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).
- New functions mpfr_buildopt_float128_p and mpfr_buildopt_sharedcache_p.
- New functions mpfr_rint_roundeven and mpfr_roundeven, completing the
other similar round-to-integer functions for rounding to nearest with
the even-rounding rule.
- New macro mpfr_round_nearest_away to add partial emulation of the
rounding to nearest-away (as defined in IEEE 754-2008).
- New functions mpfr_nrandom and mpfr_erandom to generate random numbers
following normal and exponential distributions respectively.
- New functions mpfr_fmma and mpfr_fmms to compute a*b+c*d and a*b-c*d.
- New function mpfr_rootn_ui, similar to mpfr_root, but agreeing with the
rootn function of the IEEE 754-2008 standard.
- New functions mpfr_log_ui to compute the logarithm of an integer,
mpfr_gamma_inc for the incomplete Gamma function.
- New function mpfr_beta for the Beta function (incomplete, experimental).
- New function mpfr_get_q to convert a floating-point number into rational.
- Dropped K&R C compatibility.
- Major speedup in mpfr_add, mpfr_sub, mpfr_mul, mpfr_div and mpfr_sqrt when
all operands have the same precision and this precision is less than twice
the number of bits per word, e.g., less than 128 on a 64-bit computer.
- Speedup by a factor of almost 2 in the double <--> mpfr conversions
(mpfr_set_d and mpfr_get_d).
- Speedup in mpfr_log1p and mpfr_atanh for small arguments.
- Speedup in the mpfr_const_euler function (contributed by Fredrik Johansson),
in the computation of Bernoulli numbers (used in mpfr_gamma, mpfr_li2,
mpfr_digamma, mpfr_lngamma and mpfr_lgamma), in mpfr_div, in mpfr_fma
and mpfr_fms.
notes:
- support for thumb-less ARM chips was in our port of 5.1.3, but a
similar method has been provided upstream now
- someone should look at the AVX failure reports, and fix them
Changes between GMP version 6.1.0 and 6.1.1
FEATURES
* Work around faulty cpuid on some recent Intel chips (this allows GMP to run
on Skylake Pentiums).
* Support thumb-less ARM chips.
Changes between GMP version 6.0.* and 6.1.0
BUGS FIXED
* The public function mpn_com is now correctly declared in gmp.h.
* Healed possible failures of mpn_sec_sqr for non-cryptographic sizes for
some obsolete CPUs.
* Various problems related to precision for mpf have been fixed.
* Fixed ABI incompatible stack alignment in calls from assembly code.
* Fixed PIC bug in popcount affecting Intel processors using the 32-bit ABI.
SPEEDUPS
* Speedup for Intel Broadwell and Skylake through assembly code making use of
new ADX instructions.
* Square root is now faster when the remainder is not needed. Also the speed
to compute the k-th root improved, for small sizes.
FEATURES
* New C++ functions gcd and lcm for mpz_class.
* New public mpn functions mpn_divexact_1, mpn_zero_p, and mpn_cnd_swap.
* New public mpq_cmp_z function, to efficiently compare rationals with
integers.
* Support for more 32-bit arm processors.
* Support for AVX-less modern x86 CPUs. (Such support might be missing either
because the CPU vendor chose to disable AVX, or because the running kernel
lacks AVX context switch support.)
* Support for NetBSD under Xen; we switch off AVX unconditionally under
NetBSD since a bug in NetBSD makes AVX fail under Xen.
MISC
* Tuned values for FFT multiplications are provided for larger number on
many platforms.
Changes between GMP version 5.1.* and 6.0.0
BUGS FIXED
* The function mpz_invert now considers any number invertible in Z/1Z.
* The mpn multiply code now handles operands of more than 2^31 limbs
correctly. (Note however that the mpz code is limited to 2^32 bits on
32-bit hosts and 2^37 bits on 64-bit hosts.)
SPEEDUPS
* Plain division of large operands is faster and more monotonous in operand
size.
* Major speedup for ARM, in particular ARM Cortex-A15, thanks to improved
assembly.
* Speedup for Intel Sandy Bridge, Ivy Bridge, Haswell, thanks to rewritten
and vastly expanded assembly support. Speedup also for the older Core 2
and Nehalem.
* Faster mixed arithmetic between mpq_class and double.
FEATURES
* Support for new Intel and AMD CPUs.
* New public functions mpn_sec_mul and mpn_sec_sqr, implementing side-channel
silent multiplication and squaring.
* New public functions mpn_sec_div_qr and mpn_sec_div_r, implementing
side-channel silent division.
* New public functions mpn_cnd_add_n and mpn_cnd_sub_n. Side-channel silent
conditional addition and subtraction.
* New public function mpn_sec_powm, implementing side-channel silent modexp.
* New public function mpn_sec_invert, implementing side-channel silent
modular inversion.
* Better support for applications which use the mpz_t type, but nevertheless
need to call some of the lower-level mpn functions. See the documentation
for mpz_limbs_read and related functions.
Changes from version 3.1.4 to version 3.1.5:
- C++11 compatibility.
- Bug fixes (see <http://www.mpfr.org/mpfr-3.1.4/#fixed> and ChangeLog file).
- More tests.
Changes from version 3.1.3 to version 3.1.4:
- Improved MPFR manual.
- Bug fixes (see <http://www.mpfr.org/mpfr-3.1.3/#fixed> and ChangeLog file).
- MinGW (MS Windows): Added support for thread-safe DLL (shared library).
Changes from version 3.1.2 to version 3.1.3:
- Better support for Automake 1.13+ (now used to generate the tarball).
- Improved MPFR manual.
- Bug fixes (see <http://www.mpfr.org/mpfr-3.1.2/#fixed> and ChangeLog file).
introducing since release of software to be recognised. This should hopefully
allow the builds to progress a littles further on systems such as the POWER8
which features a little endian 64-bit PowerPC CPU identified as ppc64le.
Arguably there should be some general mechanism, but there isn't yet,
and I hit a build failure at
cp ${.CURDIR}/arch/${GMP_MACHINE_ARCH}/config.m4 ${.OBJDIR}/config.m4
because my source tree is mode 444, and hence my previously-copied
config.m4 was too.