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 )
178 jb = min( nb, n-j+1 )
182 CALL
strsm(
'Left',
'Upper',
'Transpose',
'Non-unit',
183 $ j-1, jb, one, a( 1, 1 ), lda,
186 CALL
ssyrk(
'Upper',
'Transpose', jb, j-1, -one,
188 $ one, a( j, j ), lda )
193 CALL
spotf2(
'Upper', jb, a( j, j ), lda, info )
205 jb = min( nb, n-j+1 )
209 CALL
strsm(
'Right',
'Lower',
'Transpose',
'Non-unit',
210 $ jb, j-1, one, a( 1, 1 ), lda,
213 CALL
ssyrk(
'Lower',
'No Transpose', jb, j-1,
214 $ -one, a( j, 1 ), lda,
215 $ one, a( j, j ), lda )
220 CALL
spotf2(
'Lower', jb, a( j, j ), lda, info )
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