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 )
178 jb = min( nb, n-j+1 )
182 CALL ztrsm(
'Left',
'Upper',
'Conjugate Transpose',
183 $
'Non-unit', j-1, jb, cone, a( 1, 1 ), lda,
186 CALL zherk(
'Upper',
'Conjugate Transpose', jb, j-1,
187 $ -one, a( 1, j ), lda, one, a( j, j ), lda )
192 CALL zpotf2(
'Upper', jb, a( j, j ), lda, info )
204 jb = min( nb, n-j+1 )
208 CALL ztrsm(
'Right',
'Lower',
'Conjugate Transpose',
209 $
'Non-unit', jb, j-1, cone, a( 1, 1 ), lda,
212 CALL zherk(
'Lower',
'No Transpose', jb, j-1,
213 $ -one, a( j, 1 ), lda,
214 $ one, a( j, j ), lda )
219 CALL zpotf2(
'Lower', jb, a( j, j ), lda, info )
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.