SYNOPSIS
- SUBROUTINE DLAZQ3(
- I0, N0, Z, PP, DMIN, SIGMA, DESIG, QMAX, NFAIL, ITER, NDIV, IEEE, TTYPE, DMIN1, DMIN2, DN, DN1, DN2, TAU )
- LOGICAL IEEE
- INTEGER I0, ITER, N0, NDIV, NFAIL, PP, TTYPE
- DOUBLE PRECISION DESIG, DMIN, DMIN1, DMIN2, DN, DN1, DN2, QMAX, SIGMA, TAU
- DOUBLE PRECISION Z( * )
PURPOSE
DLAZQ3 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) INTEGER
- PP=0 for ping, PP=1 for pong.
- 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. TTYPE is passed as an argument in order to save its value between calls to DLAZQ3
- DMIN1 (input/output) REAL
-
DMIN2 (input/output) REAL
DN (input/output) REAL
DN1 (input/output) REAL
DN2 (input/output) REAL
TAU (input/output) REAL
These are passed as arguments in order to save their values
between calls to DLAZQ3
This is a thread safe version of DLASQ3, which passes TTYPE, DMIN1, DMIN2, DN, DN1. DN2 and TAU through the argument list in place of declaring them in a SAVE statment.