* In expt, return exact results when possible.
authorDirk Herrmann <dirk@dirk-herrmanns-seiten.de>
Thu, 13 Jul 2000 14:47:32 +0000 (14:47 +0000)
committerDirk Herrmann <dirk@dirk-herrmanns-seiten.de>
Thu, 13 Jul 2000 14:47:32 +0000 (14:47 +0000)
ice-9/ChangeLog
ice-9/boot-9.scm

index 6160c87..5620222 100644 (file)
@@ -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
index c1e5784..3735c79 100644 (file)
 (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