108 SUBROUTINE cpotrf( UPLO, N, A, LDA, INFO )
128 parameter ( one = 1.0e+0, cone = ( 1.0e+0, 0.0e+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(
'CPOTRF', -info )
170 nb = ilaenv( 1,
'CPOTRF', uplo, n, -1, -1, -1 )
171 IF( nb.LE.1 .OR. nb.GE.n )
THEN
175 CALL cpotrf2( uplo, n, a, lda, info )
189 jb = min( nb, n-j+1 )
190 CALL cherk(
'Upper',
'Conjugate transpose', jb, j-1,
191 $ -one, a( 1, j ), lda, one, a( j, j ), lda )
192 CALL cpotrf2(
'Upper', jb, a( j, j ), lda, info )
199 CALL cgemm(
'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 ctrsm(
'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 cherk(
'Lower',
'No transpose', jb, j-1, -one,
220 $ a( j, 1 ), lda, one, a( j, j ), lda )
221 CALL cpotrf2(
'Lower', jb, a( j, j ), lda, info )
228 CALL cgemm(
'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 ctrsm(
'Right',
'Lower',
'Conjugate transpose',
233 $
'Non-unit', n-j-jb+1, jb, cone, a( j, j ),
234 $ lda, a( j+jb, j ), lda )
subroutine cherk(UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C, LDC)
CHERK
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ctrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
CTRSM
recursive subroutine cpotrf2(UPLO, N, A, LDA, INFO)
CPOTRF2
subroutine cpotrf(UPLO, N, A, LDA, INFO)
CPOTRF
subroutine cgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CGEMM