104 SUBROUTINE spotrf( UPLO, N, A, LDA, INFO )
122 parameter( one = 1.0e+0 )
131 EXTERNAL lsame, ilaenv
145 upper = lsame( uplo,
'U' )
146 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
148 ELSE IF( n.LT.0 )
THEN
150 ELSE IF( lda.LT.max( 1, n ) )
THEN
154 CALL xerbla(
'SPOTRF', -info )
165 nb = ilaenv( 1,
'SPOTRF', uplo, n, -1, -1, -1 )
166 IF( nb.LE.1 .OR. nb.GE.n )
THEN
170 CALL spotrf2( uplo, n, a, lda, info )
184 jb = min( nb, n-j+1 )
185 CALL ssyrk(
'Upper',
'Transpose', jb, j-1, -one,
186 $ a( 1, j ), lda, one, a( j, j ), lda )
187 CALL spotrf2(
'Upper', jb, a( j, j ), lda, info )
194 CALL sgemm(
'Transpose',
'No transpose', jb,
196 $ j-1, -one, a( 1, j ), lda, a( 1, j+jb ),
197 $ lda, one, a( j, j+jb ), lda )
198 CALL strsm(
'Left',
'Upper',
'Transpose',
200 $ jb, n-j-jb+1, one, a( j, j ), lda,
201 $ a( j, j+jb ), lda )
214 jb = min( nb, n-j+1 )
215 CALL ssyrk(
'Lower',
'No transpose', jb, j-1, -one,
216 $ a( j, 1 ), lda, one, a( j, j ), lda )
217 CALL spotrf2(
'Lower', jb, a( j, j ), lda, info )
224 CALL sgemm(
'No transpose',
'Transpose', n-j-jb+1,
226 $ j-1, -one, a( j+jb, 1 ), lda, a( j, 1 ),
227 $ lda, one, a( j+jb, j ), lda )
228 CALL strsm(
'Right',
'Lower',
'Transpose',
230 $ n-j-jb+1, jb, one, a( j, j ), lda,
231 $ a( j+jb, j ), lda )
subroutine sgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
SGEMM
subroutine ssyrk(uplo, trans, n, k, alpha, a, lda, beta, c, ldc)
SSYRK
subroutine strsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
STRSM