lasd3(3)
lasd3 π β¨ β D&C step: secular equation
okay bestie, pull up a chair because this one is from the Library Functions Manual (section 3, we're fancy) and it's literally the divide-and-conquer era of your life. it's lasd3, and it comes in a double precision flavor and a real flavor, because of course it does. π
NAME πΈ
lasd3 β lasd3: D&C step: secular equation. that's it, that's the whole name, no notes. π
SYNOPSIS β¨
Functions π¦
subroutine dlasd3 (nl, nr, sqre, k, d, q, ldq, dsigma, u, ldu, u2, ldu2, vt, ldvt, vt2, ldvt2, idxc, ctot, z, info)β DLASD3 finds all square roots of the roots of the secular equation, as defined by the values in D and Z, and then updates the singular vectors by matrix multiplication. Used bysbdsdc.subroutine slasd3 (nl, nr, sqre, k, d, q, ldq, dsigma, u, ldu, u2, ldu2, vt, ldvt, vt2, ldvt2, idxc, ctot, z, info)β SLASD3 finds all square roots of the roots of the secular equation, as defined by the values in D and Z, and then updates the singular vectors by matrix multiplication. Used bysbdsdc.
real ones know: same name, same dance, one isDOUBLE PRECISIONand one isREAL. pick your fighter. π
Detailed Description π«Ά
(the page literally drops the heading and moves straight on β no extra prose here, bestie. we go directly to the function docs. β¨)
Function Documentation π
subroutine dlasd3 π
subroutine dlasd3 (integer nl, integer nr, integer sqre, integer k, double
precision, dimension( * ) d, double precision, dimension( ldq, * ) q,
integer ldq, double precision, dimension( * ) dsigma, double precision,
dimension( ldu, * ) u, integer ldu, double precision, dimension( ldu2, *
) u2, integer ldu2, double precision, dimension( ldvt, * ) vt, integer
ldvt, double precision, dimension( ldvt2, * ) vt2, integer ldvt2,
integer, dimension( * ) idxc, integer, dimension( * ) ctot, double
precision, dimension( * ) z, integer info)
DLASD3 finds all square roots of the roots of the secular equation, as defined by the values in D and Z, and then updates the singular vectors by matrix multiplication. Used by sbdsdc.
Purpose π₯
DLASD3 finds all the square roots of the roots of the secular equation, as defined by the values inDandZ. It makes the appropriate calls to DLASD4 and then updates the singular vectors by matrix multiplication. DLASD3 is called from DLASD1.
(i know, it's giving very much "called from" and "makes the appropriate calls to" β the girlies love a call graph π)
Parameters π
NLβNLisINTEGER. The row dimension of the upper block.NL >= 1.NRβNRisINTEGER. The row dimension of the lower block.NR >= 1.SQREβSQREisINTEGER.= 0: the lower block is anNR-by-NRsquare matrix.= 1: the lower block is anNR-by-(NR+1)rectangular matrix.
The bidiagonal matrix has N = NL + NR + 1 rows and M = N + SQRE >= N columns.
KβKisINTEGER. The size of the secular equation,1 =< K = < N. (yes that's the exact inequality as printed, don't come for me π)DβDisDOUBLE PRECISIONarray, dimension(K). On exit the square roots of the roots of the secular equation, in ascending order. β¨QβQisDOUBLE PRECISIONarray, dimension(LDQ,K).LDQβLDQisINTEGER. The leading dimension of the arrayQ.LDQ >= K.DSIGMAβDSIGMAisDOUBLE PRECISIONarray, dimension(K). The firstKelements of this array contain the old roots of the deflated updating problem. These are the poles of the secular equation. (poles! iconic. no cap.)UβUisDOUBLE PRECISIONarray, dimension(LDU, N). The lastN - Kcolumns of this matrix contain the deflated left singular vectors.LDUβLDUisINTEGER. The leading dimension of the arrayU.LDU >= N.U2βU2isDOUBLE PRECISIONarray, dimension(LDU2, N). The firstKcolumns of this matrix contain the non-deflated left singular vectors for the split problem.LDU2βLDU2isINTEGER. The leading dimension of the arrayU2.LDU2 >= N.VTβVTisDOUBLE PRECISIONarray, dimension(LDVT, M). The lastM - Kcolumns ofVT**Tcontain the deflated right singular vectors.LDVTβLDVTisINTEGER. The leading dimension of the arrayVT.LDVT >= N.VT2βVT2isDOUBLE PRECISIONarray, dimension(LDVT2, N). The firstKcolumns ofVT2**Tcontain the non-deflated right singular vectors for the split problem.LDVT2βLDVT2isINTEGER. The leading dimension of the arrayVT2.LDVT2 >= N.IDXCβIDXCisINTEGERarray, dimension( N ). The permutation used to arrange the columns ofU(and rows ofVT) into three groups:- the first group contains non-zero entries only at and above (or before)
NL +1; - the second contains non-zero entries only at and below (or after)
NL+2; - and the third is dense.
- the first group contains non-zero entries only at and above (or before)
The first column of U and the row of VT are treated separately, however.
The rows of the singular vectors found by DLASD4 must be likewise permuted before the matrix multiplies can take place.
CTOTβCTOTisINTEGERarray, dimension( 4 ). A count of the total number of the various types of columns inU(or rows inVT), as described inIDXC. The fourth column type is any column which has been deflated.ZβZisDOUBLE PRECISIONarray, dimension(K). The firstKelements of this array contain the components of the deflation-adjusted updating row vector. π«ΆINFOβINFOisINTEGER.= 0: successful exit.< 0: ifINFO = -i, thei-th argument had an illegal value.> 0: ifINFO = 1, a singular value did not converge. π
Author π
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Contributors: π
Ming Gu and Huan Ren, Computer Science Division, University of California at Berkeley, USA
Definition π
Definition at line 214 of file dlasd3.f.
subroutine slasd3 π
subroutine slasd3 (integer nl, integer nr, integer sqre, integer k, real,
dimension( * ) d, real, dimension( ldq, * ) q, integer ldq, real,
dimension( * ) dsigma, real, dimension( ldu, * ) u, integer ldu, real,
dimension( ldu2, * ) u2, integer ldu2, real, dimension( ldvt, * ) vt,
integer ldvt, real, dimension( ldvt2, * ) vt2, integer ldvt2, integer,
dimension( * ) idxc, integer, dimension( * ) ctot, real, dimension( * )
z, integer info)
SLASD3 finds all square roots of the roots of the secular equation, as defined by the values in D and Z, and then updates the singular vectors by matrix multiplication. Used by sbdsdc.
Purpose π₯
SLASD3 finds all the square roots of the roots of the secular equation, as defined by the values inDandZ. It makes the appropriate calls to SLASD4 and then updates the singular vectors by matrix multiplication. SLASD3 is called from SLASD1.
(spot the pattern? D-prefix calls DLASD4 and DLASD1, S-prefix calls SLASD4 and SLASD1. consistency ate. π
)
Parameters π
NLβNLisINTEGER. The row dimension of the upper block.NL >= 1.NRβNRisINTEGER. The row dimension of the lower block.NR >= 1.SQREβSQREisINTEGER.= 0: the lower block is anNR-by-NRsquare matrix.= 1: the lower block is anNR-by-(NR+1)rectangular matrix.
The bidiagonal matrix has N = NL + NR + 1 rows and M = N + SQRE >= N columns.
KβKisINTEGER. The size of the secular equation,1 =< K = < N.DβDisREALarray, dimension(K). On exit the square roots of the roots of the secular equation, in ascending order. βQβQisREALarray, dimension(LDQ,K).LDQβLDQisINTEGER. The leading dimension of the arrayQ.LDQ >= K.DSIGMAβDSIGMAisREALarray, dimension(K). The firstKelements of this array contain the old roots of the deflated updating problem. These are the poles of the secular equation.UβUisREALarray, dimension(LDU, N). The lastN - Kcolumns of this matrix contain the deflated left singular vectors.LDUβLDUisINTEGER. The leading dimension of the arrayU.LDU >= N.U2βU2isREALarray, dimension(LDU2, N). The firstKcolumns of this matrix contain the non-deflated left singular vectors for the split problem.LDU2βLDU2isINTEGER. The leading dimension of the arrayU2.LDU2 >= N.VTβVTisREALarray, dimension(LDVT, M). The lastM - Kcolumns ofVT**Tcontain the deflated right singular vectors.LDVTβLDVTisINTEGER. The leading dimension of the arrayVT.LDVT >= N.VT2βVT2isREALarray, dimension(LDVT2, N). The firstKcolumns ofVT2**Tcontain the non-deflated right singular vectors for the split problem.LDVT2βLDVT2isINTEGER. The leading dimension of the arrayVT2.LDVT2 >= N.IDXCβIDXCisINTEGERarray, dimension(N). The permutation used to arrange the columns ofU(and rows ofVT) into three groups:- the first group contains non-zero entries only at and above (or before)
NL +1; - the second contains non-zero entries only at and below (or after)
NL+2; - and the third is dense.
- the first group contains non-zero entries only at and above (or before)
The first column of U and the row of VT are treated separately, however.
The rows of the singular vectors found by SLASD4 must be likewise permuted before the matrix multiplies can take place.
CTOT
(β¦and that's where part 1 runs out, bestie β CTOT's description rolls in with part 2. π«Άβ¨)
CTOTβ okay so this one is anINTEGER array, dimension (4). Itβs a count of the total number of the various types of columns inU(or rows inVT), as described inIDXC. The fourth column type is any column which has been deflated. deflated columns have main character energy too πZβREAL array, dimension (K). The firstKelements of this array contain the components of the deflation-adjusted updating row vector. deflation-adjusted updating row vector is such a mouthful but we respect it β¨INFOβINTEGER, bestie, and hereβs the vibe check:= 0: successful exit. slay, we love a clean exit β< 0: ifINFO = -i, the i-th argument had an illegal value. oop, illegal value alert π¨> 0: ifINFO = 1, a singular value did not converge. not the convergence we wanted π
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π«Ά Contributors π«Ά
Ming Gu and Huan Ren, Computer Science Division, University of California at Berkeley, USA
Definition at line 214 of file slasd3.f. the receipts are right there, periodt π
π Author π
Generated automatically by Doxygen for LAPACK from the source code. yes bestie, the docs generated themselves-ish π
And thatβs the page, babes! Signing off from LAPACK Version 3.12.0, page lasd3(3) β no date listed in this footer, but the source/version is right there. Mwah πβ¨
π¦ 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