"Sign" incomplete?



>  Sign is really quite stupid.

Additional examples:

(%i1) (assume(a<0, b<=0, notequal(c,0), d >=0, e > 0, equal(f,0)),  l: [a,b,c,d,e,f,g],
          funmake('matrix, outermap(lambda([a,b], (?clearsign(), errcatch(sign(a)^sign(b)=sign(a^b)))),l,l)));
sign: division by zero in f^a
sign: division by zero in f^f
(%o1) matrix([[neg^neg=neg],[neg^nz=pn],[neg^pn=neg],[neg^pz=pn],[neg^pos=neg],[neg^zero=pos],[neg^pnz=pn]],[[nz^neg=neg],[nz^nz=pn],[nz^pn=nz],[nz^pz=nz],[nz^pos=nz],[nz^zero=pos],[nz^pnz=nz]],[[pn^neg=pn],[pn^nz=pn],[pn^pn=pn],[pn^pz=pn],[pn^pos=pn],[pn^zero=pos],[pn^pnz=pn]],[[pz^neg=pos],[pz^nz=pos],[pz^pn=pz],[pz^pz=pz],[pz^pos=pz],[pz^zero=pos],[pz^pnz=pz]],[[pos^neg=pos],[pos^nz=pos],[pos^pn=pos],[pos^pz=pos],[pos^pos=pos],[pos^zero=pos],[pos^pnz=pos]],[[],[zero^nz=zero],[zero^pn=zero],[zero^pz=zero],[zero^pos=zero],[],[zero^pnz=zero]],[[pnz^neg=pn],[pnz^nz=pn],[pnz^pn=pnz],[pnz^pz=pnz],[pnz^pos=pnz],[pnz^zero=pos],[pnz^pnz=pnz]])

--Barton