a = complex(1, 2)
b = complex(-1, 7)
c = complex("1+2j")
d = complex(3.14, 2.71)
print(a, b, c, d)

complex(complex(3, 2))
complex(1, complex(3, 2))  # (-1+3j)
complex(complex(3, 2), 1)  # (3+3j)
complex(complex(3, 2), complex(3, 2))  # (1+5j)


c1 = 2 + 2j
c2 = 1 + 5j
c3 = c1 * c2
c3 = c1 / c2
c3 = c1**2
c3 = c1**c2
c3 = c1 + c2
abs(c3)
print(c3)


print((2**1j + 2**-1j) / 2)


complex(1, complex(3, 2))
complex(complex(3, 2), 1)
complex(complex(3, 2), complex(3, 2))

z = 3 + 2j
z.real
z.imag
z.conjugate()


3 + 2j == 2j + 3
3 - 2j == 3 + (-2j)
complex(3, 2) == 3 + 2j
complex(3) == 3 + 0j
complex() == 0 + 0j

z = complex(3, 2)
z is complex(z)


import matplotlib.pyplot as plt


def move_spines():
    """Crea la figura de pyplot y los ejes. Mueve las lineas de la izquierda y de abajo
    para que se intersecten con el origen. Elimina las lineas de la derecha y la de arriba.
    Devuelve los ejes."""
    fix, ax = plt.subplots()
    for spine in ["left", "bottom"]:
        ax.spines[spine].set_position("zero")

    for spine in ["right", "top"]:
        ax.spines[spine].set_color("none")

    return ax


ax = move_spines()
ax.set_xlim(-10, 10)
ax.set_ylim(-10, 10)
ax.grid()
ax.scatter(c1.real, c1.imag)
ax.scatter(c2.real, c2.imag)
ax.scatter(c3.real, c3.imag)
plt.title("Plano complejo")
plt.show()


z = 3 + 2j

import math

math.acos(z.real / abs(z))
math.asin(z.imag / abs(z))
math.atan(z.imag / z.real)
math.degrees(0.5880026035475675)  # Radians to degrees
math.radians(180)


import cmath

cmath.sqrt(-1)
cmath.acos(z.real / abs(z))


(2**1j + 2**-1j) / 2