starting_points := {};
x[0] := most_isolated_valid_point( starting_points );
for i do
x[i] := F(x[i-1]);
starting_points := starting_points union {x[i-1]};
if computation_failed or outside_domain(x[i]) then
start_again
else if convergence_achieved then
successful_finish
else if i>3 and diverging then
start_again
else if acceleration_possible then
x[i] := acceleration(x[i], x[i-1], ...)
end if
end do;