Roots of polynomials
poly1()="-x(2)/x(1)"
poly2()="b2=x(2)/x(1)/2;c2=x(3)/x(1);-b2+[1:-1]*sqrt(b2^2-c2)"
poly3()="b3=x(2)/x(1)/3;c3=x(3)/x(1)/3;d3=x(4)/x(1);p3=c3-b3^2;q3=b3^3+(d3-3*b3*c3)/2;ap3=sqrt(p3^3+q3^2)-q3;aq3=-2*q3-ap3;ra3=ap3^(1/3)*exp([-1:0:1]*2pi*i/3;rb3=aq3^(1/3)*exp([1:0:-1]*2pi*i/3;ab3=abs([ra3[1]*rb3[1]:ra3[1]*rb3[2]:ra3[1]*rb3[3]]+p3);n3=if(lmin(ab3)==ab3[1]:0:if(lmin(ab3)==ab3[2]:1:2));ra3+rb3*exp(-2n3*pi*i/3)-b3"
poly4()="b4=x(2)/x(1)/4;c4=x(3)/x(1)/6;d4=x(4)/x(1)/4;e4=x(5)/x(1);p4=3*(c4-b4^2)/2;q4=(d4-3*b4*c4)/2+b4^3;r4=(e4+6*c4*b4^2-3*b4^4)/4-b4*d4;t4=sqrt(poly3(1:2*p4:p4^2-r4:-q4^2));y4=[-1:-1:1:1]*t4[1]+[-1:1:-1:1]*t4[2]+[-1:1:1:-1]*t4[3];s4=(y4[1]*y4[2]*y4[3]+y4[1]*y4[2]*y4[4]+y4[1]*y4[3]*y4[4]+y4[2]*y4[3]*y4[4])/8;u4=abs([s4+q4:s4-q4]);if(lmin(u4)==u4[1]:1:-1)*y4-b4"

The functions Poly1() -- Poly4() will find all the roots of the polynomial, even with complex coefficients.
There is only one disadvantage: because the algorithm uses complex numbers, even when alle the roots are real, there may be a small imaginair part left in the solution.
Jan van Zweeden