Well...

```
sage: var("z")
z
sage: E=z^2==(1-I*sqrt(3))*z.conjugate();E
z^2 == (-I*sqrt(3) + 1)*conjugate(z)
sage: E.simplify()
z^2 == z*(-I*sqrt(3) + 1)
sage: S=E.simplify().solve(z); S
[z == -I*sqrt(3) + 1, z == 0]
```

which is somewhat problematic...

```
sage: [bool(E.subs(u)) for u in S]
[False, True]
```

The root of the problem seem s to be:

```
sage: (z/(z.conjugate())).simplify()
1
```

which, IMHO is a (serious) bug...

**EDIT :** For reference, a couple ways to get a reasonable answer

*Rectangular form solutions :*

Decompose `z`

in `a+I*b`

, wit h `a`

and`b`

declared `real`

:

```
var("z", domain="complex")
E=z^2 == (-I*sqrt(3) + 1)*conjugate(z)
var("a,b", domain="real")
Et=(E.lhs()-E.rhs()).subs(z==a+I*b)
Er,Ei=(Et.real_part(), Et.imag_part())
```

via `Maxima`

:

```
S1m=[z==sol.get(a)+I*sol.get(b)
for sol in solve([Er,Ei],[a,b], solution_dict=True)]
S1s=[z==sol.get(a)+I*sol.get(b)
```

via `sympy`

:

```
for sol in solve([Er,Ei],[a,b], algorithm="sympy")]
```

These solutions are *numeric* and differ enough to not be recognized equal:

```
sage: S1m
[z == (-0.3472963564632165 + 1.969615488034418*I),
z == (-1.532088888888889 - 1.285575238466031*I),
z == (1.879385232208487 - 0.6840402588066139*I),
z == 0]
sage: S1s
[z == 0.000000000000000,
z == (-1.53208888623796 - 1.28557521937308*I),
z == (-0.347296355333861 + 1.96961550602442*I),
z == (1.87938524157182 - 0.684040286651337*I)]
sage: bool(set(S1m)==set(S1s))
False
```

An exact solution can be obtained by changing ring to `QQ`

:

```
Rp.<r,s>=PolynomialRing(AA)
ERr,ERi=[Eq.subs({a:r, b:s}) for Eq in (Er, Ei)]
J=Rp.ideal(ERr, ERi)
ERdim=J.dimension()
```

Do we have a finite solution ?

```
sage: ERdim
0
```

Yes.Get it:

```
ERsol=J.variety()
S2=[z==SR(sol.get(r).radical_expression()+I*sol.get(s).radical_expression()) for sol in ERsol]
sage: S2
[z == 0,
z == -1/2*(1/2*I*sqrt(3) + 1/2)^(1/3)*(-I*sqrt(3) + 1) - 1/2*(I*sqrt(3) + 1)/(1/2*I*sqrt(3) + 1/2)^(1/3) - I*sqrt(-1/2*I*sqrt(3)*(1/2*I*sqrt(3) + 1/2)^(1/3) - 1/2*(1/2*I*sqrt(3) + 1/2)^(1/3) + 1/2*I*sqrt(3)/(1/2*I*sqrt(3) + 1/2)^(1/3) - 1/2/(1/2*I*sqrt(3) + 1/2)^(1/3) + 2),
z == -I*sqrt(1/2*I*sqrt(3)*(1/2*I*sqrt(3) + 1/2)^(1/3) - 1/2*(1/2*I*sqrt(3) + 1/2)^(1/3) - 1/2*I*sqrt(3)/(1/2*I*sqrt(3) + 1/2)^(1/3) - 1/2/(1/2*I*sqrt(3) + 1/2)^(1/3) + 2) + (1/2*I*sqrt(3) + 1/2)^(1/3) + 1/(1/2*I*sqrt(3) + 1/2)^(1/3),
z == -1/2*(I*sqrt(3) + 1)*(1/2*I*sqrt(3) + 1/2)^(1/3) + I*((1/2*I*sqrt(3) + 1/2)^(1/3) + 1)/(1/2*I*sqrt(3) + 1/2)^(1/6) - 1/2*(-I*sqrt(3) + 1)/(1/2*I*sqrt(3) + 1/2)^(1/3)]
```

Numerical check:

```
S2n=[Eq.lhs()==Eq.rhs().n() for Eq in S2]
sage: S2n
[z == 0.000000000000000,
z == (-1.53208888623796 - 1.28557521937308*I),
z == (1.87938524157182 - 0.684040286651338*I),
z == (-0.347296355333861 + 1.96961550602442*I)]
```

Close enough for government work...

*Polar form solutions :*

This is easily solved by solving for the *quotient* of the members of the equation being equal to 1 ; of course, this misses the "obvious" solution `z==0`

(for which this quotient is undefined...).

```
var("rho, theta", domain="real")
assume(rho>0)
Srho=(E.lhs()/E.rhs()==1).subs(z==rho*e^(I*theta)).abs().simplify().solve(rho)
var("k", domain="integer")
w0=SR.wild(0)
Stheta=arg((E.lhs()/E.rhs()==1).subs(z==rho*e^(I*theta)))\
.simplify().subs(atan2(sin(w0),cos(w0))==w0+2*k*pi).solve(theta)
```

One notes that the available solvers are unable to solve tjhe last one explicitly, and that one has to help Sage a bit...

```
sage: Srho
[rho == 2]
sage: Stheta
[theta == -1/9*pi - 2/3*pi*k]
```

Numerical check:

```
sage: [u.rhs().abs().n() for u in S2]
[0.000000000000000, 2.00000000000000, 2.00000000000000, 2.00000000000000]
sage: [arg(u.rhs()).n() for u in S2]
[0.000000000000000, -2.44346095279206, -0.349065850398866, 1.74532925199433]
sage: [Stheta[0].rhs().subs(k==u).n() for u in (-1..1)]
[1.74532925199433, -0.349065850398866, -2.44346095279206]
```

Close enough, again...

HTH,