diff options
author | Denis Bitouzé <dbitouze@wanadoo.fr> | 2021-02-25 18:23:07 +0000 |
---|---|---|
committer | Denis Bitouzé <dbitouze@wanadoo.fr> | 2021-02-25 18:23:07 +0000 |
commit | c6101f91d071883b48b1b4b51e5eba0f36d9a78d (patch) | |
tree | 1bf7f5a881d7a4f5c5bf59d0b2821943dd822372 /Build/source/libs/gmp/gmp-src/NEWS | |
parent | 07ee7222e389b0777456b427a55c22d0e6ffd267 (diff) |
French translation for tlmgr updated
git-svn-id: svn://tug.org/texlive/trunk@57912 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs/gmp/gmp-src/NEWS')
-rw-r--r-- | Build/source/libs/gmp/gmp-src/NEWS | 1079 |
1 files changed, 0 insertions, 1079 deletions
diff --git a/Build/source/libs/gmp/gmp-src/NEWS b/Build/source/libs/gmp/gmp-src/NEWS deleted file mode 100644 index 6fc3ae425bc..00000000000 --- a/Build/source/libs/gmp/gmp-src/NEWS +++ /dev/null @@ -1,1079 +0,0 @@ -Copyright 1996, 1999-2016, 2018-2020 Free Software Foundation, Inc. - -Verbatim copying and distribution of this entire article is permitted in any -medium, provided this notice is preserved. - -Changes between GMP version 6.2.0 and 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. - - MISC - * None. - -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. - -Changes between GMP version 6.1.1 and 6.1.2 - - BUGS FIXED - * Mini-GMP: Fixed a division bug, which on a machine with 64-bit - unsigned long affects approximately 1 out of 2^32 divisors. - - * Mini-GMP: Fix mpz_set_str crash on inputs with a large number of - leading zeros. Also stricter input validation, rejecting inputs - with no digits. - - FEATURES - * Handle more systems which require PIC code in static libraries (e.g., - "hardened" Gentoo and Debian 9). - - * Configuration for arm (-32 and -64) has been rewritten, fixing poor - code selection for many CPUs. - - * Mini-GMP: Updated to the latest development version, including - new functions mpn_com and mpn_neg. - - SPEEDUPS - * None, except for arm CPUs affected by the configuration rewrite. - - MISC - - - -Changes between GMP version 6.1.0 and 6.1.1 - - BUGS FIXED - * Make Intel Broadwell configurations work on Windows. - - FEATURES - * Work around faulty cpuid on some recent Intel chips (this allows GMP to run - on Skylake Pentiums). - - * Support thumb-less ARM chips. - -Changes between GMP version 6.0.* and 6.1.0 - - BUGS FIXED - * The public function mpn_com is now correctly declared in gmp.h. - - * Healed possible failures of mpn_sec_sqr for non-cryptographic sizes for - some obsolete CPUs. - - * The option --disable-assembly now disables all inlined asm. - - * Fixed bug affecting mini-gmp's bitwise functions mpz_setbit, mpz_clrbit, - and mpz_combit. - - * Various problems related to precision for mpf have been fixed. - - * Fixed ABI incompatible stack alignment in calls from assembly code. - - * Fixed PIC bug in popcount affecting Intel processors using the 32-bit ABI. - - SPEEDUPS - * Speedup for Intel Broadwell and Skylake through assembly code making use of - new ADX instructions. - - * Square root is now faster when the remainder is not needed. Also the speed - to compute the k-th root improved, for small sizes. - - * Improved arm64 support. - - FEATURES - * New C++ functions gcd and lcm for mpz_class. - - * New public mpn functions mpn_divexact_1, mpn_zero_p, and mpn_cnd_swap. - - * New public mpq_cmp_z function, to efficiently compare rationals with - integers. - - * Support for Darwin in all x86 code, thereby enabling fat builds on Darwin. - - * Support for more 32-bit arm processors. - - * Support for compilation with clang/llvm on more platforms. Caution: GMP - triggers mis-compilation bugs in clang for many platforms, such as arm, x86 - (32-bit and 64-bit), powerpc, mips. - - * Support for AVX-less modern x86 CPUs. (Such support might be missing either - because the CPU vendor chose to disable AVX, or because the running kernel - lacks AVX context switch support.) - - * Stack usage trimmed; we believe 512 KiB is now sufficient for any GMP - call, irrespective of operand size. - - * Support for NetBSD under Xen; we switch off AVX unconditionally under - NetBSD since a bug in NetBSD makes AVX fail under Xen. - - MISC - * We now use manufacturers' code names for x86 CPUs, e.g., "haswell" instead - of names derived from the commercial brands. - - * Small improvements and better coverage for the test suite. - - * The various FreeBSD problems listed for 6.0.0 affect this release too. - - * Tuned values for FFT multiplications are provided for larger number on - many platforms. - -Changes between GMP version 5.1.* and 6.0.0 - - BUGS FIXED - * The function mpz_invert now considers any number invertible in Z/1Z. - - * The mpn multiply code now handles operands of more than 2^31 limbs - correctly. (Note however that the mpz code is limited to 2^32 bits on - 32-bit hosts and 2^37 bits on 64-bit hosts.) - - * Contains all fixes from release 5.1.3. - - SPEEDUPS - * Plain division of large operands is faster and more monotonous in operand - size. - - * Major speedup for ARM, in particular ARM Cortex-A15, thanks to improved - assembly. - - * Major speedup for SPARC T4/T5 and speedup also for T3, thanks to a lot of - new assembly. - - * Speedup for Intel Sandy Bridge, Ivy Bridge, Haswell, thanks to rewritten - and vastly expanded assembly support. Speedup also for the older Core 2 - and Nehalem. - - * Faster mixed arithmetic between mpq_class and double. - - * With g++, optimise more operations when one argument is a simple constant. - - FEATURES - * Support for new Intel and AMD CPUs. - - * Support for ARM64 alias Aarch64 alias ARMv8. - - * New public functions mpn_sec_mul and mpn_sec_sqr, implementing side-channel - silent multiplication and squaring. - - * New public functions mpn_sec_div_qr and mpn_sec_div_r, implementing - side-channel silent division. - - * New public functions mpn_cnd_add_n and mpn_cnd_sub_n. Side-channel silent - conditional addition and subtraction. - - * New public function mpn_sec_powm, implementing side-channel silent modexp. - - * New public function mpn_sec_invert, implementing side-channel silent - modular inversion. - - * Better support for applications which use the mpz_t type, but nevertheless - need to call some of the lower-level mpn functions. See the documentation - for mpz_limbs_read and related functions. - - MISC - * This release will not work on NetBSD 5.x, FreeBSD 7.x, 8.x or 9 series - before 9.3. The reason is that the m4 command is not correctly - implemented. (Workaround: Use an older GMP release, or install GNU m4 from - /usr/ports and tell GMP to use it.) - - * This release will not build properly on FreeBSD/amd64 before version 10 - using the 32-bit ABI (once a working m4 is installed). The reason is - broken limits.h. (Workaround: Use an older GMP release if using the 32-bit - ABI on these FreeBSD releases is important.) - - * This release will not work reliably on FreeBSD 10.0 for i386 or amd64 using - the 32-bit ABI. The reason is bugs in the compiler 'clang'. Depending on - CPU-dependent compiler flags, GMP may or may not be miscompiled in a - particular build. (Workaround: Compiling gcc from /usr/ports should work, - except that gcc circularly depends on GMP; we have not been able to test - that workaround due to FreeBSD 10.0 bugs affecting its ability to run under - KVM and Xen.) - - * This release will not compile on FreeBSD before version 10 for i386, - targeting any modern AMD processor. The reason is bugs in the old gcc - bundled with FreeBSD. (Workaround: install a less obsolete gcc from - /usr/ports and tell GMP to use it, or override the -march=amdfam10 - GMP configure command line argument.) - - -Changes between GMP version 5.1.2 and 5.1.3 - - BUGS FIXED - * The internal functions mpn_sbpi1_div_qr_sec mpn_sbpi1_div_r_sec could - compute garbage with a low probability. They are now rewritten, and the - test code has been improved. - - * A bug in the ia64 implementation of mpn_divrem_2, clobbering some - callee-save registers, has been fixed. This is an internal - function, with the bug manifesting itself as miscomputation in, - e.g., mpn_sqrtrem. - - * The documentation now correctly says 'const' for input arguments. - - SPEEDUPS - * None. - - FEATURES - * None. - - MISC - * None. - - -Changes between GMP version 5.1.1 and 5.1.2 - - BUGS FIXED - * A bug in mpz_powm_ui triggered by base arguments of at least 15000 decimal - digits or mod arguments of at least 7500 decimal digits has been fixed. - - * An AMD Bulldozer specific bug affecting the 64-bit Windows ABI has been - fixed. This bug was in a key function (mpn_mul_1) and made both Bulldozer - specific builds and fat builds run on Bulldozer completely non-functional. - - SPEEDUPS - * None. - - FEATURES - * None. - - MISC - * Fixes and generalisations to the test suite. - - * Minor portability enhancements. - - -Changes between GMP version 5.1.0 and 5.1.1 - - BUGS FIXED - * On Windows 64-bit, an error causing link errors about - __gmp_binvert_limb_table has been fixed. - - * Aarch64 alias ARM64 support now works. - - * A possible buffer overrun in mpz_ior has been fixed. - - * A rare sign flip in mpz_remove has been fixed. - - * A bug causing problems with mpf numbers with absolute value >= 2^31 has - been fixed. - - * Several bugs in mini-gmp have been fixed. - - * A bug caused by automake, related to the 'distcheck' target, has been fixed - by upgrading the automake used for GMP release engineering. - - SPEEDUPS - * None. - - FEATURES - * Preliminary support for the x32 ABI under x86-64. - - MISC - * The mini-gmp testsuite now tests the entire set of functions. - - * Various improvements of the GMP testsuite. - - -Changes between GMP version 5.0.* and 5.1.0 - - BUGS FIXED - * When reading a C++ number (like mpz_class) in an istream reaches the end - of the stream, the eofbit is now set. - - * The result sign of mpz_rootrem's remainder is now always correct. - - * The mpz_remove function now handles negative divisors. - - * Contains all fixes from release 5.0.5. - - SPEEDUPS - * The n-factorial and n-over-k functions have been reimplemented for great - speedups for small and large operands. - - * New subquadratic algorithm for the Kronecker/Jacobi/Legendre symbol. - - * Major speedup for ARM, in particular ARM Cortex-A9 and A15, thanks to broad - assembly support. - - * Significant speedup for POWER6 and POWER7 thanks to improved assembly. - - * The performance under M$ Windows' 64-bit ABI has been greatly improved - thanks to complete assembly support. - - * Minor speed improvements of many functions and for many platforms. - - FEATURES - * Many new CPUs recognised. - - * New functions for multi-factorials, and primorial: mpz_2fac_ui, - mpz_mfac_uiui and mpz_primorial_ui. - - * The mpz_powm_sec function now uses side-channel silent division for - converting into Montgomery residues. - - * The fat binary mechanism is now more robust in its CPU recognition. - - MISC - * Inclusion of assembly code is now controlled by the configure options - --enable-assembly and --disable-assembly. The "none" CPU target is gone. - - * In C++, the conversions mpq_class->mpz_class, mpf_class->mpz_class and - mpf_class->mpq_class are now explicit. - - * Includes "mini-gmp", a small, portable, but less efficient, implementation - of a subset of GMP's mpn and mpz interfaces. Used in GMP bootstrap, but it - can also be bundled with applications as a fallback when the real GMP - library is unavailable. - - * The ABIs under AIX are no longer called aix32 and aix64, but mode64 and 32. - This is more consistent with other powerpc systems. - - * The coverage of the testsuite has been improved, using the lcov tool. See - also https://gmplib.org/devel/lcov/. - - * It is now possible to compile GMP using a C++ compiler. - - * K&R C compilers are no longer supported. - - * The BSD MP compatibility functions have been removed. - - -Changes between GMP version 5.0.4 and 5.0.5 - - BUGS FIXED - * A bug causing AMD 11h processors to be treated like AMD 10h has been fixed. - The 11h processors do not correctly handle all 10h (aka K10) instructions, - and GMP's use of these instructions results in major miscomputations (not - as one would have hoped CPU traps of some 'illegal instruction' sort). - - * A bug affecting recent Intel Sandy Bridge CPUs resulting in configuration - failures has been fixed. - - SPEEDUPS - * None. - - FEATURES - * A couple of tests added to the self-check suite. - - MISC - * None. - - -Changes between GMP version 5.0.3 and 5.0.4 - - BUGS FIXED - * Thresholds in mpn_powm_sec for both fat and non-fat builds are now used - safely, plugging a one-word buffer overrun introduced in the 5.0.3 release - (for non-fat) and a multi-word buffer overrun that existed since 5.0 (for - fat). (We have not been able to provoke malign stack smashing in any of - the ~100 configurations explored by the GMP nightly builds, but the bug - should be assumed to be exploitable.) - - * Two bugs in multiplication code causing incorrect computation with - extremely low probability have been fixed. - - * A bug in the test suite causing buffer overruns during "make check", - sometimes leading to subsequent malloc crashes, has been fixed. - - * Two bugs in the gcd code have been fixed. They could lead to incorrect - results, but for uniformly distributed random operands, the likelihood for - that is infinitesimally small. (There was also a third bug, but that was - an incorrect ASSERT, which furthermore was not enabled by default.) - - * A bug affecting 32-bit PowerPC division has been fixed. The bug caused - miscomputation for certain divisors in the range 2^32 ... 2^64-1 (about 1 - in 2^30 of these). - - SPEEDUPS - * None, except indirectly through recognition of new CPUs, and through better - tuning parameters. - - FEATURES - * Some more tests added to the self-check suite. - - * The AMD "Bulldozer" CPU is now recognised. - - MISC - * None. - - -Changes between GMP version 5.0.2 and 5.0.3 - - BUGS FIXED - * A few minor bugs related to portability fixed. - - * A slight timing leak of the powm_sec functions have been sealed. (This - leak could possibly be used to extract the most significant few bits of the - exponent. "Few" here means at most 10.) - - * The mpz_nextprime function now runs a safer number of pseudo-random prime - tests. - - * A bug in division code possibly causing incorrect computation was fixed. - - SPEEDUPS - * None, except indirectly through recognition of new CPUs, and through better - tuning parameters. - - FEATURES - * New CPUs recognised. - - * IBM S/390 are now supported in both 31/32-bit and 64-bit mode. (We have - not been able to fully test this on any multilib machine, since IBM expired - our guest account a few days before our release.) - - MISC - * None. - - -Changes between GMP version 5.0.1 and 5.0.2 - - BUGS FIXED - * Many minor bugs related to portability fixed. - - * The support for HPPA 2.0N now works, after an assembly bug fix. - - * A test case type error has been fixed. The symptom of this bug was - spurious 'make check' failures. - - SPEEDUPS - * None, except indirectly through recognition of new CPUs. - - FEATURES - * Fat builds are now supported for 64-bit x86 processors also under Darwin. - - MISC - * None. - - -Changes between GMP version 5.0.0 and 5.0.1 - - BUGS FIXED - * Fat builds fixed. - - * Fixed crash for huge multiplies when old FFT_TABLE2 type of parameter - selection tables' sentinel was smaller than multiplied operands. - - * The solib numbers now reflect the removal of the documented but preliminary - mpn_bdivmod function; we correctly flag incompatibility with GMP 4.3. GMP - 5.0.0 has this wrong, and should perhaps be uninstalled to avoid confusion. - - SPEEDUPS - * Multiplication of large numbers has indirectly been sped up through better - FFT tuning and processor recognition. Since many operations depend on - multiplication, there will be a general speedup. - - FEATURES - * More Core i3, i5 an Core i7 processor models are recognised. - - * Fixes and workarounds for Mac OS quirks should make this GMP version build - using many of the different versions of "Xcode". - - MISC - * The amount of scratch memory needed for multiplication of huge numbers has - been reduced substantially (but is still larger than in GMP 4.3.) - - * Likewise, the amount of scratch memory needed for division of large numbers - has been reduced substantially. - - * The FFT tuning code of tune/tuneup.c has been completely rewritten, and - new, large FFT parameter selection tables are provided for many machines. - - * Upgraded to the latest autoconf, automake, libtool. - - -Changes between GMP version 4.3.X and 5.0.0 - - BUGS FIXED - * None (contains the same fixes as release 4.3.2). - - SPEEDUPS - * Multiplication has been overhauled: - (1) Multiplication of larger same size operands has been improved with - the addition of two new Toom functions and a new internal function - mpn_mulmod_bnm1 (computing U * V mod (B^n-1), B being the word base. - This latter function is used for the largest products, waiting for a - better Schoenhage-Strassen U * V mod (B^n+1) implementation. - (2) Likewise for squaring. - (3) Multiplication of different size operands has been improved with the - addition of many new Toom function, and by selecting underlying - functions better from the main multiply functions. - - * Division and mod have been overhauled: - (1) Plain "schoolbook" division is reimplemented using faster quotient - approximation. - (2) Division Q = N/D, R = N mod D where both the quotient and remainder - are needed now runs in time O(M(log(N))). This is an improvement of - a factor log(log(N)) - (3) Division where just the quotient is needed is now O(M(log(Q))) on - average. - (4) Modulo operations using Montgomery REDC form now take time O(M(n)). - (5) Exact division Q = N/D by means of mpz_divexact has been improved - for all sizes, and now runs in time O(M(log(N))). - - * The function mpz_powm is now faster for all sizes. Its complexity has - gone from O(M(n)log(n)m) to O(M(n)m) where n is the size of the modulo - argument and m is the size of the exponent. It is also radically - faster for even modulus, since it now partially factors such modulus - and performs two smaller modexp operations, then uses CRT. - - * The internal support for multiplication yielding just the lower n limbs - has been improved by using Mulders' algorithm. - - * Computation of inverses, both plain 1/N and 1/N mod B^n have been - improved by using well-tuned Newton iterations, and wrap-around - multiplication using mpn_mulmod_bnm1. - - * A new algorithm makes mpz_perfect_power_p asymptotically faster. - - * The function mpz_remove uses a much faster algorithm, is better tuned, - and also benefits from the division improvements. - - * Intel Atom and VIA Nano specific optimisations. - - * Plus hundreds of smaller improvements and tweaks! - - FEATURES - * New mpz function: mpz_powm_sec for side-channel quiet modexp - computations. - - * New mpn functions: mpn_sqr, mpn_and_n, mpn_ior_n, mpn_xor_n, mpn_nand_n, - mpn_nior_n, mpn_xnor_n, mpn_andn_n, mpn_iorn_n, mpn_com, mpn_neg, - mpn_copyi, mpn_copyd, mpn_zero. - - * The function mpn_tdiv_qr now allows certain argument overlap. - - * Support for fat binaries for 64-bit x86 processors has been added. - - * A new type, mp_bitcnt_t for bignum bit counts, has been introduced. - - * Support for Windows64 through mingw64 has been added. - - * The cofactors of mpz_gcdext and mpn_gcdext are now more strictly - normalised, returning to how GMP 4.2 worked. (Note that also release - 4.3.2 has this change.) - - MISC - * The mpn_mul function should no longer be used for squaring, - instead use the new mpn_sqr. - - * The algorithm selection has been improved, the number of thresholds have - more than doubled, and the tuning and use of existing thresholds have - been improved. - - * The tune/speed program can measure many of new functions. - - * The mpn_bdivmod function has been removed. We do not consider this an - incompatible change, since the function was marked as preliminary. - - * The testsuite has been enhanced in various ways. - - -Changes between GMP version 4.3.1 and 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 proper 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 between GMP version 4.3.0 and 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: - * None. - - Features: - * Workarounds for various issues with Mac OS X's build tools. - * Recognise more IBM "POWER" processor variants. - - -Changes between GMP version 4.2.X and 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". - - -Changes between GMP version 4.2.3 and 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 between GMP version 4.2.2 and 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 between GMP version 4.2.1 and 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 where 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 https://gmplib.org/macos.html for more information.) - - -Changes between GMP version 4.2 and 4.2.1 - - Bugs: - * Shared library numbers corrected. - * Broken support for 32-bit AIX fixed. - * Misc minor fixes. - - Speedups: - * Exact division (mpz_divexact) now falls back to plain division for large - operands. - - Features: - * Support for some new systems. - - -Changes between GMP version 4.1.4 and 4.2 - - Bugs: - * Minor bug fixes and code generalizations. - * Expanded and improved test suite. - - 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. - * Workarounds for many more compiler bugs. - * 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 >= 2^31 bits. - - Caveats: - * mpfr is gone, and will from now on be released only separately. Please see - www.mpfr.org. - - -Changes between GMP version 4.1.3 and 4.1.4 - -* Bug fix to FFT multiplication code (crash for huge operands). -* Bug fix to mpf_sub (miscomputation). -* Support for powerpc64-gnu-linux. -* Better support for AMD64 in 32-bit mode. -* Upwardly binary compatible with 4.1.3, 4.1.2, 4.1.1, 4.1, 4.0.1, 4.0, - and 3.x versions. - - -Changes between GMP version 4.1.2 and 4.1.3 - -* Bug fix for FFT multiplication code (miscomputation). -* Bug fix to K6 assembly code for gcd. -* Bug fix to IA-64 assembly code for population count. -* Portability improvements, most notably functional AMD64 support. -* mpz_export allows NULL for countp parameter. -* Many minor bug fixes. -* mpz_export allows NULL for countp parameter. -* Upwardly binary compatible with 4.1.2, 4.1.1, 4.1, 4.0.1, 4.0, and 3.x - versions. - - -Changes between GMP version 4.1.1 and 4.1.2 - -* Bug fixes. - - -Changes between GMP version 4.1 and 4.1.1 - -* Bug fixes. -* New systems supported: NetBSD and OpenBSD sparc64. - - -Changes between GMP version 4.0.1 and 4.1 - -* Bug fixes. -* Speed improvements. -* Upwardly binary compatible with 4.0, 4.0.1, and 3.x versions. -* Asymptotically fast conversion to/from strings (mpz, mpq, mpn levels), but - also major speed improvements for tiny operands. -* mpn_get_str parameter restrictions relaxed. -* Major speed improvements for HPPA 2.0 systems. -* Major speed improvements for UltraSPARC systems. -* Major speed improvements for IA-64 systems (but still sub-optimal code). -* Extended test suite. -* mpfr is back, with many bug fixes and portability improvements. -* New function: mpz_ui_sub. -* New functions: mpz_export, mpz_import. -* Optimization for nth root functions (mpz_root, mpz_perfect_power_p). -* Optimization for extended gcd (mpz_gcdext, mpz_invert, mpn_gcdext). -* Generalized low-level number format, reserving a `nails' part of each - limb. (Please note that this is really experimental; some functions - are likely to compute garbage when nails are enabled.) -* Nails-enabled Alpha 21264 assembly code, allowing up to 75% better - performance. (Use --enable-nails=4 to enable it.) - - -Changes between GMP version 4.0 and 4.0.1 - -* Bug fixes. - - -Changes between GMP version 3.1.1 and 4.0 - -* Bug fixes. -* Speed improvements. -* Upwardly binary compatible with 3.x versions. -* New CPU support: IA-64, Pentium 4. -* Improved CPU support: 21264, Cray vector systems. -* Support for all MIPS ABIs: o32, n32, 64. -* New systems supported: Darwin, SCO, Windows DLLs. -* New divide-and-conquer square root algorithm. -* New algorithms chapter in the manual. -* New malloc reentrant temporary memory method. -* New C++ class interface by Gerardo Ballabio (beta). -* Revamped configure, featuring ABI selection. -* Speed improvements for mpz_powm and mpz_powm_ui (mainly affecting small - operands). -* mpz_perfect_power_p now properly recognizes 0, 1, and negative perfect - powers. -* mpz_hamdist now supports negative operands. -* mpz_jacobi now accepts non-positive denominators. -* mpz_powm now supports negative exponents. -* mpn_mul_1 operand overlap requirements relaxed. -* Float input and output uses locale specific decimal point where available. -* New gmp_printf, gmp_scanf and related functions. -* New division functions: mpz_cdiv_q_2exp, mpz_cdiv_r_2exp, mpz_divexact_ui. -* New divisibility tests: mpz_divisible_p, mpz_divisible_ui_p, - mpz_divisible_2exp_p, mpz_congruent_p, mpz_congruent_ui_p, - mpz_congruent_2exp_p. -* New Fibonacci function: mpz_fib2_ui. -* New Lucas number functions: mpz_lucnum_ui, mpz_lucnum2_ui. -* Other new integer functions: mpz_cmp_d, mpz_cmpabs_d, mpz_get_d_2exp, - mpz_init2, mpz_kronecker, mpz_lcm_ui, mpz_realloc2. -* New rational I/O: mpq_get_str, mpq_inp_str, mpq_out_str, mpq_set_str. -* Other new rational functions: mpq_abs, mpq_cmp_si, mpq_div_2exp, - mpq_mul_2exp, mpq_set_f. -* New float tests: mpf_integer_p, mpf_fits_sint_p, mpf_fits_slong_p, - mpf_fits_sshort_p, mpf_fits_uint_p, mpf_fits_ulong_p, mpf_fits_ushort_p. -* Other new float functions: mpf_cmp_d, mpf_get_default_prec, mpf_get_si, - mpf_get_ui, mpf_get_d_2exp. -* New random functions: gmp_randinit_default, gmp_randinit_lc_2exp_size. -* New demo expression string parser (see demos/expr). -* New preliminary perl interface (see demos/perl). -* Tuned algorithm thresholds for many more CPUs. - - -Changes between GMP version 3.1 and 3.1.1 - -* Bug fixes for division (rare), mpf_get_str, FFT, and miscellaneous minor - things. - - -Changes between GMP version 3.0 and 3.1 - -* Bug fixes. -* Improved `make check' running more tests. -* Tuned algorithm cutoff points for many machines. This will improve speed for - a lot of operations, in some cases by a large amount. -* Major speed improvements: Alpha 21264. -* Some speed improvements: Cray vector computers, AMD K6 and Athlon, Intel P5 - and Pentium Pro/II/III. -* The mpf_get_prec function now works as it did in GMP 2. -* New utilities for auto-tuning and speed measuring. -* Multiplication now optionally uses FFT for very large operands. (To enable - it, pass --enable-fft to configure.) -* Support for new systems: Solaris running on x86, FreeBSD 5, HP-UX 11, Cray - vector computers, Rhapsody, Nextstep/Openstep, MacOS. -* Support for shared libraries on 32-bit HPPA. -* New integer functions: mpz_mul_si, mpz_odd_p, mpz_even_p. -* New Kronecker symbol functions: mpz_kronecker_si, mpz_kronecker_ui, - mpz_si_kronecker, mpz_ui_kronecker. -* New rational functions: mpq_out_str, mpq_swap. -* New float functions: mpf_swap. -* New mpn functions: mpn_divexact_by3c, mpn_tdiv_qr. -* New EXPERIMENTAL function layer for accurate floating-point arithmetic, mpfr. - To try it, pass --enable-mpfr to configure. See the mpfr subdirectory for - more information; it is not documented in the main GMP manual. - - -Changes between GMP version 3.0 and 3.0.1 - -* Memory leaks in gmp_randinit and mpz_probab_prime_p fixed. -* Documentation for gmp_randinit fixed. Misc documentation errors fixed. - - -Changes between GMP version 2.0 and 3.0 - -* Source level compatibility with past releases (except mpn_gcd). -* Bug fixes. -* Much improved speed thanks to both host independent and host dependent - optimizations. -* Switch to autoconf/automake/libtool. -* Support for building libgmp as a shared library. -* Multiplication and squaring using 3-way Toom-Cook. -* Division using the Burnikel-Ziegler method. -* New functions computing binomial coefficients: mpz_bin_ui, mpz_bin_uiui. -* New function computing Fibonacci numbers: mpz_fib_ui. -* New random number generators: mpf_urandomb, mpz_rrandomb, mpz_urandomb, - mpz_urandomm, gmp_randclear, gmp_randinit, gmp_randinit_lc_2exp, - gmp_randseed, gmp_randseed_ui. -* New function for quickly extracting limbs: mpz_getlimbn. -* New functions performing integer size tests: mpz_fits_sint_p, - mpz_fits_slong_p, mpz_fits_sshort_p, mpz_fits_uint_p, mpz_fits_ulong_p, - mpz_fits_ushort_p. -* New mpf functions: mpf_ceil, mpf_floor, mpf_pow_ui, mpf_trunc. -* New mpq function: mpq_set_d. -* New mpz functions: mpz_addmul_ui, mpz_cmpabs, mpz_cmpabs_ui, mpz_lcm, - mpz_nextprime, mpz_perfect_power_p, mpz_remove, mpz_root, mpz_swap, - mpz_tdiv_ui, mpz_tstbit, mpz_xor. -* New mpn function: mpn_divexact_by3. -* New CPU support: DEC Alpha 21264, AMD K6 and Athlon, HPPA 2.0 and 64, - Intel Pentium Pro and Pentium-II/III, Sparc 64, PowerPC 64. -* Almost 10 times faster mpz_invert and mpn_gcdext. -* The interface of mpn_gcd has changed. -* Better support for MIPS R4x000 and R5000 under Irix 6. -* Improved support for SPARCv8 and SPARCv9 processors. - - -Changes between GMP version 2.0 and 2.0.2 - -* Many bug fixes. - - -Changes between GMP version 1.3.2 and 2.0 - -* Division routines in the mpz class have changed. There are three classes of - functions, that rounds the quotient to -infinity, 0, and +infinity, - respectively. The first class of functions have names that begin with - mpz_fdiv (f is short for floor), the second class' names begin with mpz_tdiv - (t is short for trunc), and the third class' names begin with mpz_cdiv (c is - short for ceil). - - The old division routines beginning with mpz_m are similar to the new - mpz_fdiv, with the exception that some of the new functions return useful - values. - - The old function names can still be used. All the old functions names will - now do floor division, not trunc division as some of them used to. This was - changed to make the functions more compatible with common mathematical - practice. - - The mpz_mod and mpz_mod_ui functions now compute the mathematical mod - function. I.e., the sign of the 2nd argument is ignored. - -* The mpq assignment functions do not canonicalize their results. A new - function, mpq_canonicalize must be called by the user if the result is not - known to be canonical. -* The mpn functions are now documented. These functions are intended for - very time critical applications, or applications that need full control over - memory allocation. Note that the mpn interface is irregular and hard to - use. -* New functions for arbitrary precision floating point arithmetic. Names - begin with `mpf_'. Associated type mpf_t. -* New and improved mpz functions, including much faster GCD, fast exact - division (mpz_divexact), bit scan (mpz_scan0 and mpz_scan1), and number - theoretical functions like Jacobi (mpz_jacobi) and multiplicative inverse - (mpz_invert). -* New variable types (mpz_t and mpq_t) are available that makes syntax of - mpz and mpq calls nicer (no need for & before variables). The MP_INT and - MP_RAT types are still available for compatibility. -* Uses GNU configure. This makes it possible to choose target architecture - and CPU variant, and to compile into a separate object directory. -* Carefully optimized assembly for important inner loops. Support for DEC - Alpha, Amd 29000, HPPA 1.0 and 1.1, Intel Pentium and generic x86, Intel - i960, Motorola MC68000, MC68020, MC88100, and MC88110, Motorola/IBM - PowerPC, National NS32000, IBM POWER, MIPS R3000, R4000, SPARCv7, - SuperSPARC, generic SPARCv8, and DEC VAX. Some support also for ARM, - Clipper, IBM ROMP (RT), and Pyramid AP/XP. -* Faster. Thanks to the assembler code, new algorithms, and general tuning. - In particular, the speed on machines without GCC is improved. -* Support for machines without alloca. -* Now under the LGPL. - -INCOMPATIBILITIES BETWEEN GMP 1 AND GMP 2 - -* mpq assignment functions do not canonicalize their results. -* mpz division functions round differently. -* mpz mod functions now really compute mod. -* mpz_powm and mpz_powm_ui now really use mod for reduction. |