127 SUBROUTINE csytrs_aa( UPLO, N, NRHS, A, LDA, IPIV, B, LDB,
128 $ WORK, LWORK, INFO )
138 INTEGER N, NRHS, LDA, LDB, LWORK, INFO
142 COMPLEX A( LDA, * ), B( LDB, * ), WORK( * )
148 parameter( one = 1.0e+0 )
151 LOGICAL LQUERY, UPPER
152 INTEGER K, KP, LWKOPT
157 EXTERNAL lsame, sroundup_lwork
168 upper = lsame( uplo,
'U' )
169 lquery = ( lwork.EQ.-1 )
170 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
172 ELSE IF( n.LT.0 )
THEN
174 ELSE IF( nrhs.LT.0 )
THEN
176 ELSE IF( lda.LT.max( 1, n ) )
THEN
178 ELSE IF( ldb.LT.max( 1, n ) )
THEN
180 ELSE IF( lwork.LT.max( 1, 3*n-2 ) .AND. .NOT.lquery )
THEN
184 CALL xerbla(
'CSYTRS_AA', -info )
186 ELSE IF( lquery )
THEN
188 work( 1 ) = sroundup_lwork(lwkopt)
194 IF( n.EQ.0 .OR. nrhs.EQ.0 )
210 $
CALL cswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
215 CALL ctrsm(
'L',
'U',
'T',
'U', n-1, nrhs, one, a( 1,
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 ),
228 CALL clacpy(
'F', 1, n-1, a( 1, 2 ), lda+1, work( 2*n ),
231 CALL cgtsv( n, nrhs, work( 1 ), work( n ), work( 2*n ), b,
241 CALL ctrsm(
'L',
'U',
'N',
'U', n-1, nrhs, one, a( 1,
243 $ lda, b( 2, 1 ), ldb)
250 $
CALL cswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
267 $
CALL cswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
272 CALL ctrsm(
'L',
'L',
'N',
'U', n-1, nrhs, one, a( 2,
274 $ lda, b( 2, 1 ), ldb)
282 CALL clacpy(
'F', 1, n, a(1, 1), lda+1, work(n), 1)
284 CALL clacpy(
'F', 1, n-1, a( 2, 1 ), lda+1, work( 1 ),
286 CALL clacpy(
'F', 1, n-1, a( 2, 1 ), lda+1, work( 2*n ),
289 CALL cgtsv( n, nrhs, work( 1 ), work(n), work( 2*n ), b,
299 CALL ctrsm(
'L',
'L',
'T',
'U', n-1, nrhs, one, a( 2,
301 $ lda, b( 2, 1 ), ldb)
308 $
CALL cswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
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 ctrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
CTRSM