Maxima 5.9.3 release schedule



>>>>> "Robert" == Robert Dodier <robert.dodier at gmail.com> writes:

    Robert> OK, for the record, here are the results that I get for
    Robert> different Lisp versions on my desktop box (linux).
    Robert> GCL, Clisp, SBCL all report failure on rtest_trig # 68.
    Robert> SBCL reports 2 other failures in rtest_trig.
    Robert> No other test suite failures are reported.

    Robert> GCL: rtest_trig problem # 68 =>
    Robert> [[atanh(x),-%i/2-1/2],[atanh(x),%i/2-1/2],[atanh(x),%i/2+1/2],
    Robert>  [atanh(x),-%i-2],[atanh(x),%i-2],[atanh(x),-2],[atanh(x),2-%i],
    Robert>  [atanh(x),%i+2],[atanh(x),2],[acot(x),1/2-%i/2],[acot(x),2-%i],
    Robert>  [acot(x),%i+2],[atan(x),1/2-%i/2],[atan(x),%i/2+1/2],
    Robert>  [atan(x),%i+2],[asin(x),-1/2]]

I believe I have found the problem for this test.  It's a long
standing bug, I think, in fpatan2 in float.lisp.  There is a clause
there that says

 	((signp g (car x))
 	 (cond ((signp g (car y)) (fpatan (fpquotient y x)))
	       (t (fpminus (fpatan (fpquotient y x))))))

This computes atan2(y,x) for x > 0.  The last line handles the case
of y <= 0.  fpatan returns a negative number and we negate it again,
so atan2(y,x) > 0 for y < 0 and x > 0.  This is wrong.

I think this also explains why simpatan2 in comm2.lisp had this bit of
weird code:

	   (if (mminusp* y)
	       (neg (*fpatan (neg y) (list x)))
	       (*fpatan y (list x)))

There was also a bug in complex-atanh in float.lisp, which is fixed.

With these changes clisp and cmucl fails problem 68 with result
[[atanh(x), - 2], [atanh(x), 2]].  This is expected, I think because
rectform disagrees on the branch cut here.  (Cmucl still fails 65, in
the same way as before.)

Ray