complex conjugate and modulus



P.S. Yet another version:

(%i33) declare(z,complex);
(%o33) done

(%i34) conj_to_abs (e) := block([args],
  if mapatom(e) then e
  elseif ?mtimesp(e) then (
    args : args(e),
    for p in args do e : ratsubst('cabs(p)^2, p * conjugate(p),e),
    e)
  else apply(op(e), map('conj_to_abs, args(e))));

(%i36) sin(z) * conjugate(sin(z));
(%o36) sin(z)*sin(conjugate(z))

(%i37) conj_to_abs(%);
(%o37) cabs(sin(z))^2

(%i38) ev(%,cabs);
(%o38) cosh(imagpart(z))^2*sin(realpart(z))^2+sinh(imagpart(z))^2*cos
(realpart(z))^2

Barton