> At the end I think there should no longer exist a separat function cabs, because
> abs should include the correct and complete handling of Complex values.
I don't have time for a complete answer, but there are several big
issues in all this:
1) Maxima in general assumes that all variables are real-valued. This
assumption is implicit in many simplifications etc. Using
declare(z,complex) should override this default, but it is not checked
for in many places. Also, Maxima in general assumes that functions
are real-valued. In theory, domain:complex overrides that default,
but in practice it does not. e.g. abs(sqrt(x)) -> sqrt(x).
2) There is a very big difference between abs() and cabs(), and they
should not be unified. In effect, abs is a noun form and cabs is a
verb form. Cabs (like rectform or integrate or limit) is a *routine*
which returns the absolute value of the expression by using a variety
of techniques, including asking the user questions. Abs is a
*mathematical function* which *represents* an absolute value. When
the user writes abs(log(a)), he/she typically wants to manipulate that
expression, not be asked a question about the sign of a, or get a
messy expression like (if a>0 then log(a) else log(-a)+%i*%pi).
These are *design decisions*, not bugs, and have been debated and
thought about quite a bit. They may well need to be reconsidered, but
this is NOT a matter of "fixing bugs", but "changing the
specification".
Sorry I can't spend more time on this.
-s