[22253] | 1 | Copyright 1996, 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc. |
---|
[18190] | 2 | |
---|
| 3 | This file is part of the GNU MP Library. |
---|
| 4 | |
---|
| 5 | The GNU MP Library is free software; you can redistribute it and/or modify |
---|
| 6 | it under the terms of the GNU Lesser General Public License as published by |
---|
| 7 | the Free Software Foundation; either version 2.1 of the License, or (at your |
---|
| 8 | option) any later version. |
---|
| 9 | |
---|
| 10 | The GNU MP Library is distributed in the hope that it will be useful, but |
---|
| 11 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
---|
| 12 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public |
---|
| 13 | License for more details. |
---|
| 14 | |
---|
| 15 | You should have received a copy of the GNU Lesser General Public License |
---|
| 16 | along with the GNU MP Library; see the file COPYING.LIB. If not, write to |
---|
| 17 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA |
---|
| 18 | 02111-1307, USA. |
---|
| 19 | |
---|
| 20 | |
---|
[22253] | 21 | Changes between GMP version 4.1.3 and 4.1.4 |
---|
[18190] | 22 | |
---|
[22253] | 23 | * Bug fix to FFT multiplication code (crash for huge operands). |
---|
| 24 | * Bug fix to mpf_sub (miscomputation). |
---|
| 25 | * Support for powerpc64-gnu-linux. |
---|
| 26 | * Better support for AMD64 in 32-bit mode. |
---|
| 27 | * Upwardly binary compatible with 4.1.3, 4.1.2, 4.1.1, 4.1, 4.0.1, 4.0, |
---|
| 28 | and 3.x versions. |
---|
| 29 | |
---|
| 30 | Changes between GMP version 4.1.2 and 4.1.3 |
---|
| 31 | |
---|
| 32 | * Bug fix for FFT multiplication code (miscomputation). |
---|
| 33 | * Bug fix to K6 assembly code for gcd. |
---|
| 34 | * Bug fix to IA-64 assembly code for population count. |
---|
| 35 | * Portability improvements, most notably functional AMD64 support. |
---|
| 36 | * mpz_export allows NULL for countp parameter. |
---|
| 37 | * Many minor bug fixes. |
---|
| 38 | * mpz_export allows NULL for countp parameter. |
---|
| 39 | * Upwardly binary compatible with 4.1.2, 4.1.1, 4.1, 4.0.1, 4.0, and 3.x |
---|
| 40 | versions. |
---|
| 41 | |
---|
| 42 | Changes between GMP version 4.1.1 and 4.1.2 |
---|
| 43 | |
---|
[18190] | 44 | * Bug fixes. |
---|
[22253] | 45 | |
---|
| 46 | Changes between GMP version 4.1 and 4.1.1 |
---|
| 47 | |
---|
| 48 | * Bug fixes. |
---|
[18190] | 49 | * New systems supported: NetBSD and OpenBSD sparc64. |
---|
| 50 | |
---|
[22253] | 51 | Changes between GMP version 4.0.1 and 4.1 |
---|
[18190] | 52 | |
---|
| 53 | * Bug fixes. |
---|
| 54 | * Speed improvements. |
---|
| 55 | * Upwardly binary compatible with 4.0, 4.0.1, and 3.x versions. |
---|
| 56 | * Asymptotically fast conversion to/from strings (mpz, mpq, mpn levels), but |
---|
| 57 | also major speed improvements for tiny operands. |
---|
| 58 | * mpn_get_str parameter restrictions relaxed. |
---|
| 59 | * Major speed improvments for HPPA 2.0 systems. |
---|
| 60 | * Major speed improvments for UltraSPARC systems. |
---|
| 61 | * Major speed improvments for IA-64 systems (but still sub-optimal code). |
---|
| 62 | * Extended test suite. |
---|
| 63 | * mpfr is back, with many bug fixes and portability improvements. |
---|
| 64 | * New function: mpz_ui_sub. |
---|
| 65 | * New functions: mpz_export, mpz_import. |
---|
| 66 | * Optimization for nth root functions (mpz_root, mpz_perfect_power_p). |
---|
| 67 | * Optimization for extended gcd (mpz_gcdext, mpz_invert, mpn_gcdext). |
---|
| 68 | * Generalized low-level number format, reserving a `nails' part of each |
---|
| 69 | limb. (Please note that this is really experimental; some functions |
---|
| 70 | are likely to compute garbage when nails are enabled.) |
---|
| 71 | * Nails-enabled Alpha 21264 assembly code, allowing up to 75% better |
---|
| 72 | performance. (Use --enable-nails=4 to enable it.) |
---|
| 73 | |
---|
[22253] | 74 | Changes between GMP version 4.0 and 4.0.1 |
---|
[18190] | 75 | |
---|
| 76 | * Bug fixes. |
---|
| 77 | |
---|
[22253] | 78 | Changes between GMP version 3.1.1 and 4.0 |
---|
[18190] | 79 | |
---|
| 80 | * Bug fixes. |
---|
| 81 | * Speed improvements. |
---|
| 82 | * Upwardly binary compatible with 3.x versions. |
---|
| 83 | * New CPU support: IA-64, Pentium 4. |
---|
| 84 | * Improved CPU support: 21264, Cray vector systems. |
---|
| 85 | * Support for all MIPS ABIs: o32, n32, 64. |
---|
| 86 | * New systems supported: Darwin, SCO, Windows DLLs. |
---|
| 87 | * New divide-and-conquer square root algorithm. |
---|
| 88 | * New algorithms chapter in the manual. |
---|
| 89 | * New malloc reentrant temporary memory method. |
---|
| 90 | * New C++ class interface by Gerardo Ballabio (beta). |
---|
| 91 | * Revamped configure, featuring ABI selection. |
---|
| 92 | * Speed improvements for mpz_powm and mpz_powm_ui (mainly affecting small |
---|
| 93 | operands). |
---|
| 94 | * mpz_perfect_power_p now properly recognizes 0, 1, and negative perfect |
---|
| 95 | powers. |
---|
| 96 | * mpz_hamdist now supports negative operands. |
---|
| 97 | * mpz_jacobi now accepts non-positive denominators. |
---|
| 98 | * mpz_powm now supports negative exponents. |
---|
| 99 | * mpn_mul_1 operand overlap requirements relaxed. |
---|
| 100 | * Float input and output uses locale specific decimal point where available. |
---|
| 101 | * New gmp_printf, gmp_scanf and related functions. |
---|
| 102 | * New division functions: mpz_cdiv_q_2exp, mpz_cdiv_r_2exp, mpz_divexact_ui. |
---|
| 103 | * New divisibility tests: mpz_divisible_p, mpz_divisible_ui_p, |
---|
| 104 | mpz_divisible_2exp_p, mpz_congruent_p, mpz_congruent_ui_p, |
---|
| 105 | mpz_congruent_2exp_p. |
---|
| 106 | * New Fibonacci function: mpz_fib2_ui. |
---|
| 107 | * New Lucas number functions: mpz_lucnum_ui, mpz_lucnum2_ui. |
---|
| 108 | * Other new integer functions: mpz_cmp_d, mpz_cmpabs_d, mpz_get_d_2exp, |
---|
| 109 | mpz_init2, mpz_kronecker, mpz_lcm_ui, mpz_realloc2. |
---|
| 110 | * New rational I/O: mpq_get_str, mpq_inp_str, mpq_out_str, mpq_set_str. |
---|
| 111 | * Other new rational functions: mpq_abs, mpq_cmp_si, mpq_div_2exp, |
---|
| 112 | mpq_mul_2exp, mpq_set_f. |
---|
| 113 | * New float tests: mpf_integer_p, mpf_fits_sint_p, mpf_fits_slong_p, |
---|
| 114 | mpf_fits_sshort_p, mpf_fits_uint_p, mpf_fits_ulong_p, mpf_fits_ushort_p. |
---|
| 115 | * Other new float functions: mpf_cmp_d, mpf_get_default_prec, mpf_get_si, |
---|
| 116 | mpf_get_ui, mpf_get_d_2exp. |
---|
| 117 | * New random functions: gmp_randinit_default, gmp_randinit_lc_2exp_size. |
---|
| 118 | * New demo expression string parser (see demos/expr). |
---|
| 119 | * New preliminary perl interface (see demos/perl). |
---|
| 120 | * Tuned algorithm thresholds for many more CPUs. |
---|
| 121 | |
---|
[22253] | 122 | Changes between GMP version 3.1 and 3.1.1 |
---|
[15293] | 123 | |
---|
| 124 | * Bug fixes for division (rare), mpf_get_str, FFT, and miscellaneous minor |
---|
| 125 | things. |
---|
| 126 | |
---|
[22253] | 127 | Changes between GMP version 3.0 and 3.1 |
---|
[15293] | 128 | |
---|
| 129 | * Bug fixes. |
---|
| 130 | * Improved `make check' running more tests. |
---|
| 131 | * Tuned algorithm cutoff points for many machines. This will improve speed for |
---|
| 132 | a lot of operations, in some cases by a large amount. |
---|
| 133 | * Major speed improvments: Alpha 21264. |
---|
| 134 | * Some speed improvments: Cray vector computers, AMD K6 and Athlon, Intel P5 |
---|
| 135 | and Pentium Pro/II/III. |
---|
| 136 | * The mpf_get_prec function now works as it did in GMP 2. |
---|
| 137 | * New utilities for auto-tuning and speed measuring. |
---|
| 138 | * Multiplication now optionally uses FFT for very large operands. (To enable |
---|
| 139 | it, pass --enable-fft to configure.) |
---|
| 140 | * Support for new systems: Solaris running on x86, FreeBSD 5, HP-UX 11, Cray |
---|
| 141 | vector computers, Rhapsody, Nextstep/Openstep, MacOS. |
---|
| 142 | * Support for shared libraries on 32-bit HPPA. |
---|
| 143 | * New integer functions: mpz_mul_si, mpz_odd_p, mpz_even_p. |
---|
| 144 | * New Kronecker symbol functions: mpz_kronecker_si, mpz_kronecker_ui, |
---|
| 145 | mpz_si_kronecker, mpz_ui_kronecker. |
---|
| 146 | * New rational functions: mpq_out_str, mpq_swap. |
---|
| 147 | * New float functions: mpf_swap. |
---|
| 148 | * New mpn functions: mpn_divexact_by3c, mpn_tdiv_qr. |
---|
| 149 | * New EXPERIMENTAL function layer for accurate floating-point arithmetic, mpfr. |
---|
| 150 | To try it, pass --enable-mpfr to configure. See the mpfr subdirectory for |
---|
| 151 | more information; it is not documented in the main GMP manual. |
---|
| 152 | |
---|
[22253] | 153 | Changes between GMP version 3.0 and 3.0.1 |
---|
[15293] | 154 | |
---|
| 155 | * Memory leaks in gmp_randinit and mpz_probab_prime_p fixed. |
---|
| 156 | * Documentation for gmp_randinit fixed. Misc documentation errors fixed. |
---|
| 157 | |
---|
[22253] | 158 | Changes between GMP version 2.0 and 3.0 |
---|
[15293] | 159 | |
---|
| 160 | * Source level compatibility with past releases (except mpn_gcd). |
---|
| 161 | * Bug fixes. |
---|
| 162 | * Much improved speed thanks to both host independent and host dependent |
---|
| 163 | optimizations. |
---|
| 164 | * Switch to autoconf/automake/libtool. |
---|
| 165 | * Support for building libgmp as a shared library. |
---|
| 166 | * Multiplication and squaring using 3-way Toom-Cook. |
---|
| 167 | * Division using the Burnikel-Ziegler method. |
---|
| 168 | * New functions computing binomial coefficients: mpz_bin_ui, mpz_bin_uiui. |
---|
| 169 | * New function computing Fibonacci numbers: mpz_fib_ui. |
---|
| 170 | * New random number generators: mpf_urandomb, mpz_rrandomb, mpz_urandomb, |
---|
| 171 | mpz_urandomm, gmp_randclear, gmp_randinit, gmp_randinit_lc_2exp, gmp_randseed, |
---|
| 172 | gmp_randseed_ui. |
---|
| 173 | * New function for quickly extracting limbs: mpz_getlimbn. |
---|
| 174 | * New functions performing integer size tests: mpz_fits_sint_p, |
---|
| 175 | mpz_fits_slong_p, mpz_fits_sshort_p, mpz_fits_uint_p, mpz_fits_ulong_p, |
---|
| 176 | mpz_fits_ushort_p. |
---|
| 177 | * New mpf functions: mpf_ceil, mpf_floor, mpf_pow_ui, mpf_trunc. |
---|
| 178 | * New mpq function: mpq_set_d. |
---|
| 179 | * New mpz functions: mpz_addmul_ui, mpz_cmpabs, mpz_cmpabs_ui, mpz_lcm, |
---|
| 180 | mpz_nextprime, mpz_perfect_power_p, mpz_remove, mpz_root, mpz_swap, |
---|
| 181 | mpz_tdiv_ui, mpz_tstbit, mpz_xor. |
---|
| 182 | * New mpn function: mpn_divexact_by3. |
---|
| 183 | * New CPU support: DEC Alpha 21264, AMD K6 and Athlon, HPPA 2.0 and 64, |
---|
| 184 | Intel Pentium Pro and Pentium-II/III, Sparc 64, PowerPC 64. |
---|
| 185 | * Almost 10 times faster mpz_invert and mpn_gcdext. |
---|
| 186 | * The interface of mpn_gcd has changed. |
---|
| 187 | * Better support for MIPS R4x000 and R5000 under Irix 6. |
---|
| 188 | * Improved support for SPARCv8 and SPARCv9 processors. |
---|
| 189 | |
---|
[22253] | 190 | Changes between GMP version 2.0 and 2.0.2 |
---|
[15293] | 191 | |
---|
| 192 | * Many bug fixes. |
---|
| 193 | |
---|
[22253] | 194 | Changes between GMP version 1.3.2 and 2.0 |
---|
[15293] | 195 | |
---|
| 196 | * Division routines in the mpz class have changed. There are three classes of |
---|
| 197 | functions, that rounds the quotient to -infinity, 0, and +infinity, |
---|
| 198 | respectively. The first class of functions have names that begin with |
---|
| 199 | mpz_fdiv (f is short for floor), the second class' names begin with mpz_tdiv |
---|
| 200 | (t is short for trunc), and the third class' names begin with mpz_cdiv (c is |
---|
| 201 | short for ceil). |
---|
| 202 | |
---|
| 203 | The old division routines beginning with mpz_m are similar to the new |
---|
| 204 | mpz_fdiv, with the exception that some of the new functions return useful |
---|
| 205 | values. |
---|
| 206 | |
---|
| 207 | The old function names can still be used. All the old functions names will |
---|
| 208 | now do floor division, not trunc division as some of them used to. This was |
---|
| 209 | changed to make the functions more compatible with common mathematical |
---|
| 210 | practice. |
---|
| 211 | |
---|
| 212 | The mpz_mod and mpz_mod_ui functions now compute the mathematical mod |
---|
| 213 | function. I.e., the sign of the 2nd argument is ignored. |
---|
| 214 | |
---|
| 215 | * The mpq assignment functions do not canonicalize their results. A new |
---|
| 216 | function, mpq_canonicalize must be called by the user if the result is not |
---|
| 217 | known to be canonical. |
---|
| 218 | * The mpn functions are now documented. These functions are intended for |
---|
| 219 | very time critical applications, or applications that need full control over |
---|
| 220 | memory allocation. Note that the mpn interface is irregular and hard to |
---|
| 221 | use. |
---|
| 222 | * New functions for arbitrary precision floating point arithmetic. Names |
---|
| 223 | begin with `mpf_'. Associated type mpf_t. |
---|
| 224 | * New and improved mpz functions, including much faster GCD, fast exact |
---|
| 225 | division (mpz_divexact), bit scan (mpz_scan0 and mpz_scan1), and number |
---|
| 226 | theoretical functions like Jacobi (mpz_jacobi) and multiplicative inverse |
---|
| 227 | (mpz_invert). |
---|
| 228 | * New variable types (mpz_t and mpq_t) are available that makes syntax of |
---|
| 229 | mpz and mpq calls nicer (no need for & before variables). The MP_INT and |
---|
| 230 | MP_RAT types are still available for compatibility. |
---|
| 231 | * Uses GNU configure. This makes it possible to choose target architecture |
---|
| 232 | and CPU variant, and to compile into a separate object directory. |
---|
| 233 | * Carefully optimized assembly for important inner loops. Support for DEC |
---|
| 234 | Alpha, Amd 29000, HPPA 1.0 and 1.1, Intel Pentium and generic x86, Intel |
---|
| 235 | i960, Motorola MC68000, MC68020, MC88100, and MC88110, Motorola/IBM |
---|
| 236 | PowerPC, National NS32000, IBM POWER, MIPS R3000, R4000, SPARCv7, |
---|
| 237 | SuperSPARC, generic SPARCv8, and DEC VAX. Some support also for ARM, |
---|
| 238 | Clipper, IBM ROMP (RT), and Pyramid AP/XP. |
---|
| 239 | * Faster. Thanks to the assembler code, new algorithms, and general tuning. |
---|
| 240 | In particular, the speed on machines without GCC is improved. |
---|
| 241 | * Support for machines without alloca. |
---|
| 242 | * Now under the LGPL. |
---|
| 243 | |
---|
| 244 | INCOMPATIBILITIES BETWEEN GMP 1 AND GMP 2 |
---|
| 245 | |
---|
| 246 | * mpq assignment functions do not canonicalize their results. |
---|
| 247 | * mpz division functions round differently. |
---|
| 248 | * mpz mod functions now really compute mod. |
---|
| 249 | * mpz_powm and mpz_powm_ui now really use mod for reduction. |
---|
| 250 | |
---|
| 251 | |
---|
| 252 | |
---|
| 253 | ---------------- |
---|
| 254 | Local variables: |
---|
| 255 | mode: text |
---|
| 256 | fill-column: 76 |
---|
| 257 | End: |
---|