GMP 6.2.0 released

Torbjörn Granlund tg at
Sat Jan 18 21:55:22 UTC 2020

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:     (smallest)    (largest)

These files can also be found at the GNU main site as well as its many

Signature files are also available:

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

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

  * gmp_snprintf now correctly reports an error (returns -1) when snprintf

  * 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.

  * 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.

  * Major speedup for AMD Ryzen and Epyc thanks to an extensive set of assembly

  * Major speedup for IBM POWER9 thanks to assembly code making use of new madd

  * 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.

  * 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.

Please encrypt, key id 0xC8601622

More information about the gmp-announce mailing list