/home/abui.../sgemlqt.f(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

πŸ’… /home/abui.../sgemlqt.f(3) β€” Library Functions Manual

okay so bestie, you found the manpage for /home/abui.../sgemlqt.f(3) and we are gonna get you fluent in it. no cap. ✨


🌸 NAME 🌸

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/sgemlqt.f

like, that's literally the whole file path. the source. the origin story. the main character's birth certificate πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines β€” this is where the actual ✨content✨ lives:

subroutine SGEMLQT (side, trans, m, n, k, mb, v, ldv, t, ldt, c, ldc,
    work, info)

SGEMLQT β€” that's her name, say it with your chest πŸ’…


πŸ‘‘ Function/Subroutine Documentation πŸ‘‘

subroutine SGEMLQT (character side, character trans, integer m, integer n,
    integer k, integer mb, real, dimension( ldv, * ) v, integer ldv, real,
    dimension( ldt, * ) t, integer ldt, real, dimension( ldc, * ) c, integer
    ldc, real, dimension( * ) work, integer info)

SGEMLQT β€” she's back and this time with the full type signature. types on types on types πŸ’–

⭐ Purpose ⭐

ok so (and this is the whole vibe, no notes):

!>
!> DGEMLQT 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 SGELQT.
!>
!> Q is of order M if SIDE = 'L' and of order N  if SIDE = 'R'.
!>

yes bestie, the docs up top say DGEMLQT even though the routine is SGEMLQT β€” we do not ask questions, we simply notice it and move on πŸ™ˆ (keeping it exactly as written, that's the rule).

so basically: you hand her a matrix C, she slaps Q (or Q**T) on the left or right depending on your choices, and Q itself is a product of K elementary reflectors built with the compact WY representation, courtesy of SGELQT. iconic behavior, honestly πŸ”₯

🌈 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. it's giving "which side of the bed do you wake up on" 😭

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. the 'C' is doing so much work here, ngl 🫢

M

!>          M is INTEGER
!>          The number of rows of the matrix C. M >= 0.
!>

rows of C. must be M >= 0. respect the zero-inclusive bound πŸ’œ

N

!>          N is INTEGER
!>          The number of columns of the matrix C. N >= 0.
!>

columns of C. N >= 0. same energy. ⭐

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 getting multiplied together to make Q. and pay attention to the bounds, bestie:

  • SIDE = 'L' β†’ M >= K >= 0
  • SIDE = 'R' β†’ N >= K >= 0

MB

!>          MB is INTEGER
!>          The block size used for the storage of T.  K >= MB >= 1.
!>          This must be the same value of MB used to generate T
!>          in SGELQT.
!>

block size for storing T. the range is K >= MB >= 1 (not zero, one β€” she has standards πŸ’…). and it must be the exact same MB you used to generate T in SGELQT. mismatch it and you're on your own, fr fr.

V

!>          V is REAL array, dimension
!>                               (LDV,M) if SIDE = 'L',
!>                               (LDV,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
!>          SGELQT in the first K rows of its array argument A.
!>

dimension is (LDV,M) if SIDE = 'L' and (LDV,N) if SIDE = 'R'. the i-th row holds the vector defining H(i), for i = 1,2,...,k, exactly as SGELQT handed it to you in the first K rows of its argument A. handoff queen 🀝

LDV

!>          LDV is INTEGER
!>          The leading dimension of the array V. LDV >= max(1,K).
!>

leading dimension of V. LDV >= max(1,K). write it down, love it, live by it.

T

!>          T is REAL array, dimension (LDT,K)
!>          The upper triangular factors of the block reflectors
!>          as returned by SGELQT, stored as a MB-by-K matrix.
!>

dimension (LDT,K). the upper triangular factors of the block reflectors, straight from SGELQT, stored as an MB-by-K matrix. triangular and thriving πŸ”Ί

LDT

!>          LDT is INTEGER
!>          The leading dimension of the array T.  LDT >= MB.
!>

leading dimension of T. LDT >= MB. short and slay πŸŽ€

C

!>          C is REAL 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.
!>

dimension (LDC,N). on entry: your precious M-by-N matrix C. on exit: overwritten by Q C, Q**T C, C Q**T or C Q. she does not preserve. she transforms πŸ’€ make sure that's what you wanted!

LDC

!>          LDC is INTEGER
!>          The leading dimension of the array C. LDC >= max(1,M).
!>

leading dimension of C. LDC >= max(1,M). boundaries are self-care 🌸

WORK

!>          WORK is REAL array. The dimension of
!>          WORK is N*MB if SIDE = 'L', or  M*MB if SIDE = 'R'.
!>

workspace array. size it right: N*MB if SIDE = 'L', or M*MB if SIDE = 'R'. yes, the two spaces after "or" are canon. 🧚

INFO

!>          INFO is INTEGER
!>          = 0:  successful exit
!>          < 0:  if INFO = -i, the i-th argument had an illegal value
!>

the vibe check πŸ’«

  • = 0: successful exit, we ate.
  • < 0: if INFO = -i, the i-th argument had an illegal value. somebody passed something cursed and INFO is telling on them.

🫢 Author 🫢

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

four whole institutions collaborated on this. group project that actually worked, unlike yours 😭 (jk jk ily)

Definition at line 151 of file sgemlqt.f. β€” line 151, mark it, screenshot it, put it on your wall πŸ“Œ


πŸ’œ Author πŸ’œ

Generated automatically by Doxygen for LAPACK from the source code. so nobody wrote this page by hand, a robot did it, and honestly? she did great. πŸ’–


and that's the whole thing bestie β€” every parameter, every bound, every !> marker, untouched. the facts are sacred, the vibe is free. πŸ”₯

LAPACK β€” Version 3.12.0 β€” and the page itself lives at /home/abui.../sgemlqt.f(3). go forth and multiply your reflectors, you absolute icon πŸ‘‘βœ¨πŸŒˆ

πŸ“¦ where this page comes from