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 )