107 SUBROUTINE zgetrf( M, N, A, LDA, IPIV, INFO )
114 INTEGER INFO, LDA, M, N
118 COMPLEX*16 A( LDA, * )
125 parameter( one = ( 1.0d+0, 0.0d+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(
'ZGETRF', -info )
159 IF( m.EQ.0 .OR. n.EQ.0 )
164 nb = ilaenv( 1,
'ZGETRF',
' ', m, n, -1, -1 )
165 IF( nb.LE.1 .OR. nb.GE.min( m, n ) )
THEN
169 CALL zgetrf2( 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 zgetrf2( 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 zlaswp( j-1, a, lda, j, j+jb-1, ipiv, 1 )
198 CALL zlaswp( n-j-jb+1, a( 1, j+jb ), lda, j, j+jb-1,
203 CALL ztrsm(
'Left',
'Lower',
'No transpose',
'Unit', jb,
204 $ n-j-jb+1, one, a( j, j ), lda, a( j, j+jb ),
210 CALL zgemm(
'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 zgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
ZGEMM
recursive subroutine zgetrf2(m, n, a, lda, ipiv, info)
ZGETRF2
subroutine zgetrf(m, n, a, lda, ipiv, info)
ZGETRF
subroutine zlaswp(n, a, lda, k1, k2, ipiv, incx)
ZLASWP performs a series of row interchanges on a general rectangular matrix.
subroutine ztrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
ZTRSM