Fix ticket:65 some more.
authorRaymond Toy <toy.raymond@gmail.com>
Fri, 25 Jan 2013 04:55:45 +0000 (20:55 -0800)
committerRaymond Toy <toy.raymond@gmail.com>
Fri, 25 Jan 2013 04:55:45 +0000 (20:55 -0800)
Apply the expt transform in more places.  The test script in the
ticket now passes.

src/code/irrat.lisp

index f04b154..67ca060 100644 (file)
         (intexp base power))
        (((foreach single-float double-float)
          rational)
-        (real-expt base power '(dispatch-type base)))
+        (or (expt-xfrm base power)
+            (real-expt base power '(dispatch-type base))))
        (((foreach fixnum (or bignum ratio) single-float)
          (foreach ratio single-float))
-        (real-expt base power 'single-float))
+        (or (expt-xfrm (coerce base 'single-float) power)
+            (real-expt base power 'single-float)))
        (((foreach fixnum (or bignum ratio) single-float double-float)
          double-float)
-        (real-expt base power 'double-float))
+        (or (expt-xfrm (coerce base 'double-float) power)
+            (real-expt base power 'double-float)))
        ((double-float single-float)
-        (real-expt base power 'double-float))
+        (or (expt-xfrm (coerce base 'double-float) power)
+            (real-expt base power 'double-float)))
        #+double-double
        (((foreach fixnum (or bignum ratio) single-float double-float
                   double-double-float)
          double-double-float)
-        (dd-%pow (coerce base 'double-double-float) power))
+        (or (expt-xfrm (coerce base 'double-double-float) power)
+            (dd-%pow (coerce base 'double-double-float) power)))
        #+double-double
        ((double-double-float
          (foreach fixnum (or bignum ratio) single-float double-float))
-        (dd-%pow base (coerce power 'double-double-float)))
+        (or (expt-xfrm base power)
+            (dd-%pow base (coerce power 'double-double-float))))
        (((foreach (complex rational) (complex single-float) (complex double-float)
                   #+double-double (complex double-double-float))
          rational)