summaryrefslogtreecommitdiff
path: root/NEWS
blob: 017669df83ffa61d0092b75d3791a12c184ddda7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
Changes between MP version 3.1.1 and 3.2

* Bug fixes.
* Revamped configure featuring ABI selection and fixes for host/target
  confusion.
* New CPU support: IA-64.
* Improved CPU support: 21264, Cray vector systems.
* New systems supported: SCO 5.
* New C++ wrapper.
* New Karatsuba Square Root algorithm.
* New algorithms chapter in the manual.
* Updated mpfr.
* Speed improvements for mpz_powm.
* New integer functions: mpz_si_pow_ui, mpz_cdiv_q_2exp, mpz_cdiv_r_2exp.
* New mpz_kronecker function, and mpz_jacobi accepts non-positive denominators.
* New divisibility tests: mpz_divisible_p, mpz_divisible_ui_p,
  mpz_divisible_2exp_p.
* New congruence tests: mpz_congruent_p, mpz_congruent_ui_p,
  mpz_congruent_2exp_p.
* New rational functions: mpq_abs, mpq_div_2exp, mpq_get_str, mpq_mul_2exp,
  mpq_set_f.
* New float conversion functions: mpf_get_si, mpf_get_ui.
* New float test functions: 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.
* New demo expression string parsing (see demos/expr).
* More tuned algorithm thresholds.

Changes between MP version 3.1 and 3.1.1

* Bug fixes for division (rare), mpf_get_str, FFT, and miscellaneous minor
  things.

Changes between MP 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 improvments: Alpha 21264.
* Some speed improvments: 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 MP 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 MP 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 MP version 2.0 and 2.0.2

* Many bug fixes.

Changes between MP 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: