//
//  jklecm
//
//  Author:  Oisin Robinson
//
//  Date:  31/01/2017
//


0. Setup

To get JKL-ECM up and running, you must first have Gnu-MP installed (any
recent version from 6.0 up should do).  Then, extract the jklecm archive and
change directory to the extracted folder.  Just type

    make

This will build the program.  Then, try factoring a number with e.g.

./jklecm 1000000 1000000000 5 H 1 10 n c < input.txt

where input.txt contains an integer to factor.

To see the full list of program options, type

    ./jklecm

with no arguments and press enter.


1. Introduction

JKL-ECM (Jeon-Kim-Lee Elliptic Curve Method) is a minimal implementation of
the elliptic curve method of integer factorization using special families of
Edwards and Hessian curves with particularly good torsion properties.

It is neither faster than GMP-ECM for large numbers, nor faster than EECM-MPFQ for NFS
cofactor-sized numbers.  However, it is a convenient way to try elliptic curve
factoring using special Edwards/Hessian curves.  At present, the number of
such curves availalble is 700/4840 (Edwards/Hessian).  This means, for
example, after trying 4840 Hessian curves, the only additional computation
that makes sense is to increase the stage 1/stage 2 bounds as there will be no
other curves to try.

This might seem like a severe handicap (and it probably is in general), but these curves
seem to be particularly effective for certain classes of input number.

If you are factoring numbers of the form

    a^(2*x) + 3*b^(2*y)

then it is worthwhile trying to factor using JKL-ECM's Hessian curves, since
#E(F_p) will have a prescribed group order factor of at least 18, and possibly
36.

If you are factoring numbers of the form

    a^(2*x) + b^(2*y)

then try JKL-ECM with Edwards curves.  The group order #E(F_p) will have a
prescribed factor of at least 16, and possibly 32.

JKL-ECM includes an implementation of the stage 2 FFT continuation.  In
particular, this facilitates the finding of large prime factors (e.g. 50+ digits).
The program can handle input integers of arbitrary size.

There is much that could be improved about JKL-ECM, but at least it is an
out-of-box way to experiment with the performance of curves arising from
certain Jeon-Kim-Lee families [1], without greatly compromising speed/memory
usage/achievable target integer size.  If you would like to read our
associated paper, see [2] or ANTS XII.


2. References

[1] Daeyeol Jeon, Chang Heon Kim, and Yoonjin Lee. Families of elliptic curves
over quartic number fields with prescribed torsion subgroups. Math. Comp.,
80(276):2395–2410, 2011.

[2] Heer, H., McGuire, G. and Robinson, O. ‘JKL-ECM: an implementation
of ECM using Hessian curves’, LMS Journal of Computation and Mathematics,
19(A), pp. 83–99, 2016

