# Testing if a polynomial has roots within a radius/range

Is there a way to test if a high-order polynomials has any roots within a radius r of a specified point?

I need this so that I can find all the complex roots of the following system for arbitrary integers {m,n}.

$$z_0 \equiv c$$ $$z_n \equiv z_{n-1}^2 + c$$ $$z_m - z_n = 0$$ $$|c-i|<r$$

I can generate a large polynomial like $z_{20}-z_8$, calculate a root near i, divide it out of the polynomial, repeat... But then I need to know when there are no more roots in that radius so I can stop looking. Does such a test exist? Efficient root-finding is important because the polynomial orders scale as $2^n$.

As a side note, these points are called Misiurewicz points

One easily proven result: If we put $P(z)=P(z_0)+\sum_{j=1}^n A_j(z-z_0)^j,$ with $A_n=1,$ then $$P(z)=0\implies |z-z_0|<1+M$$ where $M=\max (\{|P(z_0)|\}\cup \{|A_j| :1\leq j<n\})......$ For example if $P(z)=A+B z+C z^2 + D z^3 +z^4$ with $M=\max (A,B,C,D),$ if $|z|\geq 1+M$ then $P(z)\geq |z|^4-M(1+|z|+|z|^2+|z|^3)=$ $=|z|^4-M(|z|^4-1)/(|z|-1)=(|z|^4(|z|-1-M)+M)/(|z|-1)>0.$ When using this, a change of scale, $z=k x$ with constant $k,$ is sometimes helpful.