# ?lazq3

Checks for deflation, computes a shift and calls dqds.

## Syntax

call slazq3( i0, n0, z, pp, dmin, sigma, desig, qmax, nfail, iter, ndiv, ieee, ttype, dmin1, dmin2, dn, dn1, dn2, tau )

call dlazq3( i0, n0, z, pp, dmin, sigma, desig, qmax, nfail, iter, ndiv, ieee, ttype, dmin1, dmin2, dn, dn1, dn2, tau )

## Description

The routine ?lazq3 checks for deflation, computes a shift (tau) and calls dqds. In case of failure, it changes shifts, and tries again until output is positive.

This routine is a thread safe version of ?lasq3 routine, which passes ttype, dmin1, dmin2, dn, dn1, dn2, and tau through the argument list in place of declaring them in a SAVE statement.

## Input Parameters

i0

  INTEGER.

  First index.

n0

  INTEGER.

  Last index.

z

  REAL for slasq3

  DOUBLE PRECISION for dlasq3.

  Array, DIMENSION (`4*n`). z holds the qd array.

pp

  INTEGER.

  `pp=0` for ping, `pp=1` for pong.

desig

  REAL for slazq3

  DOUBLE PRECISION for dlazq3.

  Lower order part of sigma.

qmax

  REAL for slazq3

  DOUBLE PRECISION for dlazq3.

  Maximum value of q.

ieee

  LOGICAL.

  Flag for IEEE or non-IEEE arithmetic (passed to the routine).

ttype

  INTEGER. Shift type.

dmin1

  REAL for slazq3

  DOUBLE PRECISION for dlazq3.

  Minimum value of d, excluding d`(n0)`. Should be 0 on entry at the first iteration and should not be modified further.

dmin2

  REAL for slazq3

  DOUBLE PRECISION for dlazq3.

  Minimum value of d, excluding d`(n0)` and d`(n0-1)`. Should be 0 on entry at the first iteration and should not be modified further.

dn

  REAL for slazq3

  DOUBLE PRECISION for dlazq3.

  Contains d`(n)`. Should be 0 on entry at the first iteration and should not be modified further.

dn1

  REAL for slazq3

  DOUBLE PRECISION for dlazq3.

  Contains d`(n-1)`. Should be 0 on entry at the first iteration and should not be modified further.

dn2

  REAL for slazq3

  DOUBLE PRECISION for dlazq3.

  Contains d`(n-2)`. Should be 0 on entry at the first iteration and should not be modified further.

tau

  REAL for slazq3

  DOUBLE PRECISION for dlazq3.

  Shift value

## Output Parameters

dmin

  REAL for slazq3

  DOUBLE PRECISION for dlazq3.

  Minimum value of d.

sigma

  REAL for slazq3

  DOUBLE PRECISION for dlazq3.

  Sum of shifts used in current segment.

desig

  Lower order part of sigma.

nfail

  INTEGER.

  Number of times shift was too big.

iter

  INTEGER.

  Number of iterations.

ndiv

  INTEGER.

  Number of divisions.

ttype

  Shift type.

dmin1

  Minimum value of d, excluding d`(n0)`.

dmin2

  Minimum value of d, excluding d`(n0)` and d`(n0-1)`.

dn

  d`(n)`.

dn1

  d`(n-1)`.

dn2

  d`(n-2)`.

tau

  Shift value.

Parent topic: Auxiliary Routines