SRC/slalsa.f(3)
okay bestie, this is SRC/slalsa.f from the Library Functions Manual β yes, the whole iconic page is about the slalsa subroutine. Buckle up, it's giving serious linear algebra energy. π
β¨
πΈ NAME πΈ
SRC/slalsa.f
β¨ SYNOPSIS β¨
π§© Functions/Subroutines
subroutine slalsa (icompq, smlsiz, n, nrhs, b, ldb, bx, ldbx, u, ldu,
vt, k, difl, difr, z, poles, givptr, givcol, ldgcol, perm, givnum,
c, s, work, iwork, info)
SLALSA computes the SVD of the coefficient matrix in compact form. Used by sgelsd.
πͺ© Function/Subroutine Documentation πͺ©
subroutine slalsa (integer icompq, integer smlsiz, integer n, integer nrhs,
real, dimension( ldb, * ) b, integer ldb, real, dimension( ldbx, * ) bx,
integer ldbx, real, dimension( ldu, * ) u, integer ldu, real, dimension(
ldu, * ) vt, integer, dimension( * ) k, real, dimension( ldu, * ) difl,
real, dimension( ldu, * ) difr, real, dimension( ldu, * ) z, real,
dimension( ldu, * ) poles, integer, dimension( * ) givptr, integer,
dimension( ldgcol, * ) givcol, integer ldgcol, integer, dimension(
ldgcol, * ) perm, real, dimension( ldu, * ) givnum, real, dimension( * )
c, real, dimension( * ) s, real, dimension( * ) work, integer,
dimension( * ) iwork, integer info)
SLALSA computes the SVD of the coefficient matrix in compact form. Used by sgelsd.
π― Purpose
SLALSA is an intermediate step in solving the least squares problem by computing the SVD of the coefficient matrix in compact form. The singular vectors are computed as products of simple orthogonal matrices. No cap, that's the whole assignment. π¦
If ICOMPQ = 0, SLALSA applies the inverse of the left singular vector matrix of an upper bidiagonal matrix to the right hand side. If ICOMPQ = 1, SLALSA applies the right singular vector matrix to the right hand side. The singular vector matrices were generated in compact form by SLALSA. Periodt. π«
π§Έ Parameters
ICOMPQβINTEGER. Specifies whether the left or the right singular vector matrix is involved.= 0: left singular vector matrix.= 1: right singular vector matrix.SMLSIZβINTEGER. The maximum size of the subproblems at the bottom of the computation tree. That's the cap on subproblem size down there. π±NβINTEGER. The row and column dimensions of the upper bidiagonal matrix.NRHSβINTEGER. The number of columns ofBandBX.NRHSmust be at least1.BβREALarray, dimension( LDB, NRHS ). On input,Bcontains the right hand sides of the least squares problem in rows1throughM. On output,Bcontains the solutionXin rows1throughN.LDBβINTEGER. The leading dimension ofBin the calling subprogram.LDBmust be at leastmax(1,MAX( M, N ) ).BXβREALarray, dimension( LDBX, NRHS ). On exit, the result of applying the left or right singular vector matrix toB.LDBXβINTEGER. The leading dimension ofBX.UβREALarray, dimension( LDU, SMLSIZ ). On entry,Ucontains the left singular vector matrices of all subproblems at the bottom level.LDUβINTEGER,LDU = > N. The leading dimension of arraysU,VT,DIFL,DIFR,POLES,GIVNUM, andZ.VTβREALarray, dimension( LDU, SMLSIZ+1 ). On entry,VT**Tcontains the right singular vector matrices of all subproblems at the bottom level.KβINTEGERarray, dimension( N ).DIFLβREALarray, dimension( LDU, NLVL ), whereNLVL = INT(log_2 (N/(SMLSIZ+1))) + 1.DIFRβREALarray, dimension( LDU, 2 * NLVL ). On entry,DIFL(*, I)andDIFR(*, 2 * I -1)record distances between singular values on theI-th level and singular values on the(I -1)-th level, andDIFR(*, 2 * I)record the normalizing factors of the right singular vectors matrices of subproblems onI-th level.ZβREALarray, dimension( LDU, NLVL ). On entry,Z(1, I)contains the components of the deflation-adjusted updating row vector for subproblems on theI-th level.POLESβREALarray, dimension( LDU, 2 * NLVL ). On entry,POLES(*, 2 * I -1: 2 * I)contains the new and old singular values involved in the secular equations on theI-th level.GIVPTRβINTEGERarray, dimension( N ). On entry,GIVPTR( I )records the number of Givens rotations performed on theI-th problem on the computation tree.GIVCOLβINTEGERarray, dimension( LDGCOL, 2 * NLVL ). On entry, for eachI,GIVCOL(*, 2 * I - 1: 2 * I)records the locations of Givens rotations performed on theI-th level on the computation tree.LDGCOLβINTEGER,LDGCOL = > N. The leading dimension of arraysGIVCOLandPERM.PERMβINTEGERarray, dimension( LDGCOL, NLVL ). On entry,PERM(*, I)records permutations done on theI-th level of the computation tree.GIVNUMβREALarray, dimension( LDU, 2 * NLVL ). On entry,GIVNUM(*, 2 *I -1 : 2 * I)records theC- andS-values of Givens rotations performed on theI-th level on the computation tree.CβREALarray, dimension( N ). On entry, if theI-th subproblem is not square,C( I )contains theC-value of a Givens rotation related to the right null space of theI-th subproblem.SβREALarray, dimension( N ). On entry, if theI-th subproblem is not square,S( I )contains theS-value of a Givens rotation related to the right null space of theI-th subproblem.WORKβREALarray, dimension(N).IWORKβINTEGERarray, dimension(3*N).INFOβINTEGER.= 0: successful exit.< 0: ifINFO = -i, thei-th argument had an illegal value.
π«Ά Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Contributors:
- Ming Gu and Ren-Cang Li, Computer Science Division, University of California at Berkeley, USA
- Osni Marques, LBNL/NERSC, USA
Definition at line 263 of file slalsa.f.
π€ Author
Generated automatically by Doxygen for LAPACK from the source code.
π That's the whole page, bestie: LAPACK Version 3.12.0, source SRC/slalsa.f(3). The footer said what it said, and we respect the footer. Periodt. π«Άβ¨
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms