SRC/sormql.f(3)
π SRC/sormql.f(3) π
okay so this is a page from the Library Functions Manual and it's literally all about sormql β one Fortran subroutine that's lowkey a legend. buckle up bestie π
β¨ NAME β¨
SRC/sormql.f β yes that's the whole name section, it's giving minimalist icon behavior π
πΈ SYNOPSIS πΈ
Functions/Subroutines
subroutine sormql (side, trans, m, n, k, a, lda, tau, c, ldc, work,
lwork, info)
SORMQL
π¦ Function/Subroutine Documentation π¦
subroutine sormql (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)
SORMQL π«Ά (say it with me: ess-oh-arr-em-cue-ell)
π§ Purpose
!>
!> SORMQL 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
!>
!> where Q is a real orthogonal matrix defined as the product of k
!> elementary reflectors
!>
!> Q = H(k) . . . H(2) H(1)
!>
!> as returned by SGEQLF. Q is of order M if SIDE = 'L' and of order N
!> if SIDE = 'R'.
!>
so basically it takes your matrix C and overwrites it with Q times C (or C times Q, depending on SIDE), and Q is that real orthogonal glow-up built from k elementary reflectors stacked like Q = H(k) . . . H(2) H(1) β exactly the ones SGEQLF handed you. Q is order M when SIDE = 'L' and order N when SIDE = 'R'. no cap, that's the whole vibe π₯
π Parameters π
SIDEβ CHARACTER*1, bestie, pick a side:= 'L': applyQorQ**Tfrom the Left;= 'R': applyQorQ**Tfrom the Right.
TRANSβ CHARACTER*1, the transpose mood:= 'N': No transpose, applyQ;= 'T': Transpose, applyQ**T.
Mβ INTEGER. The number of rows of the matrixC.M >= 0. πNβ INTEGER. The number of columns of the matrixC.N >= 0.Kβ INTEGER. The number of elementary reflectors whose product defines the matrixQ. IfSIDE = 'L',M >= K >= 0; ifSIDE = 'R',N >= K >= 0.Aβ REAL array, dimension(LDA,K). The i-th column must contain the vector which defines the elementary reflectorH(i), fori = 1,2,...,k, as returned bySGEQLFin the lastkcolumns of its array argumentA. πLDAβ INTEGER. The leading dimension of the arrayA. IfSIDE = 'L',LDA >= max(1,M); ifSIDE = 'R',LDA >= max(1,N).TAUβ REAL array, dimension(K).TAU(i)must contain the scalar factor of the elementary reflectorH(i), as returned bySGEQLF. β¨Cβ REAL array, dimension(LDC,N). On entry, the M-by-N matrixC. On exit,Cis overwritten byQ*CorQ**T*CorC*Q**TorC*Q. (yes she gets fully rewritten, that's her whole arc π)LDCβ INTEGER. The leading dimension of the arrayC.LDC >= max(1,M).WORKβ REAL array, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK. πLWORKβ INTEGER. The dimension of the arrayWORK. IfSIDE = 'L',LWORK >= max(1,N); ifSIDE = 'R',LWORK >= max(1,M). For good performance,LWORKshould generally be larger.
If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA. π§ β¨
INFOβ INTEGER. The receipts:= 0: successful exit π< 0: ifINFO = -i, the i-th argument had an illegal value π
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 166 of file sormql.f.
π Author (again, but the meta one) π
Generated automatically by Doxygen for LAPACK from the source code. not a human, just a very enthusiastic robot doing its little thing π€π
lowkey a whole serve. go forth and orthogonalize, bestie. π¦π
LAPACK, Version 3.12.0, SRC/sormql.f(3) β mwah, that's the whole page, love u, bye! π«ΆππΈ
π¦ 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