  We investigate Newton's method as a root finder for complex polynomials of
arbitrary degree. While polynomial root finding continues to be one of the
fundamental tasks of computing, with essential use in all areas of theoretical
mathematics, numerics, computer graphics and physics, known methods have either
excellent theoretical complexity but cannot be used in practice, or are
practically efficient but are a lacking a successful theory behind them.
  In this manuscript we describe the theoretical complexity of Newton's method
for finding all roots of polynomials of given degree and show that it is
near-optimal for the known set of starting points that find all roots. This
theoretical result is complemented by a recent implementation of Newton's
method that finds all roots of various polynomials of degree more than a
million, significantly faster than our upper bounds on the complexity indicate,
and often much faster than established fast root finders. In some experiments,
it was possible to find all roots even with complexity $O(d\log d)$ for degrees
exceeding 100 million. Newton's method thus stands out as a method that has
merits both from the theoretical and from the practical point of view.
  Our study is based on the known explicit set of universal starting points
that is guaranteed to find all roots of polynomials of degree $d$
(appropriately normalized). We show that this set contains $d$ points that
converge very quickly to the $d$ roots: the expected total number of Newton
iterations required to find all roots with precision $\eps$ is
$O(d^3\log^3d+d\log|\log\eps|)$, which can be further improved to
$O(d^2\log^4d+d\log|\log\eps|)$; in the worst case allowing near-multiple
roots, the complexity is $O(d^4\log^2d+d^3\log^2d|\log\eps|)$. The arithmetic
complexity for all these estimates is the same as the number of Newton
iterations steps, up to a factor of $\log^2 d$.
