| Copyright 1996, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, |
| 2009 Free Software Foundation, Inc. |
| |
| This file is part of the GNU MP Library. |
| |
| The GNU MP Library is free software; you can redistribute it and/or modify |
| it under the terms of the GNU Lesser General Public License as published by |
| the Free Software Foundation; either version 3 of the License, or (at your |
| option) any later version. |
| |
| The GNU MP Library is distributed in the hope that it will be useful, but |
| WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
| or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public |
| License for more details. |
| |
| You should have received a copy of the GNU Lesser General Public License |
| along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. |
| |
| |
| 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 http://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. |
| |
| |
| |
| ---------------- |
| Local variables: |
| mode: text |
| fill-column: 76 |
| End: |