191       COMPLEX*16 a(na,n), b(nb,n), eiga(n), eigb(n)
   192       COMPLEX*16 s, w, y, z, cdsqrt
   195       COMPLEX*16 annm1, alfm, betm, d, sl, den, num, anm1m1
   196       REAL*8 epsa, epsb, ss, r, anorm, bnorm, ani, bni, c
   197       REAL*8 d0, d1, d2, e0, e1
   207         ani = ani + dabs(dreal(y)) + dabs(dimag(y))
   210           ani = ani + dabs(dreal(a(i,j))) + dabs(dimag(a(i,j)))
   211           bni = bni + dabs(dreal(b(i,j))) + dabs(dimag(b(i,j)))
   213         IF (ani.GT.anorm) anorm = ani
   214         IF (bni.GT.bnorm) bnorm = bni
   216       IF (anorm.EQ.0.d0) anorm = 1.d0
   217       IF (bnorm.EQ.0.d0) bnorm = 1.d0
   223       IF (c.GT.anorm) 
GO TO 40
   224       IF (n.LE.1) 
GO TO 320
   228    60 d2 = dabs(dreal(a(nn,nn))) + dabs(dimag(a(nn,nn)))
   233         d2 = dabs(dreal(y)) + dabs(dimag(y))
   236         r = ss + dabs(dreal(y)) + dabs(dimag(y))
   237         IF (r.EQ.ss) 
GO TO 80
   240    80 
IF (l.EQ.nn) 
GO TO 320
   241       IF (its.LT.30) 
GO TO 90
   243       IF (dabs(dreal(a(nn,nm1)))+dabs(dimag(a(nn,nm1))).GT.0.8d0*
   244      * dabs(dreal(annm1))+dabs(dimag(annm1))) 
RETURN   245    90 
IF (its.EQ.10 .OR. its.EQ.20) 
GO TO 110
   249       s = a(nn,nn)*b(nm1,nm1) - annm1*b(nm1,nn)
   250       w = annm1*b(nn,nn)*(a(nm1,nn)*b(nm1,nm1)-b(nm1,nn)*anm1m1)
   251       y = (anm1m1*b(nn,nn)-s)/2.
   253       IF (dreal(z).EQ.0.d0 .AND. dimag(z).EQ.0.d0) 
GO TO 100
   255       IF (d0.LT.0.d0) z = -z
   256   100 den = (y+z)*b(nm1,nm1)*b(nn,nn)
   257       IF (dreal(den).EQ.0.d0 .AND. dimag(den).EQ.0.d0) den =
   263       num = cmplx(dabs(dreal(annm1))+dabs(dimag(annm1)),dabs(dreal(y))
   267   120 
IF (nn.EQ.l+1) 
GO TO 140
   268       d2 = dabs(dreal(a(nm1,nm1))) + dabs(dimag(a(nm1,nm1)))
   269       e1 = dabs(dreal(annm1)) + dabs(dimag(annm1))
   270       d1 = dabs(dreal(a(nn,nn))) + dabs(dimag(a(nn,nn)))
   276         e1 = dabs(dreal(y)) + dabs(dimag(y))
   280         d2 = dabs(dreal(y)) + dabs(dimag(y))
   281         y = a(m,m)*den - b(m,m)*num
   282         d0 = (d0+d1+d2)*(dabs(dreal(y))+dabs(dimag(y)))
   283         e0 = e0*e1*(dabs(dreal(den))+dabs(dimag(den))) + d0
   284         IF (e0.EQ.d0) 
GO TO 150
   289       w = a(m,m)*den - b(m,m)*num
   291       d1 = dabs(dreal(z)) + dabs(dimag(z))
   292       d2 = dabs(dreal(w)) + dabs(dimag(w))
   297       IF (.NOT.wantx) 
GO TO 160
   305         IF (i.EQ.m) 
GO TO 170
   308         d1 = dabs(dreal(z)) + dabs(dimag(z))
   309         d2 = dabs(dreal(w)) + dabs(dimag(w))
   310         IF (d1.EQ.0.d0) 
GO TO 60
   311   170   
IF (d2.GT.d1) 
GO TO 190
   321         IF (i.GT.m) a(i,i-1) = a(j,i-1)
   322         IF (d2.EQ.0.d0) 
GO TO 220
   325         y = cmplx(dreal(w)/d1,dimag(w)/d1)/cmplx(dreal(z)/d1,dimag(z)/
   328   190   y = cmplx(dreal(z)/d2,dimag(z)/d2)/cmplx(dreal(w)/d2,dimag(w)/
   331           a(j,k) = a(j,k) - y*a(i,k)
   332           b(j,k) = b(j,k) - y*b(i,k)
   334   220   
IF (i.GT.m) a(j,i-1) = (0.d0,0.d0)
   340         d2 = dabs(dreal(w)) + dabs(dimag(w))
   341         d1 = dabs(dreal(z)) + dabs(dimag(z))
   342         IF (d1.EQ.0.d0) 
GO TO 60
   343         IF (d2.GT.d1) 
GO TO 270
   353         IF (i.EQ.nm1) 
GO TO 240
   357   240   
IF (.NOT.wantx) 
GO TO 260
   363   260   
IF (d2.EQ.0.d0) 
GO TO 310
   364         z = cmplx(dreal(w)/d1,dimag(w)/d1)/cmplx(dreal(z)/d1,dimag(z)/
   367   270   z = cmplx(dreal(z)/d2,dimag(z)/d2)/cmplx(dreal(w)/d2,dimag(w)/
   370           a(k,i) = a(k,i) - z*a(k,j)
   371           b(k,i) = b(k,i) - z*b(k,j)
   374         IF (i.LT.nm1) a(i+2,i) = a(i+2,i) - z*a(i+2,j)
   375         IF (.NOT.wantx) 
GO TO 310
   377           x(k,i) = x(k,i) - z*x(k,j)
   384       IF (nn.EQ.1) 
GO TO 330
   387       IF (nn.GT.1) 
GO TO 50
   391   330 
IF (.NOT.wantx) 
RETURN   398       IF (l.EQ.0) 
GO TO 370
   403         sl = sl + (betm*a(l,j)-alfm*b(l,j))*b(j,m)
   405       y = betm*a(l,l) - alfm*b(l,l)
   406       IF (dreal(y).EQ.0.d0 .AND. dimag(y).EQ.0.d0) y =
   407      * cmplx((epsa+epsb)/2.d0,0.d0)
   410   370 
IF (l.GT.0) 
GO TO 350
   412       IF (m.GT.0) 
GO TO 340
   419           s = s + x(i,j)*b(j,m)
   424       IF (m.GT.0) 
GO TO 380
   430         r = dabs(dreal(x(i,m))) + dabs(dimag(x(i,m)))
   431         IF (r.LT.ss) 
GO TO 420
   435       IF (ss.EQ.0.d0) 
GO TO 440
   440       IF (m.GT.0) 
GO TO 410