declare(rrr,real)
declare(zzz,complex)
featurep(x,real) => false (!!)
With domain=real, should be true.
featurep(%i,imaginary) => false (!!)
Should be true.
featurep(cabs(zzz),real) unnecessarily asks whether
SQRT(REALPART(zzz)^2+IMAGPART(zzz)^2) is positive
or zero; similarly for sqrt(abs(x)+abs(y)).
Though featurep(sqrt(x),real) asks x pos/neg/z and
gives correct results, featurep(sqrt(x),imaginary) doesn't
ask the questions and returns false.
---------------
Note that (as best I understand its semantics), featurep
*correctly* gives featurep(rrr,complex)=>true, etc. I
believe that featurep is supposed to report whether the
range of values of an expression is a subset of the set
defined. Since rrr is real, and the reals are a subset of
the complexes, 3 is also complex.
Robert Dodier
2006-07-07