188      SUBROUTINE csytf2( UPLO, N, A, LDA, IPIV, INFO )
 
  207      parameter( zero = 0.0e+0, one = 1.0e+0 )
 
  209      parameter( eight = 8.0e+0, sevten = 17.0e+0 )
 
  211      parameter( cone = ( 1.0e+0, 0.0e+0 ) )
 
  215      INTEGER            I, IMAX, J, JMAX, K, KK, KP, KSTEP
 
  216      REAL               ABSAKK, ALPHA, COLMAX, ROWMAX
 
  217      COMPLEX            D11, D12, D21, D22, R1, T, WK, WKM1, WKP1, Z
 
  220      LOGICAL            LSAME, SISNAN
 
  222      EXTERNAL           lsame, icamax, sisnan
 
  228      INTRINSIC          abs, aimag, max, real, sqrt
 
  234      cabs1( z ) = abs( real( z ) ) + abs( aimag( z ) )
 
  241      upper = lsame( uplo, 
'U' )
 
  242      IF( .NOT.upper .AND. .NOT.lsame( uplo, 
'L' ) ) 
THEN 
  244      ELSE IF( n.LT.0 ) 
THEN 
  246      ELSE IF( lda.LT.max( 1, n ) ) 
THEN 
  250         CALL xerbla( 
'CSYTF2', -info )
 
  256      alpha = ( one+sqrt( sevten ) ) / eight
 
  277         absakk = cabs1( a( k, k ) )
 
  284            imax = icamax( k-1, a( 1, k ), 1 )
 
  285            colmax = cabs1( a( imax, k ) )
 
  290         IF( max( absakk, colmax ).EQ.zero .OR. sisnan(absakk) ) 
THEN 
  299            IF( absakk.GE.alpha*colmax ) 
THEN 
  309               jmax = imax + icamax( k-imax, a( imax, imax+1 ), lda )
 
  310               rowmax = cabs1( a( imax, jmax ) )
 
  312                  jmax = icamax( imax-1, a( 1, imax ), 1 )
 
  313                  rowmax = max( rowmax, cabs1( a( jmax, imax ) ) )
 
  316               IF( absakk.GE.alpha*colmax*( colmax / rowmax ) ) 
THEN 
  321               ELSE IF( cabs1( a( imax, imax ) ).GE.alpha*rowmax ) 
THEN 
  343               CALL cswap( kp-1, a( 1, kk ), 1, a( 1, kp ), 1 )
 
  344               CALL cswap( kk-kp-1, a( kp+1, kk ), 1, a( kp, kp+1 ),
 
  347               a( kk, kk ) = a( kp, kp )
 
  349               IF( kstep.EQ.2 ) 
THEN 
  351                  a( k-1, k ) = a( kp, k )
 
  358            IF( kstep.EQ.1 ) 
THEN 
  370               r1 = cone / a( k, k )
 
  371               CALL csyr( uplo, k-1, -r1, a( 1, k ), 1, a, lda )
 
  375               CALL cscal( k-1, r1, a( 1, k ), 1 )
 
  393                  d22 = a( k-1, k-1 ) / d12
 
  394                  d11 = a( k, k ) / d12
 
  395                  t = cone / ( d11*d22-cone )
 
  398                  DO 30 j = k - 2, 1, -1
 
  399                     wkm1 = d12*( d11*a( j, k-1 )-a( j, k ) )
 
  400                     wk = d12*( d22*a( j, k )-a( j, k-1 ) )
 
  402                        a( i, j ) = a( i, j ) - a( i, k )*wk -
 
  416         IF( kstep.EQ.1 ) 
THEN 
  447         absakk = cabs1( a( k, k ) )
 
  454            imax = k + icamax( n-k, a( k+1, k ), 1 )
 
  455            colmax = cabs1( a( imax, k ) )
 
  460         IF( max( absakk, colmax ).EQ.zero .OR. sisnan(absakk) ) 
THEN 
  469            IF( absakk.GE.alpha*colmax ) 
THEN 
  479               jmax = k - 1 + icamax( imax-k, a( imax, k ), lda )
 
  480               rowmax = cabs1( a( imax, jmax ) )
 
  482                  jmax = imax + icamax( n-imax, a( imax+1, imax ),
 
  484                  rowmax = max( rowmax, cabs1( a( jmax, imax ) ) )
 
  487               IF( absakk.GE.alpha*colmax*( colmax / rowmax ) ) 
THEN 
  492               ELSE IF( cabs1( a( imax, imax ) ).GE.alpha*rowmax ) 
THEN 
  515     $            
CALL cswap( n-kp, a( kp+1, kk ), 1, a( kp+1, kp ),
 
  517               CALL cswap( kp-kk-1, a( kk+1, kk ), 1, a( kp, kk+1 ),
 
  520               a( kk, kk ) = a( kp, kp )
 
  522               IF( kstep.EQ.2 ) 
THEN 
  524                  a( k+1, k ) = a( kp, k )
 
  531            IF( kstep.EQ.1 ) 
THEN 
  545                  r1 = cone / a( k, k )
 
  546                  CALL csyr( uplo, n-k, -r1, a( k+1, k ), 1,
 
  547     $                       a( k+1, k+1 ), lda )
 
  551                  CALL cscal( n-k, r1, a( k+1, k ), 1 )
 
  568                  d11 = a( k+1, k+1 ) / d21
 
  569                  d22 = a( k, k ) / d21
 
  570                  t = cone / ( d11*d22-cone )
 
  574                     wk = d21*( d11*a( j, k )-a( j, k+1 ) )
 
  575                     wkp1 = d21*( d22*a( j, k+1 )-a( j, k ) )
 
  577                        a( i, j ) = a( i, j ) - a( i, k )*wk -
 
  589         IF( kstep.EQ.1 ) 
THEN