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)
XERBLA
subroutine dscal(N, DA, DX, INCX)
DSCAL
subroutine dtrti2(UPLO, DIAG, N, A, LDA, INFO)
DTRTI2 computes the inverse of a triangular matrix (unblocked algorithm).
subroutine dtrmv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
DTRMV