source: trunk/third/gmp/NEWS @ 22254

Revision 22254, 11.1 KB checked in by ghudson, 19 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r22253, which included commits to RCS files with non-trunk default branches.
Line 
1Copyright 1996, 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
2
3This file is part of the GNU MP Library.
4
5The GNU MP Library is free software; you can redistribute it and/or modify
6it under the terms of the GNU Lesser General Public License as published by
7the Free Software Foundation; either version 2.1 of the License, or (at your
8option) any later version.
9
10The GNU MP Library is distributed in the hope that it will be useful, but
11WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
13License for more details.
14
15You should have received a copy of the GNU Lesser General Public License
16along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
17the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1802111-1307, USA.
19
20
21Changes between GMP version 4.1.3 and 4.1.4
22
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
30Changes 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
42Changes between GMP version 4.1.1 and 4.1.2
43
44* Bug fixes.
45
46Changes between GMP version 4.1 and 4.1.1
47
48* Bug fixes.
49* New systems supported: NetBSD and OpenBSD sparc64.
50
51Changes between GMP version 4.0.1 and 4.1
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
74Changes between GMP version 4.0 and 4.0.1
75
76* Bug fixes.
77
78Changes between GMP version 3.1.1 and 4.0
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
122Changes between GMP version 3.1 and 3.1.1
123
124* Bug fixes for division (rare), mpf_get_str, FFT, and miscellaneous minor
125  things.
126
127Changes between GMP version 3.0 and 3.1
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
153Changes between GMP version 3.0 and 3.0.1
154
155* Memory leaks in gmp_randinit and mpz_probab_prime_p fixed.
156* Documentation for gmp_randinit fixed.  Misc documentation errors fixed.
157
158Changes between GMP version 2.0 and 3.0
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
190Changes between GMP version 2.0 and 2.0.2
191
192* Many bug fixes.
193
194Changes between GMP version 1.3.2 and 2.0
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
244INCOMPATIBILITIES 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----------------
254Local variables:
255mode: text
256fill-column: 76
257End:
Note: See TracBrowser for help on using the repository browser.