138 $ IPIV, IPIV2, B, LDB, INFO )
148 INTEGER N, NRHS, LDA, LTB, LDB, INFO
151 INTEGER IPIV( * ), IPIV2( * )
152 COMPLEX*16 A( LDA, * ), TB( * ), B( LDB, * )
158 parameter( one = ( 1.0e+0, 0.0e+0 ) )
177 upper = lsame( uplo,
'U' )
178 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
180 ELSE IF( n.LT.0 )
THEN
182 ELSE IF( nrhs.LT.0 )
THEN
184 ELSE IF( lda.LT.max( 1, n ) )
THEN
186 ELSE IF( ltb.LT.( 4*n ) )
THEN
188 ELSE IF( ldb.LT.max( 1, n ) )
THEN
192 CALL xerbla(
'ZSYTRS_AA_2STAGE', -info )
198 IF( n.EQ.0 .OR. nrhs.EQ.0 )
214 CALL zlaswp( nrhs, b, ldb, nb+1, n, ipiv, 1 )
218 CALL ztrsm(
'L',
'U',
'T',
'U', n-nb, nrhs, one, a(1, nb+1),
219 $ lda, b(nb+1, 1), ldb)
225 CALL zgbtrs(
'N', n, nb, nb, nrhs, tb, ldtb, ipiv2, b, ldb,
231 CALL ztrsm(
'L',
'U',
'N',
'U', n-nb, nrhs, one, a(1, nb+1),
232 $ lda, b(nb+1, 1), ldb)
236 CALL zlaswp( nrhs, b, ldb, nb+1, n, ipiv, -1 )
248 CALL zlaswp( nrhs, b, ldb, nb+1, n, ipiv, 1 )
252 CALL ztrsm(
'L',
'L',
'N',
'U', n-nb, nrhs, one, a(nb+1, 1),
253 $ lda, b(nb+1, 1), ldb)
259 CALL zgbtrs(
'N', n, nb, nb, nrhs, tb, ldtb, ipiv2, b, ldb,
265 CALL ztrsm(
'L',
'L',
'T',
'U', n-nb, nrhs, one, a(nb+1, 1),
266 $ lda, b(nb+1, 1), ldb)
270 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 zsytrs_aa_2stage(UPLO, N, NRHS, A, LDA, TB, LTB, IPIV, IPIV2, B, LDB, INFO)
ZSYTRS_AA_2STAGE