106      SUBROUTINE csptri( UPLO, N, AP, IPIV, WORK, INFO )
 
  118      COMPLEX            AP( * ), WORK( * )
 
  125      parameter( one = ( 1.0e+0, 0.0e+0 ),
 
  126     $                   zero = ( 0.0e+0, 0.0e+0 ) )
 
  130      INTEGER            J, K, KC, KCNEXT, KP, KPC, KSTEP, KX, NPP
 
  131      COMPLEX            AK, AKKP1, AKP1, D, T, TEMP
 
  136      EXTERNAL           lsame, cdotu
 
  149      upper = lsame( uplo, 
'U' )
 
  150      IF( .NOT.upper .AND. .NOT.lsame( uplo, 
'L' ) ) 
THEN 
  152      ELSE IF( n.LT.0 ) 
THEN 
  156         CALL xerbla( 
'CSPTRI', -info )
 
  172         DO 10 info = n, 1, -1
 
  173            IF( ipiv( info ).GT.0 .AND. ap( kp ).EQ.zero )
 
  183            IF( ipiv( info ).GT.0 .AND. ap( kp ).EQ.zero )
 
  185            kp = kp + n - info + 1
 
  207         IF( ipiv( k ).GT.0 ) 
THEN 
  213            ap( kc+k-1 ) = one / ap( kc+k-1 )
 
  218               CALL ccopy( k-1, ap( kc ), 1, work, 1 )
 
  219               CALL cspmv( uplo, k-1, -one, ap, work, 1, zero,
 
  222               ap( kc+k-1 ) = ap( kc+k-1 ) -
 
  223     $                        cdotu( k-1, work, 1, ap( kc ), 1 )
 
  233            ak = ap( kc+k-1 ) / t
 
  234            akp1 = ap( kcnext+k ) / t
 
  235            akkp1 = ap( kcnext+k-1 ) / t
 
  236            d = t*( ak*akp1-one )
 
  237            ap( kc+k-1 ) = akp1 / d
 
  238            ap( kcnext+k ) = ak / d
 
  239            ap( kcnext+k-1 ) = -akkp1 / d
 
  244               CALL ccopy( k-1, ap( kc ), 1, work, 1 )
 
  245               CALL cspmv( uplo, k-1, -one, ap, work, 1, zero,
 
  248               ap( kc+k-1 ) = ap( kc+k-1 ) -
 
  249     $                        cdotu( k-1, work, 1, ap( kc ), 1 )
 
  250               ap( kcnext+k-1 ) = ap( kcnext+k-1 ) -
 
  251     $                            cdotu( k-1, ap( kc ), 1,
 
  254               CALL ccopy( k-1, ap( kcnext ), 1, work, 1 )
 
  255               CALL cspmv( uplo, k-1, -one, ap, work, 1, zero,
 
  257               ap( kcnext+k ) = ap( kcnext+k ) -
 
  258     $                          cdotu( k-1, work, 1, ap( kcnext ),
 
  262            kcnext = kcnext + k + 1
 
  265         kp = abs( ipiv( k ) )
 
  271            kpc = ( kp-1 )*kp / 2 + 1
 
  272            CALL cswap( kp-1, ap( kc ), 1, ap( kpc ), 1 )
 
  274            DO 40 j = kp + 1, k - 1
 
  277               ap( kc+j-1 ) = ap( kx )
 
  281            ap( kc+k-1 ) = ap( kpc+kp-1 )
 
  282            ap( kpc+kp-1 ) = temp
 
  283            IF( kstep.EQ.2 ) 
THEN 
  284               temp = ap( kc+k+k-1 )
 
  285               ap( kc+k+k-1 ) = ap( kc+k+kp-1 )
 
  286               ap( kc+k+kp-1 ) = temp
 
  312         kcnext = kc - ( n-k+2 )
 
  313         IF( ipiv( k ).GT.0 ) 
THEN 
  319            ap( kc ) = one / ap( kc )
 
  324               CALL ccopy( n-k, ap( kc+1 ), 1, work, 1 )
 
  325               CALL cspmv( uplo, n-k, -one, ap( kc+n-k+1 ), work, 1,
 
  326     $                     zero, ap( kc+1 ), 1 )
 
  327               ap( kc ) = ap( kc ) - cdotu( n-k, work, 1, ap( kc+1 ),
 
  338            ak = ap( kcnext ) / t
 
  340            akkp1 = ap( kcnext+1 ) / t
 
  341            d = t*( ak*akp1-one )
 
  342            ap( kcnext ) = akp1 / d
 
  344            ap( kcnext+1 ) = -akkp1 / d
 
  349               CALL ccopy( n-k, ap( kc+1 ), 1, work, 1 )
 
  350               CALL cspmv( uplo, n-k, -one, ap( kc+( n-k+1 ) ), work,
 
  352     $                     zero, ap( kc+1 ), 1 )
 
  353               ap( kc ) = ap( kc ) - cdotu( n-k, work, 1, ap( kc+1 ),
 
  355               ap( kcnext+1 ) = ap( kcnext+1 ) -
 
  356     $                          cdotu( n-k, ap( kc+1 ), 1,
 
  357     $                          ap( kcnext+2 ), 1 )
 
  358               CALL ccopy( n-k, ap( kcnext+2 ), 1, work, 1 )
 
  359               CALL cspmv( uplo, n-k, -one, ap( kc+( n-k+1 ) ), work,
 
  361     $                     zero, ap( kcnext+2 ), 1 )
 
  362               ap( kcnext ) = ap( kcnext ) -
 
  363     $                        cdotu( n-k, work, 1, ap( kcnext+2 ),
 
  367            kcnext = kcnext - ( n-k+3 )
 
  370         kp = abs( ipiv( k ) )
 
  376            kpc = npp - ( n-kp+1 )*( n-kp+2 ) / 2 + 1
 
  378     $         
CALL cswap( n-kp, ap( kc+kp-k+1 ), 1, ap( kpc+1 ), 1 )
 
  380            DO 70 j = k + 1, kp - 1
 
  383               ap( kc+j-k ) = ap( kx )
 
  389            IF( kstep.EQ.2 ) 
THEN 
  390               temp = ap( kc-n+k-1 )
 
  391               ap( kc-n+k-1 ) = ap( kc-n+kp-1 )
 
  392               ap( kc-n+kp-1 ) = temp