/* -*-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);
# Test vectors for MP textual I/O
#
-# $Id: mptext,v 1.9 2002/10/09 00:34:57 mdw Exp $
+# $Id: mptext,v 1.10 2002/10/15 19:18:15 mdw Exp $
mptext-ascii {
# --- Perfectly valid things ---
# --- Word-boundary tests for binary-radix translation ---
+ 0 0 16 0;
8 1234567012 8 1234567012;
8 12345670123 8 12345670123;
8 123456701234 8 123456701234;
16 12345678 16 12345678;
16 123456789 16 123456789;
+ 10 -4009356060 16 -eef9eb1c;
+
# --- Bugs ---
16 84d192cd06ae59691897fa409da6198d5269325d