165 SUBROUTINE zlatdf( IJOB, N, Z, LDZ, RHS, RDSUM, RDSCAL, IPIV,
174 DOUBLE PRECISION RDSCAL, RDSUM
177 INTEGER IPIV( * ), JPIV( * )
178 COMPLEX*16 RHS( * ), Z( LDZ, * )
185 parameter( maxdim = 2 )
186 DOUBLE PRECISION ZERO, ONE
187 parameter( zero = 0.0d+0, one = 1.0d+0 )
189 parameter( cone = ( 1.0d+0, 0.0d+0 ) )
192 INTEGER I, INFO, J, K
193 DOUBLE PRECISION RTEMP, SCALE, SMINU, SPLUS
194 COMPLEX*16 BM, BP, PMONE, TEMP
197 DOUBLE PRECISION RWORK( MAXDIM )
198 COMPLEX*16 WORK( 4*MAXDIM ), XM( MAXDIM ), XP( MAXDIM )
206 DOUBLE PRECISION DZASUM
208 EXTERNAL dzasum, zdotc
211 INTRINSIC abs, dble, sqrt
219 CALL zlaswp( 1, rhs, ldz, 1, n-1, ipiv, 1 )
232 splus = splus + dble( zdotc( n-j, z( j+1, j ), 1, z( j+1,
234 sminu = dble( zdotc( n-j, z( j+1, j ), 1, rhs( j+1 ),
236 splus = splus*dble( rhs( j ) )
237 IF( splus.GT.sminu )
THEN
239 ELSE IF( sminu.GT.splus )
THEN
249 rhs( j ) = rhs( j ) + pmone
256 CALL zaxpy( n-j, temp, z( j+1, j ), 1, rhs( j+1 ), 1 )
264 CALL zcopy( n-1, rhs, 1, work, 1 )
265 work( n ) = rhs( n ) + cone
266 rhs( n ) = rhs( n ) - cone
270 temp = cone / z( i, i )
271 work( i ) = work( i )*temp
272 rhs( i ) = rhs( i )*temp
274 work( i ) = work( i ) - work( k )*( z( i, k )*temp )
275 rhs( i ) = rhs( i ) - rhs( k )*( z( i, k )*temp )
277 splus = splus + abs( work( i ) )
278 sminu = sminu + abs( rhs( i ) )
281 $
CALL zcopy( n, work, 1, rhs, 1 )
285 CALL zlaswp( 1, rhs, ldz, 1, n-1, jpiv, -1 )
289 CALL zlassq( n, rhs, 1, rdscal, rdsum )
297 CALL zgecon(
'I', n, z, ldz, one, rtemp, work, rwork, info )
298 CALL zcopy( n, work( n+1 ), 1, xm, 1 )
302 CALL zlaswp( 1, xm, ldz, 1, n-1, ipiv, -1 )
303 temp = cone / sqrt( zdotc( n, xm, 1, xm, 1 ) )
304 CALL zscal( n, temp, xm, 1 )
305 CALL zcopy( n, xm, 1, xp, 1 )
306 CALL zaxpy( n, cone, rhs, 1, xp, 1 )
307 CALL zaxpy( n, -cone, xm, 1, rhs, 1 )
308 CALL zgesc2( n, z, ldz, rhs, ipiv, jpiv, scale )
309 CALL zgesc2( n, z, ldz, xp, ipiv, jpiv, scale )
310 IF( dzasum( n, xp, 1 ).GT.dzasum( n, rhs, 1 ) )
311 $
CALL zcopy( n, xp, 1, rhs, 1 )
315 CALL zlassq( n, rhs, 1, rdscal, rdsum )