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; }