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