lasda Interface

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

public pure subroutine dlasda(icompq, smlsiz, n, sqre, d, e, u, ldu, vt, k, difl, difr, z, poles, givptr, givcol, ldgcol, perm, givnum, c, s, work, iwork, info)

Arguments

Type IntentOptional 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

public pure subroutine slasda(icompq, smlsiz, n, sqre, d, e, u, ldu, vt, k, difl, difr, z, poles, givptr, givcol, ldgcol, perm, givnum, c, s, work, iwork, info)

Arguments

Type IntentOptional 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

public interface stdlib_dlasda()

Arguments

None

public interface stdlib_slasda()

Arguments

None