108 SUBROUTINE dpotrf( UPLO, N, A, LDA, INFO )
120 DOUBLE PRECISION A( lda, * )
127 parameter( one = 1.0d+0 )
136 EXTERNAL lsame, ilaenv
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 )
subroutine dpotf2(UPLO, N, A, LDA, INFO)
DPOTF2 computes the Cholesky factorization of a symmetric/Hermitian positive definite matrix (unblock...
subroutine dgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
DGEMM
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dtrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
DTRSM
subroutine dsyrk(UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C, LDC)
DSYRK
subroutine dpotrf(UPLO, N, A, LDA, INFO)
DPOTRF