105 RECURSIVE SUBROUTINE cpotrf2( UPLO, N, A, LDA, INFO )
123 parameter( one = 1.0e+0, zero = 0.0e+0 )
125 parameter( cone = (1.0e+0, 0.0e+0) )
129 INTEGER n1, n2, iinfo
140 INTRINSIC max, real, sqrt
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(
'CPOTRF2', -info )
171 ajj = real( a( 1, 1 ) )
172 IF( ajj.LE.zero.OR.
sisnan( ajj ) )
THEN
179 a( 1, 1 ) = sqrt( ajj )
189 CALL cpotrf2( uplo, n1, a( 1, 1 ), lda, iinfo )
190 IF ( iinfo.NE.0 )
THEN
201 CALL ctrsm(
'L',
'U',
'C',
'N', n1, n2, cone,
202 $ a( 1, 1 ), lda, a( 1, n1+1 ), lda )
206 CALL cherk( uplo,
'C', n2, n1, -one, a( 1, n1+1 ), lda,
207 $ one, a( n1+1, n1+1 ), lda )
209 CALL cpotrf2( uplo, n2, a( n1+1, n1+1 ), lda, iinfo )
211 IF ( iinfo.NE.0 )
THEN
222 CALL ctrsm(
'R',
'L',
'C',
'N', n2, n1, cone,
223 $ a( 1, 1 ), lda, a( n1+1, 1 ), lda )
227 CALL cherk( uplo,
'N', n2, n1, -one, a( n1+1, 1 ), lda,
228 $ one, a( n1+1, n1+1 ), lda )
230 CALL cpotrf2( uplo, n2, a( n1+1, n1+1 ), lda, iinfo )
232 IF ( iinfo.NE.0 )
THEN
subroutine xerbla(srname, info)
subroutine cherk(uplo, trans, n, k, alpha, a, lda, beta, c, ldc)
CHERK
logical function sisnan(sin)
SISNAN tests input for NaN.
logical function lsame(ca, cb)
LSAME
recursive subroutine cpotrf2(uplo, n, a, lda, info)
CPOTRF2
subroutine ctrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
CTRSM