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