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 xerbla(SRNAME, INFO)
XERBLA
recursive subroutine spotrf2(UPLO, N, A, LDA, INFO)
SPOTRF2