129 SUBROUTINE chetrs_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(
'CHETRS_AA', -info )
187 ELSE IF( lquery )
THEN 195 IF( n.EQ.0 .OR. nrhs.EQ.0 )
212 $
CALL cswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
218 CALL ctrsm(
'L',
'U',
'C',
'U', n-1, nrhs, one, a( 1, 2 ),
219 $ lda, b( 2, 1 ), ldb)
226 CALL clacpy(
'F', 1, n, a(1, 1), lda+1, work(n), 1)
228 CALL clacpy(
'F', 1, n-1, a( 1, 2 ), lda+1, work( 2*n ), 1)
229 CALL clacpy(
'F', 1, n-1, a( 1, 2 ), lda+1, work( 1 ), 1)
230 CALL clacgv( n-1, work( 1 ), 1 )
232 CALL cgtsv(n, nrhs, work(1), work(n), work(2*n), b, ldb,
241 CALL ctrsm(
'L',
'U',
'N',
'U', n-1, nrhs, one, a( 1, 2 ),
250 $
CALL cswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
269 $
CALL cswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
275 CALL ctrsm(
'L',
'L',
'N',
'U', n-1, nrhs, one, a( 2, 1),
276 $ lda, b(2, 1), ldb )
283 CALL clacpy(
'F', 1, n, a(1, 1), lda+1, work(n), 1)
285 CALL clacpy(
'F', 1, n-1, a( 2, 1 ), lda+1, work( 1 ), 1 )
286 CALL clacpy(
'F', 1, n-1, a( 2, 1 ), lda+1, work( 2*n ), 1)
287 CALL clacgv( n-1, work( 2*n ), 1 )
289 CALL cgtsv(n, nrhs, work(1), work(n), work(2*n), b, ldb,
298 CALL ctrsm(
'L',
'L',
'C',
'U', n-1, nrhs, one, a( 2, 1 ),
299 $ lda, b( 2, 1 ), ldb )
307 $
CALL cswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
subroutine clacpy(UPLO, M, N, A, LDA, B, LDB)
CLACPY copies all or part of one two-dimensional array to another.
subroutine xerbla(SRNAME, INFO)
XERBLA
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 chetrs_aa(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, LWORK, INFO)
CHETRS_AA
subroutine cswap(N, CX, INCX, CY, INCY)
CSWAP
subroutine clacgv(N, X, INCX)
CLACGV conjugates a complex vector.