SRC/zungrq.f(3)

πŸ’… SRC/zungrq.f(3) β€” like, the whole page, bestie

Okay so this is a page from the Library Functions Manual and it's literally all about SRC/zungrq.f, no cap. Buckle up, this one is a whole vibe. πŸ¦‹


✨ SYNOPSIS ✨

πŸŽ€ Functions/Subroutines

  • subroutine zungrq (m, n, k, a, lda, tau, work, lwork, info) β€” the one and only, ZUNGRQ itself, main character energy πŸ’…

🌸 Function/Subroutine Documentation 🌸

🫢 subroutine zungrq (integer m, integer n, integer k, complex*16, dimension( lda, * ) a, integer lda, complex*16, dimension( * ) tau, complex*16, dimension( * ) work, integer lwork, integer info)

ZUNGRQ β€” yes, that's her name, say it with your chest πŸ‘‘

πŸ’– Purpose:

!>
!> ZUNGRQ generates an M-by-N complex matrix Q with orthonormal rows,
!> which is defined as the last M rows of a product of K elementary
!> reflectors of order N
!>
!>       Q  =  H(1)**H H(2)**H . . . H(k)**H
!>
!> as returned by ZGERQF.
!>

So basically she builds you a matrix Q β€” M-by-N, complex, with orthonormal rows β€” and that Q is the last M rows of this whole product of K elementary reflectors of order N. The formula is the moment, honestly:

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

and it's the exact same thing ZGERQF hands back to you. Slay. πŸ”₯


🌈 Parameters (aka the whole friend group)

  • M β€” M is INTEGER, and it's the number of rows of the matrix Q. Constraint era: M >= 0 ✨
  • N β€” N is INTEGER, the number of columns of the matrix Q. And heads up, N >= M, always, no exceptions πŸ’…
  • K β€” K is INTEGER, the number of elementary reflectors whose product defines the matrix Q. Constraint: M >= K >= 0 🫢
  • A β€” A is COMPLEX*16 array, dimension (LDA,N). Okay so on entry πŸ‘€ the (m-k+i)-th row has got to contain the vector that defines the elementary reflector H(i), for i = 1,2,...,k, exactly as ZGERQF returned it in the last k rows of its array argument A. On exit? Boom, it's the M-by-N matrix Q. Glow-up πŸ’–
  • LDA β€” LDA is INTEGER, the first dimension of the array A. Rule: LDA >= max(1,M), don't test her πŸŽ€
  • TAU β€” TAU is COMPLEX*16 array, dimension (K). TAU(i) must contain the scalar factor of the elementary reflector H(i), as returned by ZGERQF. Iconic, as usual ✨
  • WORK β€” WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)). On exit, if INFO = 0, then WORK(1) returns the optimal LWORK. Bestie is out here doing double duty πŸ¦‹
  • LWORK β€” LWORK is INTEGER, the dimension of the array WORK. You need LWORK >= max(1,M). For optimum performance though, LWORK >= M*NB, where NB is the optimal blocksize β€” treat yourself, go big πŸ’…
Fr fr though: 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. It's giving "just checking, not committing" πŸ™ˆ
  • INFO β€” INFO is INTEGER:
    • = 0: successful exit πŸŽ‰
    • < 0: if INFO = -i, the i-th argument has an illegal value πŸ’€ (rude, but fair)

πŸ‘‘ Author

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

Legends, all of them. Periodt. 🌟


🧚 Definition

Definition at line 127 of file zungrq.f. β€” that's where she lives, go visit πŸŽ€


⭐ Author (the meta one)

Generated automatically by Doxygen for LAPACK from the source code. β€” yes bestie, a robot wrote this page, and it ate πŸ’…βœ¨


LAPACK, Version 3.12.0, SRC/zungrq.f(3) β€” that's the whole vibe check, mwah, see you in the next manpage πŸ“πŸ’œ
πŸ“¦ where this page comes from