108 SUBROUTINE dpotrf( UPLO, N, A, LDA, INFO )
120 DOUBLE PRECISION a( lda, * )
127 parameter( one = 1.0d+0 )
149 upper =
lsame( uplo,
'U' )
150 IF( .NOT.upper .AND. .NOT.
lsame( uplo,
'L' ) )
THEN
152 ELSE IF( n.LT.0 )
THEN
154 ELSE IF( lda.LT.max( 1, n ) )
THEN
158 CALL
xerbla(
'DPOTRF', -info )
169 nb =
ilaenv( 1,
'DPOTRF', uplo, n, -1, -1, -1 )
170 IF( nb.LE.1 .OR. nb.GE.n )
THEN
174 CALL
dpotf2( uplo, n, a, lda, info )
188 jb = min( nb, n-j+1 )
189 CALL
dsyrk(
'Upper',
'Transpose', jb, j-1, -one,
190 $ a( 1, j ), lda, one, a( j, j ), lda )
191 CALL
dpotf2(
'Upper', jb, a( j, j ), lda, info )
198 CALL
dgemm(
'Transpose',
'No transpose', jb, n-j-jb+1,
199 $ j-1, -one, a( 1, j ), lda, a( 1, j+jb ),
200 $ lda, one, a( j, j+jb ), lda )
201 CALL
dtrsm(
'Left',
'Upper',
'Transpose',
'Non-unit',
202 $ jb, n-j-jb+1, one, a( j, j ), lda,
203 $ a( j, j+jb ), lda )
216 jb = min( nb, n-j+1 )
217 CALL
dsyrk(
'Lower',
'No transpose', jb, j-1, -one,
218 $ a( j, 1 ), lda, one, a( j, j ), lda )
219 CALL
dpotf2(
'Lower', jb, a( j, j ), lda, info )
226 CALL
dgemm(
'No transpose',
'Transpose', n-j-jb+1, jb,
227 $ j-1, -one, a( j+jb, 1 ), lda, a( j, 1 ),
228 $ lda, one, a( j+jb, j ), lda )
229 CALL
dtrsm(
'Right',
'Lower',
'Transpose',
'Non-unit',
230 $ n-j-jb+1, jb, one, a( j, j ), lda,
231 $ a( j+jb, j ), lda )