public interface lasdq
LASDQ 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. Letting B denote
the input bidiagonal matrix, the algorithm computes orthogonal
matrices Q and P such that B = Q * S * PT (PT denotes the transpose
of P). The singular values S are overwritten on D.
The input matrix U is changed to U * Q if desired.
The input matrix VT is changed to PT * VT if desired.
The input matrix C is changed to QT * C if desired.
See "Computing Small Singular Values of Bidiagonal Matrices With
Guaranteed High Relative Accuracy," by J. Demmel and W. Kahan,
LAPACK Working Note #3, for a detailed description of the algorithm.
Subroutines
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
character(len=1),
|
intent(in) |
|
|
:: |
uplo |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
sqre |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
n |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ncvt |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
nru |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ncc |
|
|
real(kind=dp),
|
intent(inout) |
|
|
:: |
d(*) |
|
|
real(kind=dp),
|
intent(inout) |
|
|
:: |
e(*) |
|
|
real(kind=dp),
|
intent(inout) |
|
|
:: |
vt(ldvt,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldvt |
|
|
real(kind=dp),
|
intent(inout) |
|
|
:: |
u(ldu,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldu |
|
|
real(kind=dp),
|
intent(inout) |
|
|
:: |
c(ldc,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldc |
|
|
real(kind=dp),
|
intent(out) |
|
|
:: |
work(*) |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
info |
|
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
character(len=1),
|
intent(in) |
|
|
:: |
uplo |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
sqre |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
n |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ncvt |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
nru |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ncc |
|
|
real(kind=sp),
|
intent(inout) |
|
|
:: |
d(*) |
|
|
real(kind=sp),
|
intent(inout) |
|
|
:: |
e(*) |
|
|
real(kind=sp),
|
intent(inout) |
|
|
:: |
vt(ldvt,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldvt |
|
|
real(kind=sp),
|
intent(inout) |
|
|
:: |
u(ldu,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldu |
|
|
real(kind=sp),
|
intent(inout) |
|
|
:: |
c(ldc,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldc |
|
|
real(kind=sp),
|
intent(out) |
|
|
:: |
work(*) |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
info |
|
Module Procedures