lasq3#

Functions

void slasq3(
    const INT           i0,
          INT*          n0,
          f32* restrict Z,
          INT*          pp,
          f32*          dmin,
          f32*          sigma,
          f32*          desig,
          INT*          nfail,
          INT*          iter,
          INT*          ndiv,
    const INT           ieee,
          INT*          ttype,
          f32*          dmin1,
          f32*          dmin2,
          f32*          dn,
          f32*          dn1,
          f32*          dn2,
          f32*          g,
          f32*          tau
);
void slasq3(const INT i0, INT *n0, f32 *restrict Z, INT *pp, f32 *dmin, f32 *sigma, f32 *desig, INT *nfail, INT *iter, INT *ndiv, const INT ieee, INT *ttype, f32 *dmin1, f32 *dmin2, f32 *dn, f32 *dn1, f32 *dn2, f32 *g, f32 *tau)#

SLASQ3 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

in
i0

First index (0-based).

inout
n0

Last index (0-based).

inout
Z

Double precision array, dimension (4*N). Z holds the qd array.

inout
pp

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.

out
dmin

Minimum value of d.

out
sigma

Sum of shifts used in current segment.

inout
desig

Lower order part of SIGMA.

in
qmax

Maximum value of q.

inout
nfail

Increment NFAIL by 1 each time the shift was too big.

inout
iter

Increment ITER by 1 for each iteration.

inout
ndiv

Increment NDIV by 1 for each division.

in
ieee

Flag for IEEE or non IEEE arithmetic (passed to SLASQ5).

inout
ttype

Shift type.

inout
dmin1

Minimum value of d, excluding D(N0).

inout
dmin2

Minimum value of d, excluding D(N0) and D(N0-1).

inout
dn

d(N0).

inout
dn1

d(N0-1).

inout
dn2

d(N0-2).

inout
g

G is passed as an argument in order to save its value between calls to SLASQ3.

inout
tau

This is the shift.

Functions

void dlasq3(
    const INT           i0,
          INT*          n0,
          f64* restrict Z,
          INT*          pp,
          f64*          dmin,
          f64*          sigma,
          f64*          desig,
          INT*          nfail,
          INT*          iter,
          INT*          ndiv,
    const INT           ieee,
          INT*          ttype,
          f64*          dmin1,
          f64*          dmin2,
          f64*          dn,
          f64*          dn1,
          f64*          dn2,
          f64*          g,
          f64*          tau
);
void dlasq3(const INT i0, INT *n0, f64 *restrict Z, INT *pp, f64 *dmin, f64 *sigma, f64 *desig, INT *nfail, INT *iter, INT *ndiv, const INT ieee, INT *ttype, f64 *dmin1, f64 *dmin2, f64 *dn, f64 *dn1, f64 *dn2, f64 *g, f64 *tau)#

DLASQ3 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

in
i0

First index (0-based).

inout
n0

Last index (0-based).

inout
Z

Double precision array, dimension (4*N). Z holds the qd array.

inout
pp

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.

out
dmin

Minimum value of d.

out
sigma

Sum of shifts used in current segment.

inout
desig

Lower order part of SIGMA.

in
qmax

Maximum value of q.

inout
nfail

Increment NFAIL by 1 each time the shift was too big.

inout
iter

Increment ITER by 1 for each iteration.

inout
ndiv

Increment NDIV by 1 for each division.

in
ieee

Flag for IEEE or non IEEE arithmetic (passed to DLASQ5).

inout
ttype

Shift type.

inout
dmin1

Minimum value of d, excluding D(N0).

inout
dmin2

Minimum value of d, excluding D(N0) and D(N0-1).

inout
dn

d(N0).

inout
dn1

d(N0-1).

inout
dn2

d(N0-2).

inout
g

G is passed as an argument in order to save its value between calls to DLASQ3.

inout
tau

This is the shift.