106 SUBROUTINE zpotrf( UPLO, N, A, LDA, INFO )
117 COMPLEX*16 A( lda, * )
125 parameter( one = 1.0d+0, cone = ( 1.0d+0, 0.0d+0 ) )
134 EXTERNAL lsame, ilaenv
147 upper = lsame( uplo,
'U' )
148 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN 150 ELSE IF( n.LT.0 )
THEN 152 ELSE IF( lda.LT.max( 1, n ) )
THEN 156 CALL xerbla(
'ZPOTRF', -info )
167 nb = ilaenv( 1,
'ZPOTRF', uplo, n, -1, -1, -1 )
168 IF( nb.LE.1 .OR. nb.GE.n )
THEN 172 CALL zpotrf2( uplo, n, a, lda, info )
186 jb = min( nb, n-j+1 )
189 CALL zpotrf2(
'Upper', jb, a( j, j ), lda, info )
196 CALL zgemm(
'Conjugate transpose',
'No transpose', jb,
197 $ n-j-jb+1, j-1, -cone, a( 1, j ), lda,
198 $ a( 1, j+jb ), lda, cone, a( j, j+jb ),
200 CALL ztrsm(
'Left',
'Upper',
'Conjugate transpose',
201 $
'Non-unit', jb, n-j-jb+1, cone, a( j, j ),
202 $ lda, a( j, j+jb ), lda )
215 jb = min( nb, n-j+1 )
216 CALL zherk(
'Lower',
'No transpose', jb, j-1, -one,
217 $ a( j, 1 ), lda, one, a( j, j ), lda )
218 CALL zpotrf2(
'Lower', jb, a( j, j ), lda, info )
225 CALL zgemm(
'No transpose',
'Conjugate transpose',
226 $ n-j-jb+1, jb, j-1, -cone, a( j+jb, 1 ),
227 $ lda, a( j, 1 ), lda, cone, a( j+jb, j ),
229 CALL ztrsm(
'Right',
'Lower',
'Conjugate transpose',
230 $
'Non-unit', n-j-jb+1, jb, cone, a( j, j ),
231 $ lda, a( j+jb, j ), lda )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zpotrf(UPLO, N, A, LDA, INFO)
ZPOTRF
subroutine ztrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
ZTRSM
recursive subroutine zpotrf2(UPLO, N, A, LDA, INFO)
ZPOTRF2
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