107 SUBROUTINE cgetrf( M, N, A, LDA, IPIV, INFO )
114 INTEGER INFO, LDA, M, N
125 parameter( one = ( 1.0e+0, 0.0e+0 ) )
128 INTEGER I, IINFO, J, JB, NB
147 ELSE IF( n.LT.0 )
THEN
149 ELSE IF( lda.LT.max( 1, m ) )
THEN
153 CALL xerbla(
'CGETRF', -info )
159 IF( m.EQ.0 .OR. n.EQ.0 )
164 nb = ilaenv( 1,
'CGETRF',
' ', m, n, -1, -1 )
165 IF( nb.LE.1 .OR. nb.GE.min( m, n ) )
THEN
169 CALL cgetrf2( m, n, a, lda, ipiv, info )
174 DO 20 j = 1, min( m, n ), nb
175 jb = min( min( m, n )-j+1, nb )
180 CALL cgetrf2( m-j+1, jb, a( j, j ), lda, ipiv( j ), iinfo )
184 IF( info.EQ.0 .AND. iinfo.GT.0 )
185 $ info = iinfo + j - 1
186 DO 10 i = j, min( m, j+jb-1 )
187 ipiv( i ) = j - 1 + ipiv( i )
192 CALL claswp( j-1, a, lda, j, j+jb-1, ipiv, 1 )
198 CALL claswp( n-j-jb+1, a( 1, j+jb ), lda, j, j+jb-1,
203 CALL ctrsm(
'Left',
'Lower',
'No transpose',
'Unit', jb,
204 $ n-j-jb+1, one, a( j, j ), lda, a( j, j+jb ),
210 CALL cgemm(
'No transpose',
'No transpose', m-j-jb+1,
211 $ n-j-jb+1, jb, -one, a( j+jb, j ), lda,
212 $ a( j, j+jb ), lda, one, a( j+jb, j+jb ),
subroutine xerbla(srname, info)
subroutine cgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
CGEMM
recursive subroutine cgetrf2(m, n, a, lda, ipiv, info)
CGETRF2
subroutine cgetrf(m, n, a, lda, ipiv, info)
CGETRF
subroutine claswp(n, a, lda, k1, k2, ipiv, incx)
CLASWP performs a series of row interchanges on a general rectangular matrix.
subroutine ctrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
CTRSM