?lasdq
?lasdq
Computes the SVD of a real bidiagonal matrix with diagonal
d
and off-diagonal e
. Used by ?bdsdc
.Syntax
void slasdq
(
char
*uplo
,
lapack_int
*sqre
,
lapack_int
*n
,
lapack_int
*ncvt
,
lapack_int
*nru
,
lapack_int
*ncc
,
float
*d
,
float
*e
,
float
*vt
,
lapack_int
*ldvt
,
float
*u
,
lapack_int
*ldu
,
float
*c
,
lapack_int
*ldc
,
float
*work
,
lapack_int
*info
);
void dlasdq
(
char
*uplo
,
lapack_int
*sqre
,
lapack_int
*n
,
lapack_int
*ncvt
,
lapack_int
*nru
,
lapack_int
*ncc
,
double
*d
,
double
*e
,
double
*vt
,
lapack_int
*ldvt
,
double
*u
,
lapack_int
*ldu
,
double
*c
,
lapack_int
*ldc
,
double
*work
,
lapack_int
*info
);
Include Files
- mkl.h
Description
The routine . The singular values
?lasdq
computes the singular value decomposition (SVD
) of a real (upper or lower) bidiagonal matrix with diagonal d
and off-diagonal e
, accumulating the transformations if desired. If B
is the input bidiagonal matrix, the algorithm computes orthogonal matrices Q
and P
such that B
= Q
*S
*P
T
S
are overwritten on d
. The input matrix if desired.
U
is changed to U
*Q
The input matrix * if desired.
VT
is changed to P
T
VT
The input matrix * if desired.
C
is changed to Q
T
C
Input Parameters
- uplo
- On entry,uplospecifies whether the input bidiagonal matrix is upper or lower bidiagonal.Iforuplo='U''u',Bis upper bidiagonal;Iforuplo='L''l',Bis lower bidiagonal.
- sqre
- = 0: then the input matrix isn-by-n.= 1: then the input matrix isn-by-(n+1) ifand (uplu='U'n+1)-by-nifuplu='L'. The bidiagonal matrix hasrows andn=nl+nr+ 1columns.m=n+sqre≥n
- n
- On entry,nspecifies the number of rows and columns in the matrix.nmust be at least 0.
- ncvt
- On entry,ncvtspecifies the number of columns of the matrixVT.ncvtmust be at least 0.
- nru
- On entry,nruspecifies the number of rows of the matrixU.nrumust be at least 0.
- ncc
- On entry,nccspecifies the number of columns of the matrixC.nccmust be at least 0.
- d
- Array,DIMENSION(n). On entry,dcontains the diagonal entries of the bidiagonal matrix.
- e
- Array,DIMENSIONis (n-1) ifandsqre= 0nif. On entry, the entries ofsqre= 1econtain the off-diagonal entries of the bidiagonal matrix.
- vt
- Array,DIMENSION(ldvt,ncvt). On entry, contains a matrix which on exit has been premultiplied byP, dimensionTn-by-ncvtifand (sqre= 0n+1)-by-ncvtif(not referenced ifsqre= 1ncvt=0).
- ldvt
- On entry,ldvtspecifies the leading dimension ofvtas declared in the calling (sub) program.ldvtmust be at least 1. Ifncvtis nonzero,ldvtmust also be at leastn.
- u
- Array,DIMENSION(ldu,n). On entry, contains a matrix which on exit has been postmultiplied byQ, dimensionnru-by-nifandsqre= 0nru-by-(n+1) if(not referenced ifsqre= 1nru=0).
- ldu
- On entry,lduspecifies the leading dimension ofuas declared in the calling (sub) program.ldumust be at leastmax(1,.nru)
- c
- Array,DIMENSION(ldc,ncc). On entry, contains ann-by-nccmatrix which on exit has been premultiplied byQ', dimensionn-by-nccifand (sqre= 0n+1)-by-nccif(not referenced ifsqre= 1ncc=0).
- ldc
- On entry,ldcspecifies the leading dimension ofCas declared in the calling (sub) program.ldcmust be at least 1. Ifnccis non-zero,ldcmust also be at leastn.
- work
- Array,DIMENSION(4n). This is a workspace array. Only referenced if one ofncvt,nru, ornccis nonzero, and ifnis at least 2.
Output Parameters
- d
- On normal exit,dcontains the singular values in ascending order.
- e
- On normal exit,ewill contain 0. If the algorithm does not converge,dandewill contain the diagonal and superdiagonal entries of a bidiagonal matrix orthogonally equivalent to the one given as input.
- vt
- On exit, the matrix has been premultiplied byP'.
- u
- On exit, the matrix has been postmultiplied byQ.
- c
- On exit, the matrix has been premultiplied byQ'.
- info
- On exit, a value of 0 indicates a successful exit. If, argument number -info< 0infois illegal. If, the algorithm did not converge, andinfo> 0infospecifies how many superdiagonals did not converge.