/* -*-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
*
/*----- 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!
*
/* --- Now allocate the working memory --- */
- primorial_setup();
v = xmalloc(mm * sizeof(mp *));
c = xmalloc(mm);
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);
}
{
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 --- */
*nf = nn;
*f = vv = xmalloc(nn * sizeof(mp *));
}
-
+
for (i = 0; i < mm; i++) {
if (c[i] && vv)
*vv++ = v[i];