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

Changes between GMPECM 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 P1 or P+1 and small B2
* improved portability (OS X, Windows, Cygwin, non GNU ld)
* fixed make longcheck with outofsource build
Changes between GMPECM 7.0.2 and GMPECM 7.0.3:
* fixed compilation issue on powerpc64
Changes between GMPECM 7.0.1 and GMPECM 7.0.2:
* fixed bug in P1/P+1 stage 2 and redc when 1/N mod R has less than n limbs
Changes between GMPECM 7.0 and GMPECM 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 gpuecm
* fixed issue with gcc5 (CC/CFLAGS from gmp.h were no longer used)
* updated longlong.h file from GMP 6.1.0
* fixed some compiler warnings
Changes between GMPECM 6.4.4 and GMPECM 7.0:
* GMPECM is now threadsafe. In particular the "ecmfactor" binary can be
called with say t 17 to use 17 threads.
* Added GPU code for Step 1 (commandline option gpu).
* Commandline option param allows to choose the parametrization (valid values
are 0, 1, 2, 3). Commandline 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 commandline option.
The default parametrization depends on other commandline options.
* For P1 stage 2, by default the NTT code is always used.
* Speedup in stage 2 with nontt
* New primality proving code with APRCL (contributed by David Cleaver)
with enableaprcl (default=yes)
* Removed some options that were unused or not tested (n, nn, ve, cofdec,
B2scale).
* The configure enableshellcmd option was removed, and also the
enablememorydebug configure option (now obsolete with valgrind).
* The b options was removed (breadthfirst mode)
* Improved source coverage (92.7% of source code lines)
Changes between GMPECM 6.4.3 and GMPECM 6.4.4:
* Fixed PowerPC64 assembly code with enableshared (thanks Leif Leonhardy)
* Fix to deal with change of semantics of internal GMP functions in GMP 5.1
* Fixed small memory leak in nonNTT P1 stage 2
* Fixed segfaults with large nonNTT P+1 stage 2
* Removed defunct t command line option
Changes between GMPECM 6.4.2 and GMPECM 6.4.3:
* Fixed bug reported by user "lorgix" on mersenneforum
(http://www.mersenneforum.org/showpost.php?p=286385&postcount=280)
* Use 64bit value for random seed under Windows
Changes between GMPECM 6.4.1 and GMPECM 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 64bit computers and 193 digits on 32bit computers).
* Speedup in stage 2 with the NTT default mode
Changes between GMPECM 6.4 and GMPECM 6.4.1:
* GMPECM 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 GMPECM 6.3
http://lists.gforge.inria.fr/pipermail/ecmdiscuss/2012February/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 enableasmredc is always recommended
* New configure option enablemulredcsvoboda, for input numbers whose low
limbs is congruent to 1
* New tuning parameters for Intel Core i5
* New ecmbench utility
Changes between GMPECM 6.3 and GMPECM 6.4:
* Fixed configure problem with SSE2
(http://trac.sagemath.org/sage_trac/ticket/10252)
* Fixed configure bug on 32bit PowerPC (tried to use 64bit 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 GMPECM 6.2.3 and GMPECM 6.3:
* New assembly code for 64bit PowerPC (thanks to Philip McLaughlin)
* Allow several processes to write to the same save file
* More routines in new P+1 stage 2 use multithreading 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 GMPECM 6.2.2 and GMPECM 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 GMPECM 6.2.1 and GMPECM 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 P1 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 nonportable 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 GMPECM 6.2 and GMPECM 6.2.1:
* Default B2 for new P1 and P+1 stage 2 increased
* Probabilities for finding factors with P1 are now printed with v
* Fixed compilation problem on IA64, EV56, and ARM
* Made threshold between recursive and iterative NTT tunable
Changes between GMPECM 6.1.3 and GMPECM 6.2:
* New stage 2 for P1 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.), ANTSVIII 2008,
LNCS 5011, pp. 180195.
* Parallelization in the new P+1 stage 2 (with enableopenmp).
* 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
BrentSuyama polynomial had degree > 1 and i0 was negative (occurs only
with nonstandard 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 nontt for input
numbers >30 machine words.
Changes between GMPECM 6.1.2 and GMPECM 6.1.3:
* fixed incorrect computation of memory use in stage 2, especially for
machines that use KroneckerSchoenhage 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 P1, 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 GMPECM 6.1.1 and GMPECM 6.1.2:
* changed copyright header from sp.h, to recognize the FSF for parts inspired
or taken from gmpimpl.h.
Changes between GMPECM 6.0.1 and GMPECM 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
* commandline options: added idlecmd nontt prpcmd stage1time maxmem,
removed prp*
* new configure options enableasmredc, withgwnum
* 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 64bit architectures with B1 > 2^32
* fixed wrong detection of divisors of 2^n+1 or 2^n1
* fixed memory leaks
Changes between GMPECM 6.0 and GMPECM 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 nonnumber 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 GMPECM 5.0.3 and GMPECM 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 nonoptimal 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:
GMPECM 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
GMPECM 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 GMPECM sources), using Kronecker/Schonhage multiplication:
GMPECM 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
GMPECM 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
* BrentSuyama'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 GMPECM 5.0 and GMPECM 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.
