public interface lasda
Using a divide and conquer approach, LASDA: 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 the singular values in the SVD B = U * S * VT.
The orthogonal matrices U and VT are optionally computed in
compact form.
A related subroutine, DLASD0, computes the singular values and
the singular vectors in explicit form.
Subroutines
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
icompq |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
smlsiz |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
n |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
sqre |
|
|
real(kind=dp),
|
intent(inout) |
|
|
:: |
d(*) |
|
|
real(kind=dp),
|
intent(inout) |
|
|
:: |
e(*) |
|
|
real(kind=dp),
|
intent(out) |
|
|
:: |
u(ldu,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldu |
|
|
real(kind=dp),
|
intent(out) |
|
|
:: |
vt(ldu,*) |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
k(*) |
|
|
real(kind=dp),
|
intent(out) |
|
|
:: |
difl(ldu,*) |
|
|
real(kind=dp),
|
intent(out) |
|
|
:: |
difr(ldu,*) |
|
|
real(kind=dp),
|
intent(out) |
|
|
:: |
z(ldu,*) |
|
|
real(kind=dp),
|
intent(out) |
|
|
:: |
poles(ldu,*) |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
givptr(*) |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
givcol(ldgcol,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldgcol |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
perm(ldgcol,*) |
|
|
real(kind=dp),
|
intent(out) |
|
|
:: |
givnum(ldu,*) |
|
|
real(kind=dp),
|
intent(out) |
|
|
:: |
c(*) |
|
|
real(kind=dp),
|
intent(out) |
|
|
:: |
s(*) |
|
|
real(kind=dp),
|
intent(out) |
|
|
:: |
work(*) |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
iwork(*) |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
info |
|
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
icompq |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
smlsiz |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
n |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
sqre |
|
|
real(kind=sp),
|
intent(inout) |
|
|
:: |
d(*) |
|
|
real(kind=sp),
|
intent(inout) |
|
|
:: |
e(*) |
|
|
real(kind=sp),
|
intent(out) |
|
|
:: |
u(ldu,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldu |
|
|
real(kind=sp),
|
intent(out) |
|
|
:: |
vt(ldu,*) |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
k(*) |
|
|
real(kind=sp),
|
intent(out) |
|
|
:: |
difl(ldu,*) |
|
|
real(kind=sp),
|
intent(out) |
|
|
:: |
difr(ldu,*) |
|
|
real(kind=sp),
|
intent(out) |
|
|
:: |
z(ldu,*) |
|
|
real(kind=sp),
|
intent(out) |
|
|
:: |
poles(ldu,*) |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
givptr(*) |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
givcol(ldgcol,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldgcol |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
perm(ldgcol,*) |
|
|
real(kind=sp),
|
intent(out) |
|
|
:: |
givnum(ldu,*) |
|
|
real(kind=sp),
|
intent(out) |
|
|
:: |
c(*) |
|
|
real(kind=sp),
|
intent(out) |
|
|
:: |
s(*) |
|
|
real(kind=sp),
|
intent(out) |
|
|
:: |
work(*) |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
iwork(*) |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
info |
|
Module Procedures