107 SUBROUTINE cgetf2( M, N, A, LDA, IPIV, INFO )
114 INTEGER INFO, LDA, M, N
125 parameter( one = ( 1.0e+0, 0.0e+0 ),
126 $ zero = ( 0.0e+0, 0.0e+0 ) )
135 EXTERNAL slamch, icamax
150 ELSE IF( n.LT.0 )
THEN
152 ELSE IF( lda.LT.max( 1, m ) )
THEN
156 CALL xerbla(
'CGETF2', -info )
162 IF( m.EQ.0 .OR. n.EQ.0 )
169 DO 10 j = 1, min( m, n )
173 jp = j - 1 + icamax( m-j+1, a( j, j ), 1 )
175 IF( a( jp, j ).NE.zero )
THEN
180 $
CALL cswap( n, a( j, 1 ), lda, a( jp, 1 ), lda )
185 IF( abs(a( j, j )) .GE. sfmin )
THEN
186 CALL cscal( 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 cgeru( 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 cswap(N, CX, INCX, CY, INCY)
CSWAP
subroutine cscal(N, CA, CX, INCX)
CSCAL
subroutine cgeru(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
CGERU
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...