DORM2L(3)

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

πŸ’… NAME πŸ’…

ok so bestie, this page is dorm2l.f(3) and the "name" here is literally just this whole path, no cap:

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

that's it. that's the name. it's giving "my full government name on the school roster" energy 😭


✨ 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).

πŸŽ€ Purpose:

ok so like, the whole vibe of this routine: it 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'. slay.


πŸ‘‘ 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, bestie β€” pick your side, it's literally that simple πŸ’…

TRANS

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

'N' = no transpose, 'T' = transpose. main character choice fr fr.

M

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

rows of C, and it has to be M >= 0 okay 🫢

N

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

columns of C. N >= 0. periodt.

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 into Q β€” and yes the bounds flip depending on SIDE, so M >= K >= 0 for 'L' and N >= K >= 0 for 'R' πŸ’–

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.
A is modified by the routine but restored on exit.

the i-th column holds the vector defining H(i), for i = 1,2,...,k, exactly as DGEQLF handed it back in the last k columns of its array argument A. and yes β€” A is modified by the routine but restored on exit, so she leaves and comes back looking the same 😌 iconic behavior.

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

leading dimension of A. LDA >= max(1,M) when SIDE = 'L', LDA >= max(1,N) when SIDE = 'R'. don't skip this check, it will absolutely catch you πŸ™ˆ

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.

TAU(i) = the scalar factor of H(i), as returned by DGEQLF. literally just hand it over exactly as you got it πŸŽ€

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 the m by n matrix C. on exit it's been overwritten by Q*C or Q**T*C or C*Q**T or C*Q. she's not coming back the same, and that's the point πŸ’€βœ¨

LDC

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

leading dimension of C, and it's LDC >= max(1,M). no debate πŸ”₯

WORK

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

scratch space, and its size flips with SIDE: dimension (N) if SIDE = 'L', dimension (M) if SIDE = 'R'. iykyk πŸ¦‹

INFO

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

= 0 β†’ we ate, successful exit. < 0 β†’ if INFO = -i, the i-th argument had an illegal value. read the number, go fix that argument, that's the whole detective arc πŸ”


🌈 Author

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

Definition at line 157 of file dorm2l.f.


⭐ Author (the doxygen one) ⭐

Generated automatically by Doxygen for LAPACK from the source code.


and that's the whole page bestie 🫢 the footer tea: this is LAPACK, Version 3.12.0, dated /home/abui...RC/dorm2l.f(3) β€” go forth and multiply your matrices the correct way πŸ’œπŸ§šβ€β™€οΈ

πŸ“¦ where this page comes from