110 SUBROUTINE zgetc2( N, A, LDA, IPIV, JPIV, INFO )
120 INTEGER IPIV( * ), JPIV( * )
121 COMPLEX*16 A( LDA, * )
127 DOUBLE PRECISION ZERO, ONE
128 parameter( zero = 0.0d+0, one = 1.0d+0 )
131 INTEGER I, IP, IPV, J, JP, JPV
132 DOUBLE PRECISION BIGNUM, EPS, SMIN, SMLNUM, XMAX
138 DOUBLE PRECISION DLAMCH
142 INTRINSIC abs, dcmplx, max
156 smlnum = dlamch(
'S' ) / eps
157 bignum = one / smlnum
158 CALL dlabad( smlnum, bignum )
165 IF( abs( a( 1, 1 ) ).LT.smlnum )
THEN
167 a( 1, 1 ) = dcmplx( 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 zswap( n, a( ipv, 1 ), lda, a( i, 1 ), lda )
201 $
CALL zswap( n, a( 1, jpv ), 1, a( 1, i ), 1 )
206 IF( abs( a( i, i ) ).LT.smin )
THEN
208 a( i, i ) = dcmplx( smin, zero )
211 a( j, i ) = a( j, i ) / a( i, i )
213 CALL zgeru( n-i, n-i, -dcmplx( 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 ) = dcmplx( smin, zero )
subroutine dlabad(SMALL, LARGE)
DLABAD
subroutine zswap(N, ZX, INCX, ZY, INCY)
ZSWAP
subroutine zgeru(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
ZGERU
subroutine zgetc2(N, A, LDA, IPIV, JPIV, INFO)
ZGETC2 computes the LU factorization with complete pivoting of the general n-by-n matrix.