110 SUBROUTINE cgetc2( N, A, LDA, IPIV, JPIV, INFO )
120 INTEGER IPIV( * ), JPIV( * )
128 parameter( zero = 0.0e+0, one = 1.0e+0 )
131 INTEGER I, IP, IPV, J, JP, JPV
132 REAL BIGNUM, EPS, SMIN, SMLNUM, XMAX
142 INTRINSIC abs, cmplx, max
156 smlnum = slamch(
'S' ) / eps
157 bignum = one / smlnum
158 CALL slabad( smlnum, bignum )
165 IF( abs( a( 1, 1 ) ).LT.smlnum )
THEN
167 a( 1, 1 ) = cmplx( smlnum, zero )
182 IF( abs( a( ip, jp ) ).GE.xmax )
THEN
183 xmax = abs( a( ip, jp ) )
190 $ smin = max( eps*xmax, smlnum )
195 $
CALL cswap( n, a( ipv, 1 ), lda, a( i, 1 ), lda )
201 $
CALL cswap( n, a( 1, jpv ), 1, a( 1, i ), 1 )
206 IF( abs( a( i, i ) ).LT.smin )
THEN
208 a( i, i ) = cmplx( smin, zero )
211 a( j, i ) = a( j, i ) / a( i, i )
213 CALL cgeru( n-i, n-i, -cmplx( one ), a( i+1, i ), 1,
214 $ a( i, i+1 ), lda, a( i+1, i+1 ), lda )
217 IF( abs( a( n, n ) ).LT.smin )
THEN
219 a( n, n ) = cmplx( smin, zero )
subroutine slabad(SMALL, LARGE)
SLABAD
subroutine cswap(N, CX, INCX, CY, INCY)
CSWAP
subroutine cgeru(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
CGERU
subroutine cgetc2(N, A, LDA, IPIV, JPIV, INFO)
CGETC2 computes the LU factorization with complete pivoting of the general n-by-n matrix.