-
template<typename T>
void lasq3(integer *i0, integer *n0, T *z, integer *pp, T *dmin, T *sigma, T *desig, T *qmax, integer *nfail, integer *iter, integer *ndiv, logical *ieee, integer *ttype, T *dmin1, T *dmin2, T *dn, T *dn1, T *dn2, T *g, T *tau)# LASQ3 checks for deflation, computes a shift and calls dqds. Used by sbdsqr.
Purpose:
LASQ3 checks for deflation, computes a shift (TAU) and calls dqds. In case of failure it changes shifts, and tries again until output is positive.
- Parameters:
I0 – [in]
I0 is INTEGER
First index.
N0 – [inout]
N0 is INTEGER
Last index.
Z – [inout]
Z is REAL array, dimension (4*N0)
Z holds the qd array.
PP – [inout]
PP is 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 – [out]
DMIN is REAL
Minimum value of d.
SIGMA – [out]
SIGMA is REAL
Sum of shifts used in current segment.
DESIG – [inout]
DESIG is REAL
Lower order part of SIGMA
QMAX – [in]
QMAX is REAL
Maximum value of q.
NFAIL – [inout]
NFAIL is INTEGER
Increment NFAIL by 1 each time the shift was too big.
ITER – [inout]
ITER is INTEGER
Increment ITER by 1 for each iteration.
NDIV – [inout]
NDIV is INTEGER
Increment NDIV by 1 for each division.
IEEE – [in]
IEEE is LOGICAL
Flag for IEEE or non IEEE arithmetic (passed to SLASQ5).
TTYPE – [inout]
TTYPE is INTEGER
Shift type.
DMIN1 – [inout] DMIN1 is REAL
DMIN2 – [inout] DMIN2 is REAL
DN – [inout] DN is REAL
DN1 – [inout] DN1 is REAL
DN2 – [inout] DN2 is REAL
G – [inout] G is REAL
TAU – [inout]
TAU is REAL
These are passed as arguments in order to save their values between calls to LASQ3.