X-Git-Url: https://scm.gforge.inria.fr/anonscm/gitweb?p=cado-nfs%2Fcado-nfs.git;a=blobdiff_plain;f=README.dlp;h=c038b34c8f3a285ed8f1b63e3784a31d7dcfaa92;hp=0a78a04a2147fac2fca21993a064b632400a5c52;hb=c9198d9c192e8379891ed2ab5b1ed19d0c3e98e3;hpb=b852223d5665d2f2aaf90fe21f6e6b04cd66fc6c
diff --git a/README.dlp b/README.dlp
index 0a78a04..c038b34 100644
--- a/README.dlp
+++ b/README.dlp
@@ -34,7 +34,8 @@ end.
Important note: the logarithms are given in an arbitrary (unknown) base.
If you want to define them with respect to a specific generator g, then
you'll have to compute the logarithm of g and then divide all the logs by
-this value.
+this value. See https://lists.gforge.inria.fr/pipermail/cado-nfs-discuss/2018-November/000939.html and
+https://lists.gforge.inria.fr/pipermail/cado-nfs-discuss/2018-November/000942.html.
**** Using Joux-Lercier polynomial selection
@@ -43,10 +44,10 @@ used. In some (many ?) cases, it can be much better to use Joux-Lercier's
polynomial selection as implemented in polyselect/dlpolyselect. In order
to use it, it is necessary to add the parameter
jlpoly = true
-and to give the additionnal parameters:
+and to give the additional parameters:
+ tasks.polyselect.degree = 3
tasks.polyselect.bound = 5
tasks.polyselect.modm = 5
- tasks.polyselect.degree = 3
Here, polynomial.degree is the degree of the polynomial with small
coefficients. The other one will have degree one less. Therefore, on this
@@ -54,24 +55,44 @@ example, this is a selection for degrees (3,2). The polynomial.bound
and the polynomial.modm parameters are passed directly to dlpolyselect.
The search is parallelized with the client/server mechanism as for the
classical polynomial selection. Each task does one value "modr" between 0
-and modm-1 (again, this is dlpolyselect terminology).
+and modm-1 (again, this is dlpolyselect terminology). The number of tried
+polynomials is roughly (2*bound+1)^(degree+1), thus here 14641 (the larger
+the better, but then polynomial selection will last longer).
For instance, the 30-digit example above can be done with JL polynomial
selection with the following command-line:
-$ ./cado-nfs.py -dlp -ell 101538509534246169632617439 191907783019725260605646959711 jlpoly=true tasks.polyselect.bound=5 tasks.polyselect.modm=5 tasks.polyselect.degree=3 tasks.reconstructlog.checkdlp=false
+$ ./cado-nfs.py -dlp -ell 101538509534246169632617439 191907783019725260605646959711 jlpoly=true tasks.polyselect.bound=5 tasks.polyselect.modm=7 tasks.polyselect.degree=3 tasks.reconstructlog.checkdlp=false
+
+In that case, the individual logarithm phase implementation is based on
+GMP-ECM, so this is available only if this library is installed and
+detected by the configuration script (see local.sh.example for indicating
+non-standard locations).
+
+Note that tasks.reconstructlog.checkdlp=false is there to disable some
+consistency checks that can not be made in JL mode.
+
+This is still experimental, but parameters optimized for the JL
+polynomial selection can be found in parameters/dlp/Joux-Lercier/ .
+Copying
+ parameters/dlp/Joux-Lercier/params.p30
+to
+ parameters/dlp/params.p30
+will automatically activate the JL polynomial selection (but will crash
+if GMP-ECM failed to be detected at compile time) for primes of this
+size. For instance,
+
+$ ./cado-nfs.py -dlp -ell 101538509534246169632617439 target=92800609832959449330691138186 191907783019725260605646959711
+
+should then work and compute the log of the given target using JL.
-Note that the individual logarithm phase is not implemented in that case,
-and the consistency check is not possible either. However, setting
- tasks.reconstructlog.partial=false
-provides a very good test that everything went as expected.
**** Using non-linear polynomials
Just like for factorization, it is possible to use two non-linear
-polynomials for DLP. However, the polynomial selection is not automatic
-in that case: the user must provide the polynomial file. Also, the
-current descent script will not work.
+polynomials for DLP. Apart from Joux-Lercier polynomial selection (see above),
+the user must provide the polynomial file. Also, the current descent script
+will not work.
See README.nonlinear for an example of importing a polynomial file with 2
non-linear polynomials.
@@ -89,7 +110,8 @@ The algorithm works "mutatis mutandis" for discrete logarithm computations
in GF(p^k). The only difference is that the two polynomials must have a
common irreducible factor of degree k over GF(p). Polynomial selection
for this case is not yet included, so you must build them by yourself,
-based on constructions available in the literature. Also the individual
+based on constructions available in the literature, and import it as
+indicated in scripts/cadofactor/README. Also the individual
logarithm has to be implemented for that case.
For DLP in GF(p^2), things are sligthly more integrated: