  We describe a subdivision algorithm for isolating the complex roots of a
polynomial $F\in\mathbb{C}[x]$. Given an oracle that provides approximations of
each of the coefficients of $F$ to any absolute error bound and given an
arbitrary square $\mathcal{B}$ in the complex plane containing only simple
roots of $F$, our algorithm returns disjoint isolating disks for the roots of
$F$ in $\mathcal{B}$. Our complexity analysis bounds the absolute error to
which the coefficients of $F$ have to be provided, the total number of
iterations, and the overall bit complexity. It further shows that the
complexity of our algorithm is controlled by the geometry of the roots in a
near neighborhood of the input square $\mathcal{B}$, namely, the number of
roots, their absolute values and pairwise distances. The number of subdivision
steps is near-optimal. For the \emph{benchmark problem}, namely, to isolate all
the roots of a polynomial of degree $n$ with integer coefficients of bit size
less than $\tau$, our algorithm needs $\tilde O(n^3+n^2\tau)$ bit operations,
which is comparable to the record bound of Pan (2002). It is the first time
that such a bound has been achieved using subdivision methods, and independent
of divide-and-conquer techniques such as Sch\"onhage's splitting circle
technique. Our algorithm uses the quadtree construction of Weyl (1924) with two
key ingredients: using Pellet's Theorem (1881) combined with Graeffe iteration,
we derive a "soft-test" to count the number of roots in a disk. Using
Schr\"oder's modified Newton operator combined with bisection, in a form
inspired by the quadratic interval method from Abbot (2006), we achieve
quadratic convergence towards root clusters. Relative to the divide-conquer
algorithms, our algorithm is quite simple with the potential of being
practical. This paper is self-contained: we provide pseudo-code for all
subroutines used by our algorithm.
