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)#
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:
Deflation (SLASD2)
Secular equation solving (SLASD3)
Singular vector update
Parameters
innlRow dimension of upper block. nl >= 1.
innrRow dimension of lower block. nr >= 1.
insqre= 0: lower block is nr-by-nr square. = 1: lower block is nr-by-(nr+1) rectangular.
inoutDArray of dimension n. Singular values on entry/exit.
inoutalphaDiagonal element of added row.
inoutbetaOff-diagonal element of added row.
inoutUArray (ldu, n). Left singular vectors.
inlduLeading dimension of U. ldu >= n.
inoutVTArray (ldvt, m). Right singular vectors transposed.
inldvtLeading dimension of VT. ldvt >= m.
inoutIDXQInteger array of dimension n. Sorting permutation.
outIWORKInteger array of dimension 4*n.
outworkDouble array of dimension 3*m^2 + 2*m.
outinfo= 0: success. < 0: illegal argument. > 0: not converged.
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
);
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)#
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:
Deflation (DLASD2)
Secular equation solving (DLASD3)
Singular vector update
Parameters
innlRow dimension of upper block. nl >= 1.
innrRow dimension of lower block. nr >= 1.
insqre= 0: lower block is nr-by-nr square. = 1: lower block is nr-by-(nr+1) rectangular.
inoutDArray of dimension n. Singular values on entry/exit.
inoutalphaDiagonal element of added row.
inoutbetaOff-diagonal element of added row.
inoutUArray (ldu, n). Left singular vectors.
inlduLeading dimension of U. ldu >= n.
inoutVTArray (ldvt, m). Right singular vectors transposed.
inldvtLeading dimension of VT. ldvt >= m.
inoutIDXQInteger array of dimension n. Sorting permutation.
outIWORKInteger array of dimension 4*n.
outworkDouble array of dimension 3*m^2 + 2*m.
outinfo= 0: success. < 0: illegal argument. > 0: not converged.
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
);