SLAZQ3(3f)

NAME
SLAZQ3 - for deflation, computes a shift (TAU) and calls dqds

SYNOPSIS

SUBROUTINE SLAZQ3(
    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

REAL
    DESIG, DMIN, DMIN1, DMIN2, DN, DN1, DN2, QMAX, SIGMA, TAU

REAL
    Z( * )

PURPOSE
SLAZQ3 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) REAL array, dimension ( 4*N )
    Z holds the qd array.

PP     (input) INTEGER
    PP=0 for ping, PP=1 for pong.

DMIN   (output) REAL
    Minimum value of d.

SIGMA  (output) REAL
    Sum of shifts used in current segment.

DESIG  (input/output) REAL
    Lower order part of SIGMA

QMAX   (input) REAL
    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 SLASQ5).

TTYPE  (input/output) INTEGER
    Shift type. TTYPE is passed as an argument in order to save its value between calls to SLAZQ3

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 SLAZQ3 This is a thread safe version of SLASQ3, which passes TTYPE, DMIN1, DMIN2, DN, DN1. DN2 and TAU through the argument list in place of declaring them in a SAVE statment.