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 spotf2( 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 spotf2(
'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 spotf2(
'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 spotf2(UPLO, N, A, LDA, INFO)
SPOTF2 computes the Cholesky factorization of a symmetric/Hermitian positive definite matrix (unblock...
subroutine ssyrk(UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C, LDC)
SSYRK
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine sgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
SGEMM
subroutine strsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRSM
subroutine spotrf(UPLO, N, A, LDA, INFO)
SPOTRF