112      SUBROUTINE zhptrs( UPLO, N, NRHS, AP, IPIV, B, LDB, INFO )
 
  120      INTEGER            INFO, LDB, N, NRHS
 
  124      COMPLEX*16         AP( * ), B( LDB, * )
 
  131      parameter( one = ( 1.0d+0, 0.0d+0 ) )
 
  137      COMPLEX*16         AK, AKM1, AKM1K, BK, BKM1, DENOM
 
  148      INTRINSIC          dble, dconjg, max
 
  153      upper = lsame( uplo, 
'U' )
 
  154      IF( .NOT.upper .AND. .NOT.lsame( uplo, 
'L' ) ) 
THEN 
  156      ELSE IF( n.LT.0 ) 
THEN 
  158      ELSE IF( nrhs.LT.0 ) 
THEN 
  160      ELSE IF( ldb.LT.max( 1, n ) ) 
THEN 
  164         CALL xerbla( 
'ZHPTRS', -info )
 
  170      IF( n.EQ.0 .OR. nrhs.EQ.0 )
 
  183         kc = n*( n+1 ) / 2 + 1
 
  192         IF( ipiv( k ).GT.0 ) 
THEN 
  200     $         
CALL zswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
 
  205            CALL zgeru( k-1, nrhs, -one, ap( kc ), 1, b( k, 1 ), ldb,
 
  210            s = dble( one ) / dble( ap( kc+k-1 ) )
 
  211            CALL zdscal( nrhs, s, b( k, 1 ), ldb )
 
  221     $         
CALL zswap( nrhs, b( k-1, 1 ), ldb, b( kp, 1 ), ldb )
 
  226            CALL zgeru( k-2, nrhs, -one, ap( kc ), 1, b( k, 1 ), ldb,
 
  228            CALL zgeru( k-2, nrhs, -one, ap( kc-( k-1 ) ), 1,
 
  229     $                  b( k-1, 1 ), ldb, b( 1, 1 ), ldb )
 
  234            akm1 = ap( kc-1 ) / akm1k
 
  235            ak = ap( kc+k-1 ) / dconjg( akm1k )
 
  236            denom = akm1*ak - one
 
  238               bkm1 = b( k-1, j ) / akm1k
 
  239               bk = b( k, j ) / dconjg( akm1k )
 
  240               b( k-1, j ) = ( ak*bkm1-bk ) / denom
 
  241               b( k, j ) = ( akm1*bk-bkm1 ) / denom
 
  264         IF( ipiv( k ).GT.0 ) 
THEN 
  272               CALL zlacgv( nrhs, b( k, 1 ), ldb )
 
  273               CALL zgemv( 
'Conjugate transpose', k-1, nrhs, -one, b,
 
  274     $                     ldb, ap( kc ), 1, one, b( k, 1 ), ldb )
 
  275               CALL zlacgv( nrhs, b( k, 1 ), ldb )
 
  282     $         
CALL zswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
 
  293               CALL zlacgv( nrhs, b( k, 1 ), ldb )
 
  294               CALL zgemv( 
'Conjugate transpose', k-1, nrhs, -one, b,
 
  295     $                     ldb, ap( kc ), 1, one, b( k, 1 ), ldb )
 
  296               CALL zlacgv( nrhs, b( k, 1 ), ldb )
 
  298               CALL zlacgv( nrhs, b( k+1, 1 ), ldb )
 
  299               CALL zgemv( 
'Conjugate transpose', k-1, nrhs, -one, b,
 
  300     $                     ldb, ap( kc+k ), 1, one, b( k+1, 1 ), ldb )
 
  301               CALL zlacgv( nrhs, b( k+1, 1 ), ldb )
 
  308     $         
CALL zswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
 
  334         IF( ipiv( k ).GT.0 ) 
THEN 
  342     $         
CALL zswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
 
  348     $         
CALL zgeru( n-k, nrhs, -one, ap( kc+1 ), 1, b( k, 1 ),
 
  349     $                     ldb, b( k+1, 1 ), ldb )
 
  353            s = dble( one ) / dble( ap( kc ) )
 
  354            CALL zdscal( nrhs, s, b( k, 1 ), ldb )
 
  365     $         
CALL zswap( nrhs, b( k+1, 1 ), ldb, b( kp, 1 ), ldb )
 
  371               CALL zgeru( n-k-1, nrhs, -one, ap( kc+2 ), 1, b( k,
 
  373     $                     ldb, b( k+2, 1 ), ldb )
 
  374               CALL zgeru( n-k-1, nrhs, -one, ap( kc+n-k+2 ), 1,
 
  375     $                     b( k+1, 1 ), ldb, b( k+2, 1 ), ldb )
 
  381            akm1 = ap( kc ) / dconjg( akm1k )
 
  382            ak = ap( kc+n-k+1 ) / akm1k
 
  383            denom = akm1*ak - one
 
  385               bkm1 = b( k, j ) / dconjg( akm1k )
 
  386               bk = b( k+1, j ) / akm1k
 
  387               b( k, j ) = ( ak*bkm1-bk ) / denom
 
  388               b( k+1, j ) = ( akm1*bk-bkm1 ) / denom
 
  390            kc = kc + 2*( n-k ) + 1
 
  403         kc = n*( n+1 ) / 2 + 1
 
  412         IF( ipiv( k ).GT.0 ) 
THEN 
  420               CALL zlacgv( nrhs, b( k, 1 ), ldb )
 
  421               CALL zgemv( 
'Conjugate transpose', n-k, nrhs, -one,
 
  422     $                     b( k+1, 1 ), ldb, ap( kc+1 ), 1, one,
 
  424               CALL zlacgv( nrhs, b( k, 1 ), ldb )
 
  431     $         
CALL zswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
 
  441               CALL zlacgv( nrhs, b( k, 1 ), ldb )
 
  442               CALL zgemv( 
'Conjugate transpose', n-k, nrhs, -one,
 
  443     $                     b( k+1, 1 ), ldb, ap( kc+1 ), 1, one,
 
  445               CALL zlacgv( nrhs, b( k, 1 ), ldb )
 
  447               CALL zlacgv( nrhs, b( k-1, 1 ), ldb )
 
  448               CALL zgemv( 
'Conjugate transpose', n-k, nrhs, -one,
 
  449     $                     b( k+1, 1 ), ldb, ap( kc-( n-k ) ), 1, one,
 
  451               CALL zlacgv( nrhs, b( k-1, 1 ), ldb )
 
  458     $         
CALL zswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )