source: trunk/third/gmp/NEWS @ 18191

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