108 SUBROUTINE zpotrf( UPLO, N, A, LDA, INFO )
120 COMPLEX*16 A( lda, * )
128 parameter( one = 1.0d+0, cone = ( 1.0d+0, 0.0d+0 ) )
137 EXTERNAL lsame, ilaenv
150 upper = lsame( uplo,
'U' )
151 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
153 ELSE IF( n.LT.0 )
THEN
155 ELSE IF( lda.LT.max( 1, n ) )
THEN
159 CALL xerbla(
'ZPOTRF', -info )
170 nb = ilaenv( 1,
'ZPOTRF', uplo, n, -1, -1, -1 )
171 IF( nb.LE.1 .OR. nb.GE.n )
THEN
175 CALL zpotf2( uplo, n, a, lda, info )
189 jb = min( nb, n-j+1 )
190 CALL zherk(
'Upper',
'Conjugate transpose', jb, j-1,
191 $ -one, a( 1, j ), lda, one, a( j, j ), lda )
192 CALL zpotf2(
'Upper', jb, a( j, j ), lda, info )
199 CALL zgemm(
'Conjugate transpose',
'No transpose', jb,
200 $ n-j-jb+1, j-1, -cone, a( 1, j ), lda,
201 $ a( 1, j+jb ), lda, cone, a( j, j+jb ),
203 CALL ztrsm(
'Left',
'Upper',
'Conjugate transpose',
204 $
'Non-unit', jb, n-j-jb+1, cone, a( j, j ),
205 $ lda, a( j, j+jb ), lda )
218 jb = min( nb, n-j+1 )
219 CALL zherk(
'Lower',
'No transpose', jb, j-1, -one,
220 $ a( j, 1 ), lda, one, a( j, j ), lda )
221 CALL zpotf2(
'Lower', jb, a( j, j ), lda, info )
228 CALL zgemm(
'No transpose',
'Conjugate transpose',
229 $ n-j-jb+1, jb, j-1, -cone, a( j+jb, 1 ),
230 $ lda, a( j, 1 ), lda, cone, a( j+jb, j ),
232 CALL ztrsm(
'Right',
'Lower',
'Conjugate transpose',
233 $
'Non-unit', n-j-jb+1, jb, cone, a( j, j ),
234 $ lda, a( j+jb, j ), lda )
subroutine zherk(UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C, LDC)
ZHERK
subroutine zpotrf(UPLO, N, A, LDA, INFO)
ZPOTRF VARIANT: right looking block version of the algorithm, calling Level 3 BLAS.
subroutine ztrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
ZTRSM
subroutine zgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
ZGEMM
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zpotf2(UPLO, N, A, LDA, INFO)
ZPOTF2 computes the Cholesky factorization of a symmetric/Hermitian positive definite matrix (unblock...