104 SUBROUTINE cpotrf( UPLO, N, A, LDA, INFO )
123 parameter( one = 1.0e+0, cone = ( 1.0e+0, 0.0e+0 ) )
132 EXTERNAL lsame, ilaenv
146 upper = lsame( uplo,
'U' )
147 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
149 ELSE IF( n.LT.0 )
THEN
151 ELSE IF( lda.LT.max( 1, n ) )
THEN
155 CALL xerbla(
'CPOTRF', -info )
166 nb = ilaenv( 1,
'CPOTRF', uplo, n, -1, -1, -1 )
167 IF( nb.LE.1 .OR. nb.GE.n )
THEN
171 CALL cpotrf2( uplo, n, a, lda, info )
185 jb = min( nb, n-j+1 )
186 CALL cherk(
'Upper',
'Conjugate transpose', jb, j-1,
187 $ -one, a( 1, j ), lda, one, a( j, j ), lda )
188 CALL cpotrf2(
'Upper', jb, a( j, j ), lda, info )
195 CALL cgemm(
'Conjugate transpose',
'No transpose',
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 ctrsm(
'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 cherk(
'Lower',
'No transpose', jb, j-1, -one,
217 $ a( j, 1 ), lda, one, a( j, j ), lda )
218 CALL cpotrf2(
'Lower', jb, a( j, j ), lda, info )
225 CALL cgemm(
'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 ctrsm(
'Right',
'Lower',
230 $
'Conjugate transpose',
231 $
'Non-unit', n-j-jb+1, jb, cone, a( j, j ),
232 $ lda, a( j+jb, j ), lda )
subroutine cgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
CGEMM
subroutine cherk(uplo, trans, n, k, alpha, a, lda, beta, c, ldc)
CHERK
subroutine ctrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
CTRSM