108 SUBROUTINE spotrf( UPLO, N, A, LDA, INFO )
127 parameter ( one = 1.0e+0 )
136 EXTERNAL lsame, ilaenv
149 upper = lsame( uplo,
'U' )
150 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
152 ELSE IF( n.LT.0 )
THEN
154 ELSE IF( lda.LT.max( 1, n ) )
THEN
158 CALL xerbla(
'SPOTRF', -info )
169 nb = ilaenv( 1,
'SPOTRF', uplo, n, -1, -1, -1 )
170 IF( nb.LE.1 .OR. nb.GE.n )
THEN
174 CALL spotrf2( uplo, n, a, lda, info )
188 jb = min( nb, n-j+1 )
189 CALL ssyrk(
'Upper',
'Transpose', jb, j-1, -one,
190 $ a( 1, j ), lda, one, a( j, j ), lda )
191 CALL spotrf2(
'Upper', jb, a( j, j ), lda, info )
198 CALL sgemm(
'Transpose',
'No transpose', jb, n-j-jb+1,
199 $ j-1, -one, a( 1, j ), lda, a( 1, j+jb ),
200 $ lda, one, a( j, j+jb ), lda )
201 CALL strsm(
'Left',
'Upper',
'Transpose',
'Non-unit',
202 $ jb, n-j-jb+1, one, a( j, j ), lda,
203 $ a( j, j+jb ), lda )
216 jb = min( nb, n-j+1 )
217 CALL ssyrk(
'Lower',
'No transpose', jb, j-1, -one,
218 $ a( j, 1 ), lda, one, a( j, j ), lda )
219 CALL spotrf2(
'Lower', jb, a( j, j ), lda, info )
226 CALL sgemm(
'No transpose',
'Transpose', n-j-jb+1, jb,
227 $ j-1, -one, a( j+jb, 1 ), lda, a( j, 1 ),
228 $ lda, one, a( j+jb, j ), lda )
229 CALL strsm(
'Right',
'Lower',
'Transpose',
'Non-unit',
230 $ n-j-jb+1, jb, one, a( j, j ), lda,
231 $ a( j+jb, j ), lda )
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
subroutine sgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
SGEMM
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine spotrf(UPLO, N, A, LDA, INFO)
SPOTRF
recursive subroutine spotrf2(UPLO, N, A, LDA, INFO)
SPOTRF2