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 )
182 jb = min( nb, n-
j+1 )
184 CALL
zpotf2(
'Upper', jb, a(
j,
j ), lda, info )
193 CALL
ztrsm(
'Left',
'Upper',
'Conjugate Transpose',
194 $
'Non-unit', jb, n-
j-jb+1, cone, a(
j,
j ),
195 $ lda, a(
j,
j+jb ), lda )
196 CALL
zherk(
'Upper',
'Conjugate transpose', n-
j-jb+1,
197 $ jb, -one, a(
j,
j+jb ), lda,
198 $ one, a(
j+jb,
j+jb ), lda )
211 jb = min( nb, n-
j+1 )
213 CALL
zpotf2(
'Lower', jb, a(
j,
j ), lda, info )
222 CALL
ztrsm(
'Right',
'Lower',
'Conjugate Transpose',
223 $
'Non-unit', n-
j-jb+1, jb, cone, a(
j,
j ),
224 $ lda, a(
j+jb,
j ), lda )
226 CALL
zherk(
'Lower',
'No Transpose', n-
j-jb+1, jb,
227 $ -one, a(
j+jb,
j ), lda,
228 $ one, a(
j+jb,
j+jb ), 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
logical function lsame(CA, CB)
LSAME
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real j
subroutine zpotf2(UPLO, N, A, LDA, INFO)
ZPOTF2 computes the Cholesky factorization of a symmetric/Hermitian positive definite matrix (unblock...
integer function ilaenv(ISPEC, NAME, OPTS, N1, N2, N3, N4)