GMP 6.2 is upwardly source and binary compatible with 6.1, 6.0, 5.1, 5.0,
4.x, and 3.x, except for applications that use the semi-documented
mpn_bdivmod
function.
Changes in GMP 6.2.1
BUGS FIXED
-
A possible overflow of type int is avoided for mpz_cmp on huge operands.
-
Overflows are more carefully detected and reported for mpz_pow_ui.
-
A bug in longlong.h for aarch64 sub_ddmmss, not affecting GMP, was healed.
-
Mini-GMP: mpz_out_str and mpq_out_str now correctly handle out
of range bases.
FEATURES
-
C90 compliance.
-
Initial support for Darwin on arm64, and improved portability.
-
Support for more processors.
SPEEDUPS
-
None, except indirectly through recognition of new CPUs.
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.
This release would not have been possible without the continuous work of
improvement, revision and refinement by the whole GMP team: Torbjörn
Granlund, Niels Möller, Marco Bodrato, and Marc Glisse.
Please see the GMP
manual for a complete list of GMP contributors.
There is a public repository for GMP, please see
the GMP repository usage instructions for
more information.