101 SUBROUTINE cpotrf ( UPLO, N, A, LDA, INFO )
120 parameter( one = 1.0e+0, cone = ( 1.0e+0, 0.0e+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(
'CPOTRF', -info )
162 nb = ilaenv( 1,
'CPOTRF', uplo, n, -1, -1, -1 )
163 IF( nb.LE.1 .OR. nb.GE.n )
THEN
167 CALL cpotf2( uplo, n, a, lda, info )
181 jb = min( nb, n-j+1 )
183 CALL cpotf2(
'Upper', jb, a( j, j ), lda, info )
192 CALL ctrsm(
'Left',
'Upper',
'Conjugate Transpose',
193 $
'Non-unit', jb, n-j-jb+1, cone, a( j, j ),
194 $ lda, a( j, j+jb ), lda )
195 CALL cherk(
'Upper',
'Conjugate transpose', n-j-jb+1,
196 $ jb, -one, a( j, j+jb ), lda,
197 $ one, a( j+jb, j+jb ), lda )
210 jb = min( nb, n-j+1 )
212 CALL cpotf2(
'Lower', jb, a( j, j ), lda, info )
221 CALL ctrsm(
'Right',
'Lower',
'Conjugate Transpose',
222 $
'Non-unit', n-j-jb+1, jb, cone, a( j, j ),
223 $ lda, a( j+jb, j ), lda )
225 CALL cherk(
'Lower',
'No Transpose', n-j-jb+1, jb,
226 $ -one, a( j+jb, j ), lda,
227 $ one, a( j+jb, j+jb ), lda )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine cgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CGEMM
subroutine cherk(UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C, LDC)
CHERK
subroutine ctrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
CTRSM
subroutine cpotrf(UPLO, N, A, LDA, INFO)
CPOTRF
subroutine cpotf2(UPLO, N, A, LDA, INFO)
CPOTF2 computes the Cholesky factorization of a symmetric/Hermitian positive definite matrix (unblock...