SORMR3(3)
π¦ SORMR3(3) β like, the LAPACK manual page, bestie π
okay so real talk, this page lives at /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/sormr3.f and honestly? she's giving iconic Fortran subroutine energy and I'm obsessed β¨
πΈ NAME πΈ
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/sormr3.f
like yes, that's literally the whole name, it's a whole vibe, don't question it π«Ά
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine SORMR3 (side, trans, m, n, k, l, a, lda, tau, c, ldc, work, info)β SORMR3 multiplies a general matrix by the orthogonal matrix from a RZ factorization determined bystzrzf(unblocked algorithm).
π Function/Subroutine Documentation π
subroutine SORMR3 (character side, character trans, integer m, integer n,
integer k, integer l, real, dimension( lda, * ) a, integer lda, real,
dimension( * ) tau, real, dimension( ldc, * ) c, integer ldc, real,
dimension( * ) work, integer info)
SORMR3 multiplies a general matrix by the orthogonal matrix from a RZ factorization determined by stzrzf (unblocked algorithm). no cap, that's the whole gig π
π§ Purpose:
!>
!> SORMR3 overwrites the general real m by n matrix C with
!>
!> Q * C if SIDE = 'L' and TRANS = 'N', or
!>
!> Q**T* C if SIDE = 'L' and TRANS = 'C', or
!>
!> C * Q if SIDE = 'R' and TRANS = 'N', or
!>
!> C * Q**T if SIDE = 'R' and TRANS = 'C',
!>
!> where Q is a real orthogonal matrix defined as the product of k
!> elementary reflectors
!>
!> Q = H(1) H(2) . . . H(k)
!>
!> as returned by STZRZF. Q is of order m if SIDE = 'L' and of order n
!> if SIDE = 'R'.
!>
so basically Q is the main character, C is getting absolutely overwritten, and the side/trans combo decides which direction the slay goes π
π Parameters π
SIDE
!> SIDE is CHARACTER*1
!> = 'L': apply Q or Q**T from the Left
!> = 'R': apply Q or Q**T from the Right
!>
left or right, pick your fighter β 'L' goes Left, 'R' goes Right, that's the whole menu π¦
TRANS
!> TRANS is CHARACTER*1
!> = 'N': apply Q (No transpose)
!> = 'T': apply Q**T (Transpose)
!>
'N' = no transpose (chill), 'T' = transpose, aka Q**T, aka the flip π β and ngl, the header comment above literally only spells out 'C' in the Purpose block while this parameter list says 'T', so there's that, fr fr
M
!> M is INTEGER
!> The number of rows of the matrix C. M >= 0.
!>
rows of C, and she must be M >= 0 β
N
!> N is INTEGER
!> The number of columns of the matrix C. N >= 0.
!>
columns of C, also gotta be N >= 0 β equality is that girl π
K
!> K is INTEGER
!> The number of elementary reflectors whose product defines
!> the matrix Q.
!> If SIDE = 'L', M >= K >= 0;
!> if SIDE = 'R', N >= K >= 0.
!>
how many elementary reflectors are in the group chat building Q. SIDE = 'L' means M >= K >= 0, SIDE = 'R' means N >= K >= 0 π«Ά
L
!> L is INTEGER
!> The number of columns of the matrix A containing
!> the meaningful part of the Householder reflectors.
!> If SIDE = 'L', M >= L >= 0, if SIDE = 'R', N >= L >= 0.
!>
the "meaningful part" of the Householder reflectors lives in A β SIDE = 'L' wants M >= L >= 0, SIDE = 'R' wants N >= L >= 0 β¨
A
!> A is REAL array, dimension
!> (LDA,M) if SIDE = 'L',
!> (LDA,N) if SIDE = 'R'
!> The i-th row must contain the vector which defines the
!> elementary reflector H(i), for i = 1,2,...,k, as returned by
!> STZRZF in the last k rows of its array argument A.
!> A is modified by the routine but restored on exit.
!>
dimension <blue>(LDA,M)</blue> if SIDE = 'L', <blue>(LDA,N)</blue> if SIDE = 'R'. The i-th row holds the vector defining H(i) for i = 1,2,...,k, exactly as STZRZF returned it in the last k rows of its array argument A. A gets modified by the routine but restored on exit β so don't panic, she comes back home π π
LDA
!> LDA is INTEGER
!> The leading dimension of the array A. LDA >= max(1,K).
!>
LDA >= max(1,K), respectfully π
TAU
!> TAU is REAL array, dimension (K)
!> TAU(i) must contain the scalar factor of the elementary
!> reflector H(i), as returned by STZRZF.
!>
dimension (K), and TAU(i) is the scalar factor of H(i), as returned by STZRZF β iconic pairing, tbh π
C
!> C is REAL array, dimension (LDC,N)
!> On entry, the m-by-n matrix C.
!> On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q.
!>
dimension <hotpink>(LDC,N)</hotpink>. On entry it's the m-by-n matrix C. On exit it's overwritten by Q*C or Q**T*C or C*Q**T or C*Q. she doesn't survive the glow-up, that's the point π
LDC
!> LDC is INTEGER
!> The leading dimension of the array C. LDC >= max(1,M).
!>
LDC >= max(1,M), as she should π
WORK
!> WORK is REAL array, dimension
!> (N) if SIDE = 'L',
!> (M) if SIDE = 'R'
!>
workspace, dimension (N) if SIDE = 'L', (M) if SIDE = 'R' β she's just there to help, lowkey essential π§
INFO
!> INFO is INTEGER
!> = 0: successful exit
!> < 0: if INFO = -i, the i-th argument had an illegal value
!>
= 0 means successful exit, we love to see it π and < 0 means INFO = -i, so the i-th argument had an illegal value β someone showed up to the function call with the wrong fit π
warning bestie: if you pass A something illegal, don't expect it to be quietly ignored β the i-th argument's bad value gets reported as INFO = -i β¨
π Author π
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
(the whole squad, honestly π«Ά)
π Contributors: π
A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
π₯ Further Details: π₯
!>
that's it. that's the further details. an empty comment box. she said "no thoughts, head empty" ππ
Definition at line 176 of file sormr3.f.
β Author β
Generated automatically by Doxygen for LAPACK from the source code.
okay that's the page!! π the whole thing is LAPACK, Version 3.12.0, page path /home/abui...RC/sormr3.f(3) β and yes the header and footer themselves are auto-generated, so this was a whole Doxygen moment. mwah, bye bestie ππΈ
LAPACK Β· Version 3.12.0 Β· /home/abui...RC/sormr3.f(3) π
π¦ 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