Many times, I've struggled with simplifying complex expressions, such as this extraordinarily simple expression, and Mathematica wont do it:

$Assumptions = {l>0,a>0,a \[Element]Reals, l \[Element]Reals}
Conjugate[(Exp[I a])^(2 l)] //FullSimplify

Where Mathematica returns the same thing with no simplification. I told it the assumptions which make it very obvious to just change the sign of the exponent, and I don't understand why it doesn't work.

I looked here, but it seems like they have to define their own rules to do this kind of thing. I'm also saw here that you can do //ComplexExpand //FullSimplify for this expression, but it doesn't seem to work in all cases. Why should it be nessecary and why doesn't FullSimplify do it already? Also, I think ComplexExpand assumes that all variables are real, which was the case in this expression, but isn't always the case. So how would I do it then?

  • $\begingroup$ what do you want Conjugate[(Exp[I a])^(2 l)] simplified to? (and it is really not good idea to use l for variable, it looks like 1. Better use n or m or something other letter. $\endgroup$
    – Nasser
    Commented May 24, 2020 at 4:58
  • 1
    $\begingroup$ It is inconsistent to say that Mathematica won't simplify a complex expression while simultaneously not making use of one of its primary tools for simplifying complex expression, i.e., ComplexExpand. While ComplexExpand defaults to assuming that all variables are real, the optional second argument is used to specify which variables are complex. FullSimplify doesn't do everything because it would be inefficient to unnecessarily use additional tools in cases where they would have little value. Also, the "preferred" form is often a matter of opinion. $\endgroup$
    – Bob Hanlon
    Commented May 24, 2020 at 5:26
  • 1
    $\begingroup$ We can't also use user defined rules? i.e. no replacement is allowed? This is too much restriction. it is like saying one has to add 2 numbers but not allowed to use the plus sign. $\endgroup$
    – Nasser
    Commented May 24, 2020 at 5:34
  • $\begingroup$ "ComplexExpand assumes that all variables are real, which was the case in this expression, but isn't always the case" - indeed, so if you have things in your expression that aren't supposed to be real, that's what you use the second argument of ComplexExpand[] for. $\endgroup$ Commented May 24, 2020 at 5:55
  • 4
    $\begingroup$ I’m voting to close this question because the OP seeks already existing functionality (namely, the second argument of ComplexExpand), but refuses to use it as implemented. $\endgroup$
    – MarcoB
    Commented May 24, 2020 at 16:51

1 Answer 1


I am assuming they want Conjugate[Exp[I a]^(2 n)] to become (Exp[I a]^(-2 n) ?

By using a rule (De Moivre’s formula) (I do not see how it is possible otherwise)

ClearAll[a, n, r, m];
expr = Exp[I a]^(2 n);
e1 = ExpToTrig[expr] /. r_. (Cos[a_] + I Sin[a_])^(m_.) :> r^m (Cos[m a] + I Sin[m a]);

Mathematica graphics

Using ComplexExpand (just to compare with)

expr = Exp[I a]^(2 n);

Mathematica graphics

If this is not is meant by the question, will delete this answer.


Not the answer you're looking for? Browse other questions tagged or ask your own question.