SRC/cunmrq.f(3)

πŸ’… SRC/cunmrq.f

okay so this is straight out of the Library Functions Manual bestie, and it's literally the glow-up manual for CUNMRQ πŸ’– she's a LAPACK girlie and she's about to overwrite your matrix (respectfully).


✨ NAME ✨

SRC/cunmrq.f β€” that's the file, that's the whole name, no notes πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

  • subroutine cunmrq (side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info) β€” this is her full legal name, she goes by CUNMRQ for short πŸŽ€

🌸 Function/Subroutine Documentation 🌸

subroutine cunmrq (character side, character trans, integer m, integer n,
    integer k, complex, dimension( lda, * ) a, integer lda, complex,
    dimension( * ) tau, complex, dimension( ldc, * ) c, integer ldc,
    complex, dimension( * ) work, integer lwork, integer info)

CUNMRQ β€” iconic, no cap πŸ‘‘

🧚 Purpose

okay so listen up because this is the main character moment:

CUNMRQ 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 unitary matrix defined as the product of k elementary reflectors

      Q = H(1)**H H(2)**H . . . H(k)**H

as returned by CGERQF. Q is of order M if SIDE = 'L' and of order N if SIDE = 'R'.

like, she's building Q out of reflectors and applying it to your matrix. it's giving craftsmanship fr fr ✨


πŸ‘‘ Parameters πŸ‘‘

SIDE

SIDE is CHARACTER*1

  • = 'L': apply Q or Q**H from the Left;
  • = 'R': apply Q or Q**H from the Right.

like which side are we coming from, bestie? pick one πŸ’…

TRANS

TRANS is CHARACTER*1

  • = 'N': No transpose, apply Q;
  • = 'C': Conjugate transpose, apply Q**H.

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.

so like, K has to stay in its lane depending on which side you picked 🫢

A

A is COMPLEX array, dimension

                     (LDA,M) if SIDE = 'L',
                     (LDA,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 CGERQF in the last k rows of its array argument A.

note that: the last k rows, not the first, not the middle, the last k rows. iykyk πŸ™ˆ

LDA

LDA is INTEGER

The leading dimension of the array A. LDA >= max(1,K).

TAU

TAU is COMPLEX array, dimension (K)

TAU(i) must contain the scalar factor of the elementary reflector H(i), as returned by CGERQF.

C

C is COMPLEX array, dimension (LDC,N)

On entry, the M-by-N matrix C. On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q.

she comes in as your matrix and leaves as a transformed matrix. glow-up complete πŸ’–

LDC

LDC is INTEGER

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

WORK

WORK is COMPLEX array, dimension (MAX(1,LWORK))

On exit, if INFO = 0, WORK(1) returns the optimal LWORK.

LWORK

LWORK is INTEGER

The dimension of the array WORK.

If SIDE = 'L', LWORK >= max(1,N); if SIDE = 'R', LWORK >= max(1,M).

For good performance, LWORK should generally be larger. (read: don't be stingy with your workspace, she thrives when she has room 🌈)

If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA.

so like, LWORK = -1 is the "just tell me how much room you need" mode. she won't yell at you for it, XERBLA stays quiet 😌

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 at line 166 of file cunmrq.f.


⭐ Author (the other one) ⭐

Generated automatically by Doxygen for LAPACK from the source code.


and that's the whole page bestie, no skips, no cuts, every single parameter accounted for 🫢

this masterpiece dropped with LAPACK, Version 3.12.0, and it lives at SRC/cunmrq.f(3) β€” go stan her, she ate πŸ’…βœ¨

πŸ“¦ where this page comes from