exponential with complex exponents



I agree that the float/numer situation is a mess.

The reliable way to convert a constant expression involving complex
numbers to the rectangular form r+i*%i is
block([numer:true],rectform(expr)) or equivalently
ev(rectform(expr),numer) or (on a command line) rectform(expr),numer.

Converting to the polar form m*%e^(%i*a) or m*%e^(%i*a*%pi) is
messier, because %e^(float*%i) simplifies automatically to the
rectangular form, so the polarform function won't help.  I'd suggest

    fpolarform(expr):=
       numer(cabs(expr))*%e^(%i*%pi*numer(carg(expr)/%pi)),

where numer is a Maxima macro defined as:

    numer(x) ::= subst(x, 'x, '(block([numer : true], x)))

          -s