More efficient Rabin-Miller test: with random witnesses, skip redundant
[u/mdw/catacomb] / rabin.h
diff --git a/rabin.h b/rabin.h
index d57efcd..d5ee9d3 100644 (file)
--- a/rabin.h
+++ b/rabin.h
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: rabin.h,v 1.5 2000/07/09 21:32:16 mdw Exp $
+ * $Id: rabin.h,v 1.6 2002/01/13 13:42:53 mdw Exp $
  *
  * Miller-Rabin primality test
  *
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: rabin.h,v $
+ * Revision 1.6  2002/01/13 13:42:53  mdw
+ * More efficient Rabin-Miller test: with random witnesses, skip redundant
+ * Montgomerization.  (Being bijective, it can't affect the distribution.)
+ *
  * Revision 1.5  2000/07/09 21:32:16  mdw
  * rabin_test: Correct error in comment.
  *
@@ -105,7 +109,7 @@ extern void rabin_create(rabin */*r*/, mp */*m*/);
 
 extern void rabin_destroy(rabin */*r*/);
 
-/* --- @rabin_test@ --- *
+/* --- @rabin_test@, @rabin_rtest@ --- *
  *
  * Arguments:  @rabin *r@ = pointer to Rabin-Miller context
  *             @mp *g@ = base to test the number against
@@ -114,9 +118,11 @@ extern void rabin_destroy(rabin */*r*/);
  *             if it succeeded.
  *
  * Use:                Performs a single iteration of the Rabin-Miller primality
- *             test.
+ *             test.  The @rtest@ variant assumes that %$g$% is either
+ *             already in Montgomery representation, or you don't care.
  */
 
+extern int rabin_rtest(rabin */*r*/, mp */*g*/);
 extern int rabin_test(rabin */*r*/, mp */*g*/);
 
 /* --- @rabin_iters@ --- *