Weird simplification of complex value and its conjugate?

Consider the following simplification

(Sqrt[A] Sqrt[Conjugate[A]])/Sqrt[A Conjugate[A]] // FullSimplify


(Sqrt[Conjugate[A]] Sign[A])/Sqrt[A]

I am a bit confused by this output. I would have expected Mathematica to return just 1, since

$$A=|A|e^{i(\phi+2\pi n)}~~~,~~~A^*=|A|e^{-i(\phi+2\pi n)}~~~,~~~n\in\mathbb{Z}\,,$$

$$\frac{\sqrt{A}\sqrt{A^*}}{\sqrt{AA^*}}=\frac{|A|\sqrt{e^{i(\phi+2\pi n)}}\sqrt{e^{-i(\phi+2\pi n)}}}{|A|}=e^{i\frac{\phi+2\pi n}{2} -i\frac{\phi+2\pi n}{2}}=1$$

on all branches $n\in \mathbb{Z}$.

Instead, we get the above output, where I'm not even sure what Sign of a complex number is supposed to mean. What is going on? Is there a way to make Mathematica simplify this properly?

EDIT:

Just to convince everyone that there is nothing special going on for Arg[A] >= Pi, see the following plot

Plot3D[ReIm[(Sqrt[x Exp[I \[Phi]]] Sqrt[x Exp[-I \[Phi]]])/Sqrt[  x Exp[I \[Phi]] x Exp[-I \[Phi]]]], {x, 0, 50}, {\[Phi], 0, 20 \[Pi]}]


Real part is always 1, imaginary part is always 0.

EDIT2:

It seems that the trouble of $\sqrt{(-1)\cdot(-1)}$ vs $\sqrt{-1}\cdot \sqrt{-1}$ is addressed even in the relevant wikipedia article. There it is pointed out that $\sqrt{z^*}\neq \sqrt{z}^*$ when the principal square root function is considered. I guess Mathematica uses exactly that principal function version, which explains why it does not return what I expected.

Personally, I would have preferred if on the field of complex numbers we had non-identical $(-1)=e^{i \pi}$ and $(-1)^*=e^{-i \pi}$, which would resolve the issue and make $\sqrt{z^*}= \sqrt{z}^*$ true. But that's not standard, so I guess I can't expect it from Mathematica either.

• From the "Details" section of the Sign documentation: "For non-zero complex numbers z, Sign[z] is defined as z/Abs[z]". – John Doty Jun 29 '18 at 17:48
• @JohnDoty I see! – Kagaratsch Jun 29 '18 at 18:40

Since Sqrt is a function, it must be defined with a branch cut (this is not a shortcoming of Mathematica, just a result of requiring functions to be single-valued). The cut used by Mathematica means that phases $\phi$ of complex arguments are moved into the interval $-\pi < \phi\le \pi$ before applying the rule $\sqrt{\exp(i \phi)} = \exp(i \phi/2)$.

In your derivation, this rule is applied without moving the argument to the correct branch. This is a misunderstanding based on the fact that in mathematics the interpretation of the symbol $\sqrt{\ldots}$ isn't as strict as in Mathematica. You therefore have to adjust your expectation to correspond to the meaning of Sqrt, or replace the function Sqrt by something else.

I assume you don't want to throw out Sqrt from the code, so here is what you could do to get the expected result:

Simplify[(Sqrt[A] Sqrt[Conjugate[A]])/Sqrt[A Conjugate[A]] /. A -> Abs[A] Exp[I ϕ],
Assumptions -> {-π < ϕ < π}]


1

What I did is replace A by its AbsArg representation and added the assumption about the phase ϕ being in the open interval excluding the boundaries.

It evidently depends on the value of A. Try

(Sqrt[A] Sqrt[Conjugate[A]])/Sqrt[A Conjugate[A]] //
PowerExpand[#,
Assumptions -> A \[Element] Complexes] & // FullSimplify

Piecewise[{{-1, Arg[A] >= Pi}}, 1]


So it's 1 if Arg[A] <= Pi

• The PowerExpand function loses phase information, which is why you obtain this wrong result. See my edit for a plot, the function is equal to 1 in the lower half plane just as well as in the upper half plane. – Kagaratsch Jun 29 '18 at 18:45
• Note that Arg[A] is always between -Pi and Pi, and "it's 1 if Arg[A] <= Pi" should read a strict < in place of <=. Not sure why the restriction on the range of Arg[] is not applied in simplification. – Michael E2 Jun 29 '18 at 19:44
• @MichaelE2 I see! That makes more sense, thank you. – Kagaratsch Jun 29 '18 at 20:43
• If Arg[A] == Pi, then A is pure Real. With the assumption that A is complex, Arg[A] = Pi is not a possibility. – Bill Watts Jun 30 '18 at 0:48
• If A is real and negative, -1 is the right answer because we have (I*Sqrt[Abs[A]])^2/Sqrt[A^2] which is -1 – Bill Watts Jun 30 '18 at 0:58
(Sqrt[A] Sqrt[Conjugate[A]])/Sqrt[A Conjugate[A]] /. A -> -1
(*  -1  *)


because it's

I * I / 1

• Mathematica seems to evaluate any expression Exp[ I Pi (1+2n) ]->-1 for any explicitly given integer n. However, I'm skeptical whether this is mathematically correct, since it disregards the phase. Exp[-I \[Pi]/2] and Exp[I \[Pi]/2] both square to -1, but are clearly different. Which means, in a proper treatment one should keep track of the branches to be able to recover them through a square root. – Kagaratsch Jun 29 '18 at 19:38
• @Kagaratsch Power/Sqrt "give the principal value" according to the docs. – Michael E2 Jun 29 '18 at 19:47
• I see, so by always taking the principal value Mathematica deliberately drops the phase information. Which means, Mathematica is not applicable to properly work with complex numbers... – Kagaratsch Jun 29 '18 at 20:40
• Mathematica works fine with complex numbers. It just can't read your mind about which branch of a multivalued function you want to use in a particular case. – John Doty Jun 29 '18 at 20:51
• @JohnDoty A complex Conjugate number is mathematically rigorously defined. And as shown in my question, when applying the correct definition of what Conjugate actually means the answer is the same for all branches $n\in\mathbb{Z}$. So I'm not sure why Mathematica would need to read anyones mind to return the only correct answer. – Kagaratsch Jun 29 '18 at 21:19

In addition to all the answers about complex numbers, Mathematica makes no assumptions that A is a number. It could just as easily be a matrix, for example:

In[13]:= (Sqrt[A] Sqrt[Conjugate[A]])/Sqrt[A Conjugate[A]] /. A -> {{1, I}, {-I, -1}}

Out[13]= {{1, 1}, {1, -1}}

In[14]:= (Sqrt[Conjugate[A]] Sign[A])/Sqrt[A] /. A -> {{1, I}, {-I, -1}}

Out[14]= {{1, 1}, {1, -1}}


in which case returning a scalar would be incorrect.

• I see, that is a very good point! Thank you for pointing this out. – Kagaratsch Jun 29 '18 at 21:21
• However, unfortunately, even the following does not simplify properly: FullSimplify[(Sqrt[A] Sqrt[Conjugate[A]])/Sqrt[A Conjugate[A]], Assumptions -> Element[A, Complexes]]. But was worth a shot. – Kagaratsch Jun 29 '18 at 21:28
• Try it with Conjugate[Sqrt[A]] instead of Sqrt[Conjugate[A]]. – Brett Champion Jun 29 '18 at 21:43
• Ahha, then it works! Interesting curiosity. – Kagaratsch Jun 29 '18 at 21:45

A bit long for a comment. Consider:

a = Sqrt[A] /. A -> -1
(* I *)


Correct. Sqrt[-1] is I by definition.

b = Sqrt[Conjugate[A]] /. A -> -1
(* I *)


Correct. Conjugate[-1] is -1, and Sqrt[-1] is I by definition.

c = Sqrt[A Conjugate[A]] /. A -> -1
(* 1 *)


Correct. Sqrt[1] is unambiguously 1.

(a b)/c
(* -1 *)


Correct.

(Sqrt[A] Sqrt[Conjugate[A]])/Sqrt[A Conjugate[A]] /. A -> -1
(* -1 *)


Now, you consider this wrong, but it's the same as (a b)/c. Mathematica is thus consistent, which is a crucial thing to a computer algebra system. To get the answer you want, Mathematica would have to use a different branch cut for different instances of Sqrt in your expression. How is it supposed to know that this is what you intend?

• My point is that for any complex number $z$ the inner product satisfies $z\bar z\geq 0$. Since $\sqrt{\bar z}=\bar{\sqrt{z}}$, the inner product $\sqrt{z}\sqrt{\bar z}\geq 0$ has to hold. $\sqrt{-1}=i$ only if $-1=e^{i\pi}$, but $\sqrt{-1}=-i$ if you write $-1=e^{-i\pi}$. When extending the field of numbers to be complex, -1 and OverBar[-1] should not be identical. – Kagaratsch Jun 30 '18 at 0:24
• That's not the usual mathematical convention, so you can hardly expect Mathematica to use it. – John Doty Jun 30 '18 at 23:46
• Yes, sadly it seems to be that way. – Kagaratsch Jul 1 '18 at 0:26