Initial commit
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
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
|
||||
Reference in New Issue
Block a user