lasdq#

Functions

void slasdq(
    const char*          uplo,
    const INT            sqre,
    const INT            n,
    const INT            ncvt,
    const INT            nru,
    const INT            ncc,
          f32*  restrict D,
          f32*  restrict E,
          f32*  restrict VT,
    const INT            ldvt,
          f32*  restrict U,
    const INT            ldu,
          f32*  restrict C,
    const INT            ldc,
          f32*  restrict work,
          INT*           info
);
void slasdq(const char *uplo, const INT sqre, const INT n, const INT ncvt, const INT nru, const INT ncc, f32 *restrict D, f32 *restrict E, f32 *restrict VT, const INT ldvt, f32 *restrict U, const INT ldu, f32 *restrict C, const INT ldc, f32 *restrict work, INT *info)#

SLASDQ computes the singular value decomposition (SVD) of a real (upper or lower) bidiagonal matrix with diagonal D and offdiagonal E, accumulating the transformations if desired.

The singular values S are overwritten on D.

Parameters

in
uplo

‘U’ or ‘u’: B is upper bidiagonal. ‘L’ or ‘l’: B is lower bidiagonal.

in
sqre

= 0: input matrix is N-by-N. = 1: input matrix is N-by-(N+1) if uplo=’U’, or (N+1)-by-N if uplo=’L’.

in
n

Number of rows and columns. n >= 0.

in
ncvt

Number of columns of VT. ncvt >= 0.

in
nru

Number of rows of U. nru >= 0.

in
ncc

Number of columns of C. ncc >= 0.

inout
D

Array of dimension n. Diagonal entries on entry, singular values in ascending order on exit.

inout
E

Array. Offdiagonal entries on entry, zeroed on exit.

inout
VT

Array (ldvt, ncvt). Premultiplied by P^T.

in
ldvt

Leading dimension of VT. ldvt >= 1, >= n if ncvt > 0.

inout
U

Array (ldu, n). Postmultiplied by Q.

in
ldu

Leading dimension of U. ldu >= max(1, nru).

inout
C

Array (ldc, ncc). Premultiplied by Q^T.

in
ldc

Leading dimension of C. ldc >= 1, >= n if ncc > 0.

out
work

Array of dimension 4*n.

out
info

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

Functions

void dlasdq(
    const char*          uplo,
    const INT            sqre,
    const INT            n,
    const INT            ncvt,
    const INT            nru,
    const INT            ncc,
          f64*  restrict D,
          f64*  restrict E,
          f64*  restrict VT,
    const INT            ldvt,
          f64*  restrict U,
    const INT            ldu,
          f64*  restrict C,
    const INT            ldc,
          f64*  restrict work,
          INT*           info
);
void dlasdq(const char *uplo, const INT sqre, const INT n, const INT ncvt, const INT nru, const INT ncc, f64 *restrict D, f64 *restrict E, f64 *restrict VT, const INT ldvt, f64 *restrict U, const INT ldu, f64 *restrict C, const INT ldc, f64 *restrict work, INT *info)#

DLASDQ computes the singular value decomposition (SVD) of a real (upper or lower) bidiagonal matrix with diagonal D and offdiagonal E, accumulating the transformations if desired.

The singular values S are overwritten on D.

Parameters

in
uplo

‘U’ or ‘u’: B is upper bidiagonal. ‘L’ or ‘l’: B is lower bidiagonal.

in
sqre

= 0: input matrix is N-by-N. = 1: input matrix is N-by-(N+1) if uplo=’U’, or (N+1)-by-N if uplo=’L’.

in
n

Number of rows and columns. n >= 0.

in
ncvt

Number of columns of VT. ncvt >= 0.

in
nru

Number of rows of U. nru >= 0.

in
ncc

Number of columns of C. ncc >= 0.

inout
D

Array of dimension n. Diagonal entries on entry, singular values in ascending order on exit.

inout
E

Array. Offdiagonal entries on entry, zeroed on exit.

inout
VT

Array (ldvt, ncvt). Premultiplied by P^T.

in
ldvt

Leading dimension of VT. ldvt >= 1, >= n if ncvt > 0.

inout
U

Array (ldu, n). Postmultiplied by Q.

in
ldu

Leading dimension of U. ldu >= max(1, nru).

inout
C

Array (ldc, ncc). Premultiplied by Q^T.

in
ldc

Leading dimension of C. ldc >= 1, >= n if ncc > 0.

out
work

Array of dimension 4*n.

out
info

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