101 SUBROUTINE zpotrf ( UPLO, N, A, LDA, INFO )
112 COMPLEX*16 A( LDA, * )
120 parameter( one = 1.0d+0, cone = ( 1.0d+0, 0.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(
'ZPOTRF', -info )
162 nb = ilaenv( 1,
'ZPOTRF', uplo, n, -1, -1, -1 )
163 IF( nb.LE.1 .OR. nb.GE.n )
THEN
167 CALL zpotf2( uplo, n, a, lda, info )
181 jb = min( nb, n-j+1 )
183 CALL zpotf2(
'Upper', jb, a( j, j ), lda, info )
192 CALL ztrsm(
'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 zherk(
'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 zpotf2(
'Lower', jb, a( j, j ), lda, info )
221 CALL ztrsm(
'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 zherk(
'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 zgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
ZGEMM
subroutine zherk(UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C, LDC)
ZHERK
subroutine ztrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
ZTRSM
subroutine zpotf2(UPLO, N, A, LDA, INFO)
ZPOTF2 computes the Cholesky factorization of a symmetric/Hermitian positive definite matrix (unblock...
subroutine zpotrf(UPLO, N, A, LDA, INFO)
ZPOTRF VARIANT: right looking block version of the algorithm, calling Level 3 BLAS.