lasdq(3)
π lasdq β the D&C step that does the leaf using bdsqr
okay bestie, welcome to lasdq(3) from the Library Functions Manual β¨ this is a LAPACK internal-ish page (it says "Library Functions Manual" up top, and the whole thing is the D&C step: leaf using bdsqr β that's the NAME line, you're welcome, we folded it in here so it looks cute π).
β¨ NAME β¨
lasdq β lasdq: D&C step: leaf using bdsqr
likeβ¦ that's it, that's the name. short, iconic, to the point π
πΈ SYNOPSIS πΈ
Functions
subroutine dlasdq(uplo, sqre, n, ncvt, nru, ncc, d, e, vt, ldvt, u, ldu, c, ldc, work, info)β DLASDQ computes the SVD of a real bidiagonal matrix with diagonaldand off-diagonale. Used bysbdsdc.subroutine slasdq(uplo, sqre, n, ncvt, nru, ncc, d, e, vt, ldvt, u, ldu, c, ldc, work, info)β SLASDQ computes the SVD of a real bidiagonal matrix with diagonaldand off-diagonale. Used bysbdsdc.
two flavors, same vibe: d = double precision, s = single precision. pick your fighter π₯
π¦ Detailed Description π¦
no cap, this section is basically just a title card β the actual tea is all in Function Documentation below π
π Function Documentation π
π subroutine dlasdq
here's the full signature, character for character, don't @ me:
subroutine dlasdq (character uplo, integer sqre, integer n, integer ncvt,
integer nru, integer ncc, double precision, dimension( * ) d, double
precision, dimension( * ) e, double precision, dimension( ldvt, * ) vt,
integer ldvt, double precision, dimension( ldu, * ) u, integer ldu,
double precision, dimension( ldc, * ) c, integer ldc, double precision,
dimension( * ) work, integer info)
DLASDQ computes the SVD of a real bidiagonal matrix with diagonaldand off-diagonale. Used bysbdsdc.
π Purpose:
okay so, the actual purpose text, unrolled for you:
DLASDQ computes the singular value decomposition (SVD) of a real (upper or lower) bidiagonal matrix with diagonalDand offdiagonalE, accumulating the transformations if desired. LettingBdenote the input bidiagonal matrix, the algorithm computes orthogonal matricesQandPsuch thatB = Q * S * P**T(P**Tdenotes the transpose ofP). The singular valuesSare overwritten onD.
literally the entire plot right there π₯ and then the side quests:
The input matrixUis changed toU * Qif desired. The input matrixVTis changed toP**T * VTif desired. The input matrixCis changed toQ**T * Cif desired.
and for the full lore drop:
See by J. Demmel and W. Kahan, LAPACK Working Note #3, for a detailed description of the algorithm.
(yes, the reference is missing its title in the original β I'm not making that up, that's just how the page ships π)
π Parameters
UPLOβUPLO is CHARACTER*1. On entry,UPLOspecifies whether the input bidiagonal matrix is upper or lower bidiagonal, and whether it is square are not. (that's the original's wording, I'm not fixing it π)UPLO = 'U' or 'u'βBis upper bidiagonal.UPLO = 'L' or 'l'βBis lower bidiagonal.
SQREβSQRE is INTEGER.= 0: then the input matrix isN-by-N.= 1: then the input matrix isN-by-(N+1) ifUPLU = 'U'and (N+1)-by-NifUPLU = 'L'. (again βUPLUis what the page says, keep it moving π)- The bidiagonal matrix has
N = NL + NR + 1rows andM = N + SQRE >= Ncolumns.
NβN is INTEGER. On entry,Nspecifies the number of rows and columns in the matrix.Nmust be at least0.NCVTβNCVT is INTEGER. On entry,NCVTspecifies the number of columns of the matrixVT.NCVTmust be at least0.NRUβNRU is INTEGER. On entry,NRUspecifies the number of rows of the matrixU.NRUmust be at least0.NCCβNCC is INTEGER. On entry,NCCspecifies the number of columns of the matrixC.NCCmust be at least0.DβD is DOUBLE PRECISION array, dimension (N). On entry,Dcontains the diagonal entries of the bidiagonal matrix whose SVD is desired. On normal exit,Dcontains the singular values in ascending order. π«ΆEβE is DOUBLE PRECISION array.dimension is(N-1)ifSQRE = 0andNifSQRE = 1. On entry, the entries ofEcontain the offdiagonal entries of the bidiagonal matrix whose SVD is desired. On normal exit,Ewill contain0. If the algorithm does not converge,DandEwill contain the diagonal and superdiagonal entries of a bidiagonal matrix orthogonally equivalent to the one given as input. (so no cap: non-convergence still leaves you something coherent, just not the answer you wanted π)VTβVT is DOUBLE PRECISION array, dimension (LDVT, NCVT). On entry, contains a matrix which on exit has been premultiplied byP**T, dimensionN-by-NCVTifSQRE = 0and (N+1)-by-NCVTifSQRE = 1(not referenced ifNCVT=0).LDVTβLDVT is INTEGER. On entry,LDVTspecifies the leading dimension ofVTas declared in the calling (sub) program.LDVTmust be at least1. IfNCVTis nonzeroLDVTmust also be at leastN.UβU is DOUBLE PRECISION array, dimension (LDU, N). On entry, contains a matrix which on exit has been postmultiplied byQ, dimensionNRU-by-NifSQRE = 0andNRU-by-(N+1) ifSQRE = 1(not referenced ifNRU=0).LDUβLDU is INTEGER. On entry,LDUspecifies the leading dimension ofUas declared in the calling (sub) program.LDUmust be at leastmax( 1, NRU ).CβC is DOUBLE PRECISION array, dimension (LDC, NCC). On entry, contains anN-by-NCCmatrix which on exit has been premultiplied byQ**TdimensionN-by-NCCifSQRE = 0and (N+1)-by-NCCifSQRE = 1(not referenced ifNCC=0).LDCβLDC is INTEGER. On entry,LDCspecifies the leading dimension ofCas declared in the calling (sub) program.LDCmust be at least1. IfNCCis nonzero,LDCmust also be at leastN.WORKβWORK is DOUBLE PRECISION array, dimension (4*N). Workspace. Only referenced if one ofNCVT,NRU, orNCCis nonzero, and ifNis at least2.INFOβINFO is INTEGER. On exit, a value of0indicates a successful exit. IfINFO < 0, argument number-INFOis illegal. IfINFO > 0, the algorithm did not converge, andINFOspecifies how many superdiagonals did not converge. π (that's your "oof" signal, bestie β write it down)
π 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 209 of file dlasdq.f.
π subroutine slasdq
same energy, single precision version. signature:
subroutine slasdq (character uplo, integer sqre, integer n, integer ncvt,
integer nru, integer ncc, real, dimension( * ) d, real, dimension( * )
e, real, dimension( ldvt, * ) vt, integer ldvt, real, dimension( ldu, *
) u, integer ldu, real, dimension( ldc, * ) c, integer ldc, real,
dimension( * ) work, integer info)
SLASDQ computes the SVD of a real bidiagonal matrix with diagonaldand off-diagonale. Used bysbdsdc.
π Purpose:
SLASDQ computes the singular value decomposition (SVD) of a real (upper or lower) bidiagonal matrix with diagonalDand offdiagonalE, accumulating the transformations if desired. LettingBdenote the input bidiagonal matrix, the algorithm computes orthogonal matricesQandPsuch thatB = Q * S * P**T(P**Tdenotes the transpose ofP). The singular valuesSare overwritten onD.
The input matrixUis changed toU * Qif desired. The input matrixVTis changed toP**T * VTif desired. The input matrixCis changed toQ**T * Cif desired.
See by J. Demmel and W. Kahan, LAPACK Working Note #3, for a detailed description of the algorithm.
π Parameters
UPLOβUPLO is CHARACTER*1. On entry,UPLOspecifies whether the input bidiagonal matrix is upper or lower bidiagonal, and whether it is square are not.UPLO = 'U' or 'u'βBis upper bidiagonal.UPLO = 'L' or 'l'βBis lower bidiagonal.
SQREβSQRE is INTEGER.= 0: then the input matrix isN-by-N.= 1: then the input matrix isN-by-(N+1) ifUPLU = 'U'and (N+1)-by-NifUPLU = 'L'.- The bidiagonal matrix has
N = NL + NR + 1rows andM = N + SQRE >= Ncolumns.
NβN is INTEGER. On entry,Nspecifies the number of rows and columns in the matrix.Nmust be at least0.NCVTβNCVT is INTEGER. On entry,NCVTspecifies the number of columns of the matrixVT.NCVTmust be at least0.NRUβNRU is INTEGER. On entry,NRUspecifies the number of rows of the matrixU.NRUmust be at least0.NCCβNCC is INTEGER. On entry,NCCspecifies the number of columns of the matrixC.NCCmust be at least0.DβD is REAL array, dimension (N). On entry,Dcontains the diagonal entries of the bidiagonal matrix whose SVD is desired. On normal exit,Dcontains the singular values in ascending order.EβE is REAL array.dimension is(N-1)ifSQRE = 0andNifSQRE = 1. On entry, the entries ofEcontain the offdiagonal entries of the bidiagonal matrix whose SVD is desired. On normal exit,Ewill contain0. If the algorithm does not converge,DandEwill contain the diagonal and superdiagonal entries of a bidiagonal matrix orthogonally equivalent to the one given as input.VTβVT is REAL array, dimension (LDVT, NCVT). On entry, contains a matrix which on exit has been premultiplied byP**T, dimensionN-by-NCVTifSQRE = 0and (N+1)-by-NCVTifSQRE = 1(not referenced ifNCVT=0).LDVTβLDVT is INTEGER. On entry,LDVTspecifies the leading dimension ofVTas declared in the calling (sub) program.LDVTmust be at least1. IfNCVTis nonzeroLDVTmust also be at leastN.Uβ
(( part 2 picks up right there at U, bestie β don't go anywhere π ))
UβUis aREALarray, dimension(LDU, N). On entry, it contains a matrix which on exit has been postmultiplied byQ; dimension isNRU-by-NifSQRE = 0andNRU-by-(N+1)ifSQRE = 1(not referenced ifNRU=0). πLDUβLDUisINTEGER. On entry,LDUspecifies the leading dimension ofUas declared in the calling (sub) program.LDUmust be at leastmax( 1, NRU ). π«ΆCβCis aREALarray, dimension(LDC, NCC). On entry, it contains anN-by-NCCmatrix which on exit has been premultiplied byQ**T; dimensionN-by-NCCifSQRE = 0and(N+1)-by-NCCifSQRE = 1(not referenced ifNCC=0). β¨LDCβLDCisINTEGER. On entry,LDCspecifies the leading dimension ofCas declared in the calling (sub) program.LDCmust be at least1. IfNCCis nonzero,LDCmust also be at leastN. πWORKβWORKis aREALarray, dimension(4*N). Itβs workspace. Only referenced if one ofNCVT,NRU, orNCCis nonzero, and ifNis at least2. π§INFOβINFOisINTEGER. On exit, a value of0indicates a successful exit. IfINFO < 0, argument number-INFOis illegal. IfINFO > 0, the algorithm did not converge, andINFOspecifies how many superdiagonals 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 209 of file slasdq.f. β thatβs where the source lives, bestie. π₯
π€ AUTHOR (THE AUTO-GENERATED BIT)
Generated automatically by Doxygen for LAPACK from the source code. Thatβs the official stamp. π«‘
Bye bestie! π Footer check: this is LAPACK, Version 3.12.0, page lasdq(3) β source/version/date realness, 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