SRC/cgemqrt.f(3)

✨ SRC/cgemqrt.f β€” CGEMQRT ✨

okay bestie, buckle up πŸ’… this is a LAPACK Library Functions Manual situation, and the function is literally called cgemqrt. it's giving "math girlie does linear algebra" and honestly? we're obsessed. let's get into it 🫢


🌸 SYNOPSIS 🌸

Functions/Subroutines

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

CGEMQRT β€” she's the main character of this whole page, no cap πŸ”₯


πŸ’– Function/Subroutine Documentation πŸ’–

subroutine cgemqrt (character side, character trans, integer m, integer n,
    integer k, integer nb, complex, dimension( ldv, * ) v, integer ldv,
    complex, dimension( ldt, * ) t, integer ldt, complex, dimension( ldc, *
    ) c, integer ldc, complex, dimension( * ) work, integer info)

CGEMQRT πŸ‘‘


πŸŽ€ Purpose πŸŽ€

CGEMQRT overwrites the general complex M-by-N matrix C with
                SIDE = 'L'     SIDE = 'R'
TRANS = 'N':      Q C            C Q
TRANS = 'C':    Q**H C            C Q**H

where Q is a complex orthogonal matrix defined as the product of K elementary reflectors:

      Q = H(1) H(2) . . . H(K) = I - V T V**H

generated using the compact WY representation as returned by CGEQRT.

Q is of order M if SIDE = 'L' and of order N if SIDE = 'R'.


🌈 Parameters 🌈

  • SIDE β€” SIDE is CHARACTER*1 🌸
    • = 'L': apply Q or Q**H from the Left;
    • = 'R': apply Q or Q**H from the Right.
  • TRANS β€” TRANS is CHARACTER*1 ✨
    • = 'N': No transpose, apply Q;
    • = 'C': Conjugate transpose, apply Q**H.
  • M β€” M is INTEGER, and it's literally the number of rows of the matrix C. M >= 0. periodt πŸ’…
  • N β€” N is INTEGER, the number of columns of the matrix 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.
  • NB β€” NB is INTEGER, the block size used for the storage of T. K >= NB >= 1. no cap, this must be the same value of NB used to generate T in CGEQRT. don't fumble that bestie 😭
  • V β€” V is COMPLEX 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 CGEQRT in the first K columns of its array argument A.
  • 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).
  • T β€” T is COMPLEX array, dimension (LDT,K) πŸŽ€ The upper triangular factors of the block reflectors as returned by CGEQRT, stored as a NB-by-N matrix.
  • LDT β€” LDT is INTEGER, the leading dimension of the array T. LDT >= NB. 🧚
  • C β€” C is COMPLEX array, dimension (LDC,N) πŸ’–
    • On entry, the M-by-N matrix C.
    • On exit, C is overwritten by Q C, Q**H C, C Q**H or C Q.
  • LDC β€” LDC is INTEGER, the leading dimension of the array C. LDC >= max(1,M). ⭐
  • WORK β€” WORK is COMPLEX array. The dimension of WORK is N*NB if SIDE = 'L', or M*NB if SIDE = 'R'. get you a work array that can do both 🫢
  • INFO β€” INFO is INTEGER πŸ”₯
    • = 0: successful exit
    • < 0: if INFO = -i, the i-th argument had an illegal value

πŸ‘‘ Author πŸ‘‘

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

πŸ¦‹ Definition πŸ¦‹

Definition at line 166 of file cgemqrt.f.


πŸ’« Author πŸ’«

Generated automatically by Doxygen for LAPACK from the source code.


okay that's the whole page bestie, you ate that πŸ“πŸ’…

and btw this iconic little document is from LAPACK, Version 3.12.0 β€” like, the source code era, fr fr. love that for us πŸŒˆπŸ‘‘πŸ’–

πŸ“¦ where this page comes from