106 SUBROUTINE spotrf( UPLO, N, A, LDA, INFO )
124 parameter( one = 1.0e+0 )
133 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(
'SPOTRF', -info )
166 nb = ilaenv( 1,
'SPOTRF', uplo, n, -1, -1, -1 )
167 IF( nb.LE.1 .OR. nb.GE.n )
THEN 171 CALL spotrf2( uplo, n, a, lda, info )
185 jb = min( nb, n-j+1 )
186 CALL ssyrk(
'Upper',
'Transpose', jb, j-1, -one,
187 $ a( 1, j ), lda, one, a( j, j ), lda )
188 CALL spotrf2(
'Upper', jb, a( j, j ), lda, info )
195 CALL sgemm(
'Transpose',
'No transpose', jb, n-j-jb+1,
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',
'Non-unit',
199 $ jb, n-j-jb+1, one, a( j, j ), lda,
200 $ a( j, j+jb ), lda )
213 jb = min( nb, n-j+1 )
214 CALL ssyrk(
'Lower',
'No transpose', jb, j-1, -one,
215 $ a( j, 1 ), lda, one, a( j, j ), lda )
216 CALL spotrf2(
'Lower', jb, a( j, j ), lda, info )
223 CALL sgemm(
'No transpose',
'Transpose', n-j-jb+1, jb,
224 $ j-1, -one, a( j+jb, 1 ), lda, a( j, 1 ),
225 $ lda, one, a( j+jb, j ), lda )
226 CALL strsm(
'Right',
'Lower',
'Transpose',
'Non-unit',
227 $ n-j-jb+1, jb, one, a( j, j ), lda,
228 $ a( j+jb, j ), lda )
subroutine strsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRSM
subroutine xerbla(SRNAME, INFO)
XERBLA
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
recursive subroutine spotrf2(UPLO, N, A, LDA, INFO)
SPOTRF2
subroutine spotrf(UPLO, N, A, LDA, INFO)
SPOTRF