101 SUBROUTINE spotrf ( UPLO, N, A, LDA, INFO )
120 parameter ( one = 1.0e+0 )
129 EXTERNAL lsame, ilaenv
142 upper = lsame( uplo,
'U' )
143 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
145 ELSE IF( n.LT.0 )
THEN
147 ELSE IF( lda.LT.max( 1, n ) )
THEN
151 CALL xerbla(
'SPOTRF', -info )
162 nb = ilaenv( 1,
'SPOTRF', uplo, n, -1, -1, -1 )
163 IF( nb.LE.1 .OR. nb.GE.n )
THEN
167 CALL spotf2( uplo, n, a, lda, info )
181 jb = min( nb, n-j+1 )
183 CALL spotf2(
'Upper', jb, a( j, j ), lda, info )
192 CALL strsm(
'Left',
'Upper',
'Transpose',
'Non-unit',
193 $ jb, n-j-jb+1, one, a( j, j ), lda,
194 $ a( j, j+jb ), lda )
195 CALL ssyrk(
'Upper',
'Transpose', n-j-jb+1, jb, -one,
197 $ one, a( j+jb, j+jb ), lda )
210 jb = min( nb, n-j+1 )
212 CALL spotf2(
'Lower', jb, a( j, j ), lda, info )
221 CALL strsm(
'Right',
'Lower',
'Transpose',
'Non-unit',
222 $ n-j-jb+1, jb, one, a( j, j ), lda,
223 $ a( j+jb, j ), lda )
225 CALL ssyrk(
'Lower',
'No Transpose', n-j-jb+1, jb,
226 $ -one, a( j+jb, j ), lda,
227 $ one, a( j+jb, j+jb ), 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
subroutine spotf2(UPLO, N, A, LDA, INFO)
SPOTF2 computes the Cholesky factorization of a symmetric/Hermitian positive definite matrix (unblock...