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.