109 SUBROUTINE dtrti2( UPLO, DIAG, N, A, LDA, INFO )
120 DOUBLE PRECISION A( LDA, * )
127 parameter( one = 1.0d+0 )
130 LOGICAL NOUNIT, UPPER
149 upper = lsame( uplo,
'U' )
150 nounit = lsame( diag,
'N' )
151 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
153 ELSE IF( .NOT.nounit .AND. .NOT.lsame( diag,
'U' ) )
THEN
155 ELSE IF( n.LT.0 )
THEN
157 ELSE IF( lda.LT.max( 1, n ) )
THEN
161 CALL xerbla(
'DTRTI2', -info )
171 a( j, j ) = one / a( j, j )
179 CALL dtrmv(
'Upper',
'No transpose', diag, j-1, a, lda,
181 CALL dscal( j-1, ajj, a( 1, j ), 1 )
189 a( j, j ) = one / a( j, j )
198 CALL dtrmv(
'Lower',
'No transpose', diag, n-j,
199 $ a( j+1, j+1 ), lda, a( j+1, j ), 1 )
200 CALL dscal( n-j, ajj, a( j+1, j ), 1 )
subroutine xerbla(srname, info)
subroutine dscal(n, da, dx, incx)
DSCAL
subroutine dtrmv(uplo, trans, diag, n, a, lda, x, incx)
DTRMV
subroutine dtrti2(uplo, diag, n, a, lda, info)
DTRTI2 computes the inverse of a triangular matrix (unblocked algorithm).