From tg at gmplib.org Sat Jan 18 21:55:22 2020 From: tg at gmplib.org (=?utf-8?Q?Torbj=C3=B6rn?= Granlund) Date: Sat, 18 Jan 2020 22:55:22 +0100 Subject: GMP 6.2.0 released Message-ID: <86pnfgpgz9.fsf@shell.gmplib.org> A new major release of the GNU Multiple Precision Arithmetic Library (GMP) is now available. The new release is identified as 6.2.0. The release can be downloaded from here: https://gmplib.org/download/gmp/gmp-6.2.0.tar.lz (smallest) https://gmplib.org/download/gmp/gmp-6.2.0.tar.xz https://gmplib.org/download/gmp/gmp-6.2.0.tar.zst https://gmplib.org/download/gmp/gmp-6.2.0.tar.bz2 (largest) These files can also be found at the GNU main site as well as its many mirrors. Signature files are also available: https://gmplib.org/download/gmp/gmp-6.2.0.tar.lz.sig https://gmplib.org/download/gmp/gmp-6.2.0.tar.xz.sig https://gmplib.org/download/gmp/gmp-6.2.0.tar.zst.sig https://gmplib.org/download/gmp/gmp-6.2.0.tar.bz2.sig The 6.2.0 release contains a considerable amount of new code, and many improvements to existing code. Please see below for the some highlights. As usually, we repeat and underline: please run "make check" after you've built your library. And if "make check" stops with an error, do not use the compiled library. When this happens, you've almost surely run into a compiler bug, not a GMP bug, since we've of course made sure the library passes its own test suite. The first thing to try at this point is using a different compiler. See also https://gmplib.org/. We have further expanded our testing configurations to over 5000, and include Mini-GMP in almost all of these configurations. Thanks to both the broad testing and careful development, we expect this to be a very stable release. This release would not have been possible without the continuous work of improvement, revision and refinement by the whole GMP team: Marco Bodrato, Marc Glisse, Torbj?rn Granlund, and Niels M?ller. Important changes between GMP version 6.1.* and 6.2.0 BUGS FIXED * gmp_snprintf now correctly reports an error (returns -1) when snprintf does. * Conversion to double is now more robust even if the configuration process does not recognize the float format. * mpz_powm could return a not completely normalised value, when the exponent was 1 and the base < 0. * mpf_set_str could create invalid mpf_t variables for input strings with many leading zeros. FEATURES * New C++ functions factorial, primorial and fibonacci for mpz_class. * Functions to detect primality now substitute the first 24 Miller-Rabin iterations with the BPSW test. * Mini-GMP: new functions mpz_2fac_ui and mpz_mfac_uiui. * Mini-GMP: mpz_sizeinbase, mpz_get_str, and mpz_set_str now support bases up to 62. * Mini-GMP: added support for the mpq_t layer. * MIPS r6 cores are now supported. SPEEDUPS * Major speedup for AMD Ryzen and Epyc thanks to an extensive set of assembly code. * Major speedup for IBM POWER9 thanks to assembly code making use of new madd instruction. * Speedup for 64-bit ARM CPUs thanks to new/improved assembly code. * The n-over-k function mpz_bin_ui has been reimplemented for great speedups for large operands. * Speedup for the worst case of mpz_perfect_power_p. * Speedup for gcd for small and medium size operands. * Speedup for really huge multiplies thanks to much larger FFT tables. MISC * Internal representation of the mpz_t variables now supports lazy allocation; memory is allocated only when a value is stored. * Small improvements and better coverage for the test suite. * The tune/speed program can measure some more functions. * The low-level function mpn_mul no longer diverts to mpn_sqr, users should call mpn_sqr directly when applicable. * New installed files gmp.pc and gmpxx.pc, for use with pkg-config. Contributed by Hugh McMaster. -- Torbj?rn Please encrypt, key id 0xC8601622