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
* fixed cross-compiling issue to mingw32
  (https://gitlab.inria.fr/zimmerma/ecm/-/issues/21836)
* fixed issue with Apple Xcode 12
  (https://gitlab.inria.fr/zimmerma/ecm/-/issues/21856)
* fixed OpenMP error when compiling with clang
  (https://gitlab.inria.fr/zimmerma/ecm/-/issues/21857)

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
  https://sympa.inria.fr/sympa/arc/ecm-discuss/2012-02/msg00000.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.
