/home/abui.../dgemqrt.f(3)
π NAME π
okay so this whole page is literally about /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/dgemqrt.f β like, that's the file, that's the main character, that's the whole vibe. It's from the Library Functions Manual, and bestie, we are about to get so into it. β¨
β¨ SYNOPSIS β¨
π Functions/Subroutines π
subroutine DGEMQRT (side, trans, m, n, k, nb, v, ldv, t, ldt, c, ldc, work, info)β DGEMQRT. yes that's it, that's the function, she's iconic, she's booked and busy π
π¦ Function/Subroutine Documentation π¦
subroutine DGEMQRT (character side, character trans, integer m, integer n,
integer k, integer nb, double precision, dimension( ldv, * ) v, integer
ldv, double precision, dimension( ldt, * ) t, integer ldt, double
precision, dimension( ldc, * ) c, integer ldc, double precision,
dimension( * ) work, integer info)
DGEMQRT. that's her name, don't wear it out. π«Ά
πΈ Purpose πΈ
okay so here's the tea, and it's good tea β:
!>
!> DGEMQRT 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(1) H(2) . . . H(K) = I - V T V**T
!>
!> generated using the compact WY representation as returned by DGEQRT.
!>
!> Q is of order M if SIDE = 'L' and of order N if SIDE = 'R'.
!>
translation for my besties who don't dream in Fortran π: she takes your matrix C and replaces it with Q C, Q**T C, C Q**T or C Q depending on which side you're coming from. and Q? Q is this real orthogonal glow-up built from K elementary reflectors β Q = H(1) H(2) . . . H(K) = I - V T V**T β using the compact WY representation that DGEQRT handed back. Q is order M when SIDE = 'L' and order N when SIDE = 'R'. periodt. π₯
π Parameters π
okay bestie, here's the full roster, no skips, no crumbs. every single one. π
SIDE
!> SIDE is CHARACTER*1
!> = 'L': apply Q or Q**T from the Left;
!> = 'R': apply Q or Q**T from the Right.
!>
lowkey the most important one. 'L' = apply Q or Q**T from the Left, 'R' = apply Q or Q**T from the Right. choose wisely, she's watching π
TRANS
!> TRANS is CHARACTER*1
!> = 'N': No transpose, apply Q;
!> = 'C': Transpose, apply Q**T.
!>
'N' = no transpose, apply Q. 'C' = transpose, apply Q**T. yup, it's 'C', that's not a typo, that's literally what it says π«Ά
M
!> M is INTEGER
!> The number of rows of the matrix C. M >= 0.
!>
the number of rows of C. M >= 0. that's the whole thing, no drama πΈ
N
!> N is INTEGER
!> The number of columns of the matrix C. N >= 0.
!>
the number of columns of C. N >= 0. slay β¨
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 multiplying together to define Q. and check the ranges: if SIDE = 'L', then M >= K >= 0; if SIDE = 'R', then N >= K >= 0. no cap π
NB
!> NB is INTEGER
!> The block size used for the storage of T. K >= NB >= 1.
!> This must be the same value of NB used to generate T
!> in DGEQRT.
!>
the block size used for storing T. K >= NB >= 1. and listen β this must be the same value of NB used to generate T in DGEQRT. not "close to", not "vibes-adjacent", the same. don't come in here with a mismatched NB, it will not go well π
V
!> V is DOUBLE PRECISION array, dimension (LDV,K)
!> The i-th column must contain the vector which defines the
!> elementary reflector H(i), for i = 1,2,...,k, as returned by
!> DGEQRT in the first K columns of its array argument A.
!>
DOUBLE PRECISION array, dimension (LDV,K). the i-th column has to contain the vector defining the elementary reflector H(i), for i = 1,2,...,k, exactly as DGEQRT returned it in the first K columns of its array argument A. like-for-like, no edits π¦
LDV
!> LDV is INTEGER
!> The leading dimension of the array V.
!> If SIDE = 'L', LDA >= max(1,M);
!> if SIDE = 'R', LDA >= max(1,N).
!>
the leading dimension of the array V. and before you @ me β yes, it literally says LDA in the LDV entry. we're just quoting the manpage verbatim, bestie, we don't make the rules π so: if SIDE = 'L', LDA >= max(1,M); if SIDE = 'R', LDA >= max(1,N).
T
!> T is DOUBLE PRECISION array, dimension (LDT,K)
!> The upper triangular factors of the block reflectors
!> as returned by DGEQRT, stored as a NB-by-N matrix.
!>
DOUBLE PRECISION array, dimension (LDT,K). the upper triangular factors of the block reflectors, as returned by DGEQRT, stored as a NB-by-N matrix. queen of structure π
LDT
!> LDT is INTEGER
!> The leading dimension of the array T. LDT >= NB.
!>
leading dimension of the array T. LDT >= NB. short and iconic, we stan β
C
!> C is DOUBLE PRECISION array, dimension (LDC,N)
!> On entry, the M-by-N matrix C.
!> On exit, C is overwritten by Q C, Q**T C, C Q**T or C Q.
!>
DOUBLE PRECISION array, dimension (LDC,N). on entry: the M-by-N matrix C, innocent, minding her business. on exit: C is overwritten by Q C, Q**T C, C Q**T or C Q. so yeah, she does NOT survive the function call intact, back up your data if you needed the original π
LDC
!> LDC is INTEGER
!> The leading dimension of the array C. LDC >= max(1,M).
!>
leading dimension of the array C. LDC >= max(1,M). respect the constraint π
WORK
!> WORK is DOUBLE PRECISION array. The dimension of
!> WORK is N*NB if SIDE = 'L', or M*NB if SIDE = 'R'.
!>
DOUBLE PRECISION array. dimension of WORK is N*NB if SIDE = 'L', or M*NB if SIDE = 'R'. size it right or perish π
INFO
!> INFO is INTEGER
!> = 0: successful exit
!> < 0: if INFO = -i, the i-th argument had an illegal value
!>
INTEGER. = 0 means successful exit, we love to see it π and < 0 means if INFO = -i, the i-th argument had an illegal value. read your INFO, bestie, she's literally telling you which argument you fumbled π’
π Author π
full credit to the legends, no gatekeeping:
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
and this whole thing lives at Definition at line 166 of file dgemqrt.f. π«Ά
π Author π
generated automatically by Doxygen for LAPACK from the source code. the robots did this one, we just added the glitter β¨
okay that's the page!! π this absolute icon is from LAPACK, Version 3.12.0, and she's filed under /home/abui.../dgemqrt.f(3) in the Library Functions Manual. go forth and apply your Q in the correct direction, bestie β mwah ππ¦π
π¦ 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