diff options
author | Marius Vollmer <mvo@zagadka.de> | 2004-09-08 14:34:51 +0000 |
---|---|---|
committer | Marius Vollmer <mvo@zagadka.de> | 2004-09-08 14:34:51 +0000 |
commit | bdb112ea6bfde57fbc40f5da0593160b511da9cd (patch) | |
tree | 02c5b8235ff3612ad2262826df5a45cef0e03b40 | |
parent | 0e12d408bd26355481fae0a66c38d2ef1367cea0 (diff) | |
download | guile-bdb112ea6bfde57fbc40f5da0593160b511da9cd.tar.gz |
(expt): Only call integer-expt for an exact integer exponent, not for
an inexact integer one. Also, let integer-expt handle negative
exponents instead of doing it here.
-rw-r--r-- | ice-9/boot-9.scm | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/ice-9/boot-9.scm b/ice-9/boot-9.scm index e854f6db7..95c6fa608 100644 --- a/ice-9/boot-9.scm +++ b/ice-9/boot-9.scm @@ -780,10 +780,8 @@ (define expt (let ((integer-expt integer-expt)) (lambda (z1 z2) - (cond ((integer? z2) - (if (negative? z2) - (/ 1 (integer-expt z1 (- z2))) - (integer-expt z1 z2))) + (cond ((and (exact? z2) (integer? z2)) + (integer-expt z1 z2)) ((and (real? z2) (real? z1) (>= z1 0)) ($expt z1 z2)) (else |