101 SUBROUTINE dpotrf ( UPLO, N, A, LDA, INFO )
112 DOUBLE PRECISION A( LDA, * )
119 parameter( one = 1.0d+0 )
128 EXTERNAL lsame, ilaenv
141 upper = lsame( uplo,
'U' )
142 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
144 ELSE IF( n.LT.0 )
THEN
146 ELSE IF( lda.LT.max( 1, n ) )
THEN
150 CALL xerbla(
'DPOTRF', -info )
161 nb = ilaenv( 1,
'DPOTRF', uplo, n, -1, -1, -1 )
162 IF( nb.LE.1 .OR. nb.GE.n )
THEN
166 CALL dpotf2( uplo, n, a, lda, info )
177 jb = min( nb, n-j+1 )
181 CALL dtrsm(
'Left',
'Upper',
'Transpose',
'Non-unit',
182 $ j-1, jb, one, a( 1, 1 ), lda,
185 CALL dsyrk(
'Upper',
'Transpose', jb, j-1, -one,
187 $ one, a( j, j ), lda )
192 CALL dpotf2(
'Upper', jb, a( j, j ), lda, info )
204 jb = min( nb, n-j+1 )
208 CALL dtrsm(
'Right',
'Lower',
'Transpose',
'Non-unit',
209 $ jb, j-1, one, a( 1, 1 ), lda,
212 CALL dsyrk(
'Lower',
'No Transpose', jb, j-1,
213 $ -one, a( j, 1 ), lda,
214 $ one, a( j, j ), lda )
220 CALL dpotf2(
'Lower', jb, a( j, j ), lda, info )
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 dgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
DGEMM
subroutine dpotrf(UPLO, N, A, LDA, INFO)
DPOTRF
subroutine dpotf2(UPLO, N, A, LDA, INFO)
DPOTF2 computes the Cholesky factorization of a symmetric/Hermitian positive definite matrix (unblock...