GMP 4.3 is upwardly source and binary compatible with 4.x and 3.x, except for
applications that use the semi-documented mpn_bdivmod
function.
Changes in GMP 4.3.2
Bugs:
- Fixed bug in mpf_eq.
- Fixed overflow issues in mpz_set_str, mpz_inp_str, mpf_set_str, and
mpf_get_str.
- Avoid unbounded stack allocation for unbalanced multiplication.
- Fixed bug in FFT multiplication.
Speedups:
- None, except that improved processor recognition helps affected
processors.
Features:
- Recognise more "Core 2" processor variants.
- The cofactors of mpz_gcdext and mpn_gcdext are now more strictly
normalised, returning to how GMP 4.2 worked.
Changes in GMP 4.3.1
Bugs:
- Fixed bug in mpn_gcdext, affecting also mpz_gcdext and mpz_invert.
The bug could cause a cofactor to have a leading zero limb, which
could lead to crashes or miscomputation later on.
- Fixed some minor documentation issues.
Speedups:
Features:
- Workarounds for various issues with Mac OS X's build tools.
- Recognise more IBM "POWER" processor variants.
Changes in GMP 4.3.0
Bugs:
- Fixed bug in mpz_perfect_power_p with recognition of negative perfect
powers that can be written both as an even and odd power.
- We might accidentally have added bugs since there is a large amount of
new code in this release.
Speedups:
- Vastly improved assembly code for x86-64 processors from AMD and Intel.
- Major improvements also for many other processor families, such as
Alpha, PowerPC, and Itanium.
- New sub-quadratic mpn_gcd and mpn_gcdext, as well as improved basecase
gcd code.
- The multiply FFT code has been slightly improved.
- Balanced multiplication now uses 4-way Toom in addition to schoolbook,
Karatsuba, 3-way Toom, and FFT.
- Unbalanced multiplication has been vastly improved.
- Improved schoolbook division by means of faster quotient approximation.
- Several new algorithms for division and mod by single limbs, giving
many-fold speedups.
- Improved nth root computations.
- The mpz_nextprime function uses sieving and is much faster.
- Countless minor tweaks.
Features:
- Updated support for fat binaries for x86_32 include current processors
- Lots of new mpn internal interfaces. Some of them will become public
in a future GMP release.
- Support for the 32-bit ABI under x86-apple-darwin.
- x86 CPU recognition code should now default better for future
processors.
- The experimental nails feature does not work in this release, but
it might be re-enabled in the future.
Misc:
- The gmp_version variable now always contains three parts. For this
release, it is "4.3.0".
In addition to Torbjörn Granlund, many people have contributed to GMP the
improvements of 4.3. See the
GMP manual for a complete
list of GMP contributors.
- David Harvey helped write the new x86-64 assembly code, and suggested
the new internal division-by-special-constant algorithm.
- Marco Bodrato and Niels Möller helped implement the new multiply code.
- Niels Möller wrote the new gcd code, and the new mpz_nextprime code.
- Niels Möller helped write some of the new division code, and suggested
some of the algorithms.
- Alberto Zanoni and Marco Bodrato suggested the unbalanced multiply
strategy.
- Peter Montgomery suggested the new mod-by-single-limb algorithm.
- Paul Zimmermann suggested the algorithm and helped write the new mpn
nth root code.
There is now a public repository for GMP, please
see the GMP repository usage instructions for
more information.
Torbjörn's work on GMP is sponsored
by Stiftelsen för Strategisk
Forskning, through CIAM.