101 SUBROUTINE zpotrf ( UPLO, N, A, LDA, INFO )
113 COMPLEX*16 a( lda, * )
121 parameter( one = 1.0d+0, cone = ( 1.0d+0, 0.0d+0 ) )
143 upper =
lsame( uplo,
'U' )
144 IF( .NOT.upper .AND. .NOT.
lsame( uplo,
'L' ) )
THEN 146 ELSE IF( n.LT.0 )
THEN 148 ELSE IF( lda.LT.max( 1, n ) )
THEN 152 CALL xerbla(
'ZPOTRF', -info )
163 nb =
ilaenv( 1,
'ZPOTRF', uplo, n, -1, -1, -1 )
164 IF( nb.LE.1 .OR. nb.GE.n )
THEN 168 CALL zpotf2( uplo, n, a, lda, info )
179 jb = min( nb, n-j+1 )
183 CALL ztrsm(
'Left',
'Upper',
'Conjugate Transpose',
184 $
'Non-unit', j-1, jb, cone, a( 1, 1 ), lda,
187 CALL zherk(
'Upper',
'Conjugate Transpose', jb, j-1,
188 $ -one, a( 1, j ), lda, one, a( j, j ), lda )
193 CALL zpotf2(
'Upper', jb, a( j, j ), lda, info )
205 jb = min( nb, n-j+1 )
209 CALL ztrsm(
'Right',
'Lower',
'Conjugate Transpose',
210 $
'Non-unit', jb, j-1, cone, a( 1, 1 ), lda,
213 CALL zherk(
'Lower',
'No Transpose', jb, j-1,
214 $ -one, a( j, 1 ), lda,
215 $ one, a( j, j ), lda )
220 CALL zpotf2(
'Lower', jb, a( j, j ), lda, info )
subroutine zpotrf(UPLO, N, A, LDA, INFO)
ZPOTRF VARIANT: right looking block version of the algorithm, calling Level 3 BLAS.
subroutine zgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
ZGEMM
integer function ilaenv(ISPEC, NAME, OPTS, N1, N2, N3, N4)
ILAENV
subroutine xerbla(SRNAME, INFO)
XERBLA
logical function lsame(CA, CB)
LSAME
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...