143 SUBROUTINE slasq5( I0, N0, Z, PP, TAU, SIGMA, DMIN, DMIN1, DMIN2,
144 $ dn, dnm1, dnm2, ieee, eps )
154 REAL DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, TAU,
165 parameter ( zero = 0.0e0, half = 0.5 )
169 REAL D, EMIN, TEMP, DTHRESH
176 IF( ( n0-i0-1 ).LE.0 )
179 dthresh = eps*(sigma+tau)
180 IF( tau.LT.dthresh*half ) tau = zero
181 IF( tau.NE.zero )
THEN
193 DO 10 j4 = 4*i0, 4*( n0-3 ), 4
194 z( j4-2 ) = d + z( j4-1 )
195 temp = z( j4+1 ) / z( j4-2 )
197 dmin = min( dmin, d )
198 z( j4 ) = z( j4-1 )*temp
199 emin = min( z( j4 ), emin )
202 DO 20 j4 = 4*i0, 4*( n0-3 ), 4
203 z( j4-3 ) = d + z( j4 )
204 temp = z( j4+2 ) / z( j4-3 )
206 dmin = min( dmin, d )
207 z( j4-1 ) = z( j4 )*temp
208 emin = min( z( j4-1 ), emin )
218 z( j4-2 ) = dnm2 + z( j4p2 )
219 z( j4 ) = z( j4p2+2 )*( z( j4p2 ) / z( j4-2 ) )
220 dnm1 = z( j4p2+2 )*( dnm2 / z( j4-2 ) ) - tau
221 dmin = min( dmin, dnm1 )
226 z( j4-2 ) = dnm1 + z( j4p2 )
227 z( j4 ) = z( j4p2+2 )*( z( j4p2 ) / z( j4-2 ) )
228 dn = z( j4p2+2 )*( dnm1 / z( j4-2 ) ) - tau
229 dmin = min( dmin, dn )
236 DO 30 j4 = 4*i0, 4*( n0-3 ), 4
237 z( j4-2 ) = d + z( j4-1 )
241 z( j4 ) = z( j4+1 )*( z( j4-1 ) / z( j4-2 ) )
242 d = z( j4+1 )*( d / z( j4-2 ) ) - tau
244 dmin = min( dmin, d )
245 emin = min( emin, z( j4 ) )
248 DO 40 j4 = 4*i0, 4*( n0-3 ), 4
249 z( j4-3 ) = d + z( j4 )
253 z( j4-1 ) = z( j4+2 )*( z( j4 ) / z( j4-3 ) )
254 d = z( j4+2 )*( d / z( j4-3 ) ) - tau
256 dmin = min( dmin, d )
257 emin = min( emin, z( j4-1 ) )
267 z( j4-2 ) = dnm2 + z( j4p2 )
268 IF( dnm2.LT.zero )
THEN
271 z( j4 ) = z( j4p2+2 )*( z( j4p2 ) / z( j4-2 ) )
272 dnm1 = z( j4p2+2 )*( dnm2 / z( j4-2 ) ) - tau
274 dmin = min( dmin, dnm1 )
279 z( j4-2 ) = dnm1 + z( j4p2 )
280 IF( dnm1.LT.zero )
THEN
283 z( j4 ) = z( j4p2+2 )*( z( j4p2 ) / z( j4-2 ) )
284 dn = z( j4p2+2 )*( dnm1 / z( j4-2 ) ) - tau
286 dmin = min( dmin, dn )
302 DO 50 j4 = 4*i0, 4*( n0-3 ), 4
303 z( j4-2 ) = d + z( j4-1 )
304 temp = z( j4+1 ) / z( j4-2 )
306 IF( d.LT.dthresh ) d = zero
307 dmin = min( dmin, d )
308 z( j4 ) = z( j4-1 )*temp
309 emin = min( z( j4 ), emin )
312 DO 60 j4 = 4*i0, 4*( n0-3 ), 4
313 z( j4-3 ) = d + z( j4 )
314 temp = z( j4+2 ) / z( j4-3 )
316 IF( d.LT.dthresh ) d = zero
317 dmin = min( dmin, d )
318 z( j4-1 ) = z( j4 )*temp
319 emin = min( z( j4-1 ), emin )
329 z( j4-2 ) = dnm2 + z( j4p2 )
330 z( j4 ) = z( j4p2+2 )*( z( j4p2 ) / z( j4-2 ) )
331 dnm1 = z( j4p2+2 )*( dnm2 / z( j4-2 ) ) - tau
332 dmin = min( dmin, dnm1 )
337 z( j4-2 ) = dnm1 + z( j4p2 )
338 z( j4 ) = z( j4p2+2 )*( z( j4p2 ) / z( j4-2 ) )
339 dn = z( j4p2+2 )*( dnm1 / z( j4-2 ) ) - tau
340 dmin = min( dmin, dn )
347 DO 70 j4 = 4*i0, 4*( n0-3 ), 4
348 z( j4-2 ) = d + z( j4-1 )
352 z( j4 ) = z( j4+1 )*( z( j4-1 ) / z( j4-2 ) )
353 d = z( j4+1 )*( d / z( j4-2 ) ) - tau
355 IF( d.LT.dthresh ) d = zero
356 dmin = min( dmin, d )
357 emin = min( emin, z( j4 ) )
360 DO 80 j4 = 4*i0, 4*( n0-3 ), 4
361 z( j4-3 ) = d + z( j4 )
365 z( j4-1 ) = z( j4+2 )*( z( j4 ) / z( j4-3 ) )
366 d = z( j4+2 )*( d / z( j4-3 ) ) - tau
368 IF( d.LT.dthresh ) d = zero
369 dmin = min( dmin, d )
370 emin = min( emin, z( j4-1 ) )
380 z( j4-2 ) = dnm2 + z( j4p2 )
381 IF( dnm2.LT.zero )
THEN
384 z( j4 ) = z( j4p2+2 )*( z( j4p2 ) / z( j4-2 ) )
385 dnm1 = z( j4p2+2 )*( dnm2 / z( j4-2 ) ) - tau
387 dmin = min( dmin, dnm1 )
392 z( j4-2 ) = dnm1 + z( j4p2 )
393 IF( dnm1.LT.zero )
THEN
396 z( j4 ) = z( j4p2+2 )*( z( j4p2 ) / z( j4-2 ) )
397 dn = z( j4p2+2 )*( dnm1 / z( j4-2 ) ) - tau
399 dmin = min( dmin, dn )
subroutine slasq5(I0, N0, Z, PP, TAU, SIGMA, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, IEEE, EPS)
SLASQ5 computes one dqds transform in ping-pong form. Used by sbdsqr and sstegr.