129 SUBROUTINE dsytrs_aa( UPLO, N, NRHS, A, LDA, IPIV, B, LDB,
130 $ WORK, LWORK, INFO )
140 INTEGER N, NRHS, LDA, LDB, LWORK, INFO
144 DOUBLE PRECISION A( LDA, * ), B( LDB, * ), WORK( * )
150 parameter( one = 1.0d+0 )
153 LOGICAL LQUERY, UPPER
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(
'DSYTRS_AA', -info )
187 ELSE IF( lquery )
THEN
195 IF( n.EQ.0 .OR. nrhs.EQ.0 )
211 $
CALL dswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
216 CALL dtrsm('l
', 'u
', 't
', 'u
', N-1, NRHS, ONE, A( 1, 2 ),
217 $ LDA, B( 2, 1 ), LDB)
224 CALL DLACPY( 'f
', 1, N, A( 1, 1 ), LDA+1, WORK( N ), 1)
226 CALL DLACPY( 'f
', 1, N-1, A( 1, 2 ), LDA+1, WORK( 1 ), 1 )
227 CALL DLACPY( 'f
', 1, N-1, A( 1, 2 ), LDA+1, WORK( 2*N ), 1 )
229 CALL DGTSV( N, NRHS, WORK( 1 ), WORK( N ), WORK( 2*N ), B, LDB,
238 CALL DTRSM( 'l
', 'u
', 'n
', 'u
', N-1, NRHS, ONE, A( 1, 2 ),
239 $ LDA, B( 2, 1 ), LDB)
246 $ CALL DSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB )
263 $ CALL DSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB )
268 CALL DTRSM( 'l
', 'l
', 'n
', 'u
', N-1, NRHS, ONE, A( 2, 1 ),
269 $ LDA, B( 2, 1 ), LDB)
276 CALL DLACPY( 'f
', 1, N, A(1, 1), LDA+1, WORK(N), 1)
278 CALL DLACPY( 'f
', 1, N-1, A( 2, 1 ), LDA+1, WORK( 1 ), 1 )
279 CALL DLACPY( 'f
', 1, N-1, A( 2, 1 ), LDA+1, WORK( 2*N ), 1 )
281 CALL DGTSV( N, NRHS, WORK( 1 ), WORK(N), WORK( 2*N ), B, LDB,
290 CALL DTRSM( 'l
', 'l
', 't
', 'u
', N-1, NRHS, ONE, A( 2, 1 ),
291 $ LDA, B( 2, 1 ), LDB)
298 $ CALL DSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB )
subroutine dlacpy(uplo, m, n, a, lda, b, ldb)
DLACPY copies all or part of one two-dimensional array to another.
subroutine xerbla(srname, info)
XERBLA
subroutine dgtsv(n, nrhs, dl, d, du, b, ldb, info)
DGTSV computes the solution to system of linear equations A * X = B for GT matrices
subroutine dsytrs_aa(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, info)
DSYTRS_AA
subroutine dswap(n, dx, incx, dy, incy)
DSWAP
subroutine dtrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
DTRSM