use of $csign



Thanks--the testsuite ran OK without locally setting limitp to false. Let 
me experiment a bit more with this  simpsignum extension.
But likely, I'll locally set limitp to false:

 defmfun simpsignum (x y z)
      (oneargcheck x)
      (setq y (simpcheck (cadr x) z))
      (setq z (let ((limitp nil)) ($csign y)))

Barton

drdieterkaiser at web.de wrote on 09/14/2009 01:23:29 PM:


> 
> Am Montag, den 14.09.2009, 05:20 -0500 schrieb Barton Willis:
> > Is there any reason to use csign instead of $csign in /src? One place 
I
> > would like
> > to use $csign is simpsgnum:
> > 
> > (defmfun simpsignum (x y z)
> >   (oneargcheck x)
> >   (setq y (simpcheck (cadr x) z))
> >   (setq z ($csign y))
> >   ;; When $csign thinks y is complex, let it be.
> >   (cond ((memq z '($complex $imaginary)) (eqtest (list '(%signum) y) 
x))
> > 
> > Changing csign --> $csign in simpsignum fixes a bug the Sage 
developers
> > have long wanted fixed
> > (this is the correct solution set, I think)
> > 
> > (%i3) to_poly_solve(q*sqrt(2+q^2)-1,q);
> > (%o3) %union([q = 1/sqrt(1-sqrt(2))],[q = 1/sqrt(sqrt(2)+1)])
> > (%i4) build_info();
> > 
> > Maxima version: 5.18post
> > Maxima build date: 4:45 9/14/2009
> > Host type: i686-pc-mingw32
> > Lisp implementation type: SBCL
> > Lisp implementation version: 1.0.29
> > 
> > I'd guess that conjugate could also benefit by using $csign.
> 
> I have implemented $csign to get a stronger test for complex expressions
> including functions and symbols which are declared to be complex.
> 
> I think csign is much too weak. $csign is stronger, but not perfect. The
> function can be improved further.
> 
> There is one problem with $csign. Because the functions for the complex
> components rectform, abs, carg, ... and the sign and $csign function are
> related it might be possible that we get subtle bugs like the problems
> we had with the definite integrals. For these integrals we have got
> sometimes an endless loop. We had to switch off the flag limitp when in
> $csign.
> 
> But I think it is useful to use $csign at more places to get code which
> handles complex expressions more completely and to improve $csign
> further.
> 
> Dieter Kaiser
> 
>