140 $ IPIV, IPIV2, B, LDB, INFO )
150 INTEGER N, NRHS, LDA, LTB, LDB, INFO
153 INTEGER IPIV( * ), IPIV2( * )
154 COMPLEX A( LDA, * ), TB( * ), B( LDB, * )
160 parameter( one = ( 1.0e+0, 0.0e+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(
'CHETRS_AA_2STAGE', -info )
200 IF( n.EQ.0 .OR. nrhs.EQ.0 )
216 CALL claswp( nrhs, b, ldb, nb+1, n, ipiv, 1 )
220 CALL ctrsm(
'L',
'U',
'C',
'U', n-nb, nrhs, one, a(1, nb+1),
221 $ lda, b(nb+1, 1), ldb)
227 CALL cgbtrs(
'N', n, nb, nb, nrhs, tb, ldtb, ipiv2, b, ldb,
233 CALL ctrsm(
'L',
'U',
'N',
'U', n-nb, nrhs, one, a(1, nb+1),
234 $ lda, b(nb+1, 1), ldb)
238 CALL claswp( nrhs, b, ldb, nb+1, n, ipiv, -1 )
250 CALL claswp( nrhs, b, ldb, nb+1, n, ipiv, 1 )
254 CALL ctrsm(
'L',
'L',
'N',
'U', n-nb, nrhs, one, a(nb+1, 1),
255 $ lda, b(nb+1, 1), ldb)
261 CALL cgbtrs(
'N', n, nb, nb, nrhs, tb, ldtb, ipiv2, b, ldb,
267 CALL ctrsm(
'L',
'L',
'C',
'U', n-nb, nrhs, one, a(nb+1, 1),
268 $ lda, b(nb+1, 1), ldb)
272 CALL claswp( nrhs, b, ldb, nb+1, n, ipiv, -1 )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ctrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
CTRSM
subroutine cgbtrs(TRANS, N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB, INFO)
CGBTRS
subroutine claswp(N, A, LDA, K1, K2, IPIV, INCX)
CLASWP performs a series of row interchanges on a general rectangular matrix.
subroutine chetrs_aa_2stage(UPLO, N, NRHS, A, LDA, TB, LTB, IPIV, IPIV2, B, LDB, INFO)
CHETRS_AA_2STAGE