109 SUBROUTINE cgetrf( M, N, A, LDA, IPIV, INFO )
117 INTEGER INFO, LDA, M, N
128 parameter( one = ( 1.0e+0, 0.0e+0 ) )
131 INTEGER I, IINFO, J, JB, NB
150 ELSE IF( n.LT.0 )
THEN
152 ELSE IF( lda.LT.max( 1, m ) )
THEN
156 CALL xerbla(
'CGETRF', -info )
162 IF( m.EQ.0 .OR. n.EQ.0 )
167 nb = ilaenv( 1,
'CGETRF',
' ', m, n, -1, -1 )
168 IF( nb.LE.1 .OR. nb.GE.min( m, n ) )
THEN
172 CALL cgetf2( m, n, a, lda, ipiv, info )
177 DO 20 j = 1, min( m, n ), nb
178 jb = min( min( m, n )-j+1, nb )
183 CALL cgetf2( m-j+1, jb, a( j, j ), lda, ipiv( j ), iinfo )
187 IF( info.EQ.0 .AND. iinfo.GT.0 )
188 $ info = iinfo + j - 1
189 DO 10 i = j, min( m, j+jb-1 )
190 ipiv( i ) = j - 1 + ipiv( i )
195 CALL claswp( j-1, a, lda, j, j+jb-1, ipiv, 1 )
201 CALL claswp( n-j-jb+1, a( 1, j+jb ), lda, j, j+jb-1,
206 CALL ctrsm(
'Left',
'Lower',
'No transpose',
'Unit', jb,
207 $ n-j-jb+1, one, a( j, j ), lda, a( j, j+jb ),
213 CALL cgemm(
'No transpose',
'No transpose', m-j-jb+1,
214 $ n-j-jb+1, jb, -one, a( j+jb, j ), lda,
215 $ a( j, j+jb ), lda, one, a( j+jb, j+jb ),
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
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine cgetrf(M, N, A, LDA, IPIV, INFO)
CGETRF
subroutine cgetf2(M, N, A, LDA, IPIV, INFO)
CGETF2 computes the LU factorization of a general m-by-n matrix using partial pivoting with row inter...
subroutine cgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CGEMM