diff options
author | Dirk Herrmann <dirk@dirk-herrmanns-seiten.de> | 2000-07-13 14:47:32 +0000 |
---|---|---|
committer | Dirk Herrmann <dirk@dirk-herrmanns-seiten.de> | 2000-07-13 14:47:32 +0000 |
commit | 2238100586a99880885ac31c146a2397f2d579ff (patch) | |
tree | 5b97a57670795e98fd3a8d4f8c32be87b6408d91 | |
parent | c4da09e2ddc0f6cd2c63f4e68d75988fe7beceed (diff) | |
download | guile-2238100586a99880885ac31c146a2397f2d579ff.tar.gz |
* In expt, return exact results when possible.
-rw-r--r-- | ice-9/ChangeLog | 6 | ||||
-rw-r--r-- | ice-9/boot-9.scm | 6 |
2 files changed, 10 insertions, 2 deletions
diff --git a/ice-9/ChangeLog b/ice-9/ChangeLog index 6160c876e..5620222bc 100644 --- a/ice-9/ChangeLog +++ b/ice-9/ChangeLog @@ -1,3 +1,9 @@ +2000-07-13 Dirk Herrmann <D.Herrmann@tu-bs.de> + + * boot-9.scm (expt): In case of negative integer exponents return + an exact result if the input paramters were exact. Thanks to + Mikael for the suggestion. + 2000-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de> * boot-9.scm (expt): Make sure that integer-expt is only called diff --git a/ice-9/boot-9.scm b/ice-9/boot-9.scm index c1e578494..3735c7948 100644 --- a/ice-9/boot-9.scm +++ b/ice-9/boot-9.scm @@ -793,8 +793,10 @@ (define expt (let ((integer-expt integer-expt)) (lambda (z1 z2) - (cond ((and (integer? z2) (>= z2 0)) - (integer-expt z1 z2)) + (cond ((integer? z2) + (if (>= z2 0) + (integer-expt z1 z2) + (/ 1 (integer-expt z1 (- z2))))) ((and (real? z2) (real? z1) (>= z1 0)) ($expt z1 z2)) (else |