lalsa(3)
๐ธ lalsa โ SVD of the coefficient matrix, a step inside gelsd ๐ธ
okay so first of all, this is the lalsa(3) page out of the Library Functions Manual, and bestie it is not one function, it is four functions wearing one trench coat ๐
. One per numeric flavor. Same energy, different precision. We got:
clalsaโ the complex onedlalsaโ the double precision oneslalsaโ the real onezlalsaโ the complex*16 one
and every single one of them does the same iconic thing: computes the SVD of the coefficient matrix in compact form, and it's used by sgelsd. periodt.
โจ SYNOPSIS โจ
๐ Functions
clalsaโ CLALSA computes the SVD of the coefficient matrix in compact form. Used bysgelsd.
subroutine clalsa (icompq, smlsiz, n, nrhs, b, ldb, bx, ldbx, u, ldu,
vt, k, difl, difr, z, poles, givptr, givcol, ldgcol, perm, givnum,
c, s, rwork, iwork, info)
dlalsaโ DLALSA computes the SVD of the coefficient matrix in compact form. Used bysgelsd.
subroutine dlalsa (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โ SLALSA computes the SVD of the coefficient matrix in compact form. Used bysgelsd.
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)
zlalsaโ ZLALSA computes the SVD of the coefficient matrix in compact form. Used bysgelsd.
subroutine zlalsa (icompq, smlsiz, n, nrhs, b, ldb, bx, ldbx, u, ldu,
vt, k, difl, difr, z, poles, givptr, givcol, ldgcol, perm, givnum,
c, s, rwork, iwork, info)
๐ฆ DETAILED DESCRIPTION ๐ฆ
okay so this is the "here's the whole vibe before we get into the receipts" section. Everything below in Function Documentation is the full โจ lore โจ for each of the four routines โ arguments, dimensions, all of it.
๐ FUNCTION DOCUMENTATION ๐
๐ clalsa
subroutine clalsa (integer icompq, integer smlsiz, integer n, integer nrhs,
complex, dimension( ldb, * ) b, integer ldb, complex, 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( * ) rwork,
integer, dimension( * ) iwork, integer info)
CLALSA computes the SVD of the coefficient matrix in compact form. Used by sgelsd.
๐ Purpose
okay so here's the whole point of CLALSA, no cap:
CLALSA 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.). yes, compact โ the vectors don't get stored out all big and extra, they get stored as a lil product of simple orthogonal matrices. it's giving storage efficiency ๐
if ICOMPQ = 0, CLALSA applies the inverse of the left singular vector matrix of an upper bidiagonal matrix to the right hand side; and if ICOMPQ = 1, CLALSA applies the right singular vector matrix to the right hand side. the singular vector matrices were generated in compact form by CLALSA. so it's a little circular, and honestly? iconic.
๐ Parameters
ICOMPQโICOMPQ is INTEGER. Specifies whether the left or the right singular vector matrix is involved.= 0: Left singular vector matrix= 1: Right singular vector matrix
SMLSIZโSMLSIZ is INTEGER. The maximum size of the subproblems at the bottom of the computation tree.NโN is INTEGER. The row and column dimensions of the upper bidiagonal matrix.NRHSโNRHS is INTEGER. The number of columns ofBandBX.NRHSmust be at least 1.BโB is COMPLEX array, dimension ( LDB, NRHS ). On input,Bcontains the right hand sides of the least squares problem in rows 1 throughM. On output,Bcontains the solutionXin rows 1 throughN.LDBโLDB is INTEGER. The leading dimension ofBin the calling subprogram.LDBmust be at leastmax(1,MAX( M, N )).BXโBX is COMPLEX array, dimension ( LDBX, NRHS ). On exit, the result of applying the left or right singular vector matrix toB.LDBXโLDBX is INTEGER. The leading dimension ofBX.UโU is REAL array, dimension ( LDU, SMLSIZ ). On entry,Ucontains the left singular vector matrices of all subproblems at the bottom level.LDUโLDU is INTEGER, LDU = > N. The leading dimension of arraysU,VT,DIFL,DIFR,POLES,GIVNUM, andZ.
yes bestie, LDU = > N is written exactly like that in the original. we do not touch it. we respect it. ๐ซถ
VTโVT is REAL array, dimension ( LDU, SMLSIZ+1 ). On entry,VT**Hcontains the right singular vector matrices of all subproblems at the bottom level.KโK is INTEGER array, dimension ( N ).DIFLโDIFL is REAL array, dimension ( LDU, NLVL ), whereNLVL = INT(log_2 (N/(SMLSIZ+1))) + 1.DIFRโDIFR is REAL array, 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โZ is REAL array, 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โPOLES is REAL array, 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โGIVPTR is INTEGER array, dimension ( N ). On entry,GIVPTR( I )records the number of Givens rotations performed on theI-th problem on the computation tree.GIVCOLโGIVCOL is INTEGER array, 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โLDGCOL is INTEGER, LDGCOL = > N. The leading dimension of arraysGIVCOLandPERM.PERMโPERM is INTEGER array, dimension ( LDGCOL, NLVL ). On entry,PERM(*, I)records permutations done on theI-th level of the computation tree.GIVNUMโGIVNUM is REAL array, 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โC is REAL array, 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โS is REAL array, 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.RWORKโRWORK is REAL array, dimension at leastMAX( (SMLSZ+1)*NRHS*3, N*(1+NRHS) + 2*NRHS ).
not me noticing it saysSMLSZand notSMLSIZin that formula ๐ญ that's literally how it's written, keep it, it's canon.
IWORKโIWORK is INTEGER array, dimension (3*N).INFOโINFO is 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
Definition at line 263 of file clalsa.f.
๐ dlalsa
subroutine dlalsa (integer icompq, integer smlsiz, integer n, integer nrhs,
double precision, dimension( ldb, * ) b, integer ldb, double precision,
dimension( ldbx, * ) bx, integer ldbx, double precision, dimension( ldu,
* ) u, integer ldu, double precision, dimension( ldu, * ) vt, integer,
dimension( * ) k, double precision, dimension( ldu, * ) difl, double
precision, dimension( ldu, * ) difr, double precision, dimension( ldu, *
) z, double precision, dimension( ldu, * ) poles, integer, dimension( *
) givptr, integer, dimension( ldgcol, * ) givcol, integer ldgcol,
integer, dimension( ldgcol, * ) perm, double precision, dimension( ldu,
* ) givnum, double precision, dimension( * ) c, double precision,
dimension( * ) s, double precision, dimension( * ) work, integer,
dimension( * ) iwork, integer info)
DLALSA computes the SVD of the coefficient matrix in compact form. Used by sgelsd.
๐ Purpose
DLALSA 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.).
if ICOMPQ = 0, DLALSA applies the inverse of the left singular vector matrix of an upper bidiagonal matrix to the right hand side; and if ICOMPQ = 1, DLALSA applies the right singular vector matrix to the right hand side. the singular vector matrices were generated in compact form by DLALSA. same routine, double the precision, same slay ๐
๐ Parameters
ICOMPQโICOMPQ is INTEGER. Specifies whether the left or the right singular vector matrix is involved.= 0: Left singular vector matrix= 1: Right singular vector matrix
SMLSIZโSMLSIZ is INTEGER. The maximum size of the subproblems at the bottom of the computation tree.NโN is INTEGER. The row and column dimensions of the upper bidiagonal matrix.NRHSโNRHS is INTEGER. The number of columns ofBandBX.NRHSmust be at least 1.Bโฆ
aaand that is exactly where this part of the page stops ๐ซถ dlalsa has more argument tea to spill, and part 2 picks it right back up at B โ do not touch that dial, bestie ๐
BโDOUBLE PRECISION array, dimension ( LDB, NRHS ). On input, bestie,Bis carrying the right hand sides of the least squares problem in rows1throughM. On output itโs giving solution era:Bcontains the solutionXin rows1throughN. ๐LDBโINTEGER. The leading dimension ofBin the calling subprogram.LDBmust be at leastmax(1,MAX( M, N )). no cap, check it.BXโDOUBLE PRECISION array, dimension ( LDBX, NRHS ). On exit, this is the result of applying the left or right singular vector matrix toB. โจLDBXโINTEGER. The leading dimension ofBX.UโDOUBLE PRECISION array, 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โDOUBLE PRECISION array, dimension ( LDU, SMLSIZ+1 ). On entry,VT**Tcontains the right singular vector matrices of all subproblems at the bottom level.KโINTEGER array, dimension ( N ). Thatโs it, thatโs the whole note. ๐DIFLโDOUBLE PRECISION array, dimension ( LDU, NLVL ), whereNLVL = INT(log_2 (N/(SMLSIZ+1))) + 1.DIFRโDOUBLE PRECISION array, 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โDOUBLE PRECISION array, 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โDOUBLE PRECISION array, 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โINTEGER array, dimension ( N ). On entry,GIVPTR( I )records the number of Givens rotations performed on theI-th problem on the computation tree.GIVCOLโINTEGER array, 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โINTEGER array, dimension ( LDGCOL, NLVL ). On entry,PERM(*, I)records permutations done on theI-th level of the computation tree.GIVNUMโDOUBLE PRECISION array, dimension ( LDU, 2 * NLVL ). On entry,GIVNUM(*, 2 *I -1 : 2 * I)records the C- and S-values of Givens rotations performed on theI-th level on the computation tree.CโDOUBLE PRECISION array, dimension ( N ). On entry, if theI-th subproblem is not square,C( I )contains the C-value of a Givens rotation related to the right null space of theI-th subproblem.SโDOUBLE PRECISION array, dimension ( N ). On entry, if theI-th subproblem is not square,S( I )contains the S-value of a Givens rotation related to the right null space of theI-th subproblem.WORKโDOUBLE PRECISION array, dimension (N). No extra lore, just vibes. ๐IWORKโINTEGER array, dimension (3*N). Same energy, just the integer work array.INFOโINTEGER.= 0: successful exit.< 0: if INFO = -i, the i-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 dlalsa.f.
๐ฆ subroutine slalsa ๐ฆ
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. periodt. โจ
๐ฏ 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.).
If ICOMPQ = 0, SLALSA applies the inverse of the left singular vector matrix of an upper bidiagonal matrix to the right hand side; and 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.
๐งฎ 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.NโINTEGER. The row and column dimensions of the upper bidiagonal matrix.NRHSโINTEGER. The number of columns ofBandBX.NRHSmust be at least1.BโREAL array, 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โREAL array, dimension ( LDBX, NRHS ). On exit, the result of applying the left or right singular vector matrix toB.LDBXโINTEGER. The leading dimension ofBX.UโREAL array, 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โREAL array, dimension ( LDU, SMLSIZ+1 ). On entry,VT**Tcontains the right singular vector matrices of all subproblems at the bottom level.KโINTEGER array, dimension ( N ).DIFLโREAL array, dimension ( LDU, NLVL ), whereNLVL = INT(log_2 (N/(SMLSIZ+1))) + 1.DIFRโREAL array, 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โREAL array, 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โREAL array, 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โINTEGER array, dimension ( N ). On entry,GIVPTR( I )records the number of Givens rotations performed on theI-th problem on the computation tree.GIVCOLโINTEGER array, 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โINTEGER array, dimension ( LDGCOL, NLVL ). On entry,PERM(*, I)records permutations done on theI-th level of the computation tree.GIVNUMโ and thatโs literally where this part of the page cuts off, bestie ๐ญ no description yet.GIVNUMโ DOUBLE PRECISION array, dimension( LDU, 2 * NLVL ). On entry,GIVNUM(*, 2 *I -1 : 2 * I)records the C- and S-values of Givens rotations performed on the I-th level on the computation tree. Bestie, it's literally the receipts of every rotation. ๐
Cโ DOUBLE PRECISION array, dimension( N ). On entry, if the I-th subproblem is not square,C( I )contains the C-value of a Givens rotation related to the right null space of the I-th subproblem. ๐Sโ DOUBLE PRECISION array, dimension( N ). On entry, if the I-th subproblem is not square,S( I )contains the S-value of a Givens rotation related to the right null space of the I-th subproblem. The matching twin toC, no cap. ๐ธWORKโ REAL array, dimension(N). Just vibes and scratch space. โจIWORKโ INTEGER array, dimension(3*N). The integer-flavoured scratch pad, three N's worth. ๐งINFOโ INTEGER. The little status report at the end:= 0: successful exit. Slay. โ< 0: ifINFO = -i, the i-th argument had an illegal value. Rude. Someone passed in nonsense. ๐
๐ 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.
๐ subroutine zlalsa
Okay bestie, this one's the complex-16 sibling and it is serving the same energy. Here's the signature, verbatim, do not touch:
subroutine zlalsa (integer icompq, integer smlsiz, integer n, integer nrhs,
complex*16, dimension( ldb, * ) b, integer ldb, complex*16, dimension(
ldbx, * ) bx, integer ldbx, double precision, dimension( ldu, * ) u,
integer ldu, double precision, dimension( ldu, * ) vt, integer,
dimension( * ) k, double precision, dimension( ldu, * ) difl, double
precision, dimension( ldu, * ) difr, double precision, dimension( ldu, *
) z, double precision, dimension( ldu, * ) poles, integer, dimension( *
) givptr, integer, dimension( ldgcol, * ) givcol, integer ldgcol,
integer, dimension( ldgcol, * ) perm, double precision, dimension( ldu,
* ) givnum, double precision, dimension( * ) c, double precision,
dimension( * ) s, double precision, dimension( * ) rwork, integer,
dimension( * ) iwork, integer info)
ZLALSA computes the SVD of the coefficient matrix in compact form. Used by sgelsd. (Yes โ it says sgelsd right there in the original. Not me, not my typo, I'm just the messenger. ๐ซก)
๐ Purpose:
ZLALSA 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.).
IfICOMPQ = 0,ZLALSAapplies the inverse of the left singular vector matrix of an upper bidiagonal matrix to the right hand side; and ifICOMPQ = 1,ZLALSAapplies the right singular vector matrix to the right hand side. The singular vector matrices were generated in compact form byZLALSA.
Not me reading "generated in compact form by ZLALSA" and realizing ZLALSA called itself. Main character energy fr. ๐
๐ฆ 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
So like, pick a side. ๐
SMLSIZโ INTEGER. The maximum size of the subproblems at the bottom of the computation tree. The tiny leaf babies. ๐Nโ INTEGER. The row and column dimensions of the upper bidiagonal matrix.NRHSโ INTEGER. The number of columns ofBandBX.NRHSmust be at least 1. At least 1! Don't come in here with zero. ๐Bโ COMPLEX*16 array, dimension( LDB, NRHS ). On input,Bcontains the right hand sides of the least squares problem in rows 1 through M. On output,Bcontains the solution X in rows 1 through N. It goes in one thing and comes out a whole other thing โ glow-up, honestly. โจLDBโ INTEGER. The leading dimension ofBin the calling subprogram.LDBmust be at leastmax(1,MAX( M, N )). Do not skimp. ๐BXโ COMPLEX*16 array, dimension( LDBX, NRHS ). On exit, the result of applying the left or right singular vector matrix toB.LDBXโ INTEGER. The leading dimension ofBX.Uโ DOUBLE PRECISION array, 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. It's carrying literally all of them on its back. ๐ญVTโ DOUBLE PRECISION array, dimension( LDU, SMLSIZ+1 ). On entry,VT**Hcontains the right singular vector matrices of all subproblems at the bottom level. Yes that's the conjugate-transpose, iykyk. ๐ธKโ INTEGER array, dimension( N ).DIFLโ DOUBLE PRECISION array, dimension( LDU, NLVL ), whereNLVL = INT(log_2 (N/(SMLSIZ+1))) + 1. A little log for your troubles. ๐งฎDIFRโ DOUBLE PRECISION array, dimension( LDU, 2 * NLVL ). On entry,DIFL(*, I)andDIFR(*, 2 * I -1)record distances between singular values on the I-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 on I-th level. It's giving family tree but for singular values. ๐Zโ DOUBLE PRECISION array, dimension( LDU, NLVL ). On entry,Z(1, I)contains the components of the deflation-adjusted updating row vector for subproblems on the I-th level.POLESโ DOUBLE PRECISION array, 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 the I-th level. New and old โ the whole timeline. ๐GIVPTRโ INTEGER array, dimension( N ). On entry,GIVPTR( I )records the number of Givens rotations performed on the I-th problem on the computation tree. A little counter of spinny things. ๐ฅGIVCOLโ INTEGER array, dimension( LDGCOL, 2 * NLVL ). On entry, for each I,GIVCOL(*, 2 * I - 1: 2 * I)records the locations of Givens rotations performed on the I-th level on the computation tree.LDGCOLโ INTEGER,LDGCOL = > N. The leading dimension of arraysGIVCOLandPERM.PERMโ INTEGER array, dimension( LDGCOL, NLVL ). On entry,PERM(*, I)records permutations done on the I-th level of the computation tree. Reordering, but make it fashion. ๐GIVNUMโ DOUBLE PRECISION array, dimension( LDU, 2 * NLVL ). On entry,GIVNUM(*, 2 *I -1 : 2 * I)records the C- and S-values of Givens rotations performed on the I-th level on the computation tree. Same as its single-precision-ish cousin, now with extra double precision. โจCโ DOUBLE PRECISION array, dimension( N ). On entry, if the I-th subproblem is not square,C( I )contains the C-value of a Givens rotation related to the right null space of the I-th subproblem.Sโ DOUBLE PRECISION array, dimension( N ). On entry, if the I-th subproblem is not square,S( I )contains the S-value of a Givens rotation related to the right null space of the I-th subproblem. C and S, always together, never apart. ๐ซถRWORKโ DOUBLE PRECISION array, dimension at leastMAX( (SMLSZ+1)*NRHS*3, N*(1+NRHS) + 2*NRHS ). Note the spelling โ it saysSMLSZin the original, notSMLSIZ. Keep it exactly, bestie, that's a real character-for-character thing. ๐IWORKโ INTEGER array, dimension(3*N).INFOโ INTEGER. The final verdict:= 0: successful exit. We ate. โ< 0: ifINFO = -i, the i-th argument had an illegal value. Someone handed it a cursed argument and it's telling on them. ๐ญ
๐ 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 zlalsa.f.
Tiny side note from the original page: it also says it was generated automatically by Doxygen for LAPACK from the source code. So like, this whole thing was auto-built, not hand-written, which honestly? Respect the pipeline. ๐ค๐
And that's a wrap, bestie!! ๐โจ This page is from LAPACK, Version 3.12.0, and the footer date/identifier is lalsa(3) โ go forth and decompose those singular values responsibly. ๐๐ฆ๐
๐ฆ 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