lasd1#

Functions

void slasd1(
    const INT           nl,
    const INT           nr,
    const INT           sqre,
          f32* restrict D,
          f32*          alpha,
          f32*          beta,
          f32* restrict U,
    const INT           ldu,
          f32* restrict VT,
    const INT           ldvt,
          INT* restrict IDXQ,
          INT* restrict IWORK,
          f32* restrict work,
          INT*          info
);
void slasd1(const INT nl, const INT nr, const INT sqre, f32 *restrict D, f32 *alpha, f32 *beta, f32 *restrict U, const INT ldu, f32 *restrict VT, const INT ldvt, INT *restrict IDXQ, INT *restrict IWORK, f32 *restrict work, INT *info)#

SLASD1 computes the SVD of an upper bidiagonal N-by-M matrix B, where N = NL + NR + 1 and M = N + SQRE.

SLASD1 is called from SLASD0.

The algorithm consists of three stages:

  1. Deflation (SLASD2)

  2. Secular equation solving (SLASD3)

  3. Singular vector update

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.

inout
D

Array of dimension n. Singular values on entry/exit.

inout
alpha

Diagonal element of added row.

inout
beta

Off-diagonal element of added row.

inout
U

Array (ldu, n). Left singular vectors.

in
ldu

Leading dimension of U. ldu >= n.

inout
VT

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

in
ldvt

Leading dimension of VT. ldvt >= m.

inout
IDXQ

Integer array of dimension n. Sorting permutation.

out
IWORK

Integer array of dimension 4*n.

out
work

Double array of dimension 3*m^2 + 2*m.

out
info

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

Functions

void dlasd1(
    const INT           nl,
    const INT           nr,
    const INT           sqre,
          f64* restrict D,
          f64*          alpha,
          f64*          beta,
          f64* restrict U,
    const INT           ldu,
          f64* restrict VT,
    const INT           ldvt,
          INT* restrict IDXQ,
          INT* restrict IWORK,
          f64* restrict work,
          INT*          info
);
void dlasd1(const INT nl, const INT nr, const INT sqre, f64 *restrict D, f64 *alpha, f64 *beta, f64 *restrict U, const INT ldu, f64 *restrict VT, const INT ldvt, INT *restrict IDXQ, INT *restrict IWORK, f64 *restrict work, INT *info)#

DLASD1 computes the SVD of an upper bidiagonal N-by-M matrix B, where N = NL + NR + 1 and M = N + SQRE.

DLASD1 is called from DLASD0.

The algorithm consists of three stages:

  1. Deflation (DLASD2)

  2. Secular equation solving (DLASD3)

  3. Singular vector update

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.

inout
D

Array of dimension n. Singular values on entry/exit.

inout
alpha

Diagonal element of added row.

inout
beta

Off-diagonal element of added row.

inout
U

Array (ldu, n). Left singular vectors.

in
ldu

Leading dimension of U. ldu >= n.

inout
VT

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

in
ldvt

Leading dimension of VT. ldvt >= m.

inout
IDXQ

Integer array of dimension n. Sorting permutation.

out
IWORK

Integer array of dimension 4*n.

out
work

Double array of dimension 3*m^2 + 2*m.

out
info

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