summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Vollmer <mvo@zagadka.de>2004-09-08 14:34:51 +0000
committerMarius Vollmer <mvo@zagadka.de>2004-09-08 14:34:51 +0000
commitbdb112ea6bfde57fbc40f5da0593160b511da9cd (patch)
tree02c5b8235ff3612ad2262826df5a45cef0e03b40
parent0e12d408bd26355481fae0a66c38d2ef1367cea0 (diff)
downloadguile-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.scm6
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