# Is there a backward stable $\tilde{O}(n \log(1/\epsilon))$ algorithm to factor a complex polynomial?

Finding the roots of a complex polynomial is in general extremely numerically unstable, as discussed in (1). According to Pan ((2), (3)), this produces a cubic complexity lower bound, and he presents a near-optimal algorithm which is quasilinear in arithmetic and quasicubic in boolean (control flow) complexity. His algorithm is an improvement to the splitting circle method.

However, this lower bound applies only if we want forward stable (i.e., correct) answers. If we're satisfied with backward stable answers, where it's okay to find correct roots for a slightly modified input problem, I would expect much faster complexities to be possible. Does anyone know if such an algorithm exists, and specifically if a splitting circle variant can run in quasilinear time if we only need backward stability?

Note: $\epsilon$ in $\tilde{O}(n \log(1/\epsilon))$ vaguely refers to the relative backward accuracy of the result (the amount you have to shift the coefficients to move to the roots to the computed answers). I'm not sure exactly what the correct definition of $\epsilon$ would be, since different coefficients can change the polynomial values by dramatically different amounts.

• Good point. I added a note explaining $\epsilon$. – Geoffrey Irving Aug 12 '12 at 16:18
• you could assume that the highest coefficient is one and $x$ is scaled such that one of the well-known simple bounds for the zeros is 1; then $\epsilon$ could be the maximal absolute change of a coefficient. – Arnold Neumaier Aug 12 '12 at 16:45
• That works as long as the roots are bounded away from zero; if they approach zero the low degree coefficients start mattering a lot more than those of high degree. – Geoffrey Irving Aug 12 '12 at 16:50

I don't know about the theoretical complexity. But the practically fastest algorithm for finding all zeros of a polynomial given as a finite power series is the algorithm by Traub [1]. It factors a degree $n$ polynomial in typically $O(n^2)$ time.

As mentioned in [1], Reif [2] gives an $O(n \log^2 n (\log n + \log \epsilon))$ algorithm for the case when all roots are real, which is $O(n \log^3 n)$ as long as $\epsilon = n^{O(1)}$. He analyzes only the case of exact arithmetic, but after going through the algorithm I believe it is (or could be modified to be) backward stable. His method is an improved variant of the splitting circle method specialized to the real line.
In the exact arithmetic case, this gives $O(n \log^3 n)$ algorithm for the Hermitian tridiagonal eigenproblem. However, since the first step is to compute the characteristic polynomial, I believe the stability properties of this approach would be poor.