SUBROUTINE zroots(a,m,roots,polish) INTEGER m,MAXM REAL EPS COMPLEX a(m+1),roots(m) LOGICAL polish PARAMETER (EPS=1.e-6,MAXM=101) CU USES laguer INTEGER i,j,jj,its COMPLEX ad(MAXM),x,b,c do 11 j=1,m+1 ad(j)=a(j) 11 continue do 13 j=m,1,-1 x=cmplx(0.,0.) call laguer(ad,j,x,its) if(abs(aimag(x)).le.2.*EPS**2*abs(real(x))) x=cmplx(real(x),0.) roots(j)=x b=ad(j+1) do 12 jj=j,1,-1 c=ad(jj) ad(jj)=b b=x*b+c 12 continue 13 continue if (polish) then do 14 j=1,m call laguer(a,m,roots(j),its) 14 continue endif do 16 j=2,m x=roots(j) do 15 i=j-1,1,-1 if(real(roots(i)).le.real(x))goto 10 roots(i+1)=roots(i) 15 continue i=0 10 roots(i+1)=x 16 continue return END C (C) Copr. 1986-92 Numerical Recipes Software .