/* -*-c-*-
*
- * $Id: mptext.c,v 1.14 2002/10/09 00:33:44 mdw Exp $
+ * $Id: mptext.c,v 1.15 2002/10/15 19:18:15 mdw Exp $
*
* Textual representation of multiprecision numbers
*
/*----- Revision history --------------------------------------------------*
*
* $Log: mptext.c,v $
+ * Revision 1.15 2002/10/15 19:18:15 mdw
+ * Fix fencepost bugs in binary radix writing.
+ *
* Revision 1.14 2002/10/09 00:33:44 mdw
* Allow `0o' and `0b' prefixes for octal and binary (from Haskell)
*
/* --- Work out where to start --- */
n = mp_bits(m);
- n += bit - (n % bit);
+ if (n % bit)
+ n += bit - (n % bit);
b = n % MPW_BITS;
n /= MPW_BITS;
-
- if (n > MP_LEN(m)) {
+
+ if (n >= MP_LEN(m)) {
n--;
b += MPW_BITS;
}
{
int rc;
+ if (MP_EQ(m, MP_ZERO))
+ return (ops->put("0", 1, p));
+
/* --- Set various things up --- */
m = MP_COPY(m);