public interface lasd0
Using a divide and conquer approach, 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.
A related subroutine, DLASDA, computes only the singular values,
and optionally, the singular vectors in compact form.
Subroutines
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
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(ldvt,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldvt |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
smlsiz |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
iwork(*) |
|
|
real(kind=dp),
|
intent(out) |
|
|
:: |
work(*) |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
info |
|
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
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(ldvt,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldvt |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
smlsiz |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
iwork(*) |
|
|
real(kind=sp),
|
intent(out) |
|
|
:: |
work(*) |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
info |
|
Module Procedures