107 SUBROUTINE zgetf2( 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 ),
126 $ zero = ( 0.0d+0, 0.0d+0 ) )
129 DOUBLE PRECISION SFMIN
133 DOUBLE PRECISION DLAMCH
135 EXTERNAL dlamch, izamax
150 ELSE IF( n.LT.0 )
THEN
152 ELSE IF( lda.LT.max( 1, m ) )
THEN
156 CALL xerbla(
'ZGETF2', -info )
162 IF( m.EQ.0 .OR. n.EQ.0 )
169 DO 10 j = 1, min( m, n )
173 jp = j - 1 + izamax( m-j+1, a( j, j ), 1 )
175 IF( a( jp, j ).NE.zero )
THEN
180 $
CALL zswap( n, a( j, 1 ), lda, a( jp, 1 ), lda )
185 IF( abs(a( j, j )) .GE. sfmin )
THEN
186 CALL zscal( m-j, one / a( j, j ), a( j+1, j ), 1 )
189 a( j+i, j ) = a( j+i, j ) / a( j, j )
194 ELSE IF( info.EQ.0 )
THEN
199 IF( j.LT.min( m, n ) )
THEN
203 CALL zgeru( m-j, n-j, -one, a( j+1, j ), 1, a( j, j+1 ),
204 $ lda, a( j+1, j+1 ), lda )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zswap(N, ZX, INCX, ZY, INCY)
ZSWAP
subroutine zscal(N, ZA, ZX, INCX)
ZSCAL
subroutine zgeru(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
ZGERU
subroutine zgetf2(M, N, A, LDA, IPIV, INFO)
ZGETF2 computes the LU factorization of a general m-by-n matrix using partial pivoting with row inter...