Make prime generation work when function pointers are equal. Get random
[u/mdw/catacomb] / mp-arith.c
index 0172981..941b8df 100644 (file)
@@ -229,9 +229,12 @@ int mp_eq(const mp *a, const mp *b) { return (MP_EQ(a, b)); }
 
 int mp_cmp(const mp *a, const mp *b)
 {
-  if (!((a->f ^ b->f) & MP_NEG))
-    return (mpx_ucmp(a->v, a->vl, b->v, b->vl));
-  else if (a->f & MP_NEG)
+  if (!((a->f ^ b->f) & MP_NEG)) {
+    if (a->f & MP_NEG)
+      return (-mpx_ucmp(a->v, a->vl, b->v, b->vl));
+    else
+      return (mpx_ucmp(a->v, a->vl, b->v, b->vl));
+  } else if (a->f & MP_NEG)
     return (-1);
   else
     return (+1);