169 SUBROUTINE slatdf( IJOB, N, Z, LDZ, RHS, RDSUM, RDSCAL, IPIV,
181 INTEGER IPIV( * ), JPIV( * )
182 REAL RHS( * ), Z( LDZ, * )
189 parameter( maxdim = 8 )
191 parameter( zero = 0.0e+0, one = 1.0e+0 )
194 INTEGER I, INFO, J, K
195 REAL BM, BP, PMONE, SMINU, SPLUS, TEMP
198 INTEGER IWORK( MAXDIM )
199 REAL WORK( 4*MAXDIM ), XM( MAXDIM ), XP( MAXDIM )
218 CALL slaswp( 1, rhs, ldz, 1, n-1, ipiv, 1 )
232 splus = splus + sdot( n-j, z( j+1, j ), 1, z( j+1, j ), 1 )
233 sminu = sdot( n-j, z( j+1, j ), 1, rhs( j+1 ), 1 )
234 splus = splus*rhs( j )
235 IF( splus.GT.sminu )
THEN
237 ELSE IF( sminu.GT.splus )
THEN
247 rhs( j ) = rhs( j ) + pmone
254 CALL saxpy( n-j, temp, z( j+1, j ), 1, rhs( j+1 ), 1 )
263 CALL scopy( n-1, rhs, 1, xp, 1 )
264 xp( n ) = rhs( n ) + one
265 rhs( n ) = rhs( n ) - one
269 temp = one / z( i, i )
270 xp( i ) = xp( i )*temp
271 rhs( i ) = rhs( i )*temp
273 xp( i ) = xp( i ) - xp( k )*( z( i, k )*temp )
274 rhs( i ) = rhs( i ) - rhs( k )*( z( i, k )*temp )
276 splus = splus + abs( xp( i ) )
277 sminu = sminu + abs( rhs( i ) )
280 $
CALL scopy( n, xp, 1, rhs, 1 )
284 CALL slaswp( 1, rhs, ldz, 1, n-1, jpiv, -1 )
288 CALL slassq( n, rhs, 1, rdscal, rdsum )
294 CALL sgecon(
'I', n, z, ldz, one, temp, work, iwork, info )
295 CALL scopy( n, work( n+1 ), 1, xm, 1 )
299 CALL slaswp( 1, xm, ldz, 1, n-1, ipiv, -1 )
300 temp = one / sqrt( sdot( n, xm, 1, xm, 1 ) )
301 CALL sscal( n, temp, xm, 1 )
302 CALL scopy( n, xm, 1, xp, 1 )
303 CALL saxpy( n, one, rhs, 1, xp, 1 )
304 CALL saxpy( n, -one, xm, 1, rhs, 1 )
305 CALL sgesc2( n, z, ldz, rhs, ipiv, jpiv, temp )
306 CALL sgesc2( n, z, ldz, xp, ipiv, jpiv, temp )
307 IF( sasum( n, xp, 1 ).GT.sasum( n, rhs, 1 ) )
308 $
CALL scopy( n, xp, 1, rhs, 1 )
312 CALL slassq( n, rhs, 1, rdscal, rdsum )
subroutine saxpy(n, sa, sx, incx, sy, incy)
SAXPY
subroutine scopy(n, sx, incx, sy, incy)
SCOPY
subroutine sgecon(norm, n, a, lda, anorm, rcond, work, iwork, info)
SGECON
subroutine sgesc2(n, a, lda, rhs, ipiv, jpiv, scale)
SGESC2 solves a system of linear equations using the LU factorization with complete pivoting computed...
subroutine slassq(n, x, incx, scale, sumsq)
SLASSQ updates a sum of squares represented in scaled form.
subroutine slaswp(n, a, lda, k1, k2, ipiv, incx)
SLASWP performs a series of row interchanges on a general rectangular matrix.
subroutine slatdf(ijob, n, z, ldz, rhs, rdsum, rdscal, ipiv, jpiv)
SLATDF uses the LU factorization of the n-by-n matrix computed by sgetc2 and computes a contribution ...
subroutine sscal(n, sa, sx, incx)
SSCAL