lasq5#

Functions

void slasq5(
    const INT           i0,
    const INT           n0,
          f32* restrict Z,
    const INT           pp,
          f32*          tau,
          f32           sigma,
          f32*          dmin,
          f32*          dmin1,
          f32*          dmin2,
          f32*          dn,
          f32*          dnm1,
          f32*          dnm2,
    const INT           ieee,
    const f32           eps
);
void slasq5(const INT i0, const INT n0, f32 *restrict Z, const INT pp, f32 *tau, f32 sigma, f32 *dmin, f32 *dmin1, f32 *dmin2, f32 *dn, f32 *dnm1, f32 *dnm2, const INT ieee, const f32 eps)#

SLASQ5 computes one dqds transform in ping-pong form, one version for IEEE machines another for non IEEE machines.

Parameters

in
i0

First index (0-based).

in
n0

Last index (0-based).

inout
Z

Double precision array, dimension (4*N). Z holds the qd array. EMIN is stored in Z(4*N0) to avoid an extra argument.

in
pp

PP=0 for ping, PP=1 for pong.

in
tau

This is the shift.

in
sigma

This is the accumulated shift up to this step.

out
dmin

Minimum value of d.

out
dmin1

Minimum value of d, excluding D(N0).

out
dmin2

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

out
dn

d(N0), the last value of d.

out
dnm1

d(N0-1).

out
dnm2

d(N0-2).

in
ieee

Flag for IEEE or non IEEE arithmetic (1=IEEE, 0=non-IEEE).

in
eps

This is the value of epsilon used.

Functions

void dlasq5(
    const INT           i0,
    const INT           n0,
          f64* restrict Z,
    const INT           pp,
          f64*          tau,
          f64           sigma,
          f64*          dmin,
          f64*          dmin1,
          f64*          dmin2,
          f64*          dn,
          f64*          dnm1,
          f64*          dnm2,
    const INT           ieee,
    const f64           eps
);
void dlasq5(const INT i0, const INT n0, f64 *restrict Z, const INT pp, f64 *tau, f64 sigma, f64 *dmin, f64 *dmin1, f64 *dmin2, f64 *dn, f64 *dnm1, f64 *dnm2, const INT ieee, const f64 eps)#

DLASQ5 computes one dqds transform in ping-pong form, one version for IEEE machines another for non IEEE machines.

Parameters

in
i0

First index (0-based).

in
n0

Last index (0-based).

inout
Z

Double precision array, dimension (4*N). Z holds the qd array. EMIN is stored in Z(4*N0) to avoid an extra argument.

in
pp

PP=0 for ping, PP=1 for pong.

in
tau

This is the shift.

in
sigma

This is the accumulated shift up to this step.

out
dmin

Minimum value of d.

out
dmin1

Minimum value of d, excluding D(N0).

out
dmin2

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

out
dn

d(N0), the last value of d.

out
dnm1

d(N0-1).

out
dnm2

d(N0-2).

in
ieee

Flag for IEEE or non IEEE arithmetic (1=IEEE, 0=non-IEEE).

in
eps

This is the value of epsilon used.