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 xerbla(srname, info)
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
subroutine strsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
STRSM