lasd3#

Functions

void slasd3(
    const INT           nl,
    const INT           nr,
    const INT           sqre,
    const INT           k,
          f32* restrict D,
          f32* restrict Q,
    const INT           ldq,
    const f32* restrict DSIGMA,
          f32* restrict U,
    const INT           ldu,
    const f32* restrict U2,
    const INT           ldu2,
          f32* restrict VT,
    const INT           ldvt,
          f32* restrict VT2,
    const INT           ldvt2,
    const INT* restrict IDXC,
    const INT* restrict CTOT,
          f32* restrict Z,
          INT*          info
);
void slasd3(const INT nl, const INT nr, const INT sqre, const INT k, f32 *restrict D, f32 *restrict Q, const INT ldq, const f32 *restrict DSIGMA, f32 *restrict U, const INT ldu, const f32 *restrict U2, const INT ldu2, f32 *restrict VT, const INT ldvt, f32 *restrict VT2, const INT ldvt2, const INT *restrict IDXC, const INT *restrict CTOT, f32 *restrict Z, INT *info)#

SLASD3 finds all the square roots of the roots of the secular equation, as defined by the values in D and Z.

It makes the appropriate calls to SLASD4 and then updates the singular vectors by matrix multiplication.

SLASD3 is called from SLASD1.

Parameters

in
nl

Row dimension of upper block. nl >= 1.

in
nr

Row dimension of lower block. nr >= 1.

in
sqre

= 0: lower block is nr-by-nr square. = 1: lower block is nr-by-(nr+1) rectangular.

in
k

Size of the secular equation. 1 <= k <= n.

out
D

Array of dimension k. Square roots of secular roots.

out
Q

Array (ldq, k). Workspace.

in
ldq

Leading dimension of Q. ldq >= k.

in
DSIGMA

Array of dimension k. Poles of secular equation.

out
U

Array (ldu, n). Left singular vectors.

in
ldu

Leading dimension of U. ldu >= n.

in
U2

Array (ldu2, n). Non-deflated left singular vectors.

in
ldu2

Leading dimension of U2. ldu2 >= n.

out
VT

Array (ldvt, m). Right singular vectors transposed.

in
ldvt

Leading dimension of VT. ldvt >= m.

inout
VT2

Array (ldvt2, n). Non-deflated right singular vectors.

in
ldvt2

Leading dimension of VT2. ldvt2 >= m.

in
IDXC

Integer array of dimension n. Column permutation.

in
CTOT

Integer array of dimension 4. Column type counts.

inout
Z

Array of dimension k. Deflation-adjusted updating row.

out
info

  • = 0: success. < 0: illegal argument. > 0: not converged.

Functions

void dlasd3(
    const INT           nl,
    const INT           nr,
    const INT           sqre,
    const INT           k,
          f64* restrict D,
          f64* restrict Q,
    const INT           ldq,
    const f64* restrict DSIGMA,
          f64* restrict U,
    const INT           ldu,
    const f64* restrict U2,
    const INT           ldu2,
          f64* restrict VT,
    const INT           ldvt,
          f64* restrict VT2,
    const INT           ldvt2,
    const INT* restrict IDXC,
    const INT* restrict CTOT,
          f64* restrict Z,
          INT*          info
);
void dlasd3(const INT nl, const INT nr, const INT sqre, const INT k, f64 *restrict D, f64 *restrict Q, const INT ldq, const f64 *restrict DSIGMA, f64 *restrict U, const INT ldu, const f64 *restrict U2, const INT ldu2, f64 *restrict VT, const INT ldvt, f64 *restrict VT2, const INT ldvt2, const INT *restrict IDXC, const INT *restrict CTOT, f64 *restrict Z, INT *info)#

DLASD3 finds all the square roots of the roots of the secular equation, as defined by the values in D and Z.

It makes the appropriate calls to DLASD4 and then updates the singular vectors by matrix multiplication.

DLASD3 is called from DLASD1.

Parameters

in
nl

Row dimension of upper block. nl >= 1.

in
nr

Row dimension of lower block. nr >= 1.

in
sqre

= 0: lower block is nr-by-nr square. = 1: lower block is nr-by-(nr+1) rectangular.

in
k

Size of the secular equation. 1 <= k <= n.

out
D

Array of dimension k. Square roots of secular roots.

out
Q

Array (ldq, k). Workspace.

in
ldq

Leading dimension of Q. ldq >= k.

in
DSIGMA

Array of dimension k. Poles of secular equation.

out
U

Array (ldu, n). Left singular vectors.

in
ldu

Leading dimension of U. ldu >= n.

in
U2

Array (ldu2, n). Non-deflated left singular vectors.

in
ldu2

Leading dimension of U2. ldu2 >= n.

out
VT

Array (ldvt, m). Right singular vectors transposed.

in
ldvt

Leading dimension of VT. ldvt >= m.

inout
VT2

Array (ldvt2, n). Non-deflated right singular vectors.

in
ldvt2

Leading dimension of VT2. ldvt2 >= m.

in
IDXC

Integer array of dimension n. Column permutation.

in
CTOT

Integer array of dimension 4. Column type counts.

inout
Z

Array of dimension k. Deflation-adjusted updating row.

out
info

  • = 0: success. < 0: illegal argument. > 0: not converged.