1 SUBROUTINE strtri( UPLO, DIAG, N, A, LDA, INFO )
64 parameter( one = 1.0e+0, zero = 0.0e+0 )
73 EXTERNAL lsame, ilaenv
86 upper = lsame(
uplo,
'U' )
87 nounit = lsame(
diag,
'N' )
88 IF( .NOT.upper .AND. .NOT.lsame(
uplo,
'L' ) )
THEN
90 ELSE IF( .NOT.nounit .AND. .NOT.lsame(
diag,
'U' ) )
THEN
92 ELSE IF( n.LT.0 )
THEN
94 ELSE IF( lda.LT.
max( 1, n ) )
THEN
98 CALL
xerbla(
'STRTRI', -info )
111 IF( a( info, info ).EQ.zero )
119 nb = ilaenv( 1,
'STRTRI',
uplo //
diag, n, -1, -1, -1 )
120 IF( nb.LE.1 .OR. nb.GE.n )
THEN
134 jb =
min( nb, n-j+1 )
138 CALL strmm(
'Left',
'Upper',
'No transpose',
diag, j-1,
139 $ jb, one, a, lda, a( 1, j ), lda )
140 CALL strsm(
'Right',
'Upper',
'No transpose',
diag, j-1,
141 $ jb, -one, a( j, j ), lda, a( 1, j ), lda )
145 CALL
strti2(
'Upper',
diag, jb, a( j, j ), lda, info )
151 nn = ( ( n-1 ) / nb )*nb + 1
153 jb =
min( nb, n-j+1 )
158 CALL strmm(
'Left',
'Lower',
'No transpose',
diag,
159 $ n-j-jb+1, jb, one, a( j+jb, j+jb ), lda,
160 $ a( j+jb, j ), lda )
161 CALL strsm(
'Right',
'Lower',
'No transpose',
diag,
162 $ n-j-jb+1, jb, -one, a( j, j ), lda,
163 $ a( j+jb, j ), lda )
168 CALL
strti2(
'Lower',
diag, jb, a( j, j ), lda, info )