lar1v#

Functions

void slar1v(
    const INT           n,
    const INT           b1,
    const INT           bn,
    const f32           lambda,
    const f32* restrict D,
    const f32* restrict L,
    const f32* restrict LD,
    const f32* restrict LLD,
    const f32           pivmin,
    const f32           gaptol,
          f32* restrict Z,
    const INT           wantnc,
          INT*          negcnt,
          f32*          ztz,
          f32*          mingma,
          INT*          r,
          INT* restrict isuppz,
          f32*          nrminv,
          f32*          resid,
          f32*          rqcorr,
          f32* restrict work
);
void slar1v(const INT n, const INT b1, const INT bn, const f32 lambda, const f32 *restrict D, const f32 *restrict L, const f32 *restrict LD, const f32 *restrict LLD, const f32 pivmin, const f32 gaptol, f32 *restrict Z, const INT wantnc, INT *negcnt, f32 *ztz, f32 *mingma, INT *r, INT *restrict isuppz, f32 *nrminv, f32 *resid, f32 *rqcorr, f32 *restrict work)#

SLAR1V computes the (scaled) r-th column of the inverse of the submatrix in rows B1 through BN of the tridiagonal matrix L D L^T - sigma I.

When sigma is close to an eigenvalue, the computed vector is an accurate eigenvector. Usually, r corresponds to the index where the eigenvector is largest in magnitude. The following steps accomplish this computation: (a) Stationary qd transform, L D L^T - sigma I = L(+) D(+) L(+)^T, (b) Progressive qd transform, L D L^T - sigma I = U(-) D(-) U(-)^T, (c) Computation of the diagonal elements of the inverse of L D L^T - sigma I by combining the above transforms, and choosing r as the index where the diagonal of the inverse is (one of the) largest in magnitude. (d) Computation of the (scaled) r-th column of the inverse using the twisted factorization obtained by combining the top part of the the stationary and the bottom part of the progressive transform.

Parameters

in
n

The order of the matrix L D L^T. n >= 0.

in
b1

First index of the submatrix (0-based).

in
bn

Last index of the submatrix (0-based).

in
lambda

The shift. Should be a good approximation to an eigenvalue of L D L^T.

in
D

Double precision array, dimension (n). The n diagonal elements of the diagonal matrix D.

in
L

Double precision array, dimension (n-1). The (n-1) subdiagonal elements of the unit bidiagonal matrix L.

in
LD

Double precision array, dimension (n-1). The n-1 elements L(i)*D(i).

in
LLD

Double precision array, dimension (n-1). The n-1 elements L(i)*L(i)*D(i).

in
pivmin

The minimum pivot in the Sturm sequence.

in
gaptol

Tolerance that indicates when eigenvector entries are negligible w.r.t. their contribution to the residual.

inout
Z

Double precision array, dimension (n). On input, all entries of Z must be set to 0. On output, Z contains the (scaled) r-th column of the inverse. The scaling is such that Z[r] equals 1.

in
wantnc

If nonzero, NEGCNT will be computed.

out
negcnt

If wantnc is nonzero, the number of pivots < pivmin in the matrix factorization L D L^T; otherwise -1.

out
ztz

The square of the 2-norm of Z.

out
mingma

The reciprocal of the largest (in magnitude) diagonal element of the inverse of L D L^T - sigma I.

inout
r

The twist index (0-based). On input, if r < 0, r is set to the index where (L D L^T - sigma I)^{-1} is largest in magnitude. If 0 <= r < n, r is unchanged. On output, contains the twist index used to compute Z.

out
isuppz

Integer array, dimension (2). The support of the vector Z (0-based indices). Z is nonzero only in elements isuppz[0] through isuppz[1].

out
nrminv

1/sqrt(ztz).

out
resid

The residual of the FP vector: |mingma|/sqrt(ztz).

out
rqcorr

The Rayleigh Quotient correction to lambda.

out
work

Double precision array, dimension (4*n).

Functions

void dlar1v(
    const INT           n,
    const INT           b1,
    const INT           bn,
    const f64           lambda,
    const f64* restrict D,
    const f64* restrict L,
    const f64* restrict LD,
    const f64* restrict LLD,
    const f64           pivmin,
    const f64           gaptol,
          f64* restrict Z,
    const INT           wantnc,
          INT*          negcnt,
          f64*          ztz,
          f64*          mingma,
          INT*          r,
          INT* restrict isuppz,
          f64*          nrminv,
          f64*          resid,
          f64*          rqcorr,
          f64* restrict work
);
void dlar1v(const INT n, const INT b1, const INT bn, const f64 lambda, const f64 *restrict D, const f64 *restrict L, const f64 *restrict LD, const f64 *restrict LLD, const f64 pivmin, const f64 gaptol, f64 *restrict Z, const INT wantnc, INT *negcnt, f64 *ztz, f64 *mingma, INT *r, INT *restrict isuppz, f64 *nrminv, f64 *resid, f64 *rqcorr, f64 *restrict work)#

DLAR1V computes the (scaled) r-th column of the inverse of the submatrix in rows B1 through BN of the tridiagonal matrix L D L^T - sigma I.

When sigma is close to an eigenvalue, the computed vector is an accurate eigenvector. Usually, r corresponds to the index where the eigenvector is largest in magnitude. The following steps accomplish this computation: (a) Stationary qd transform, L D L^T - sigma I = L(+) D(+) L(+)^T, (b) Progressive qd transform, L D L^T - sigma I = U(-) D(-) U(-)^T, (c) Computation of the diagonal elements of the inverse of L D L^T - sigma I by combining the above transforms, and choosing r as the index where the diagonal of the inverse is (one of the) largest in magnitude. (d) Computation of the (scaled) r-th column of the inverse using the twisted factorization obtained by combining the top part of the the stationary and the bottom part of the progressive transform.

Parameters

in
n

The order of the matrix L D L^T. n >= 0.

in
b1

First index of the submatrix (0-based).

in
bn

Last index of the submatrix (0-based).

in
lambda

The shift. Should be a good approximation to an eigenvalue of L D L^T.

in
D

Double precision array, dimension (n). The n diagonal elements of the diagonal matrix D.

in
L

Double precision array, dimension (n-1). The (n-1) subdiagonal elements of the unit bidiagonal matrix L.

in
LD

Double precision array, dimension (n-1). The n-1 elements L(i)*D(i).

in
LLD

Double precision array, dimension (n-1). The n-1 elements L(i)*L(i)*D(i).

in
pivmin

The minimum pivot in the Sturm sequence.

in
gaptol

Tolerance that indicates when eigenvector entries are negligible w.r.t. their contribution to the residual.

inout
Z

Double precision array, dimension (n). On input, all entries of Z must be set to 0. On output, Z contains the (scaled) r-th column of the inverse. The scaling is such that Z[r] equals 1.

in
wantnc

If nonzero, NEGCNT will be computed.

out
negcnt

If wantnc is nonzero, the number of pivots < pivmin in the matrix factorization L D L^T; otherwise -1.

out
ztz

The square of the 2-norm of Z.

out
mingma

The reciprocal of the largest (in magnitude) diagonal element of the inverse of L D L^T - sigma I.

inout
r

The twist index (0-based). On input, if r < 0, r is set to the index where (L D L^T - sigma I)^{-1} is largest in magnitude. If 0 <= r < n, r is unchanged. On output, contains the twist index used to compute Z.

out
isuppz

Integer array, dimension (2). The support of the vector Z (0-based indices). Z is nonzero only in elements isuppz[0] through isuppz[1].

out
nrminv

1/sqrt(ztz).

out
resid

The residual of the FP vector: |mingma|/sqrt(ztz).

out
rqcorr

The Rayleigh Quotient correction to lambda.

out
work

Double precision array, dimension (4*n).

Functions

void clar1v(
    const INT           n,
    const INT           b1,
    const INT           bn,
    const f32           lambda,
    const f32* restrict D,
    const f32* restrict L,
    const f32* restrict LD,
    const f32* restrict LLD,
    const f32           pivmin,
    const f32           gaptol,
          c64* restrict Z,
    const INT           wantnc,
          INT*          negcnt,
          f32*          ztz,
          f32*          mingma,
          INT*          r,
          INT* restrict isuppz,
          f32*          nrminv,
          f32*          resid,
          f32*          rqcorr,
          f32* restrict work
);
void clar1v(const INT n, const INT b1, const INT bn, const f32 lambda, const f32 *restrict D, const f32 *restrict L, const f32 *restrict LD, const f32 *restrict LLD, const f32 pivmin, const f32 gaptol, c64 *restrict Z, const INT wantnc, INT *negcnt, f32 *ztz, f32 *mingma, INT *r, INT *restrict isuppz, f32 *nrminv, f32 *resid, f32 *rqcorr, f32 *restrict work)#

CLAR1V computes the (scaled) r-th column of the inverse of the submatrix in rows B1 through BN of the tridiagonal matrix L D L^T - sigma I.

When sigma is close to an eigenvalue, the computed vector is an accurate eigenvector. Usually, r corresponds to the index where the eigenvector is largest in magnitude. The following steps accomplish this computation: (a) Stationary qd transform, L D L^T - sigma I = L(+) D(+) L(+)^T, (b) Progressive qd transform, L D L^T - sigma I = U(-) D(-) U(-)^T, (c) Computation of the diagonal elements of the inverse of L D L^T - sigma I by combining the above transforms, and choosing r as the index where the diagonal of the inverse is (one of the) largest in magnitude. (d) Computation of the (scaled) r-th column of the inverse using the twisted factorization obtained by combining the top part of the the stationary and the bottom part of the progressive transform.

Parameters

in
n

The order of the matrix L D L^T. n >= 0.

in
b1

First index of the submatrix (0-based).

in
bn

Last index of the submatrix (0-based).

in
lambda

The shift. Should be a good approximation to an eigenvalue of L D L^T.

in
D

Single precision array, dimension (n). The n diagonal elements of the diagonal matrix D.

in
L

Single precision array, dimension (n-1). The (n-1) subdiagonal elements of the unit bidiagonal matrix L.

in
LD

Single precision array, dimension (n-1). The n-1 elements L(i)*D(i).

in
LLD

Single precision array, dimension (n-1). The n-1 elements L(i)*L(i)*D(i).

in
pivmin

The minimum pivot in the Sturm sequence.

in
gaptol

Tolerance that indicates when eigenvector entries are negligible w.r.t. their contribution to the residual.

inout
Z

Complex array, dimension (n). On input, all entries of Z must be set to 0. On output, Z contains the (scaled) r-th column of the inverse. The scaling is such that Z[r] equals 1.

in
wantnc

If nonzero, NEGCNT will be computed.

out
negcnt

If wantnc is nonzero, the number of pivots < pivmin in the matrix factorization L D L^T; otherwise -1.

out
ztz

The square of the 2-norm of Z.

out
mingma

The reciprocal of the largest (in magnitude) diagonal element of the inverse of L D L^T - sigma I.

inout
r

The twist index (0-based). On input, if r < 0, r is set to the index where (L D L^T - sigma I)^{-1} is largest in magnitude. If 0 <= r < n, r is unchanged. On output, contains the twist index used to compute Z.

out
isuppz

Integer array, dimension (2). The support of the vector Z (0-based indices). Z is nonzero only in elements isuppz[0] through isuppz[1].

out
nrminv

1/sqrt(ztz).

out
resid

The residual of the FP vector: |mingma|/sqrt(ztz).

out
rqcorr

The Rayleigh Quotient correction to lambda.

out
work

Single precision array, dimension (4*n).

Functions

void zlar1v(
    const INT            n,
    const INT            b1,
    const INT            bn,
    const f64            lambda,
    const f64*  restrict D,
    const f64*  restrict L,
    const f64*  restrict LD,
    const f64*  restrict LLD,
    const f64            pivmin,
    const f64            gaptol,
          c128* restrict Z,
    const INT            wantnc,
          INT*           negcnt,
          f64*           ztz,
          f64*           mingma,
          INT*           r,
          INT*  restrict isuppz,
          f64*           nrminv,
          f64*           resid,
          f64*           rqcorr,
          f64*  restrict work
);
void zlar1v(const INT n, const INT b1, const INT bn, const f64 lambda, const f64 *restrict D, const f64 *restrict L, const f64 *restrict LD, const f64 *restrict LLD, const f64 pivmin, const f64 gaptol, c128 *restrict Z, const INT wantnc, INT *negcnt, f64 *ztz, f64 *mingma, INT *r, INT *restrict isuppz, f64 *nrminv, f64 *resid, f64 *rqcorr, f64 *restrict work)#

ZLAR1V computes the (scaled) r-th column of the inverse of the submatrix in rows B1 through BN of the tridiagonal matrix L D L^T - sigma I.

When sigma is close to an eigenvalue, the computed vector is an accurate eigenvector. Usually, r corresponds to the index where the eigenvector is largest in magnitude. The following steps accomplish this computation: (a) Stationary qd transform, L D L^T - sigma I = L(+) D(+) L(+)^T, (b) Progressive qd transform, L D L^T - sigma I = U(-) D(-) U(-)^T, (c) Computation of the diagonal elements of the inverse of L D L^T - sigma I by combining the above transforms, and choosing r as the index where the diagonal of the inverse is (one of the) largest in magnitude. (d) Computation of the (scaled) r-th column of the inverse using the twisted factorization obtained by combining the top part of the the stationary and the bottom part of the progressive transform.

Parameters

in
n

The order of the matrix L D L^T. n >= 0.

in
b1

First index of the submatrix (0-based).

in
bn

Last index of the submatrix (0-based).

in
lambda

The shift. Should be a good approximation to an eigenvalue of L D L^T.

in
D

Double precision array, dimension (n). The n diagonal elements of the diagonal matrix D.

in
L

Double precision array, dimension (n-1). The (n-1) subdiagonal elements of the unit bidiagonal matrix L.

in
LD

Double precision array, dimension (n-1). The n-1 elements L(i)*D(i).

in
LLD

Double precision array, dimension (n-1). The n-1 elements L(i)*L(i)*D(i).

in
pivmin

The minimum pivot in the Sturm sequence.

in
gaptol

Tolerance that indicates when eigenvector entries are negligible w.r.t. their contribution to the residual.

inout
Z

Complex array, dimension (n). On input, all entries of Z must be set to 0. On output, Z contains the (scaled) r-th column of the inverse. The scaling is such that Z[r] equals 1.

in
wantnc

If nonzero, NEGCNT will be computed.

out
negcnt

If wantnc is nonzero, the number of pivots < pivmin in the matrix factorization L D L^T; otherwise -1.

out
ztz

The square of the 2-norm of Z.

out
mingma

The reciprocal of the largest (in magnitude) diagonal element of the inverse of L D L^T - sigma I.

inout
r

The twist index (0-based). On input, if r < 0, r is set to the index where (L D L^T - sigma I)^{-1} is largest in magnitude. If 0 <= r < n, r is unchanged. On output, contains the twist index used to compute Z.

out
isuppz

Integer array, dimension (2). The support of the vector Z (0-based indices). Z is nonzero only in elements isuppz[0] through isuppz[1].

out
nrminv

1/sqrt(ztz).

out
resid

The residual of the FP vector: |mingma|/sqrt(ztz).

out
rqcorr

The Rayleigh Quotient correction to lambda.

out
work

Double precision array, dimension (4*n).