From 964614f9bb879c929e08465f53f530bae80be3fa Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Thu, 16 Feb 2017 17:24:16 -0500 Subject: [PATCH] (number->string) support for bignums --- runtime.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/runtime.c b/runtime.c index db9206e6..425ca0c6 100644 --- a/runtime.c +++ b/runtime.c @@ -1721,6 +1721,14 @@ object Cyc_number2string2(void *data, object cont, int argc, object n, ...) snprintf(buffer, 1024, "%d", ((integer_type *) n)->value); } else if (type_of(n) == double_tag) { double2buffer(buffer, 1024, ((double_type *) n)->value); + } else if (type_of(n) == bignum_tag) { + int sz; + mp_radix_size(&bignum_value(n), 10, &sz); + if (sz > 1024) { + // TODO: just temporary, need to handle this better + Cyc_rt_raise(data, "number->string - bignum is too large to print"); + } + mp_toradix(&bignum_value(n), buffer, 10); } else { Cyc_rt_raise2(data, "number->string - Unexpected object", n); }