SORMBR(3)
π SORMBR(3) β Library Functions Manual π
okay bestie, welcome to the Library Functions Manual page for SORMBR(3). This is the LAPACK subroutine that applies Q, Q**T, P, or P**T to a real matrix C from the left or right β and we are keeping every single flag, dimension, and tiny detail. no skipping, we're eating the whole thing π
β¨ NAME β¨
the NAME section is just this path (the page wraps it after lapack-; here it is stitched back together so it's copy-pasteable):
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/sormbr.f
πΈ SYNOPSIS πΈ
Functions/Subroutines
subroutine SORMBR (vect, side, trans, m, n, k, a, lda, tau, c, ldc,
work, lwork, info)
SORMBR
π¦ Function/Subroutine Documentation π¦
the full signature, exactly as it appears:
subroutine SORMBR (character vect, character side, character trans, integer
m, integer n, integer k, real, dimension( lda, * ) a, integer lda, real,
dimension( * ) tau, real, dimension( ldc, * ) c, integer ldc, real,
dimension( * ) work, integer lwork, integer info)
SORMBR
β¨ Purpose β¨
okay so here's the whole deal, bestie: if VECT = 'Q', SORMBR overwrites the general real M-by-N matrix C with:
SIDE = 'L' SIDE = 'R'
TRANS = 'N': Q * C C * Q
TRANS = 'T': Q**T * C C * Q**T
if VECT = 'P', SORMBR overwrites the general real M-by-N matrix C with:
SIDE = 'L' SIDE = 'R'
TRANS = 'N': P * C C * P
TRANS = 'T': P**T * C C * P**T
here Q and P**T are the orthogonal matrices determined by SGEBRD when reducing a real matrix A to bidiagonal form: A = Q * B * P**T. Q and P**T are defined as products of elementary reflectors H(i) and G(i) respectively.
let nq = m if SIDE = 'L' and nq = n if SIDE = 'R'. thus nq is the order of the orthogonal matrix Q or P**T that is applied.
if VECT = 'Q', A is assumed to have been an NQ-by-K matrix:
- if
nq >= k,Q = H(1) H(2) . . . H(k); - if
nq < k,Q = H(1) H(2) . . . H(nq-1).
if VECT = 'P', A is assumed to have been a K-by-NQ matrix:
- if
k < nq,P = G(1) G(2) . . . G(k); - if
k >= nq,P = G(1) G(2) . . . G(nq-1).
π Parameters π
VECTβ isCHARACTER*1.= 'Q': applyQorQ**T;= 'P': applyPorP**T. pick your icon πSIDEβ isCHARACTER*1.= 'L': applyQ,Q**T,PorP**Tfrom the Left;= 'R': applyQ,Q**T,PorP**Tfrom the Right.TRANSβ isCHARACTER*1.= 'N': No transpose, applyQorP;= 'T': Transpose, applyQ**TorP**T.Mβ isINTEGER. The number of rows of the matrixC.M >= 0.Nβ isINTEGER. The number of columns of the matrixC.N >= 0.Kβ isINTEGER. IfVECT = 'Q', the number of columns in the original matrix reduced bySGEBRD. IfVECT = 'P', the number of rows in the original matrix reduced bySGEBRD.K >= 0.Aβ isREALarray, dimension(LDA,min(nq,K))ifVECT = 'Q', or(LDA,nq)ifVECT = 'P'. The vectors which define the elementary reflectorsH(i)andG(i), whose products determine the matricesQandP, as returned bySGEBRD.LDAβ isINTEGER. The leading dimension of the arrayA. IfVECT = 'Q',LDA >= max(1,nq); ifVECT = 'P',LDA >= max(1,min(nq,K)).TAUβ isREALarray, dimension(min(nq,K)).TAU(i)must contain the scalar factor of the elementary reflectorH(i)orG(i)which determinesQorP, as returned bySGEBRDin the array argumentTAUQorTAUP.Cβ isREALarray, dimension(LDC,N). On entry, theM-by-NmatrixC. On exit,Cis overwritten byQ*CorQ**T*CorC*Q**TorC*QorP*CorP**T*CorC*PorC*P**T.LDCβ isINTEGER. The leading dimension of the arrayC.LDC >= max(1,M).WORKβ isREALarray, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK.LWORKβ isINTEGER. The dimension of the arrayWORK. IfSIDE = 'L',LWORK >= max(1,N); ifSIDE = 'R',LWORK >= max(1,M). For optimum performanceLWORK >= N*NBifSIDE = 'L', andLWORK >= M*NBifSIDE = 'R', whereNBis the optimal blocksize. IfLWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of theWORKarray, returns this value as the first entry of theWORKarray, and no error message related toLWORKis issued byXERBLA.INFOβ isINTEGER.= 0: successful exit.< 0: ifINFO = -i, thei-th argument had an illegal value.
Author
the author glow-up is:
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line
Definition at line 194 of file sormbr.f.
π«Ά Author (the Doxygen-generated one) π«Ά
Generated automatically by Doxygen for LAPACK from the source code.
kisses bestie π β this page's footer says LAPACK Version 3.12.0, and the footer path is /home/abui...RC/sormbr.f(3). there's no date printed in the footer, so I'm not inventing one β periodt. π
π¦ where this page comes from
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms