/* -*-c-*-
*
- * $Id: mpx.c,v 1.14 2002/10/19 18:55:08 mdw Exp $
+ * $Id: mpx.c,v 1.15 2002/10/20 01:12:31 mdw Exp $
*
* Low-level multiprecision arithmetic
*
/*----- Revision history --------------------------------------------------*
*
* $Log: mpx.c,v $
+ * Revision 1.15 2002/10/20 01:12:31 mdw
+ * Two's complement I/O fixes.
+ *
* Revision 1.14 2002/10/19 18:55:08 mdw
* Fix overflows in shift primitives.
*
bits -= 8;
}
b = U8(~b + c);
- c = !b;
+ c = c && !b;
*p++ = b;
}
while (p < q) {
b = U8(~b + c);
- c = !b;
+ c = c && !b;
*p++ = b;
b = 0;
}
return;
while (p < q) {
n = U8(~(*p++) + c);
- c = !n;
+ c = c && !n;
w |= n << bits;
bits += 8;
if (bits >= MPW_BITS) {
bits -= 8;
}
b = U8(~b + c);
- c = !b;
+ c = c && !b;
*--q = b;
}
while (q > p) {
b = ~b + c;
- c = !(b & 0xff);
+ c = c && !(b & 0xff);
*--q = b;
b = 0;
}
return;
while (q > p) {
n = U8(~(*--q) + c);
- c = !n;
+ c = c && !n;
w |= n << bits;
bits += 8;
if (bits >= MPW_BITS) {