What is the best way to factor arbitrary polynomials? I am currently working on a Computer Algebra System and was wondering for suggestions on methods of finding roots/factors of polynomials. I am currently using the Numerical Durand-Kerner method but was wondering if there are any good non-numerical methods (primarily for simplifying fractions etc).
Ideally this should work for equations in multiple variables.

If you're looking to factor exactly, then you'll need to use something that's not one of the fundamental operations of addition, subtraction, multiplication, division and extraction of roots.  The Abel-Ruffini theorem says so for degree five and above.  However, there are numerous other methods to find roots exactly, using more general functions, my favorite being theta functions, as explained in the appendix to Mumford's "Tata Lectures on Theta II"
