129 SUBROUTINE csytrs_aa( UPLO, N, NRHS, A, LDA, IPIV, B, LDB,
130 $ WORK, LWORK, INFO )
140 INTEGER N, NRHS, LDA, LDB, LWORK, INFO
144 COMPLEX A( LDA, * ), B( LDB, * ), WORK( * )
150 parameter( one = 1.0e+0 )
153 LOGICAL LQUERY, UPPER
154 INTEGER K, KP, LWKOPT
169 upper = lsame( uplo,
'U' )
170 lquery = ( lwork.EQ.-1 )
171 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
173 ELSE IF( n.LT.0 )
THEN
175 ELSE IF( nrhs.LT.0 )
THEN
177 ELSE IF( lda.LT.max( 1, n ) )
THEN
179 ELSE IF( ldb.LT.max( 1, n ) )
THEN
181 ELSE IF( lwork.LT.max( 1, 3*n-2 ) .AND. .NOT.lquery )
THEN
185 CALL xerbla(
'CSYTRS_AA', -info )
187 ELSE IF( lquery )
THEN
195 IF( n.EQ.0 .OR. nrhs.EQ.0 )
211 $
CALL cswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
216 CALL ctrsm(
'L',
'U',
'T',
'U', n-1, nrhs, one, a( 1, 2 ),
217 $ lda, b( 2, 1 ), ldb)
224 CALL clacpy(
'F', 1, n, a( 1, 1 ), lda+1, work( n ), 1)
226 CALL clacpy(
'F', 1, n-1, a( 1, 2 ), lda+1, work( 1 ), 1 )
227 CALL clacpy(
'F', 1, n-1, a( 1, 2 ), lda+1, work( 2*n ), 1 )
229 CALL cgtsv( n, nrhs, work( 1 ), work( n ), work( 2*n ), b, ldb,
238 CALL ctrsm(
'L',
'U',
'N',
'U', n-1, nrhs, one, a( 1, 2 ),
239 $ lda, b( 2, 1 ), ldb)
246 $
CALL cswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
263 $
CALL cswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
268 CALL ctrsm(
'L',
'L',
'N',
'U', n-1, nrhs, one, a( 2, 1 ),
269 $ lda, b( 2, 1 ), ldb)
277 CALL clacpy(
'F', 1, n, a(1, 1), lda+1, work(n), 1)
279 CALL clacpy(
'F', 1, n-1, a( 2, 1 ), lda+1, work( 1 ), 1 )
280 CALL clacpy(
'F', 1, n-1, a( 2, 1 ), lda+1, work( 2*n ), 1 )
282 CALL cgtsv( n, nrhs, work( 1 ), work(n), work( 2*n ), b, ldb,
291 CALL ctrsm(
'L',
'L',
'T',
'U', n-1, nrhs, one, a( 2, 1 ),
292 $ lda, b( 2, 1 ), ldb)
299 $
CALL cswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine cswap(N, CX, INCX, CY, INCY)
CSWAP
subroutine ctrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
CTRSM
subroutine cgtsv(N, NRHS, DL, D, DU, B, LDB, INFO)
CGTSV computes the solution to system of linear equations A * X = B for GT matrices
subroutine clacpy(UPLO, M, N, A, LDA, B, LDB)
CLACPY copies all or part of one two-dimensional array to another.
subroutine csytrs_aa(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, LWORK, INFO)
CSYTRS_AA