Revision 132f63c1a343af4280df47cf9cc0453060d506b7 authored by Jérémie Detrey on 10 March 2014, 10:29:14 UTC, committed by Jérémie Detrey on 10 March 2014, 10:31:12 UTC
1 parent b2cdbc1
Raw File
README.nonlinear
This file explains how to factor a number with two non linear polynomials.
This is currently experimental in CADO-NFS.

Assume for example we want to factor the following 59-digit number:

n = 71641520761751435455133616475667090434063332228247871795429

with the two quadratics below (found by Thomas Prest using Montgomery's two
quadratics method):

f = 215609964539787*x^2 + 75006949764904*x + 44337721223995
g = -205964131819700*x^2 - 71651332635517*x + 1199051061668898
skew = 1.29196058385
m = 14849204829709953721577291784724593124898329527333780861554
(m is the common root of f and g mod n.)

In the following, we assume $CADO is the cado-nfs source directory, and
$HOSTNAME is the hostname of your computer.

1) you first have to create a polynomial file:

$ cat c59.poly
n: 71641520761751435455133616475667090434063332228247871795429
m: 14849204829709953721577291784724593124898329527333780861554
skew: 1.29196058385
c0: 44337721223995
c1: 75006949764904
c2: 215609964539787
Y0: 1199051061668898
Y1: -71651332635517
Y2: -205964131819700

0 350000 1.9 24 34
0 350000 1.9 24 34

2) then create the factor bases and sieve:

$ makefb -poly c59.poly -alim 350000 -maxbits 18 -side 0 > c59.roots.0
$ makefb -poly c59.poly -alim 350000 -maxbits 18 -side 1 > c59.roots.1

$ las -poly c59.poly -fb0 c59.roots.0 -fb1 c59.roots.1 -I 12 -lim0 350000 -lim1 350000 -lpb0 24 -lpb1 24 -lambda0 1.1 -lambda1 1.1 -mfb0 34 -mfb1 34 -q0 350000 -q1 370000 > rels

This gives 1722157 relations (with revision cf809dc).

You may check that relations are complete and do not contain non-prime ideals:

$ check_rels -check_primality -complete rels.ok -poly c59.poly rels
    (if the (a,b)-pair are written is hexa, do not forget to add -abhexa)

3) Finally you can use cadofactor.py to continue the factorization with CADO.
For more details, see README.msieve (I.3 and I.4)
back to top