129 SUBROUTINE zsytrs_aa( UPLO, N, NRHS, A, LDA, IPIV, B, LDB,
130 $ WORK, LWORK, INFO )
141 INTEGER N, NRHS, LDA, LDB, LWORK, INFO
145 COMPLEX*16 A( lda, * ), B( ldb, * ), WORK( * )
151 parameter( one = 1.0d+0 )
154 LOGICAL LQUERY, UPPER
155 INTEGER K, KP, LWKOPT
170 upper = lsame( uplo,
'U' )
171 lquery = ( lwork.EQ.-1 )
172 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN 174 ELSE IF( n.LT.0 )
THEN 176 ELSE IF( nrhs.LT.0 )
THEN 178 ELSE IF( lda.LT.max( 1, n ) )
THEN 180 ELSE IF( ldb.LT.max( 1, n ) )
THEN 182 ELSE IF( lwork.LT.max( 1, 3*n-2 ) .AND. .NOT.lquery )
THEN 186 CALL xerbla(
'ZSYTRS_AA', -info )
188 ELSE IF( lquery )
THEN 196 IF( n.EQ.0 .OR. nrhs.EQ.0 )
208 $
CALL zswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
213 CALL ztrsm(
'L',
'U',
'T',
'U', n-1, nrhs, one, a( 1, 2 ), lda,
218 CALL zlacpy(
'F', 1, n, a( 1, 1 ), lda+1, work( n ), 1)
220 CALL zlacpy(
'F', 1, n-1, a( 1, 2 ), lda+1, work( 1 ), 1 )
221 CALL zlacpy(
'F', 1, n-1, a( 1, 2 ), lda+1, work( 2*n ), 1 )
223 CALL zgtsv( n, nrhs, work( 1 ), work( n ), work( 2*n ), b, ldb,
228 CALL ztrsm(
'L',
'U',
'N',
'U', n-1, nrhs, one, a( 1, 2 ), lda,
236 $
CALL zswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
248 $
CALL zswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
253 CALL ztrsm(
'L',
'L',
'N',
'U', n-1, nrhs, one, a( 2, 1 ), lda,
258 CALL zlacpy(
'F', 1, n, a(1, 1), lda+1, work(n), 1)
260 CALL zlacpy(
'F', 1, n-1, a( 2, 1 ), lda+1, work( 1 ), 1 )
261 CALL zlacpy(
'F', 1, n-1, a( 2, 1 ), lda+1, work( 2*n ), 1 )
263 CALL zgtsv( n, nrhs, work( 1 ), work(n), work( 2*n ), b, ldb,
268 CALL ztrsm(
'L',
'L',
'T',
'U', n-1, nrhs, one, a( 2, 1 ), lda,
276 $
CALL zswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
subroutine zswap(N, ZX, INCX, ZY, INCY)
ZSWAP
subroutine zlacpy(UPLO, M, N, A, LDA, B, LDB)
ZLACPY copies all or part of one two-dimensional array to another.
subroutine zsytrs_aa(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, LWORK, INFO)
ZSYTRS_AA
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ztrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
ZTRSM
subroutine zgtsv(N, NRHS, DL, D, DU, B, LDB, INFO)
ZGTSV computes the solution to system of linear equations A * X = B for GT matrices ...