?lasd0

Computes the singular values of a real upper bidiagonal n-by-m matrix B with diagonal d and off-diagonal e. Used by ?bdsdc.

Syntax

call slasd0( n, sqre, d, e, u, ldu, vt, ldvt, smlsiz, iwork, work, info )

call dlasd0( n, sqre, d, e, u, ldu, vt, ldvt, smlsiz, iwork, work, info )

Include Files

  • Fortran: mkl.fi
  • C: mkl.h

Description

Using a divide and conquer approach, the routine ?lasd0 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.

The related subroutine ?lasda computes only the singular values, and optionally, the singular vectors in compact form.

Input Parameters

n

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

sqre

INTEGER. Specifies the column dimension of the bidiagonal matrix.

If sqre = 0: the bidiagonal matrix has column dimension m = n.

If sqre = 1: the bidiagonal matrix has column dimension m = n+1.

d

REAL for slasd0

DOUBLE PRECISION for dlasd0

Array, DIMENSION (n). On entry, d contains the main diagonal of the bidiagonal matrix.

e

REAL for slasd0

DOUBLE PRECISION for dlasd0

Array, DIMENSION (m-1). Contains the subdiagonal entries of the bidiagonal matrix. On exit, e is destroyed.

ldu

INTEGER. On entry, leading dimension of the output array u.

ldvt

INTEGER. On entry, leading dimension of the output array vt.

smlsiz

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

iwork

INTEGER.

Workspace array, dimension must be at least (8n).

work

REAL for slasd0

DOUBLE PRECISION for dlasd0

Workspace array, dimension must be at least (3m2+2m).

Output Parameters

d

On exit d, If info = 0, contains singular values of the bidiagonal matrix.

u

REAL for slasd0

DOUBLE PRECISION for dlasd0

Array, DIMENSION at least (ldq, n). On exit, u contains the left singular vectors.

vt

REAL for slasd0

DOUBLE PRECISION for dlasd0

Array, DIMENSION at least (ldvt, m). On exit, vtT contains the right singular vectors.

info

INTEGER.

If info = 0: successful exit.

If info = -i < 0, the i-th argument had an illegal value.

If info = 1, a singular value did not converge.

For more complete information about compiler optimizations, see our Optimization Notice.