forked from sethtroisi/gmp-ecm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEWS
271 lines (250 loc) · 13.3 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
Changes between GMP-ECM 7.0.4 and 7.0.5:
* fixed a bug when input is a file with several numbers: the -param choice
did depend on the first number
Changes between GMP-ECM 7.0.3 and 7.0.4:
* fixed a bug in mpres_pow:
https://gforge.inria.fr/tracker/?func=detail&atid=623&aid=20712&group_id=135
* fixed a bug with P-1 or P+1 and small B2
* improved portability (OS X, Windows, Cygwin, non GNU ld)
* fixed make longcheck with out-of-source build
Changes between GMP-ECM 7.0.2 and GMP-ECM 7.0.3:
* fixed compilation issue on powerpc64
Changes between GMP-ECM 7.0.1 and GMP-ECM 7.0.2:
* fixed bug in P-1/P+1 stage 2 and -redc when -1/N mod R has less than n limbs
Changes between GMP-ECM 7.0 and GMP-ECM 7.0.1:
* fixed efficiency issue with divisors of 2^n+/-1
* allow for larger B1 values on Windows computers in batch mode
* several fixes on Debian (FreeBSD, powerpc64)
* fixed save files generated by gpu-ecm
* fixed issue with gcc-5 (CC/CFLAGS from gmp.h were no longer used)
* updated longlong.h file from GMP 6.1.0
* fixed some compiler warnings
Changes between GMP-ECM 6.4.4 and GMP-ECM 7.0:
* GMP-ECM is now thread-safe. In particular the "ecmfactor" binary can be
called with say -t 17 to use 17 threads.
* Added GPU code for Step 1 (command-line option -gpu).
* Command-line option -param allows to choose the parametrization (valid values
are 0, 1, 2, 3). Command-line option -sigma allows to choose the parameter.
"-sigma i:s" is a shortcut to "-param i -sigma s". Use -param 0 to get
historical Suyama parametrization.
* The batch mode is now chosen with -param command-line option.
The default parametrization depends on other command-line options.
* For P-1 stage 2, by default the NTT code is always used.
* Speedup in stage 2 with -no-ntt
* New primality proving code with APRCL (contributed by David Cleaver)
with --enable-aprcl (default=yes)
* Removed some options that were unused or not tested (-n, -nn, -ve, -cofdec,
-B2scale).
* The configure --enable-shellcmd option was removed, and also the
--enable-memory-debug configure option (now obsolete with valgrind).
* The -b options was removed (breadth-first mode)
* Improved source coverage (92.7% of source code lines)
Changes between GMP-ECM 6.4.3 and GMP-ECM 6.4.4:
* Fixed PowerPC64 assembly code with --enable-shared (thanks Leif Leonhardy)
* Fix to deal with change of semantics of internal GMP functions in GMP 5.1
* Fixed small memory leak in non-NTT P-1 stage 2
* Fixed segfaults with large non-NTT P+-1 stage 2
* Removed defunct -t command line option
Changes between GMP-ECM 6.4.2 and GMP-ECM 6.4.3:
* Fixed bug reported by user "lorgix" on mersenneforum
(http://www.mersenneforum.org/showpost.php?p=286385&postcount=280)
* Use 64-bit value for random seed under Windows
Changes between GMP-ECM 6.4.1 and GMP-ECM 6.4.2:
* Corrected the copyright headers
* Reduced memory usage in stage 1 with -batch={1,2} mode.
* Fixed bug in modular reduction (could occur only for numbers larger than
386 digits on 64-bit computers and 193 digits on 32-bit computers).
* Speedup in stage 2 with the NTT default mode
Changes between GMP-ECM 6.4 and GMP-ECM 6.4.1:
* GMP-ECM is now distributed under the GPL version 3 or later for the binary,
and under the LGPL version 3 or later for the library
* Fixed a speed regression with respect to GMP-ECM 6.3
http://lists.gforge.inria.fr/pipermail/ecm-discuss/2012-February/004103.html
* Fixed a bug with the -treefile option which had been present for a long time
* Several fixes for the Visual Studio 2010 build
* New experimental option -batch=2, and speedup for -batch (i.e., -batch=1)
* New tuning mechanism, now --enable-asm-redc is always recommended
* New configure option --enable-mulredc-svoboda, for input numbers whose low
limbs is congruent to -1
* New tuning parameters for Intel Core i5
* New ecmbench utility
Changes between GMP-ECM 6.3 and GMP-ECM 6.4:
* Fixed configure problem with SSE2
(http://trac.sagemath.org/sage_trac/ticket/10252)
* Fixed configure bug on 32-bit PowerPC (tried to use 64-bit assembly)
https://gforge.inria.fr/tracker/index.php?func=detail&aid=10646
* Fixed dependencies from build directory
https://gforge.inria.fr/tracker/index.php?func=detail&aid=10648
* Patch from David Cleaver to allow B1 >= 2^32 on machines where
"unsigned long" has 32 bits only
* Patch from David Cleaver to use GWNUM 26.6 on Windows x64 with MingW64/Msys
* Improved conversion from mpz_t to residue number system in NTT code
* Better asm code for AMD cpus
* Use of GMP's mpn_mullo_n and mpn_redc_2 when available
* New option -batch with faster Stage 1 (but smaller success probability)
* Added Visual Studio 2010 build
Changes between GMP-ECM 6.2.3 and GMP-ECM 6.3:
* New assembly code for 64-bit PowerPC (thanks to Philip McLaughlin)
* Allow several processes to write to the same -save file
* More routines in new P+-1 stage 2 use multi-threading in OpenMP build
* Fixed incompatibility with GMP 5.0.0
* Fixed several bugs, and now check return value from malloc() calls
* Fixed linking of GMP which prevented successful builds under Darwin
(and presumably other systems)
* Allow use of x86_64 asm code under MinGW
Changes between GMP-ECM 6.2.2 and GMP-ECM 6.2.3:
* Fixed incompatibility with GMP 4.3.0 when testing version in configure
* SSE2 asm code for Visual C added in stage 2 NTT code
* Small improvement to x86_64 mulredc asm code, slight speedup on Core 2
* Fixed incorrect carry propagation in subquadratic REDC code which
could lead to incorrect arithmetic in rare cases
* Fixed memory leak with -v parameter when factor was found in ECM stage 1
* Fixed bug which caused only one ECM curve to be run in spite of -c
parameter if input line did not end in newline
* Assembler mulredc code enabled by default on x86_64
Changes between GMP-ECM 6.2.1 and GMP-ECM 6.2.2:
* Updated build project files for Visual C by Brian Gladman, also adds
missing NTT_GFP_TWIDDLE_DI[FT]_BREAKOVER defines in VC parameter file
* Fixed uninitialised parameter to P-1 probability computation
* In tune.c : fixed generation of NTT_GFP_TWIDDLE_DI[FT]_BREAKOVER values,
avoid calling cputime() excessively often when timing short functions,
fixed access to uninitialised memory
* Fixed serious split infinitive in configure script (thanks Paul Leyland)
* Removed unnecessary carry propagation in x86_64 mulredc code, slight
speedup (thanks Philip McLaughlin)
* Fixed non-portable PIC code in x86_64/redc.asm
* Fixed problem with pattern matching host type names in configure.in
* Converted binary constants in spv.c and ntt_gfp.c to hexadecimal,
some assembler do not support binary constants
Changes between GMP-ECM 6.2 and GMP-ECM 6.2.1:
* Default B2 for new P-1 and P+1 stage 2 increased
* Probabilities for finding factors with P-1 are now printed with -v
* Fixed compilation problem on IA64, EV56, and ARM
* Made threshold between recursive and iterative NTT tunable
Changes between GMP-ECM 6.1.3 and GMP-ECM 6.2:
* New stage 2 for P-1 and P+1, described in Montgomery and Kruppa,
Improved Stage 2 to P+-1 Factoring Algorithms,
in A. J. van der Poorten and A. Stein (Eds.), ANTS-VIII 2008,
LNCS 5011, pp. 180-195.
* Parallelization in the new P+-1 stage 2 (with --enable-openmp).
* Optimizations to the NTT code by Jason S. Papadopoulos
* Improved mulredc assembly code for Athlon64/Opteron
* Improved modular reduction in the mpzmod range
* Bugfix in P+1 stage 2 which caused incorrect initialisation if
Brent-Suyama polynomial had degree > 1 and i0 was negative (occurs only
with non-standard parameters)
* Bugfix in generation of Lucas chains for P+1 and ECM, causing some stage 1
primes close to 2^32 to be processed incorrectly on 32 bit systems
* Added build project for VC++ by Brian Gladman
* File ecm.h changed from GPL to LGPL: the fact it was under GPL was an
unvoluntary mistake, which has the consequence that applications linking with
libecm for version < 6.2 should be under GPL too.
* Fixed a regression introduced in 6.1.1: the default arithmetic (NTT) for
stage 2 was slower for large inputs. Now defaults to -no-ntt for input
numbers >30 machine words.
Changes between GMP-ECM 6.1.2 and GMP-ECM 6.1.3:
* fixed incorrect computation of memory use in stage 2, especially for
machines that use Kronecker-Schoenhage multiplication even for large
degrees, such as Core 2.
* fixed -B2scale option whose value hadn't been passed to the factoring
routines
* fixed default B2min for P-1, which could be truncated on 32 bit machines,
causing stage 2 to take a little longer than necessary
* fixed bug for modular multiplication modulo Fermat numbers 2^2^n+1, where
a result of 2^2^n would be truncated to 0.
Changes between GMP-ECM 6.1.1 and GMP-ECM 6.1.2:
* changed copyright header from sp.h, to recognize the FSF for parts inspired
or taken from gmp-impl.h.
Changes between GMP-ECM 6.0.1 and GMP-ECM 6.1:
* new assembly code contributed by Pierrick Gaudry for combined mul/redc
* new Number Theoretic Transform code contributed by Dave Newman for step 2
* new signal handling and corresponding save files for step 1
* now prints peak memory allocation with -v
* improved and simplified tuning
* command-line options: added -idlecmd -no-ntt -prpcmd -stage1time -maxmem,
removed -prp*
* new configure options --enable-asm-redc, --with-gwnum
* new exit status codes of ecm program
* new interface to George Woltman's GWNUM library (see INSTALL)
* chosen stage 2 bound is now printed right away
* fixed minor memory leak in mpmod.c/isbase2
* fixed invalid Found input number N reported on some numbers
* fixed serious P+1 bug on 64-bit architectures with B1 > 2^32
* fixed wrong detection of divisors of 2^n+1 or 2^n-1
* fixed memory leaks
Changes between GMP-ECM 6.0 and GMP-ECM 6.0.1:
* now checks for availability of snprintf() during configure
* fixed linking problems with tune and tune2 on PowerPC G5
* fixed segfault in rho.c
* fixed main()'s B2 value being overwritten by callees
* allow both \r and \n for newline (for Apple computers)
* made files compile under Visual C
* fixed bug in listz.c that could leave undefined data
* fixed the -B2scale option
* fixed small error in printed B2' value (with -v)
* added Windows section to INSTALL
* small corrections to ecm.xml and ecm.1
* added curve counter in loop mode again
* fixed segfault when a non-number was in place of B2 on command line
* worked around problem with MinGW/Wine scanf() (value 1 too high for %n)
* free rhotable memory at end of stage 2
* replaced GSL's dilog_series() in rho.c due to licensing (GPL vs. LGPL)
Changes between GMP-ECM 5.0.3 and GMP-ECM 6.0:
* use of the autotools (configure/make)
* there is now a documentation in "man" format (ecm.1)
* added a set of -prp* command line switches which will use an external
program to perform prp testing of candidate and factors. When the
numbers get large, GMP becomes very non-optimal in PRP testing.
An external program, such as OpenPFGW, can be much faster than
the GMP. (New code from Phil Carmody)
* new parser for symbolic input
* added hex number input into the expression parser. This was needed
due to save files from Prime95 being output in hex. ecm was not
resuming these.
* added some porting code so ecm builds under VC6. VC6 builds an ecm
that is is about 1% to 3% faster than the MinGW build (which is
about 1% to 3% faster than a Cygwin build)
* quiet mode (-q) now prints on stdout all factors found on the same line:
f1 f2 ... fk ccc
where ccc is the remaining composite (contributed by Laurent Fousse).
Example:
$ echo 438573459834757 | ./ecm -sigma 6 -q 1e2
2166151 202466707
* special code for Fermat numbers, which improves both steps, example for F12:
GMP-ECM 5.0.3 [powered by GMP 4.1.4] [ECM]
Input number has 1187 digits
Using B1=100000, B2=31565866, polynomial x^2, sigma=4155936925
Step 1 took 27157ms
Step 2 took 20830ms
GMP-ECM 5.2.0 [powered by GMP 4.1.4] [ECM]
Input number has 1187 digits
Using B1=100000, B2=31565866, polynomial x^2, sigma=535125396
Step 1 took 24264ms
Step 2 took 6605ms
* speed improvement in step 2, especially for large B2 (here with the c155
in the GMP-ECM sources), using Kronecker/Schonhage multiplication:
GMP-ECM 5.0.3 [powered by GMP 4.1.4] [ECM]
Using B1=3000000, B2=4016636514, polynomial Dickson(12), sigma=2383768044
Step 1 took 62305ms
Step 2 took 45322ms
GMP-ECM 5.2.0 [powered by GMP 4.1.4] [ECM]
Using B1=3000000, B2=4016636514, polynomial Dickson(12), sigma=3595368442
Step 1 took 61824ms
Step 2 took 32989ms
* Brent-Suyama's extension now works for P+1 too
* trial division is available (option -t n)
* new options -n (low priority) and -nn (idle priority)
* the looping mode (-c n) now continues to try to factor the composite when
a factor is found (use -one to stop)
* new option -ve n to display only inputs of <= n characters (looping mode)
* new option -treefile which stores product tree of F on disk to save memory
* generation of roots use double sieve idea, increases B2 for given k, dF
* generation of roots for ECM rewritten to reduce number of extgcds
Changes between GMP-ECM 5.0 and GMP-ECM 5.0.1:
* fixed bug when B1 or B2min is too large, and an overflow occurs in step 2,
making the computations incorrect. The new limit for B1 or B2min is
now around 2^53, and an error occurs when this limit is passed.
* fixed problem with save lines incorrectly written when both sigma and A
are given with -save.
* fixed efficiency problem with -pm1: for B1 > 1e6, use -redc or -mpz_mod
by default.