107 RECURSIVE SUBROUTINE spotrf2( UPLO, N, A, LDA, INFO )
126 parameter ( one = 1.0e+0, zero=0.0e+0 )
130 INTEGER N1, N2, IINFO
133 LOGICAL LSAME, SISNAN
134 EXTERNAL lsame, sisnan
147 upper = lsame( uplo,
'U' )
148 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
150 ELSE IF( n.LT.0 )
THEN
152 ELSE IF( lda.LT.max( 1, n ) )
THEN
156 CALL xerbla(
'SPOTRF2', -info )
171 IF( a( 1, 1 ).LE.zero.OR.sisnan( a( 1, 1 ) ) )
THEN
178 a( 1, 1 ) = sqrt( a( 1, 1 ) )
188 CALL spotrf2( uplo, n1, a( 1, 1 ), lda, iinfo )
189 IF ( iinfo.NE.0 )
THEN
200 CALL strsm(
'L',
'U',
'T',
'N', n1, n2, one,
201 $ a( 1, 1 ), lda, a( 1, n1+1 ), lda )
205 CALL ssyrk( uplo,
'T', n2, n1, -one, a( 1, n1+1 ), lda,
206 $ one, a( n1+1, n1+1 ), lda )
207 CALL spotrf2( uplo, n2, a( n1+1, n1+1 ), lda, iinfo )
208 IF ( iinfo.NE.0 )
THEN
219 CALL strsm(
'R',
'L',
'T',
'N', n2, n1, one,
220 $ a( 1, 1 ), lda, a( n1+1, 1 ), lda )
224 CALL ssyrk( uplo,
'N', n2, n1, -one, a( n1+1, 1 ), lda,
225 $ one, a( n1+1, n1+1 ), lda )
226 CALL spotrf2( uplo, n2, a( n1+1, n1+1 ), lda, iinfo )
227 IF ( iinfo.NE.0 )
THEN
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
recursive subroutine spotrf2(UPLO, N, A, LDA, INFO)
SPOTRF2