107 RECURSIVE SUBROUTINE spotrf2( UPLO, N, A, LDA, INFO )
126 parameter( one = 1.0e+0, zero=0.0e+0 )
130 INTEGER n1, n2, iinfo
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