import numpy as np
import sympy as sym
from IPython.display import display,Math
print('Division with complex numbers')
display(Math('\\frac{4+2i}{2} = 2+i'))
display(Math('\\frac{4+2i}{2-3i} = \\frac{(4+2i)(2+3i)}{(2-3i)(2+3i)}'))
display(Math('\\quad \\quad \\quad = \\frac{8+12i+4i-6}{2^2+3^2}'))
display(Math('\\quad \\quad \\quad = \\frac{2+16i}{13}'))
display(Math('\\frac{z}{w} = \\frac{zw^*}{ww^*}'))
z = np.complex(4,2)
display(Math('\\frac{%s}{2} = %s' %(z,z/2)))
display(Math('\\frac{%s}{2} = %s' %(z,sym.sympify(z/2))))
z1 = np.complex(4,2)
z2 = np.complex(2,-3)
display(Math('\\frac{%s}{%s} = \\frac{%s\\times %s}{%s\\times %s} = %s' \
%(z1,z2, \
z1,np.conj(z2),z2,np.conj(z2), \
z1/z2 )))
print('Exercise')
display(Math('\\frac{(z-1)(zw+w)}{wz-w}\\times \\frac{(w-1)(1-w)}{-zw^2-w^2+2wz+2w-z-1}'))
display(Math('z = 42i'))
display(Math('w = 35i'))
z = np.complex(4,2)
w = np.complex(3,5)
left_numer = (z-1) * (z*w+w)
left_denom = w*z - w
left_part = left_numer / left_denom
right_numer = (w-1) * (1-w)
right_denom = -w**2*z - w**2 + 2*w*z + 2*w - z - 1
right_part = right_numer / right_denom
solution = left_part * right_part
print(solution)