Add cyclic group abstraction, with test code. Separate off exponentation
[u/mdw/catacomb] / mpx.c
diff --git a/mpx.c b/mpx.c
index f1cbbd9..1591f98 100644 (file)
--- a/mpx.c
+++ b/mpx.c
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
 /* -*-c-*-
  *
- * $Id: mpx.c,v 1.17 2004/03/27 00:04:46 mdw Exp $
+ * $Id: mpx.c,v 1.18 2004/04/01 12:50:09 mdw Exp $
  *
  * Low-level multiprecision arithmetic
  *
  *
  * Low-level multiprecision arithmetic
  *
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: mpx.c,v $
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: mpx.c,v $
+ * Revision 1.18  2004/04/01 12:50:09  mdw
+ * Add cyclic group abstraction, with test code.  Separate off exponentation
+ * functions for better static linking.  Fix a buttload of bugs on the way.
+ * Generally ensure that negative exponents do inversion correctly.  Add
+ * table of standard prime-field subgroups.  (Binary field subgroups are
+ * currently unimplemented but easy to add if anyone ever finds a good one.)
+ *
  * Revision 1.17  2004/03/27 00:04:46  mdw
  * Implement efficient reduction for pleasant-looking primes.
  *
  * Revision 1.17  2004/03/27 00:04:46  mdw
  * Implement efficient reduction for pleasant-looking primes.
  *
@@ -1179,7 +1186,7 @@ void mpx_udiv(mpw *qv, mpw *qvl, mpw *rv, mpw *rvl,
 
     d = dvl[-1];
     for (b = MPW_BITS / 2; b; b >>= 1) {
 
     d = dvl[-1];
     for (b = MPW_BITS / 2; b; b >>= 1) {
-      if (d < (MPW_MAX >> b)) {
+      if (d <= (MPW_MAX >> b)) {
        d <<= b;
        norm += b;
       }
        d <<= b;
        norm += b;
       }