# ?lasq3

Checks for deflation, computes a shift and calls dqds. Used by ?bdsqr.

## Syntax

call slasq3( i0, n0, z, pp, dmin, sigma, desig, qmax, nfail, iter, ndiv, ieee )

call dlasq3( i0, n0, z, pp, dmin, sigma, desig, qmax, nfail, iter, ndiv, ieee )

## Description

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

## Input Parameters

i0

  INTEGER. First index.

n0

  INTEGER. Last index.

z

  REAL for slasq3

  DOUBLE PRECISION for dlasq3.

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

pp

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

desig

  REAL for slasq3

  DOUBLE PRECISION for dlasq3.

  Lower order part of sigma.

qmax

  REAL for slasq3

  DOUBLE PRECISION for dlasq3.

  Maximum value of q.

ieee

  LOGICAL.

  Flag for ieee or non-ieee arithmetic (passed to ?lasq5).

## Output Parameters

dmin

  REAL for slasq3

  DOUBLE PRECISION for dlasq3.

  Minimum value of d.

sigma

  REAL for slasq3

  DOUBLE PRECISION for dlasq3.

  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.

Parent topic: Auxiliary Routines