Update
Not sure why all responses here are not simple and direct, maybe in older versions this did not work, but now it does:
Abs[a+Exp[I*c] b]^2//ComplexExpand//FullSimplify
a^2+b^2+2 a b Cos[c]
(Abs[a+Exp[I*c] b]^2+Abs[a-Exp[I*c] b]^2)/(2 Abs[a+I b]^2)//ComplexExpand//FullSimplify
1
$Version
14.0.0 for Mac OS X x86 (64-bit) (December 1, 2023)
Original answer
Until someone figures out how to do it in a better way, here is a work around. Define a function (which is true only for your specific case of parameters):
RemoveAbs[x_] := FullSimplify[ComplexExpand[Sqrt[x Conjugate[x]]]]
Then
Abs[a + Exp[I*c] b]^2 /. Abs -> RemoveAbs
a^2 + b^2 + 2 a b Cos[c]
There is a simpler version inspired by @Nasser answer. Define a function
RemoveAbs[x_] := ComplexExpand[Abs[x]]
and now, for the sake of variety, apply simplification at the end:
Abs[a + Exp[I*c] b]^2 /. Abs -> RemoveAbs // FullSimplify
a^2 + b^2 + 2 a b Cos[c]
Point is, all the above will work for more complicated cases because /.
is a ReplaceAll
. Even for cases that are convoluted via things like, for example, TraditionalForm
- the only thing you need is that InputForm
still has Abs in it. For instance, imagine a beast of expression, here rather a simpler one but in reality they could go for pages:
(Abs[a + Exp[I*c] b]^2 + Abs[a - Exp[I*c] b]^2)/(2 Abs[a + I b]^2) // TraditionalForm
and now, voila, you get your simplification:
% /. Abs -> RemoveAbs // FullSimplify
1