X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/d28d625a0957b9a371570f020ece3d87274af68b..36d3af1512969fbebf6eb8cc66ae24fa4888db77:/limlee.c diff --git a/limlee.c b/limlee.c index 705a2f1..45f579d 100644 --- a/limlee.c +++ b/limlee.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: limlee.c,v 1.2 2000/07/26 18:00:00 mdw Exp $ + * $Id: limlee.c,v 1.4 2000/08/15 21:45:05 mdw Exp $ * * Generate Lim-Lee primes * @@ -30,6 +30,14 @@ /*----- Revision history --------------------------------------------------* * * $Log: limlee.c,v $ + * Revision 1.4 2000/08/15 21:45:05 mdw + * Use the new trial division equipment in pfilt. This gives a 10% + * performance improvement in dsa-gen.t. + * + * Revision 1.3 2000/07/29 09:58:32 mdw + * (limlee): Bug fix. Old versions didn't set the filter step if @ql@ was + * an exact divisor of @pl@. + * * Revision 1.2 2000/07/26 18:00:00 mdw * No footer line! * @@ -164,7 +172,6 @@ mp *limlee(const char *name, mp *d, mp *newp, /* --- Now allocate the working memory --- */ - primorial_setup(); v = xmalloc(mm * sizeof(mp *)); c = xmalloc(mm); @@ -179,10 +186,10 @@ mp *limlee(const char *name, mp *d, mp *newp, if (oev && oev(PGEN_BEGIN, &ev, oec) == PGEN_ABORT) goto fail; + pf.step = 2; if (qql) { dstr_putf(&dn, "%s [+]", name); qq = mprand(d, qql, r, 1); - pf.step = 2; qq = pgen(dn.buf, qq, qq, iev, iec, 0, pgen_filter, &pf, rabin_iters(qql), pgen_test, &rb); } @@ -222,20 +229,18 @@ again: { mp *p = mpmul_done(&mmul); - mp *g = newp; + mp *g; int rc; /* --- Check for small factors --- */ p = mp_lsl(p, p, 1); p = mp_add(p, p, MP_ONE); - mp_gcd(&g, 0, 0, p, primorial); - if (MP_CMP(g, !=, MP_ONE)) { - mp_drop(g); + rc = pfilt_smallfactor(p); + if (rc == PGEN_FAIL) { mp_drop(p); continue; } - mp_drop(g); /* --- Send an event out --- */ @@ -301,7 +306,7 @@ done: { *nf = nn; *f = vv = xmalloc(nn * sizeof(mp *)); } - + for (i = 0; i < mm; i++) { if (c[i] && vv) *vv++ = v[i];