ZUNGQR(3)

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

πŸ’… ZUNGQR(3) β€” the glow-up your Q matrix deserves ✨

Okay bestie, so this page is for zungqr.f from the LAPACK source. The full path situation is giving very "buried in a build directory" energy:

/home/abui...RC/zungqr.f(3)

and the actual source lives at:

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

She's cute, she's Fortran, and she's about to build you a whole orthonormal squad. Let's get into it 🫢


✨ SYNOPSIS ✨

Functions / Subroutines πŸŽ€

  • subroutine ZUNGQR (m, n, k, a, lda, tau, work, lwork, info) β€” ZUNGQR, the main character.

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

subroutine ZUNGQR (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)

ZUNGQR (yes, her full name again, she's like that).

🌸 Purpose 🌸

Lowkey iconic: ZUNGQR generates an M-by-N complex matrix Q with orthonormal columns. That's right β€” orthonormal. Her columns ate and left no crumbs.

Q is defined as the first N columns of a product of K elementary reflectors of order M, and that product is exactly this:

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

…as returned by ZGEQRF. So yes, bestie, ZGEQRF did the messy work and ZUNGQR is the one who shows up with the finished lewk πŸ’…

⭐ Parameters ⭐

Buckle up, we're going through every single one β€” no skips, fr fr.

  • M β€” M is INTEGER. The number of rows of the matrix Q. Constraint: M >= 0. Easy.
  • N β€” N is INTEGER. The number of columns of the matrix Q. Constraint: M >= N >= 0. Keep it in that window, babes.
  • K β€” K is INTEGER. The number of elementary reflectors whose product defines the matrix Q. Constraint: N >= K >= 0. Girl group size matters, respect the bounds πŸ’€
  • A β€” A is COMPLEX*16 array, dimension (LDA,N).
    • On entry, the i-th column must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by ZGEQRF in the first k columns of its array argument A.
    • On exit, the M-by-N matrix Q. Glow-up complete. She literally transforms in place πŸ™ˆ
  • LDA β€” LDA is INTEGER. The first dimension of the array A. Constraint: LDA >= max(1,M). Respect the leading dimension, it's not optional.
  • TAU β€” TAU is COMPLEX*16 array, dimension (K). TAU(i) must contain the scalar factor of the elementary reflector H(i), as returned by ZGEQRF. The tiny but crucial ingredient. Seasoning, if you will πŸ“
  • WORK β€” WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)). On exit, if INFO = 0, then WORK(1) returns the optimal LWORK. She's giving helpful and self-aware ✨
  • LWORK β€” LWORK is INTEGER. The dimension of the array WORK. Constraint: LWORK >= max(1,N).
    • For optimum performance: LWORK >= N*NB, where NB is the optimal blocksize.
    • 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 yes, -1 is the "just tell me how much room I need" hack and she won't yell at you for it.
  • INFO β€” INFO is INTEGER.
    • = 0: successful exit. slay πŸŽ‰
    • < 0: if INFO = -i, the i-th argument has an illegal value. Someone fumbled the bag, and INFO is here to tell you exactly which argument it was πŸ’€

πŸ‘‘ Author πŸ‘‘

The whole academic dream team on this one:

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

🧚 Definition 🧚

Definition at line 127 of file zungqr.f. Yes, a specific line. Very precise queen behavior.


🌈 Author 🌈

Generated automatically by Doxygen for LAPACK from the source code. It literally wrote itself, we're just vibing with it 😌


πŸ’« cute sign-off πŸ’«

This is LAPACK Version 3.12.0, living out of /home/abui...RC/zungqr.f(3) β€” go forth, build your orthonormal Q, and remember: M >= N >= K >= 0, bestie. Periodt. πŸ’…βœ¨πŸŽ€

πŸ“¦ where this page comes from