Add shortcut for (expt -1 power).
authorRaymond Toy <toy.raymond@gmail.com>
Fri, 8 Nov 2013 06:33:42 +0000 (22:33 -0800)
committerRaymond Toy <toy.raymond@gmail.com>
Fri, 8 Nov 2013 06:33:42 +0000 (22:33 -0800)
src/code/irrat.lisp

index 67ca060..927a5fb 100644 (file)
 ;;; of power are calculated as positive integers, and inverted if negative.
 ;;;
 (defun intexp (base power)
-  ;; Handle the special case of 1^power.  Maxima sometimes does this,
-  ;; and there's no need to cause a continuable error in this case.
-  ;; Should we also handle (-1)^power?
+  ;; Handle the special case of 1^power and (-1)^power.  Maxima
+  ;; sometimes does this, and there's no need to cause a continuable
+  ;; error in this case.
   (when (eql base 1)
     (return-from intexp base))
+  (when (eql base -1)
+    (return-from intexp (if (oddp power) -1 1)))
   
   (when (> (abs power) *intexp-maximum-exponent*)
     ;; Allow user the option to continue with calculation, possibly