GMP 4.2 is upwardly binary compatible with older 4.x, and 3.x, except for
applications that use the semi-documented mpn_bdivmod
function.
Changes in GMP 4.2.4
Bugs:
- Fix bug with parsing exponent '+' sign in mpf.
- Fix an allocation bug in mpf_set_str, also affecting mpf_init_set_str, and
mpf_inp_str.
Speedups:
- None, except that proper processor recognition helps affected processors.
Features:
- Recognize new AMD processors.
Changes in GMP 4.2.3
Bugs:
- Fix x86 CPU recognition code to properly identify recent AMD and Intel
64-bit processors.
- The >> operator of the C++ wrapper gmpxx.h now does floor rounding, not
truncation.
- Inline semantics now follow the C99 standard, and works with recent GCC
releases.
- C++ bitwise logical operations work for more types.
- For C++, gmp.h now includes cstdio, improving compiler compatibility.
- Bases > 36 now work properly in mpf_set_str.
Speedups:
- None, except that proper processor recognition helps affected processors.
Features:
- The allocation functions now detect overflow of the mpz_t type. This means
that overflow will now cause an abort, except when the allocation
computation itself overflows. (Such overflow can probably only happen in
powering functions; we will detect powering overflow in the future.)
Changes in GMP 4.2.2
- License is now LGPL version 3.
Bugs:
- Shared library numbers corrected for libcxx.
- Fixed serious bug in gmpxx.h where a=a+b*c would generate garbage.
Note that this only affects C++ programs.
- Fix crash in mpz_set_d for arguments with large negative exponent.
- Fix 32-bit ABI bug with Itanium assembly for popcount and hamdist.
- Fix assembly syntax problem for powerpc-ibm-aix with AIX native assembler.
- Fix problems with x86 --enable-fat, where the compiler was told to
generate code for the build machine, not plain i386 code as it should.
- Improved recognition of powerpc systems wrt Altivec/VMX capability.
- Misc minor fixes, mainly workarounds for compiler/assembler bugs.
Speedups:
- "Core 2" and Pentium 4 processors, running in 64-bit mode will get a
slight boost as they are now specifically recognized.
Features:
- New support for x86_64-solaris
- New, rudimentary support for x86-apple-darwin and x86_64-apple-darwin.
(Please see
the macos problem page
for more information.)
Changes in GMP 4.2.1
Bugs:
- Shared library numbers corrected.
- Broken support for 32-bit AIX fixed.
- Bug fixed in hamdist/popcount for powerpc64 mode32.
- Misc minor fixes.
Speedups:
- Exact division (mpz_divexact) now falls back to plain division for large
operands.
Features:
- Support for some new systems.
Changes in GMP 4.2
Bugs:
- Minor bug fixes and code generalizations.
Speedups:
- Many minor optimizations, too many to mention here.
- Division now always subquadratic.
- Computation of n-factorial much faster.
- Added basic x86-64 assembly code.
- Floating-point output is now subquadratic for all bases.
- FFT multiply code now about 25% faster.
- Toom3 multiply code faster.
Features:
- Much improved configure.
- Temporary allocations are now made on the stack only if small.
- New systems supported: HPPA-2.0 gcc, IA-64 HP-UX, PowerPC-64 Darwin,
Sparc64 GNU/Linux.
- New i386 fat binaries, selecting optimised code at runtime (--enable-fat).
- New build option: --enable-profiling=instrument.
- New memory function: mp_get_memory_functions.
- New Mersenne Twister random numbers: gmp_randinit_mt, also now used for
gmp_randinit_default.
- New random functions: gmp_randinit_set, gmp_urandomb_ui, gmp_urandomm_ui.
- New integer functions: mpz_combit, mpz_rootrem.
- gmp_printf etc new type "M" for mp_limb_t.
- gmp_scanf and friends now accept C99 hex floats.
- Numeric input and output can now be in bases up to 62.
- Comparisons mpz_cmp_d, mpz_cmpabs_d, mpf_cmp_d recognise infinities.
- Conversions mpz_get_d, mpq_get_d, mpf_get_d truncate towards zero,
previously their behaviour was unspecified.
- Fixes for overflow issues with operands >= 231 bits.
Mis-features:
- mpfr is gone, and will from now on be released only separately. Please
see the MPFR web pages.