SRC/dorm2l.f(3)

πŸ¦‹ SRC/dorm2l.f β€” the dorm2l glow-up πŸ¦‹

okay so bestie, this is the manual page for SRC/dorm2l.f, and it's literally the blueprint for dorm2l, a subroutine living its best life inside LAPACK. no cap, it's about to be your new fave πŸ’–


✨ SYNOPSIS ✨

Functions/Subroutines

  • subroutine dorm2l (side, trans, m, n, k, a, lda, tau, c, ldc, work, info) β€” DORM2L multiplies a general matrix by the orthogonal matrix from a QL factorization determined by sgeqlf (unblocked algorithm).

πŸŽ€ Function/Subroutine Documentation πŸŽ€

subroutine dorm2l (character side, character trans, integer m, integer n,
    integer k, double precision, dimension( lda, * ) a, integer lda, double
    precision, dimension( * ) tau, double precision, dimension( ldc, * ) c,
    integer ldc, double precision, dimension( * ) work, integer info)

DORM2L multiplies a general matrix by the orthogonal matrix from a QL factorization determined by sgeqlf (unblocked algorithm). yes queen, that's the whole assignment πŸ’…

πŸ’œ Purpose πŸ’œ

okay so here's the tea, straight from the source:

!>
!> DORM2L 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 = 'T', or
!>
!>       C * Q  if SIDE = 'R' and TRANS = 'N', or
!>
!>       C * Q**T if SIDE = 'R' and TRANS = '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 DGEQLF. Q is of order m if SIDE = 'L' and of order n
!> if SIDE = 'R'.
!>

so basically C is getting absolutely rewritten by Q, and which side of C Q shows up on is entirely a SIDE-and-TRANS situation. main character matrix energy fr fr πŸ‘‘

🌸 Parameters 🌸

SIDE

!>          SIDE is CHARACTER*1
!>          = 'L': apply Q or Q**T from the Left
!>          = 'R': apply Q or Q**T from the Right
!>

TRANS

!>          TRANS is CHARACTER*1
!>          = 'N': apply Q  (No transpose)
!>          = 'T': apply Q**T (Transpose)
!>

M

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

N

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

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.
!>

A

!>          A is DOUBLE PRECISION array, dimension (LDA,K)
!>          The i-th column must contain the vector which defines the
!>          elementary reflector H(i), for i = 1,2,...,k, as returned by
!>          DGEQLF in the last k columns of its array argument A.
!>

the i-th column holds the vector defining H(i) β€” for i = 1,2,...,k β€” exactly as DGEQLF handed it over in the last k columns of its array argument A. no improvising, bestie πŸ™ˆ

LDA

!>          LDA is INTEGER
!>          The leading dimension of the array A.
!>          If SIDE = 'L', LDA >= max(1,M);
!>          if SIDE = 'R', LDA >= max(1,N).
!>

TAU

!>          TAU is DOUBLE PRECISION array, dimension (K)
!>          TAU(i) must contain the scalar factor of the elementary
!>          reflector H(i), as returned by DGEQLF.
!>

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 or Q**T*C or C*Q**T or C*Q.
!>

on entry it's your cute little m by n matrix C, and on exit it's been completely overwritten by Q*C or Q**T*C or C*Q**T or C*Q. she ate and left no crumbs 😭πŸ”₯

LDC

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

WORK

!>          WORK is DOUBLE PRECISION array, dimension
!>                                   (N) if SIDE = 'L',
!>                                   (M) if SIDE = 'R'
!>

INFO

!>          INFO is INTEGER
!>          = 0: successful exit
!>          < 0: if INFO = -i, the i-th argument had an illegal value
!>
⚠️ vibe check on INFO: 0 means slay, everything worked. negative means an argument was illegal β€” specifically if INFO = -i, the i-th argument had an illegal value. read it and weep πŸ’€

πŸ‘‘ Author πŸ‘‘

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

Definition at line 156 of file dorm2l.f. literally right there, go look 🫢


🌈 Author (the meta one) 🌈

Generated automatically by Doxygen for LAPACK from the source code. so no, a human didn't hand-write this bit β€” the robots did it for us, iconic behavior πŸ€–βœ¨


okay that's the whole page bestie, you're basically a LAPACK girlie now πŸ’– this was LAPACK, Version 3.12.0, on SRC/dorm2l.f(3) β€” mwah, go forth and multiply your matrices πŸ§šβ€β™€οΈπŸ’œ

πŸ“¦ where this page comes from