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