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)
subroutine cgbtrs(trans, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, info)
CGBTRS
subroutine chetrs_aa_2stage(uplo, n, nrhs, a, lda, tb, ltb, ipiv, ipiv2, b, ldb, info)
CHETRS_AA_2STAGE
subroutine claswp(n, a, lda, k1, k2, ipiv, incx)
CLASWP performs a series of row interchanges on a general rectangular matrix.
subroutine ctrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
CTRSM