The bug is almost surely in the function sign-mexpt--here is a portion of this
code. On the first line sign-base is $nz, so sign-base is set to $zero. After that
the global sign is set to sign-base. The final conditional doesn't have a clause for
$zero, so sign remains zero. A quick cure would be append a clause ((eq sign-base '$zero) ..., I suppose.
Same bug, I suppose
$ ./maxima-local
Maxima 5.28.0_232_g5b9ec8e http://maxima.sourceforge.net
using Lisp Clozure Common Lisp Version 1.8-r15286M (WindowsX8664)
(%i1) assume(p <=0)$
(%i2) csign(sqrt(p));
(%o2) zero
The bug is almost surely in the function sign-mexpt--here is a portion of this
code. On the first line sign-base is $nz, so sign-base is set to $zero. After that
the global sign is set to sign-base. The final conditional doesn't have a clause for
$zero, so sign remains zero. A quick cure would be append a clause ((eq sign-base '$zero) ..., I suppose.