From 227a094399e8e8bab2ce52be94c38aab4a8c2e7d Mon Sep 17 00:00:00 2001
From: Alex Shinn <ashinn@users.noreply.github.com>
Date: Sat, 2 Jan 2010 12:02:20 +0900
Subject: [PATCH] offby1 error in bignum_to_double also fixing exact?
 definition to include bignums

---
 lib/init.scm | 2 +-
 opt/bignum.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/init.scm b/lib/init.scm
index e1b7b256..853e2f99 100644
--- a/lib/init.scm
+++ b/lib/init.scm
@@ -425,7 +425,7 @@
 (define complex? number?)
 (define rational? number?)
 (define real? number?)
-(define exact? fixnum?)
+(define (exact? x) (if (fixnum? x) #t (bignum? x)))
 (define inexact? flonum?)
 (define (integer? x)
   (if (fixnum? x) #t (if (bignum? x) #t (and (flonum? x) (= x (truncate x))))))
diff --git a/opt/bignum.c b/opt/bignum.c
index b1b82780..8cbd012a 100644
--- a/opt/bignum.c
+++ b/opt/bignum.c
@@ -141,7 +141,7 @@ double sexp_bignum_to_double (sexp a) {
   double res = 0;
   sexp_sint_t i;
   sexp_uint_t *data=sexp_bignum_data(a);
-  for (i=sexp_bignum_hi(a); i>=0; i--)
+  for (i=sexp_bignum_hi(a)-1; i>=0; i--)
     res = res * ((double)SEXP_UINT_T_MAX+1) + data[i];
   return res;
 }