Update of /cvsroot/maxima/maxima/src
In directory sfpcvsdas4.v30.ch3.sourceforge.com:/tmp/cvsserv8497/src
Modified Files:
comm.lisp
Log Message:
ABCL doesn't signal errors with (float n) where n is an integer or
rational that is too large to fit in a float. It returns a float
infinity instead. So skip the fast path as we currently do for gcl
and ecl which also don't signal errors.
This allows abcl to pass tests 386 and 388 in rtest16.
Index: comm.lisp
===================================================================
RCS file: /cvsroot/maxima/maxima/src/comm.lisp,v
retrieving revision 1.53
retrieving revision 1.54
diff u d r1.53 r1.54
 comm.lisp 9 Sep 2010 21:57:54 0000 1.53
+++ comm.lisp 29 Sep 2010 20:04:50 0000 1.54
@@ 1185,7 +1185,7 @@
;; float(log(int)). First try to compute (log
;; (float n)). If that works, we're done.
;; Otherwise we need to do more.
 (to (or #(or gcl ecl) (ignoreerrors (log (float n)))
+ (to (or #(or gcl ecl abcl) (ignoreerrors (log (float n)))
(let ((m (integerlength n)))
;; Write n as (n/2^m)*2^m where m is the number of
;; bits in n. Then log(n) = log(2^m) + log(n/2^m).
@@ 1196,7 +1196,7 @@
(($ratnump n)
;; float(log(n/m)) where n and m are integers. Try computing
;; it first. If it fails, compute as log(n)  log(m).
 (let ((try #(or gcl ecl)
+ (let ((try #(or gcl ecl abcl)
(ignoreerrors (log (fpcofrat n)))))
(if try
(to try)
@@ 1206,7 +1206,7 @@
;; float(log(n+m*%i)).
(let ((re ($realpart n))
(im ($imagpart n)))
 (to (or #(or gcl ecl)
+ (to (or #(or gcl ecl abcl)
(ignoreerrors (log (complex (float re)
(float im))))
(let* ((size (max (integerlength re)
