solving complex polynomials