DLASQ3(3) checks for deflation, computes a shift (TAU) and calls dqds

SYNOPSIS

SUBROUTINE DLASQ3(
I0, N0, Z, PP, DMIN, SIGMA, DESIG, QMAX, NFAIL, ITER, NDIV, IEEE, TTYPE, DMIN1, DMIN2, DN, DN1, DN2, G, TAU )

    
LOGICAL IEEE

    
INTEGER I0, ITER, N0, NDIV, NFAIL, PP

    
DOUBLE PRECISION DESIG, DMIN, DMIN1, DMIN2, DN, DN1, DN2, G, QMAX, SIGMA, TAU

    
DOUBLE PRECISION Z( * )

PURPOSE

DLASQ3 checks for deflation, computes a shift (TAU) and calls dqds. In case of failure it changes shifts, and tries again until output is positive.

ARGUMENTS

I0 (input) INTEGER
First index.
N0 (input) INTEGER
Last index.
Z (input) DOUBLE PRECISION array, dimension ( 4*N )
Z holds the qd array.
PP (input/output) INTEGER
PP=0 for ping, PP=1 for pong. PP=2 indicates that flipping was applied to the Z array and that the initial tests for deflation should not be performed.
DMIN (output) DOUBLE PRECISION
Minimum value of d.
SIGMA (output) DOUBLE PRECISION
Sum of shifts used in current segment.
DESIG (input/output) DOUBLE PRECISION
Lower order part of SIGMA
QMAX (input) DOUBLE PRECISION
Maximum value of q.
NFAIL (output) INTEGER
Number of times shift was too big.
ITER (output) INTEGER
Number of iterations.
NDIV (output) INTEGER
Number of divisions.
IEEE (input) LOGICAL
Flag for IEEE or non IEEE arithmetic (passed to DLASQ5).
TTYPE (input/output) INTEGER
Shift type. DMIN1, DMIN2, DN, DN1, DN2, G, TAU (input/output) DOUBLE PRECISION These are passed as arguments in order to save their values between calls to DLASQ3.