79 SUBROUTINE pycmq2(NM,N,LOW,IGH,ORTR,ORTI,HR,HI,WR,WI,ZR,ZI,IERR)
81 INTEGER i,
j,
k,l,m,
n,en,ii,jj,ll,nm,nn,igh,ip1,
82 x itn,its,
low,lp1,enm1,iend,ierr
83 DOUBLE PRECISION hr(4,4),hi(4,4),wr(4),wi(4),zr(4,4),zi(4,4),
85 DOUBLE PRECISION si,sr,ti,tr,xi,xr,yi,yr,zzi,zzr,
norm,tst1,tst2,
101 IF (iend.LT.0) goto 220
102 IF (iend.EQ.0) goto 170
106 IF (ortr(
i) .EQ. 0.0d0 .AND. orti(
i) .EQ. 0.0d0) goto 160
107 IF (hr(
i,
i-1) .EQ. 0.0d0 .AND. hi(
i,
i-1) .EQ. 0.0d0) goto 160
109 norm = hr(
i,
i-1) * ortr(
i) + hi(
i,
i-1) * orti(
i)
122 sr = sr + ortr(
k) * zr(
k,
j) + orti(
k) * zi(
k,
j)
123 si = si + ortr(
k) * zi(
k,
j) - orti(
k) * zr(
k,
j)
130 zr(
k,
j) = zr(
k,
j) + sr * ortr(
k) - si * orti(
k)
131 zi(
k,
j) = zi(
k,
j) + sr * orti(
k) + si * ortr(
k)
142 IF (hi(
i,
i-1) .EQ. 0.0d0) goto 210
150 si = yr * hi(
i,
j) - yi * hr(
i,
j)
151 hr(
i,
j) = yr * hr(
i,
j) + yi * hi(
i,
j)
156 si = yr * hi(
j,
i) + yi * hr(
j,
i)
157 hr(
j,
i) = yr * hr(
j,
i) - yi * hi(
j,
i)
162 si = yr * zi(
j,
i) + yi * zr(
j,
i)
163 zr(
j,
i) = yr * zr(
j,
i) - yi * zi(
j,
i)
170 IF (
i .GE.
low .AND.
i .LE. igh) goto 230
180 240
IF (en .LT.
low) goto 430
185 250
DO 260 ll =
low, en
187 IF (l .EQ.
low) goto 270
188 tst1 = dabs(hr(l-1,l-1)) + dabs(hi(l-1,l-1))
189 x + dabs(hr(l,l)) + dabs(hi(l,l))
190 tst2 = tst1 + dabs(hr(l,l-1))
191 IF (tst2 .EQ. tst1) goto 270
194 270
IF (l .EQ. en) goto 420
195 IF (itn .EQ. 0) goto 550
196 IF (its .EQ. 10 .OR. its .EQ. 20) goto 290
199 xr = hr(enm1,en) * hr(en,enm1)
200 xi = hi(enm1,en) * hr(en,enm1)
201 IF (xr .EQ. 0.0d0 .AND. xi .EQ. 0.0d0) goto 300
202 yr = (hr(enm1,enm1) - sr) / 2.0d0
203 yi = (hi(enm1,enm1) - si) / 2.0d0
204 CALL
pycsrt(yr**2-yi**2+xr,2.0d0*yr*yi+xi,zzr,zzi)
205 IF (yr * zzr + yi * zzi .GE. 0.0d0) goto 280
208 280 CALL
pycdiv(xr,xi,yr+zzr,yi+zzi,xr,xi)
213 290 sr = dabs(hr(en,enm1)) + dabs(hr(enm1,en-2))
216 300
DO 310
i =
low, en
217 hr(
i,
i) = hr(
i,
i) - sr
218 hi(
i,
i) = hi(
i,
i) - si
245 hr(
i-1,
j) = xr * yr + xi * yi + hi(
i,
i-1) * zzr
246 hi(
i-1,
j) = xr * yi - xi * yr + hi(
i,
i-1) * zzi
247 hr(
i,
j) = xr * zzr - xi * zzi - hi(
i,
i-1) * yr
248 hi(
i,
j) = xr * zzi + xi * zzr - hi(
i,
i-1) * yi
254 IF (si .EQ. 0.0d0) goto 350
256 sr = hr(en,en) /
norm
260 IF (en .EQ.
n) goto 350
266 hr(en,
j) = sr * yr + si * yi
267 hi(en,
j) = sr * yi - si * yr
270 350
DO 390
j = lp1, en
279 IF (
i .EQ.
j) goto 360
281 hi(
i,
j-1) = xr * yi + xi * yr + hi(
j,
j-1) * zzi
282 360 hr(
i,
j-1) = xr * yr - xi * yi + hi(
j,
j-1) * zzr
283 hr(
i,
j) = xr * zzr + xi * zzi - hi(
j,
j-1) * yr
284 hi(
i,
j) = xr * zzi - xi * zzr - hi(
j,
j-1) * yi
292 zr(
i,
j-1) = xr * yr - xi * yi + hi(
j,
j-1) * zzr
293 zi(
i,
j-1) = xr * yi + xi * yr + hi(
j,
j-1) * zzi
294 zr(
i,
j) = xr * zzr + xi * zzi - hi(
j,
j-1) * yr
295 zi(
i,
j) = xr * zzi - xi * zzr - hi(
j,
j-1) * yi
300 IF (si .EQ. 0.0d0) goto 250
305 hr(
i,en) = sr * yr - si * yi
306 hi(
i,en) = sr * yi + si * yr
312 zr(
i,en) = sr * yr - si * yi
313 zi(
i,en) = sr * yi + si * yr
318 420 hr(en,en) = hr(en,en) + tr
320 hi(en,en) = hi(en,en) + ti
331 tr = dabs(hr(
i,
j)) + dabs(hi(
i,
j))
335 IF (
n .EQ. 1 .OR.
norm .EQ. 0.0d0) goto 560
352 zzr = zzr + hr(
i,
j) * hr(
j,en) - hi(
i,
j) * hi(
j,en)
353 zzi = zzi + hr(
i,
j) * hi(
j,en) + hi(
i,
j) * hr(
j,en)
358 IF (yr .NE. 0.0d0 .OR. yi .NE. 0.0d0) goto 470
363 IF (tst2 .GT. tst1) goto 460
365 CALL
pycdiv(zzr,zzi,yr,yi,hr(
i,en),hi(
i,en))
367 tr = dabs(hr(
i,en)) + dabs(hi(
i,en))
368 IF (tr .EQ. 0.0d0) goto 490
370 tst2 = tst1 + 1.0d0/tst1
371 IF (tst2 .GT. tst1) goto 490
373 hr(
j,en) = hr(
j,en)/tr
374 hi(
j,en) = hi(
j,en)/tr
383 IF (
i .GE.
low .AND.
i .LE. igh) goto 520
403 zzr = zzr + zr(
i,
k) * hr(
k,
j) - zi(
i,
k) * hi(
k,
j)
404 zzi = zzi + zr(
i,
k) * hi(
k,
j) + zi(
i,
k) * hr(
k,
j)