LASD0 - 5.2 English - 68552

AOCL API Guide (68552)

Document ID
68552
Release Date
2025-12-29
Version
5.2 English
template<typename T>
void lasd0(integer *n, integer *sqre, T *d, T *e, T *u, integer *ldu, T *vt, integer *ldvt, integer *smlsiz, integer *iwork, T *work, integer *info)#

LASD0 computes the singular values of a real upper bidiagonal n-by-m

matrix B with diagonal d and off-diagonal e. Used by sbdsdc.

Purpose:

 Using a divide and conquer approach, SLASD0 computes the singular
 value decomposition (SVD) of a real upper bidiagonal N-by-M
 matrix B with diagonal D and offdiagonal E, where M = N + SQRE.
 The algorithm computes orthogonal matrices U and VT such that
 B = U * S * VT. The singular values S are overwritten on D.

 A related subroutine, SLASDA, computes only the singular values,
 and optionally, the singular vectors in compact form.
Parameters:
  • N[in]

    N is INTEGER

    On entry, the row dimension of the upper bidiagonal matrix. This is also the dimension of the main diagonal array D.

  • SQRE[in]

    SQRE is INTEGER

    Specifies the column dimension of the bidiagonal matrix.

    = 0: The bidiagonal matrix has column dimension M = N;

    = 1: The bidiagonal matrix has column dimension M = N+1;

  • D[inout]

    D is REAL array, dimension (N)

    On entry D contains the main diagonal of the bidiagonal matrix.

    On exit D, if INFO = 0, contains its singular values.
  • E[inout]

    E is REAL array, dimension (M-1)

    Contains the subdiagonal entries of the bidiagonal matrix. On exit, E has been destroyed.

  • U[out]

    U is REAL array, dimension (LDU, N)

    On exit, U contains the left singular vectors.

  • LDU[in]

    LDU is INTEGER

    On entry, leading dimension of U.

  • VT[out]

    VT is REAL array, dimension (LDVT, M)

    On exit, VT**T contains the right singular vectors.

  • LDVT[in]

    LDVT is INTEGER

    On entry, leading dimension of VT.

  • SMLSIZ[in]

    SMLSIZ is INTEGER

    On entry, maximum size of the subproblems at the bottom of the computation tree.

  • IWORK[out] IWORK is INTEGER array, dimension (8*N)

  • WORK[out] WORK is REAL array, dimension (3*M**2+2*M)

  • INFO[out]

    INFO is INTEGER

    = 0: successful exit.

    < 0: if INFO = -i, the i-th argument had an illegal value.

    > 0: if INFO = 1, a singular value did not converge