101 SUBROUTINE spotrf ( UPLO, N, A, LDA, INFO )
119 parameter( one = 1.0e+0 )
128 EXTERNAL lsame, ilaenv
141 upper = lsame( uplo,
'U' )
142 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
144 ELSE IF( n.LT.0 )
THEN
146 ELSE IF( lda.LT.max( 1, n ) )
THEN
150 CALL xerbla(
'SPOTRF', -info )
161 nb = ilaenv( 1,
'SPOTRF', uplo, n, -1, -1, -1 )
162 IF( nb.LE.1 .OR. nb.GE.n )
THEN
166 CALL spotf2( uplo, n, a, lda, info )
180 jb = min( nb, n-j+1 )
182 CALL spotf2(
'Upper', jb, a( j, j ), lda, info )
191 CALL strsm(
'Left',
'Upper',
'Transpose',
'Non-unit',
192 $ jb, n-j-jb+1, one, a( j, j ), lda,
193 $ a( j, j+jb ), lda )
194 CALL ssyrk(
'Upper',
'Transpose', n-j-jb+1, jb, -one,
196 $ one, a( j+jb, j+jb ), lda )
209 jb = min( nb, n-j+1 )
211 CALL spotf2(
'Lower', jb, a( j, j ), lda, info )
220 CALL strsm(
'Right',
'Lower',
'Transpose',
'Non-unit',
221 $ n-j-jb+1, jb, one, a( j, j ), lda,
222 $ a( j+jb, j ), lda )
224 CALL ssyrk(
'Lower',
'No Transpose', n-j-jb+1, jb,
225 $ -one, a( j+jb, j ), lda,
226 $ one, a( j+jb, j+jb ), lda )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine spotf2(UPLO, N, A, LDA, INFO)
SPOTF2 computes the Cholesky factorization of a symmetric/Hermitian positive definite matrix (unblock...
subroutine spotrf(UPLO, N, A, LDA, INFO)
SPOTRF
subroutine strsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRSM
subroutine ssyrk(UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C, LDC)
SSYRK
subroutine sgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
SGEMM