140 $ IPIV, IPIV2, B, LDB, INFO )
150 INTEGER N, NRHS, LDA, LTB, LDB, INFO
153 INTEGER IPIV( * ), IPIV2( * )
154 COMPLEX*16 A( LDA, * ), TB( * ), B( LDB, * )
160 parameter( one = ( 1.0d+0, 0.0d+0 ) )
179 upper = lsame( uplo,
'U' )
180 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
182 ELSE IF( n.LT.0 )
THEN
184 ELSE IF( nrhs.LT.0 )
THEN
186 ELSE IF( lda.LT.max( 1, n ) )
THEN
188 ELSE IF( ltb.LT.( 4*n ) )
THEN
190 ELSE IF( ldb.LT.max( 1, n ) )
THEN
194 CALL xerbla(
'ZHETRS_AA_2STAGE', -info )
200 IF( n.EQ.0 .OR. nrhs.EQ.0 )
216 CALL zlaswp( nrhs, b, ldb, nb+1, n, ipiv, 1 )
220 CALL ztrsm(
'L',
'U',
'C',
'U', n-nb, nrhs, one, a(1, nb+1),
221 $ lda, b(nb+1, 1), ldb)
227 CALL zgbtrs(
'N', n, nb, nb, nrhs, tb, ldtb, ipiv2, b, ldb,
233 CALL ztrsm(
'L',
'U',
'N',
'U', n-nb, nrhs, one, a(1, nb+1),
234 $ lda, b(nb+1, 1), ldb)
238 CALL zlaswp( nrhs, b, ldb, nb+1, n, ipiv, -1 )
250 CALL zlaswp( nrhs, b, ldb, nb+1, n, ipiv, 1 )
254 CALL ztrsm(
'L',
'L',
'N',
'U', n-nb, nrhs, one, a(nb+1, 1),
255 $ lda, b(nb+1, 1), ldb)
261 CALL zgbtrs(
'N', n, nb, nb, nrhs, tb, ldtb, ipiv2, b, ldb,
267 CALL ztrsm(
'L',
'L',
'C',
'U', n-nb, nrhs, one, a(nb+1, 1),
268 $ lda, b(nb+1, 1), ldb)
272 CALL zlaswp( nrhs, b, ldb, nb+1, n, ipiv, -1 )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ztrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
ZTRSM
subroutine zgbtrs(TRANS, N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB, INFO)
ZGBTRS
subroutine zlaswp(N, A, LDA, K1, K2, IPIV, INCX)
ZLASWP performs a series of row interchanges on a general rectangular matrix.
subroutine zhetrs_aa_2stage(UPLO, N, NRHS, A, LDA, TB, LTB, IPIV, IPIV2, B, LDB, INFO)
ZHETRS_AA_2STAGE