diff --git a/eval.c b/eval.c index 52d0a469..ae17ecec 100644 --- a/eval.c +++ b/eval.c @@ -1210,7 +1210,7 @@ static sexp sexp_expt_op (sexp ctx sexp_api_params(self, n), sexp x, sexp e) { else return sexp_type_exception(ctx, self, SEXP_FIXNUM, e); f = pow(x1, e1); - if ((f > SEXP_MAX_FIXNUM) || (f < SEXP_MIN_FIXNUM) + if ((f*1000.0 > SEXP_MAX_FIXNUM) || (f*1000.0 < SEXP_MIN_FIXNUM) #if SEXP_USE_FLONUMS || (! sexp_fixnump(x)) || (! sexp_fixnump(e)) #endif diff --git a/opt/bignum.c b/opt/bignum.c index 1f7e45d6..77619d2e 100644 --- a/opt/bignum.c +++ b/opt/bignum.c @@ -455,7 +455,7 @@ sexp sexp_bignum_expt (sexp ctx, sexp a, sexp b) { if (e & 1) res = sexp_bignum_mul(ctx, NULL, res, acc); sexp_gc_release2(ctx); - return res; + return sexp_bignum_normalize(res); } /****************** generic arithmetic ************************/