Add some more test vectors.
[u/mdw/catacomb] / limlee.c
index 705a2f1..45f579d 100644 (file)
--- 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
  *
 /*----- 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];