1Copyright 1996, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
2Foundation, Inc.
3
4Copyright 2009, 2010 William Hart
5
6This file is part of the MPIR Library.
7
8The MPIR Library is free software; you can redistribute it and/or modify
9it under the terms of the GNU Lesser General Public License as published by
10the Free Software Foundation; either version 2.1 of the License, or (at your
11option) any later version.
12
13The MPIR Library is distributed in the hope that it will be useful, but
14WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
16License for more details.
17
18You should have received a copy of the GNU Lesser General Public License
19along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
20the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
21MA 02110-1301, USA.
22
23Changes between MPIR 3.0.0 and MPIR 2.7.2
24
25Bug Fixes:
26
27* Port bug fix for gmp_get_str from GMP
28* Fix t-locale failure on Windows
29* Attempt to fix issue with gmp_randinit_set for _mt generator
30* Fix long/long long pointer issue on Windows 64
31* Clz_tab array length to 129 in line with GMP
32
33Features:
34
35* New Intel Skylake assembly support due to Jens Nurmann, Alex Kruppa and GMP
36* New Intel Haswell assembly support due to Alex Kruppa and GMP
37* Rudimentary Broadwell support (not optimisation)
38* Improved AMD Bulldozer support due to Alex Kruppa
39* Faster mpz_powm, mpz_powm_ui from GMP
40* New mpz_limbs functionality from GMP 6
41* New mpn_sizeinbase, mullow_basecase_n, binvert, redc_1, redc_2, redc_n functions from GMP 6
42* New mpn_nsumdiff_n function (speeds up FFT on haswell)
43* Visual Studio 2017 support
44* mpir.net for interface to .net languages
45* Appveyor-CI support
46
47Other:
48
49* Separate yasm from MPIR build (use --with-yasm=/path/to/yasm with configure)
50* Remove autogenerated Makefiles, makeinfo and configure from version control
51
52Changes between MPIR 2.7.2 and MPIR 2.7.1
53
54Bug Fixes:
55
56* Increase .so version numbering to prevent conflict with MPIR 2.7.1
57
58Features:
59
60* Wave motion gun
61
62Changes between MPIR 2.7.1 and MPIR 2.7.0
63
64Bug Fixes:
65
66* Fix bug in Karatsuba assembly code on Windows
67* Fix bug in basecase division code (by removing implementation)
68
69Features:
70
71* Add building of tests to command line build for Windows
72* Improve speed and tune targets on Windows
73* Various MSVC build improvements
74
75Other:
76
77* Add some missing information in AUTHORS
78* Travis continuous integration
79
80Changes between MPIR 2.7.0 and MPIR 2.6.0
81
82Bug Fixes:
83
84* Many build fixes
85* Fix fat binary build on 32 bit x86
86* Fix minor bugs in invert.c and t-invertc.
87* Remove broken assert in generic build
88* Fix bug in FFT that causes tuning code to crash
89* fix bug in sqr_basecase.asm on Windows
90* Fix bug in mpz_nextprime
91* Fix aliasing bug in mpz_nthroot
92* Fix bug in mpn_mulmod_basecase
93* Add missing GMP_DECLSPEC's causing segfaults on Windows
94
95Speedups:
96
97* faster divide-and-conquer division using new algorithm of W. Hart
98* merge many speedups for number theoretic functions from GMP project
99  (factorial, multi-factorial, primorial, n-choose-k, jacobi symbols)
100* fft versions of mpn_mulmod_bnm1/p1 to speed up GMP-ECM
101* switch to using the much cleaner gcdext implementation from GMP
102
103Features:
104
105* Cygwin64 support
106* MSYS2 support
107* configure support for latest Intel/AMD chips
108* MSVC 2015 support
109* Clean up Jason Moxham's old C code
110* change handling of stdint.h (user optionally includes it before mpir.h)
111* support OpenBSD 5.6 and later
112* GCC 4.9 and 5.x support
113* Clang support
114* C++11 C++ compiler support
115
116Changes between MPIR 2.6.0 and MPIR 2.5.2
117
118Bug Fixes:
119
120* fixed bug in speed/common for dc_bdiv_qr_n
121* documentation error wrt -ve exponents in mpz_powm_ui
122* correct mpq_cmp_ui declaration error found by David Cleaver
123* correct bug in Windows assembler code for karasub
124
125Speedups:
126
127* Completely new FFT implementation (William Hart)
128
129Features:
130
131* Capability to deal with full 32/64 bit words on 32/64 bit Windows (Brian Gladman)
132* Python Windows build generator (Brian Gladman)
133
134Compatibility:
135
136* Add macros for __GNU_MP_RELEASE and __MPIR_RELEASE
137
138Changes between MPIR 2.5.2 and MPIR 2.5.1
139
140Bug Fixes:
141
142* fixed build bug due to incorrect header in redc_2
143* proper test for unpatched gcc-4.3.2
144
145Speedups:
146
147* Some new cpuids supported
148* assembly redc_1 for sandybridge and bobcat for x86_64 and x86_64w
149
150Compatibility:
151
152* Added undocumented macros in gmp-impl.h for mpfr-3.1.0
153
154Changes between MPIR 2.5.1 and MPIR 2.5.0
155
156Bug Fixes:
157
158 * Correct very rare errors in multiplication code
159 * Correct very rare error in GCD code
160 * minor MSVC build fixes
161
162Features:
163
164 * addadd addsub subadd sumdiff unconditionally availible on all systems
165 * redc_2 availible
166
167Changes between MPIR 2.5.0 and MPIR 2.4.0
168
169Bug Fixes:
170
171 * Correct rounding mode make check tests
172
173Speedups:
174
175 * x86_64 fat build now uses RIP relative addressing
176 * Toom22 speedup via assembler
177 * New x86_64 assembler code
178 * New Toom eval function using the new assembler code
179 * Detect another Sandybridge CPU
180 * New GCD code (by the GMP project)
181
182Features:
183
184 * General cleanup of old features
185 * Upgrade intenal component YASM
186 * MSVC build tweeks
187 * New experimental MSVC python build system
188
189Changes:
190
191 * Remove explicit support for thumb m68k and sh cpu's
192
193Changes between MPIR 2.4.0 and MPIR 2.3.1
194
195Bug Fixes:
196
197 * The define __GMP_CC in mpir.h and gmp.h can miss out the the option
198   -std=gnu99
199 * Old versions of GAS can fail to assemble the mpn/x86_64/core2/popcount.asm
200 * Make install will fail to install the file gmpxx.h (only needed with the
201   configure options --enable-cxx --enable-gmpcompat) when built out of the
202   source tree.
203 * Add an alias used by MPFR (snprintf -> _snprintf)
204 * Correct incorrect parameter type for mpz_cdiv_q_2exp
205 * Corrected CRLF endings in some C files
206 * Corrected bitcnt_t functions error return on Win64
207
208Speedups:
209
210 * Sandybridge and Bobcat have been tuned
211 * Updated to the latest compiler flags
212 * Bulldozer cpu detection
213
214Features:
215
216 * Upgrade internal components yasm and autotools
217 * General cleanups of sourcebase
218 * Initial support for intmax functions
219 * Initial support for MSVC command line build for VS2005 and up
220 * Support for MSBUILD of VS2010
221 * Much more extensive and automated testing system
222
223Changes:
224
225 * Remove explicit support for arc s390 pa32 pa64
226
227Changes between MPIR 2.3.1 and MPIR 2.3.0
228
229Bug Fixes:
230
231 * noexecstack enabled for linux only
232 * FAT builds failed on unknown processors
233 * Compilers without GAS inline assembler on Unix like systems had a
234   bug on AMD chips
235
236Changes between MPIR 2.3.0 and MPIR 2.2.1
237
238Bug Fixes:
239
240 * noexecstack enabled for x86 properly
241
242Speedups:
243
244 * Detect a few more cpu's correctly
245 * New assembler code for x64
246
247Features:
248
249 * MinGW64 port with full assembler support
250
251Changes:
252
253 * MSVC VS2008 port removed
254
255Changes between MPIR 2.2.1 and MPIR 2.2.0
256
257Bug Fixes:
258
259 * Added a missing windows export declaration
260
261Speedups:
262
263 * Detect a few more cpu's correctly
264
265Features:
266
267 * Exported the function mpn_redc_1
268
269Changes:
270
271 * Renamed the function mpn_redc_basecase to mpn_redc_1 and re-ordered the
272   parameters
273
274
275Changes between MPIR 2.1.1 and MPIR 2.2.0
276
277Bug Fixes:
278
279 * A bug in mpn_divexact which caused a seg-fault has been corrected
280 * An original GMP bug in mpf_get_d_2exp for negative numbers has been
281   corrected
282 * A parallel make install race condition has been fixed
283
284Speedups:
285
286 * Detect a few more cpu's correctly
287
288Features:
289
290 * Upgrade internal components yasm,autotools,gnulib
291 * Removed the prebuild steps
292 * General cleanup of the source base
293 * Windows DLL builds can now be tested
294 * make check can now run the tests in parallel
295 * Initial support for running under MinGW64
296 * Enable noexecstack for x86/x86_64 with GCC
297
298Changes:
299
300 * Removed explicit support for ancient cpus's namely a29k clipper i960*
301   m88* ns32k pyr* z8000* gmicro i860 romp uxp POWER1 POWER2 cray vax
302 * Removed explicit support for ancient OS'es namely pw32 djgpp os2 unicos
303   osf tru64
304 * Removed the demo's from the library
305 * Renamed the internal function mpn_divexact_bybM1of to mpn_divexact_fobm1
306 * Windows build directory changes
307
308Changes between MPIR 2.1.0 and MPIR 2.1.1
309
310Bug Fixes:
311
312 * Fixed Windows K8/K10 mpn_sublsh_n function entry point
313
314Speedups:
315
316 * None
317
318Features:
319
320 * Initial build with Visual Studio Express 2010
321
322Changes:
323
324 * None
325
326Changes between MPIR 2.0.0 and MPIR 2.1.0
327
328Bug Fixes:
329
330 * Fixed the xgcd normalisation issue and redid the tuning code for gcd
331   and xgcd
332 * Fixes for compiling with GCC 4.5.0 on Itanium
333
334Speedups:
335
336 * None
337
338Features:
339
340 * Initial build with Visual Studio 2010
341
342Changes:
343
344 * Export new function mpn_sqr
345
346Changes between MPIR 1.3.0 and MPIR 2.0.0
347
348License:
349
350 * Switched to overall LGPL v3+
351
352Bug Fixes:
353
354 * Fixed a bug in the probable prime code (reported by Xiangyu Liu)
355 * Fixed a buld issue on 32 bit p6 Apples
356 * Fixed demos/pollard_rho
357 * Numerous tuning bug fixes
358
359Speedups:
360
361 * Sped up squaring code
362 * Minor speedup to toom4 code
363 * Sped up x86_64 divrem_1 when divisor is 64 bits
364 * Sped up x86_64 divrem_2
365 * Sped up GCD and GCDEXT by an improved nhgcd2.c
366 * Sped up addmul code for Itanium (by Jason Martin)
367 * Large number of new and sped up Itanium assembly functions
368   (by Torbjorn Granlund)
369
370Features:
371
372 * Toom8.5 code (by Marco Bodrato) see the paper
373   M. Bodrato, "High degree Toom'n'half for balanced and unbalanced
374   multiplication", E. Antelo, D. Hough and P. Ienne, editors, Proceedings
375   of the 20th IEEE Symposium on Computer Arithmetic, IEEE, Tubingen, Germany,
376   July 25-27, 2011, pp. 15--22.
377 * Schoolbook Euclidean division code (by Torbjorn Granlund)
378 * Divide and conquer Euclidean division code (by Torbjorn Granlund)
379   and Marco Bodrato (adapted to use David Harvey's middle product based
380   approximate quotient code)
381 * Asymptotically fast division code (by William Hart), based on Paul
382   Zimmermann's mpn_invert and some reuse of the divide and conquer code.
383 * New mpn_tdiv_q and mpn_tdiv_qr code (by Torbjorn Granlund)
384 * Schoolbook Hensel division code, (largely by Niels Moller)
385 * Divide and conquer Hensel division code (by Niels Moller, Torbjorn
386   Granlund and David Harvey)
387 * New mpn_divexact code and mpz_divexact to match (by Torbjorn Granlund)
388 * New mpn_rootrem, mpz_rootrem and mpz_root code (by Paul Zimmermann and
389   Torbjorn Granlund)
390 * New mpn_neg, mpn_sqr, mpn_zero, mpn_and_n, mpn_ior_n, mpn_xor_n,
391   mpn_xnor_n, mpn_nand_n, etc (by Torbjorn Granlund)
392 * New string input/output code (by Torbjorn Granlund)
393 * New mp_bitcnt_t type for multiple precision bit counts
394
395Changes:
396
397 * Removed benchmark 0.1 code from tarball
398 * Updated GMP_VERSION to "5.0.1"
399
400Changes between MPIR 1.2.0 and MPIR 1.3.0
401
402Bug Fixes:
403
404 * Fixes to the build system to better support MinGW
405 * Fixed a memory leak in lehmer GCD code
406 * Fixed a CPU misidentification on BSD
407 * Fixed a BSD install issue
408 * Fixed a make try warning on Solaris
409 * Fixed make distclean to clean up properly after a fat binary build
410 * Fixed a bug in make distcheck
411 * Fixed mpf_eq bug (reported on GMP list)
412 * Fixed non-uniformness of mpz_urandomm
413 * Fixed mpf exponent printing issue (reported on GMP list)
414 * Fixed bug in sparc32/v9 add/sub code
415 * Fixed bug in rootrem code
416
417Speedups:
418
419 * Unbalanced Toom 4 multiplication
420 * Toom 53 multiplication
421 * New fast single limb gcd and gcdext routines
422 * Switched on ngcd based Lehmer GCD routine
423 * Strassen multiplication for 2x2 matrices to speed up ngcd and ngcdext
424 * Switched on new MPN_ZERO and mpn_store assembly routines in FFT code
425 * Left and right shift assembly code for x86_64
426 * Rewrote generic mullow and mulhi functions
427 * New mpz factorial code and tuning (contributed by Robert Gerbicz)
428 * Updating of 32 bit Windows support for AMD64, p3 and p4
429 * Core2/penryn and nehalem mpn_store assembly code
430 * Core2/penryn copyi assembly code
431 * Better 32 bit k8/k10 and Nehalem assembly code
432 * Initial support for via Nano
433 * New mpn_rootrem code
434 * Select better assembly code for Atom 64 bit
435 * New faster mpz_tdiv_q code
436 * Faster division and exact division by a single limb on x86_64
437 * Core2/penryn and nehalem addlsh_n assembly code
438 * K8/k10 addlsh_n, sublsh_n assembly functions, including carry in variants
439 * K8/k10 inclsh_n, declsh_n assembly code
440
441Features:
442
443 * Middle product multiplication (by David Harvey)
444 * Optimised k8/k10 and Nehalem assembly code for add_err1_n, sub_err1_n used by mulmid
445 * Speed program accepts lines of data from a text file
446 * A batch script to build MPIR using MSVC using a configure/make like syntax
447 * Complete rewrite of the benchmark program in C by Brian Gladman
448 * New primality test code written by T. R. Nicely used as a benchmark case, adapted with
449   the help of Jeff Gilchrist
450 * mpn_lshift2 and mpn_rshift2 assembly functions
451 * Latest Yasm assembler
452 * sb_divappr_q, schoolbook approximate quotient
453 * dc_divappr_q, divide and conquer approximate quotient (by David Harvey)
454 * Script for setting all version numbers automatically when doing a release
455 * mpn_neg_n function
456 * New mpn_mulmod_2expp1 and mpn_mulmod_2expm1 functions
457 * Benchmark for mpn functions
458 * New k8 mpn_lshiftc assembler function
459 * Macro functions inclsh1, declsh1
460 * The try program now tests macro functions
461 * Macros for memory managers to determine when reallocations are likely to occur
462 * New function mpz_nthroot
463 * New mpz_next_likely_prime, mpz_probable_prime_p and mpz_likely_prime functions
464 * BPSW primality test code for integers up to GMP_LIMB_BITS, contributed by Peter Shrimpton
465 * Factor out trial division function from primality test code
466 * New mpf_rrandomb without global state
467 * New mpn_urandomb, mpn_urandomm, mpn_rrandom and mpn_randomb functions without global state
468 * New mpn_invert code (contributed by Paul Zimmermann), used in division code
469 * New generic divrem_hensel functions
470 * Implement Peter Montgomery's mpn_mod_1_k algorithms
471 * Optimised AMD, core2/penryn, atom, nehalem assembly functions for mpn_mod_1_?
472 * New assembly code for AMD divrem_hensel_qr_1, divrem_hensel_r_1
473 * New AMD, core2/penryn, atom, nehalem assembly functions  mpn_rsh_divrem_hensel_qr_1_2
474 * New optimised AMD, core2/penryn, atom, nehalem assembly functions mpn_divrem_hensel_qr_1_2
475 * New generic functions mpn_rsh_divrem_hensel_qr_1_?
476 * New generic mpn_tdiv_q function (based on mulmid/dc_divappr_q code)
477 * Improved Windows timing code
478 * Support for new Intel family 6, model 30
479
480Changes:
481
482 * Removed requirement to type make install-gmpcompat
483 * Make check tests both static and dynamic libraries where code differs
484 * Changed library version numbers from x.y to x.y.z when doing a new minor release
485 * Removed numerous extremely old deprecated functions
486 * Removed mpbsd support from MPIR
487 * Removed ancient ansi2knr conversion
488 * Added architecture directory k102 for Phenom II assembly code
489
490
491Changes between MPIR 1.1.0 and MPIR 1.2.0
492
493  Bugs:
494  * None
495
496  Speedups:
497  * Add new FFT code written by Paul Zimmermann as revised by Paul Zimmermann,
498    Pierrick Gaudry, Alexander Kruppa and Torbjorn Granlund, with numerous bug
499    fixes due to William Hart
500  * Add tuning parameters for new FFT for most modern processors
501  * Write tuning code for new FFT
502  * Implement Toom32, unbalanced Toom3, Toom42
503  * Optimise Toom3 and Toom3 squaring code using better sequences
504  * Factor out Toom4/7 interpolate sequences and switch to twos complement
505  * Optimise memory usage in Toom 3, 4 and 7 routines
506  * Many new highly optimised assembly routines for x86_64 architectures
507  * Fast XGCD based on Moller's ngcd algorithm
508
509  Features:
510  * Modified speed program to be able to add values from columns together
511
512  Changes:
513  * None
514
515Changes between MPIR 1.0.0 and MPIR 1.1.0
516
517  Bugs:
518  * Work around a linker bug in Apple Darwin Tiger
519  * Resolve an issue causing a build failure on recent Cygwin32's
520  * Fixed development test code to do proper overlap tests for functions with
521    three source operands
522
523  Speedups:
524  * Added numerous assembly optimised linear division functions (Jason Moxham)
525  * Optimised mul_2 and addmul_2 (Jason Moxham)
526  * Added Toom 4 and Toom 7 multiplication for balanced operands (William Hart)
527  * Small speedup for mpz_mul for small operands when not aliased
528
529  Features:
530  * Complete rearrangement of cpu detection code to explicitly support k8, k10,
531    pentium4, prescott, netburst, netburstlahf, core2, core, penryn, atom, nehalem
532  * factored out x86/x86_64 detection for both ordinary and fat builds into cpuid.c
533  * Distribute mpirbench with mpir (new make bench option)
534  * Added __GMP_CC and __GMP_CFLAGS, __MPIR_CC and __MPIR_CFLAGS to gmp/mpir.h
535  * Report when CPU is not identified (try sensible defaults)
536  * Support Pentium 4's that do not support LAHF/SAHF instructions
537  * Support Pathscale gcc on MIPS64
538  * Addition of assembly optimised subadd_n function
539
540  Changes:
541  * Re-enabled mpbsd functionality
542
543Changes between MPIR 0.9.0 and MPIR 1.0.0
544
545  Bugs:
546  * Building outside the source tree is now possible
547  * Bug removed from Windows Assembler file dive_1.asm
548  * Fat binary support for Core 2 64 bit fixed
549  * x86_64 fat binary support on Sun machines with gcc fixed
550  * Build failure on Sun machines using later versions of gcc fixed
551  * Aliasing bug in mpz_urandomm fixed
552  * Fixed numerous build bugs on OSX (reported by Michael Abshoff)
553
554  Speedups:
555  * Dramatic speedups for K8 assembly code (due primarily to Jason Moxham)
556  * Assembly support for K10
557  * Significant speedups for Core 2 assembly (due primarily to Jason Moxham)
558  * Some mpn assembler functions were not being used in mpz layer due to
559    missing HAVE_NATIVE flags
560  * Nocona processors now use Core 2 assembly functions instead of generic C
561
562  Features:
563  * Emit mpir binaries and mpir.h and offer support for gmp compatibility
564  * Build support for Intel Atom
565  * Unrecognised Intel 64 machines now default to Core 2 assembly support
566  * Some new, undocumented mpn functions
567  * Try, speed and tune now available for Windows MSVC build
568
569Changes between GMP 4.2.1 and MPIR 0.9.0
570
571  Bugs:
572  * Sun CC support
573  * C99 support in gmp.h
574  * Build fixes for Apple GCC compiler
575  * Numerous bug fixes posted to gmp-devel for GMP 4.2.1
576  * Corrections in documentation including function prototypes
577  * Build fix (-fast) for cc on sparc-solaris
578  * Support for Core 2 Solaris
579  * Support for SiCortex MIPS
580  * Distinguish and detect P4, Nocona, Prescott
581  * Support numerous recent Intel family 6 and AMD Dunnington prcessors
582  * Fixed bugs in perfect power detection
583
584  Speedups:
585  * Jason Martin's Core 2 assembly patches
586  * Niels M�hler's GCD patches
587  * Pierrick Gaudry's AMD64 assembly patches
588  * Tuning flags for P4, Prescott, Nocona and Core 2
589
590  Features:
591  * x86_64 code to Yasm format (Yasm supplied with MPIR)
592  * Support for building on MSVC
593  * x86_64 fat binary support
594
595  Changes:
596  * Disabled nails support
597  * Removed macos port
598
599Changes between GMP version 4.2 and 4.2.1
600
601  Bugs:
602  * Shared library numbers corrected.
603  * Broken support for 32-bit AIX fixed.
604  * Misc minor fixes.
605
606  Speedups:
607  * Exact division (mpz_divexact) now falls back to plain division for large
608    operands.
609
610  Features:
611  * Support for some new systems.
612
613
614Changes between GMP version 4.1.4 and 4.2
615
616  Bugs:
617  * Minor bug fixes and code generalizations.
618  * Expanded and improved test suite.
619
620  Speedups:
621  * Many minor optimizations, too many to mention here.
622  * Division now always subquadratic.
623  * Computation of n-factorial much faster.
624  * Added basic x86-64 assembly code.
625  * Floating-point output is now subquadratic for all bases.
626  * FFT multiply code now about 25% faster.
627  * Toom3 multiply code faster.
628
629  Features:
630  * Much improved configure.
631  * Workarounds for many more compiler bugs.
632  * Temporary allocations are now made on the stack only if small.
633  * New systems supported: HPPA-2.0 gcc, IA-64 HP-UX, PowerPC-64 Darwin,
634    Sparc64 GNU/Linux.
635  * New i386 fat binaries, selecting optimised code at runtime (--enable-fat).
636  * New build option: --enable-profiling=instrument.
637  * New memory function: mp_get_memory_functions.
638  * New Mersenne Twister random numbers: gmp_randinit_mt, also now used for
639    gmp_randinit_default.
640  * New random functions: gmp_randinit_set, gmp_urandomb_ui, gmp_urandomm_ui.
641  * New integer functions: mpz_combit, mpz_rootrem.
642  * gmp_printf etc new type "M" for mp_limb_t.
643  * gmp_scanf and friends now accept C99 hex floats.
644  * Numeric input and output can now be in bases up to 62.
645  * Comparisons mpz_cmp_d, mpz_cmpabs_d, mpf_cmp_d recognise infinities.
646  * Conversions mpz_get_d, mpq_get_d, mpf_get_d truncate towards zero,
647    previously their behaviour was unspecified.
648  * Fixes for overflow issues with operands >= 2^31 bits.
649
650  Caveats:
651  * mpfr is gone, and will from now on be released only separately.  Please see
652    www.mpfr.org.
653
654
655Changes between GMP version 4.1.3 and 4.1.4
656
657* Bug fix to FFT multiplication code (crash for huge operands).
658* Bug fix to mpf_sub (miscomputation).
659* Support for powerpc64-gnu-linux.
660* Better support for AMD64 in 32-bit mode.
661* Upwardly binary compatible with 4.1.3, 4.1.2, 4.1.1, 4.1, 4.0.1, 4.0,
662  and 3.x versions.
663
664
665Changes between GMP version 4.1.2 and 4.1.3
666
667* Bug fix for FFT multiplication code (miscomputation).
668* Bug fix to K6 assembly code for gcd.
669* Bug fix to IA-64 assembly code for population count.
670* Portability improvements, most notably functional AMD64 support.
671* mpz_export allows NULL for countp parameter.
672* Many minor bug fixes.
673* mpz_export allows NULL for countp parameter.
674* Upwardly binary compatible with 4.1.2, 4.1.1, 4.1, 4.0.1, 4.0, and 3.x
675  versions.
676
677
678Changes between GMP version 4.1.1 and 4.1.2
679
680* Bug fixes.
681
682
683Changes between GMP version 4.1 and 4.1.1
684
685* Bug fixes.
686* New systems supported: NetBSD and OpenBSD sparc64.
687
688
689Changes between GMP version 4.0.1 and 4.1
690
691* Bug fixes.
692* Speed improvements.
693* Upwardly binary compatible with 4.0, 4.0.1, and 3.x versions.
694* Asymptotically fast conversion to/from strings (mpz, mpq, mpn levels), but
695  also major speed improvements for tiny operands.
696* mpn_get_str parameter restrictions relaxed.
697* Major speed improvments for HPPA 2.0 systems.
698* Major speed improvments for UltraSPARC systems.
699* Major speed improvments for IA-64 systems (but still sub-optimal code).
700* Extended test suite.
701* mpfr is back, with many bug fixes and portability improvements.
702* New function: mpz_ui_sub.
703* New functions: mpz_export, mpz_import.
704* Optimization for nth root functions (mpz_root, mpz_perfect_power_p).
705* Optimization for extended gcd (mpz_gcdext, mpz_invert, mpn_gcdext).
706* Generalized low-level number format, reserving a `nails' part of each
707  limb.  (Please note that this is really experimental; some functions
708  are likely to compute garbage when nails are enabled.)
709* Nails-enabled Alpha 21264 assembly code, allowing up to 75% better
710  performance.  (Use --enable-nails=4 to enable it.)
711
712
713Changes between GMP version 4.0 and 4.0.1
714
715* Bug fixes.
716
717
718Changes between GMP version 3.1.1 and 4.0
719
720* Bug fixes.
721* Speed improvements.
722* Upwardly binary compatible with 3.x versions.
723* New CPU support: IA-64, Pentium 4.
724* Improved CPU support: 21264, Cray vector systems.
725* Support for all MIPS ABIs: o32, n32, 64.
726* New systems supported: Darwin, SCO, Windows DLLs.
727* New divide-and-conquer square root algorithm.
728* New algorithms chapter in the manual.
729* New malloc reentrant temporary memory method.
730* New C++ class interface by Gerardo Ballabio (beta).
731* Revamped configure, featuring ABI selection.
732* Speed improvements for mpz_powm and mpz_powm_ui (mainly affecting small
733  operands).
734* mpz_perfect_power_p now properly recognizes 0, 1, and negative perfect
735  powers.
736* mpz_hamdist now supports negative operands.
737* mpz_jacobi now accepts non-positive denominators.
738* mpz_powm now supports negative exponents.
739* mpn_mul_1 operand overlap requirements relaxed.
740* Float input and output uses locale specific decimal point where available.
741* New gmp_printf, gmp_scanf and related functions.
742* New division functions: mpz_cdiv_q_2exp, mpz_cdiv_r_2exp, mpz_divexact_ui.
743* New divisibility tests: mpz_divisible_p, mpz_divisible_ui_p,
744  mpz_divisible_2exp_p, mpz_congruent_p, mpz_congruent_ui_p,
745  mpz_congruent_2exp_p.
746* New Fibonacci function: mpz_fib2_ui.
747* New Lucas number functions: mpz_lucnum_ui, mpz_lucnum2_ui.
748* Other new integer functions: mpz_cmp_d, mpz_cmpabs_d, mpz_get_d_2exp,
749  mpz_init2, mpz_kronecker, mpz_lcm_ui, mpz_realloc2.
750* New rational I/O: mpq_get_str, mpq_inp_str, mpq_out_str, mpq_set_str.
751* Other new rational functions: mpq_abs, mpq_cmp_si, mpq_div_2exp,
752  mpq_mul_2exp, mpq_set_f.
753* New float tests: mpf_integer_p, mpf_fits_sint_p, mpf_fits_slong_p,
754  mpf_fits_sshort_p, mpf_fits_uint_p, mpf_fits_ulong_p, mpf_fits_ushort_p.
755* Other new float functions: mpf_cmp_d, mpf_get_default_prec, mpf_get_si,
756  mpf_get_ui, mpf_get_d_2exp.
757* New random functions: gmp_randinit_default, gmp_randinit_lc_2exp_size.
758* New demo expression string parser (see demos/expr).
759* New preliminary perl interface (see demos/perl).
760* Tuned algorithm thresholds for many more CPUs.
761
762
763Changes between GMP version 3.1 and 3.1.1
764
765* Bug fixes for division (rare), mpf_get_str, FFT, and miscellaneous minor
766  things.
767
768
769Changes between GMP version 3.0 and 3.1
770
771* Bug fixes.
772* Improved `make check' running more tests.
773* Tuned algorithm cutoff points for many machines.  This will improve speed for
774  a lot of operations, in some cases by a large amount.
775* Major speed improvments: Alpha 21264.
776* Some speed improvments: Cray vector computers, AMD K6 and Athlon, Intel P5
777  and Pentium Pro/II/III.
778* The mpf_get_prec function now works as it did in GMP 2.
779* New utilities for auto-tuning and speed measuring.
780* Multiplication now optionally uses FFT for very large operands.  (To enable
781  it, pass --enable-fft to configure.)
782* Support for new systems: Solaris running on x86, FreeBSD 5, HP-UX 11, Cray
783  vector computers, Rhapsody, Nextstep/Openstep, MacOS.
784* Support for shared libraries on 32-bit HPPA.
785* New integer functions: mpz_mul_si, mpz_odd_p, mpz_even_p.
786* New Kronecker symbol functions: mpz_kronecker_si, mpz_kronecker_ui,
787  mpz_si_kronecker, mpz_ui_kronecker.
788* New rational functions: mpq_out_str, mpq_swap.
789* New float functions: mpf_swap.
790* New mpn functions: mpn_divexact_by3c, mpn_tdiv_qr.
791* New EXPERIMENTAL function layer for accurate floating-point arithmetic, mpfr.
792  To try it, pass --enable-mpfr to configure.  See the mpfr subdirectory for
793  more information; it is not documented in the main GMP manual.
794
795
796Changes between GMP version 3.0 and 3.0.1
797
798* Memory leaks in gmp_randinit and mpz_probab_prime_p fixed.
799* Documentation for gmp_randinit fixed.  Misc documentation errors fixed.
800
801
802Changes between GMP version 2.0 and 3.0
803
804* Source level compatibility with past releases (except mpn_gcd).
805* Bug fixes.
806* Much improved speed thanks to both host independent and host dependent
807  optimizations.
808* Switch to autoconf/automake/libtool.
809* Support for building libgmp as a shared library.
810* Multiplication and squaring using 3-way Toom-Cook.
811* Division using the Burnikel-Ziegler method.
812* New functions computing binomial coefficients: mpz_bin_ui, mpz_bin_uiui.
813* New function computing Fibonacci numbers: mpz_fib_ui.
814* New random number generators: mpf_urandomb, mpz_rrandomb, mpz_urandomb,
815  mpz_urandomm, gmp_randclear, gmp_randinit, gmp_randinit_lc_2exp, gmp_randseed,
816  gmp_randseed_ui.
817* New function for quickly extracting limbs: mpz_getlimbn.
818* New functions performing integer size tests: mpz_fits_sint_p,
819  mpz_fits_slong_p, mpz_fits_sshort_p, mpz_fits_uint_p, mpz_fits_ulong_p,
820  mpz_fits_ushort_p.
821* New mpf functions: mpf_ceil, mpf_floor, mpf_pow_ui, mpf_trunc.
822* New mpq function: mpq_set_d.
823* New mpz functions: mpz_addmul_ui, mpz_cmpabs, mpz_cmpabs_ui, mpz_lcm,
824  mpz_nextprime, mpz_perfect_power_p, mpz_remove, mpz_root, mpz_swap,
825  mpz_tdiv_ui, mpz_tstbit, mpz_xor.
826* New mpn function: mpn_divexact_by3.
827* New CPU support: DEC Alpha 21264, AMD K6 and Athlon, HPPA 2.0 and 64,
828  Intel Pentium Pro and Pentium-II/III, Sparc 64, PowerPC 64.
829* Almost 10 times faster mpz_invert and mpn_gcdext.
830* The interface of mpn_gcd has changed.
831* Better support for MIPS R4x000 and R5000 under Irix 6.
832* Improved support for SPARCv8 and SPARCv9 processors.
833
834
835Changes between GMP version 2.0 and 2.0.2
836
837* Many bug fixes.
838
839
840Changes between GMP version 1.3.2 and 2.0
841
842* Division routines in the mpz class have changed.  There are three classes of
843  functions, that rounds the quotient to -infinity, 0, and +infinity,
844  respectively.  The first class of functions have names that begin with
845  mpz_fdiv (f is short for floor), the second class' names begin with mpz_tdiv
846  (t is short for trunc), and the third class' names begin with mpz_cdiv (c is
847  short for ceil).
848
849  The old division routines beginning with mpz_m are similar to the new
850  mpz_fdiv, with the exception that some of the new functions return useful
851  values.
852
853  The old function names can still be used.  All the old functions names will
854  now do floor division, not trunc division as some of them used to.  This was
855  changed to make the functions more compatible with common mathematical
856  practice.
857
858  The mpz_mod and mpz_mod_ui functions now compute the mathematical mod
859  function.  I.e., the sign of the 2nd argument is ignored.
860
861* The mpq assignment functions do not canonicalize their results.  A new
862  function, mpq_canonicalize must be called by the user if the result is not
863  known to be canonical.
864* The mpn functions are now documented.  These functions are intended for
865  very time critical applications, or applications that need full control over
866  memory allocation.  Note that the mpn interface is irregular and hard to
867  use.
868* New functions for arbitrary precision floating point arithmetic.  Names
869  begin with `mpf_'.  Associated type mpf_t.
870* New and improved mpz functions, including much faster GCD, fast exact
871  division (mpz_divexact), bit scan (mpz_scan0 and mpz_scan1), and number
872  theoretical functions like Jacobi (mpz_jacobi) and multiplicative inverse
873  (mpz_invert).
874* New variable types (mpz_t and mpq_t) are available that makes syntax of
875  mpz and mpq calls nicer (no need for & before variables).  The MP_INT and
876  MP_RAT types are still available for compatibility.
877* Uses GNU configure.  This makes it possible to choose target architecture
878  and CPU variant, and to compile into a separate object directory.
879* Carefully optimized assembly for important inner loops.  Support for DEC
880  Alpha, Amd 29000, HPPA 1.0 and 1.1, Intel Pentium and generic x86, Intel
881  i960, Motorola MC68000, MC68020, MC88100, and MC88110, Motorola/IBM
882  PowerPC, National NS32000, IBM POWER, MIPS R3000, R4000, SPARCv7,
883  SuperSPARC, generic SPARCv8, and DEC VAX.  Some support also for ARM,
884  Clipper, IBM ROMP (RT), and Pyramid AP/XP.
885* Faster.  Thanks to the assembler code, new algorithms, and general tuning.
886  In particular, the speed on machines without GCC is improved.
887* Support for machines without alloca.
888* Now under the LGPL.
889
890INCOMPATIBILITIES BETWEEN GMP 1 AND GMP 2
891
892* mpq assignment functions do not canonicalize their results.
893* mpz division functions round differently.
894* mpz mod functions now really compute mod.
895* mpz_powm and mpz_powm_ui now really use mod for reduction.
896
897
898
899----------------
900Local variables:
901mode: text
902fill-column: 76
903End:
904