101 SUBROUTINE dpotrf ( UPLO, N, A, LDA, INFO )
113 DOUBLE PRECISION A( lda, * )
120 parameter ( one = 1.0d+0 )
129 EXTERNAL lsame, ilaenv
142 upper = lsame( uplo,
'U' )
143 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
145 ELSE IF( n.LT.0 )
THEN
147 ELSE IF( lda.LT.max( 1, n ) )
THEN
151 CALL xerbla(
'DPOTRF', -info )
162 nb = ilaenv( 1,
'DPOTRF', uplo, n, -1, -1, -1 )
163 IF( nb.LE.1 .OR. nb.GE.n )
THEN
167 CALL dpotf2( uplo, n, a, lda, info )
181 jb = min( nb, n-j+1 )
183 CALL dpotf2(
'Upper', jb, a( j, j ), lda, info )
192 CALL dtrsm(
'Left',
'Upper',
'Transpose',
'Non-unit',
193 $ jb, n-j-jb+1, one, a( j, j ), lda,
194 $ a( j, j+jb ), lda )
195 CALL dsyrk(
'Upper',
'Transpose', n-j-jb+1, jb, -one,
197 $ one, a( j+jb, j+jb ), lda )
210 jb = min( nb, n-j+1 )
212 CALL dpotf2(
'Lower', jb, a( j, j ), lda, info )
221 CALL dtrsm(
'Right',
'Lower',
'Transpose',
'Non-unit',
222 $ n-j-jb+1, jb, one, a( j, j ), lda,
223 $ a( j+jb, j ), lda )
225 CALL dsyrk(
'Lower',
'No Transpose', n-j-jb+1, jb,
226 $ -one, a( j+jb, j ), lda,
227 $ one, a( j+jb, j+jb ), lda )
subroutine dtrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
DTRSM
subroutine dpotrf(UPLO, N, A, LDA, INFO)
DPOTRF
subroutine dgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
DGEMM
subroutine dsyrk(UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C, LDC)
DSYRK
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dpotf2(UPLO, N, A, LDA, INFO)
DPOTF2 computes the Cholesky factorization of a symmetric/Hermitian positive definite matrix (unblock...