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 zpotrf2( 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 zpotrf2(
'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 zpotrf2(
'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 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
subroutine xerbla(SRNAME, INFO)
XERBLA
recursive subroutine zpotrf2(UPLO, N, A, LDA, INFO)
ZPOTRF2
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