| |
| | [No title] |
 | | c c Internal variables: complex cgam,czero,d1,d2 real argum,dflval,eps1,eps2,omega1,omega2,phires,rho,sig integer i,i0,i1,i2,j,km,k1,m0,m2 c eps1=eps eps2=eps czero=cmplx(0.,0.) km=k+m k1=k+1 c Make sure that all arguments are in (-pi,pi] call restrc(t,km,pi,twopi) c Define block diagonal matrix W containing eigenvectors of subproblems. |
 | | else argum=4.*atan(1.) endif else argum=aimag(clog(z)) endif c return end c---------------------------------------------------------------------------- subroutine defref(w1,w2,wnew,cgam,sig,km) complex cgam,wnew(*),w1(*),w2(*) real sig integer j,km c Performs reflection determined by cgam,sig on old eigenvectors w1(*),w2(*) c to determine new deflated eigenvector wnew(*) and modified old eigenvector c w1(*) corresponding to undeflated eigenvalue. |
 | | real absz2(*),delta,dphi,dt,phi,tdif(*) complex cfact,czero,w(2,*),wnew(2),z(*) integer j,km c czero=cmplx(0.,0.) wnew(1)=czero wnew(2)=czero do 10 j=1,km if(absz2(j).le.1.)then cfact=z(j)/(1.-cmplx(cos(dt-tdif(j)),sin(dt-tdif(j)))) wnew(1)=wnew(1)+w(1,j)*cfact wnew(2)=wnew(2)+w(2,j)*cfact endif 10 continue c Normalize wnew call phivl2(phi,dphi,tdif,absz2,km,dt) delta=sqrt(dphi/2.) wnew(1)=wnew(1)/delta wnew(2)=wnew(2)/delta c return end c----------------------------------------------------------------------- subroutine idxord(t,idx,m0) real t(*) integer i,idx(*),itemp,j,m0 logical nochg c Reorders index array idx corresponding to increasing values of t do 20 i=1,m0-1 nochg=.true. |
| www.netlib.org /toms/730 (8723 words) |
|