polynomial solvers