ec-bin (ec_binproj): Make curve setup faster.
[u/mdw/catacomb] / mp-arith.c
index 941b8df..9cb5178 100644 (file)
@@ -360,7 +360,7 @@ mp *mp_bit##n##2c(mp *d, mp *a, mp *b)                                      \
     p_bn                                                               \
   } else {                             /* Both negative */             \
     mp *t = mp_not2c(MP_NEW, a);                                       \
-    mp *d = mp_not2c(d, b);                                            \
+    d = mp_not2c(d, b);                                                        \
     d = mp_bit##abn(d, t, d);                                          \
     MP_DROP(t);                                                                \
     p_abn                                                              \
@@ -652,16 +652,16 @@ mp *mp_odd(mp *d, mp *m, size_t *s)
     ss = 0;
   else {
     mpw x = *v;
-    mpw mask = MPW_MAX;
-    unsigned z = MPW_BITS / 2;
+    unsigned z = MPW_P2;
+    mpw mask = ((mpw)1 << z) - 1;
 
     while (z) {
-      mask >>= z;
       if (!(x & mask)) {
        x >>= z;
        ss += z;
       }
       z >>= 1;
+      mask >>= z;
     }
   }