258      SUBROUTINE zlasyf_rk( UPLO, N, NB, KB, A, LDA, E, IPIV, W, LDW,
 
  267      INTEGER            INFO, KB, LDA, LDW, N, NB
 
  271      COMPLEX*16         A( LDA, * ), E( * ), W( LDW, * )
 
  277      DOUBLE PRECISION   ZERO, ONE
 
  278      parameter( zero = 0.0d+0, one = 1.0d+0 )
 
  279      DOUBLE PRECISION   EIGHT, SEVTEN
 
  280      parameter( eight = 8.0d+0, sevten = 17.0d+0 )
 
  281      COMPLEX*16         CONE, CZERO
 
  282      parameter( cone = ( 1.0d+0, 0.0d+0 ),
 
  283     $                   czero = ( 0.0d+0, 0.0d+0 ) )
 
  287      INTEGER            IMAX, ITEMP, J, JB, JJ, JMAX, K, KK, KW, KKW,
 
  289      DOUBLE PRECISION   ABSAKK, ALPHA, COLMAX, ROWMAX, SFMIN, DTEMP
 
  290      COMPLEX*16         D11, D12, D21, D22, R1, T, Z
 
  295      DOUBLE PRECISION   DLAMCH
 
  296      EXTERNAL           lsame, izamax, dlamch
 
  302      INTRINSIC          abs, dble, dimag, max, min, sqrt
 
  305      DOUBLE PRECISION   CABS1
 
  308      cabs1( z ) = abs( dble( z ) ) + abs( dimag( z ) )
 
  316      alpha = ( one+sqrt( sevten ) ) / eight
 
  320      sfmin = dlamch( 
'S' )
 
  322      IF( lsame( uplo, 
'U' ) ) 
THEN 
  344         IF( ( k.LE.n-nb+1 .AND. nb.LT.n ) .OR. k.LT.1 )
 
  352         CALL zcopy( k, a( 1, k ), 1, w( 1, kw ), 1 )
 
  354     $      
CALL zgemv( 
'No transpose', k, n-k, -cone, a( 1, k+1 ),
 
  355     $                  lda, w( k, kw+1 ), ldw, cone, w( 1, kw ), 1 )
 
  360         absakk = cabs1( w( k, kw ) )
 
  367            imax = izamax( k-1, w( 1, kw ), 1 )
 
  368            colmax = cabs1( w( imax, kw ) )
 
  373         IF( max( absakk, colmax ).EQ.zero ) 
THEN 
  380            CALL zcopy( k, w( 1, kw ), 1, a( 1, k ), 1 )
 
  396            IF( .NOT.( absakk.LT.alpha*colmax ) ) 
THEN 
  415                  CALL zcopy( imax, a( 1, imax ), 1, w( 1, kw-1 ),
 
  417                  CALL zcopy( k-imax, a( imax, imax+1 ), lda,
 
  418     $                        w( imax+1, kw-1 ), 1 )
 
  421     $               
CALL zgemv( 
'No transpose', k, n-k, -cone,
 
  422     $                           a( 1, k+1 ), lda, w( imax, kw+1 ), ldw,
 
  423     $                           cone, w( 1, kw-1 ), 1 )
 
  430                     jmax = imax + izamax( k-imax, w( imax+1, kw-1 ),
 
  432                     rowmax = cabs1( w( jmax, kw-1 ) )
 
  438                     itemp = izamax( imax-1, w( 1, kw-1 ), 1 )
 
  439                     dtemp = cabs1( w( itemp, kw-1 ) )
 
  440                     IF( dtemp.GT.rowmax ) 
THEN 
  450                  IF( .NOT.(cabs1( w( imax, kw-1 ) ).LT.alpha*rowmax ) )
 
  460                     CALL zcopy( k, w( 1, kw-1 ), 1, w( 1, kw ), 1 )
 
  467                  ELSE IF( ( p.EQ.jmax ) .OR. ( rowmax.LE.colmax ) )
 
  486                     CALL zcopy( k, w( 1, kw-1 ), 1, w( 1, kw ), 1 )
 
  492               IF( .NOT. done ) 
GOTO 12
 
  504            IF( ( kstep.EQ.2 ) .AND. ( p.NE.k ) ) 
THEN 
  508               CALL zcopy( k-p, a( p+1, k ), 1, a( p, p+1 ), lda )
 
  509               CALL zcopy( p, a( 1, k ), 1, a( 1, p ), 1 )
 
  514               CALL zswap( n-k+1, a( k, k ), lda, a( p, k ), lda )
 
  515               CALL zswap( n-kk+1, w( k, kkw ), ldw, w( p, kkw ),
 
  525               a( kp, k ) = a( kk, k )
 
  526               CALL zcopy( k-1-kp, a( kp+1, kk ), 1, a( kp, kp+1 ),
 
  528               CALL zcopy( kp, a( 1, kk ), 1, a( 1, kp ), 1 )
 
  533               CALL zswap( n-kk+1, a( kk, kk ), lda, a( kp, kk ),
 
  535               CALL zswap( n-kk+1, w( kk, kkw ), ldw, w( kp, kkw ),
 
  539            IF( kstep.EQ.1 ) 
THEN 
  549               CALL zcopy( k, w( 1, kw ), 1, a( 1, k ), 1 )
 
  551                  IF( cabs1( a( k, k ) ).GE.sfmin ) 
THEN 
  552                     r1 = cone / a( k, k )
 
  553                     CALL zscal( k-1, r1, a( 1, k ), 1 )
 
  554                  ELSE IF( a( k, k ).NE.czero ) 
THEN 
  556                        a( ii, k ) = a( ii, k ) / a( k, k )
 
  581                  d11 = w( k, kw ) / d12
 
  582                  d22 = w( k-1, kw-1 ) / d12
 
  583                  t = cone / ( d11*d22-cone )
 
  585                     a( j, k-1 ) = t*( (d11*w( j, kw-1 )-w( j, kw ) ) /
 
  587                     a( j, k ) = t*( ( d22*w( j, kw )-w( j, kw-1 ) ) /
 
  596               a( k-1, k-1 ) = w( k-1, kw-1 )
 
  598               a( k, k ) = w( k, kw )
 
  599               e( k ) = w( k-1, kw )
 
  610         IF( kstep.EQ.1 ) 
THEN 
  628         CALL zgemmtr( 
'Upper', 
'No transpose', 
'Transpose', k, n-k,
 
  629     $                 -cone, a( 1, k+1 ), lda, w( 1, kw+1 ), ldw,
 
  630     $                 cone, a( 1, 1 ), lda )
 
  653         IF( ( k.GE.nb .AND. nb.LT.n ) .OR. k.GT.n )
 
  661         CALL zcopy( n-k+1, a( k, k ), 1, w( k, k ), 1 )
 
  663     $      
CALL zgemv( 
'No transpose', n-k+1, k-1, -cone, a( k, 1 ),
 
  664     $                  lda, w( k, 1 ), ldw, cone, w( k, k ), 1 )
 
  669         absakk = cabs1( w( k, k ) )
 
  676            imax = k + izamax( n-k, w( k+1, k ), 1 )
 
  677            colmax = cabs1( w( imax, k ) )
 
  682         IF( max( absakk, colmax ).EQ.zero ) 
THEN 
  689            CALL zcopy( n-k+1, w( k, k ), 1, a( k, k ), 1 )
 
  705            IF( .NOT.( absakk.LT.alpha*colmax ) ) 
THEN 
  724                  CALL zcopy( imax-k, a( imax, k ), lda, w( k, k+1 ),
 
  726                  CALL zcopy( n-imax+1, a( imax, imax ), 1,
 
  727     $                        w( imax, k+1 ), 1 )
 
  729     $               
CALL zgemv( 
'No transpose', n-k+1, k-1, -cone,
 
  730     $                           a( k, 1 ), lda, w( imax, 1 ), ldw,
 
  731     $                           cone, w( k, k+1 ), 1 )
 
  738                     jmax = k - 1 + izamax( imax-k, w( k, k+1 ), 1 )
 
  739                     rowmax = cabs1( w( jmax, k+1 ) )
 
  745                     itemp = imax + izamax( n-imax, w( imax+1, k+1 ),
 
  747                     dtemp = cabs1( w( itemp, k+1 ) )
 
  748                     IF( dtemp.GT.rowmax ) 
THEN 
  758                  IF( .NOT.( cabs1( w( imax, k+1 ) ).LT.alpha*rowmax ) )
 
  768                     CALL zcopy( n-k+1, w( k, k+1 ), 1, w( k, k ),
 
  776                  ELSE IF( ( p.EQ.jmax ) .OR. ( rowmax.LE.colmax ) )
 
  795                     CALL zcopy( n-k+1, w( k, k+1 ), 1, w( k, k ),
 
  802               IF( .NOT. done ) 
GOTO 72
 
  810            IF( ( kstep.EQ.2 ) .AND. ( p.NE.k ) ) 
THEN 
  814               CALL zcopy( p-k, a( k, k ), 1, a( p, k ), lda )
 
  815               CALL zcopy( n-p+1, a( p, k ), 1, a( p, p ), 1 )
 
  820               CALL zswap( k, a( k, 1 ), lda, a( p, 1 ), lda )
 
  821               CALL zswap( kk, w( k, 1 ), ldw, w( p, 1 ), ldw )
 
  830               a( kp, k ) = a( kk, k )
 
  831               CALL zcopy( kp-k-1, a( k+1, kk ), 1, a( kp, k+1 ),
 
  833               CALL zcopy( n-kp+1, a( kp, kk ), 1, a( kp, kp ), 1 )
 
  837               CALL zswap( kk, a( kk, 1 ), lda, a( kp, 1 ), lda )
 
  838               CALL zswap( kk, w( kk, 1 ), ldw, w( kp, 1 ), ldw )
 
  841            IF( kstep.EQ.1 ) 
THEN 
  851               CALL zcopy( n-k+1, w( k, k ), 1, a( k, k ), 1 )
 
  853                  IF( cabs1( a( k, k ) ).GE.sfmin ) 
THEN 
  854                     r1 = cone / a( k, k )
 
  855                     CALL zscal( n-k, r1, a( k+1, k ), 1 )
 
  856                  ELSE IF( a( k, k ).NE.czero ) 
THEN 
  858                        a( ii, k ) = a( ii, k ) / a( k, k )
 
  882                  d11 = w( k+1, k+1 ) / d21
 
  883                  d22 = w( k, k ) / d21
 
  884                  t = cone / ( d11*d22-cone )
 
  886                     a( j, k ) = t*( ( d11*w( j, k )-w( j, k+1 ) ) /
 
  888                     a( j, k+1 ) = t*( ( d22*w( j, k+1 )-w( j, k ) ) /
 
  897               a( k, k ) = w( k, k )
 
  899               a( k+1, k+1 ) = w( k+1, k+1 )
 
  911         IF( kstep.EQ.1 ) 
THEN 
  929         CALL zgemmtr( 
'Lower', 
'No transpose', 
'Transpose', n-k+1,
 
  930     $                 k-1, -cone, a( k, 1 ), lda, w( k, 1 ), ldw,
 
  931     $                 cone, a( k, k ), lda )