unmrz(3)

πŸ¦‹ unmrz(3) β€” the {un,or}mrz glow-up

okay so bestie, you're in the Library Functions Manual section, and this page is all about the four <rainbow>unmrz</rainbow> / <rainbow>ormrz</rainbow> routines β€” the ones that multiply by Z from tzrzf. ✨


πŸ’– NAME πŸ’–

unmrz β€” {un,or}mrz: multiply by Z from tzrzf


πŸŽ€ SYNOPSIS πŸŽ€

🫢 Functions

subroutine cunmrz (side, trans, m, n, k, l, a, lda, tau, c, ldc, work,
    lwork, info)

CUNMRZ

subroutine dormrz (side, trans, m, n, k, l, a, lda, tau, c, ldc, work,
    lwork, info)

DORMRZ

subroutine sormrz (side, trans, m, n, k, l, a, lda, tau, c, ldc, work,
    lwork, info)

SORMRZ

subroutine zunmrz (side, trans, m, n, k, l, a, lda, tau, c, ldc, work,
    lwork, info)

ZUNMRZ


πŸ¦‹ Detailed Description πŸ¦‹

bestie there is literally nothing here. the detailed description section is giving empty notebook page. no cap. πŸ’€ the actual tea is all down in the function docs, so keep scrolling. 🫢


πŸ”₯ Function Documentation πŸ”₯


πŸ‘‘ subroutine cunmrz

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

CUNMRZ

🌸 Purpose 🌸

okay so here's the vibe β€” CUNMRZ 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(2) . . . H(k)

exactly as returned by CTZRZF. and the way Q works β€” it's 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**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. 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.
  • L β€” L is INTEGER. the number of columns of the matrix A containing the meaningful part of the Householder reflectors.
    • if SIDE = 'L', M >= L >= 0, if SIDE = 'R', N >= L >= 0.
  • 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 CTZRZF in the last k rows of its array argument A. heads up πŸ‘€ β€” A is modified by the routine but restored on exit. iconic behaviour honestly.

  • 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 CTZRZF.
  • 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.
  • 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. πŸ’…
🫢 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.
  • 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.

πŸ“ Contributors: πŸ“

  • A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA

⭐ Further Details: ⭐

literally just an empty !> comment. nothing to see here bestie, moving on. πŸ™ˆ

πŸ¦‹ Definition πŸ¦‹

Definition at line 185 of file cunmrz.f.


πŸ‘‘ subroutine dormrz

subroutine dormrz (character side, character trans, integer m, integer n,
    integer k, integer l, double precision, dimension( lda, * ) a, integer
    lda, double precision, dimension( * ) tau, double precision, dimension(
    ldc, * ) c, integer ldc, double precision, dimension( * ) work, integer
    lwork, integer info)

DORMRZ

🌸 Purpose 🌸

same energy, real-number edition β€” DORMRZ overwrites the general real M-by-N matrix C with:

                SIDE = 'L'     SIDE = 'R'
TRANS = 'N':      Q * C          C * Q
TRANS = 'T':      Q**T * C       C * Q**T

where Q is a real orthogonal matrix defined as the product of k elementary reflectors:

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

as returned by DTZRZF. Q is of order M if SIDE = 'L' and of order N if SIDE = 'R'. periodt. πŸ’…

πŸŽ€ Parameters πŸŽ€

  • SIDE β€” SIDE is CHARACTER*1.
    • = 'L': apply Q or Q**T from the Left;
    • = 'R': apply Q or Q**T from the Right.
  • TRANS β€” TRANS is CHARACTER*1.
    • = 'N': no transpose, apply Q;
    • = 'T': transpose, apply Q**T.
  • 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.
  • L β€” L is INTEGER. the number of columns of the matrix A containing the meaningful part of the Householder reflectors.
    • if SIDE = 'L', M >= L >= 0, if SIDE = 'R', N >= L >= 0.
  • A β€” A is DOUBLE PRECISION 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 DTZRZF in the last k rows of its array argument A. also β€” A is modified by the routine but restored on exit. yes bestie, same trick. ✨

  • LDA β€” LDA is INTEGER. the leading dimension of the array A. LDA >= max(1,K).
  • TAU β€” TAU is DOUBLE PRECISION array, dimension (K). TAU(i) must contain the scalar factor of the elementary reflector H(i), as returned by DTZRZF.
  • 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**H*C or C*Q**H or C*Q.
  • LDC β€” LDC is INTEGER. the leading dimension of the array C. LDC >= max(1,M).
  • WORK β€” WORK is DOUBLE PRECISION 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.
🫢 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.
  • 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.

πŸ“ Contributors: πŸ“

  • A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA

⭐ Further Details: ⭐

again β€” an empty !> comment and that's it. the audacity 😭

πŸ¦‹ Definition πŸ¦‹

Definition at line 185 of file dormrz.f.


πŸ‘‘ subroutine sormrz

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

SORMRZ

🌸 Purpose 🌸

the single-precision sister β€” SORMRZ overwrites the general real M-by-N matrix C with:

                SIDE = 'L'     SIDE = 'R'
TRANS = 'N':      Q * C          C * Q
TRANS = 'T':      Q**T * C       C * Q**T

where Q is a real orthogonal matrix defined as the product of k elementary reflectors:

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

as returned by STZRZF. Q is of order M if SIDE = 'L' and of order N if SIDE = 'R'. she ate and left no crumbs. πŸ‘‘

πŸŽ€ Parameters πŸŽ€

  • SIDE β€” SIDE is CHARACTER*1.
    • = 'L': apply Q or Q**T from the Left;
    • = 'R': apply Q or Q**T from the Right.
  • TRANS β€” TRANS is CHARACTER*1.
    • = 'N': no transpose, apply Q;
    • = 'T': transpose, apply Q**T.
  • 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 β€”

okay so K is where we pick back up, and she's giving "I define the whole matrix Q" energy:

  • 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. periodt.
  • L β€” is INTEGER. The number of columns of the matrix A containing the meaningful part of the Householder reflectors. If SIDE = 'L', M >= L >= 0, if SIDE = 'R', N >= L >= 0. slay.
  • A β€” is REAL 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 STZRZF in the last k rows of its array argument A. A is modified by the routine but restored on exit. bestie, she changes and then puts it back β€” iconic behavior.
  • LDA β€” is INTEGER. The leading dimension of the array A. LDA >= max(1,K). no cap.
  • TAU β€” is REAL array, dimension (K). TAU(i) must contain the scalar factor of the elementary reflector H(i), as returned by STZRZF. she's the hidden ingredient fr fr.
  • C β€” is REAL 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. the way that C gets a whole new look πŸ’…
  • LDC β€” is INTEGER. The leading dimension of the array C. LDC >= max(1,M). yes bestie, respect the leading dimension.
  • WORK β€” is REAL array, dimension (MAX(1,LWORK)). On exit, if INFO = 0, WORK(1) returns the optimal LWORK. she's the workspace baddie.
  • 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.

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. lowkey a little diva move, but valid.

  • INFO β€” is INTEGER. = 0: successful exit. < 0: if INFO = -i, the i-th argument had an illegal value. red flag on the argument, bestie.

🌟 Author 🌟

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

🌸 Contributors: 🌸

  • A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA

🧚 Further Details: 🧚

the section is literally just !> β€” no extra lore, no hidden tea, no cap.

Definition at line 185 of file sormrz.f.


πŸ¦‹ subroutine zunmrz πŸ¦‹

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

ZUNMRZ πŸ’… main character energy, complex edition.

🎯 Purpose 🎯

okay so ZUNMRZ 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(2) . . . H(k)

as returned by ZTZRZF. Q is of order M if SIDE = 'L' and of order N if SIDE = 'R'. she's built from reflectors and she's ready to transform your matrix, periodt.

πŸ’… Parameters πŸ’…

  • SIDE β€” is CHARACTER*1. = 'L': apply Q or Q**H from the Left; = 'R': apply Q or Q**H from the Right. pick a side, bestie.
  • TRANS β€” is CHARACTER*1. = 'N': No transpose, apply Q; = 'C': Conjugate transpose, apply Q**H. no in-between.
  • M β€” is INTEGER. The number of rows of the matrix C. M >= 0. rows are valid.
  • N β€” is INTEGER. The number of columns of the matrix C. N >= 0. columns are valid too.
  • 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. same queen, complex era.
  • L β€” is INTEGER. The number of columns of the matrix A containing the meaningful part of the Householder reflectors. If SIDE = 'L', M >= L >= 0, if SIDE = 'R', N >= L >= 0. meaningful part only, we don't do filler.
  • A β€” is COMPLEX*16 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 ZTZRZF in the last k rows of its array argument A. A is modified by the routine but restored on exit. she's a temporary girlypop, she comes back.
  • LDA β€” is INTEGER. The leading dimension of the array A. LDA >= max(1,K). respect it.
  • TAU β€” is COMPLEX*16 array, dimension (K). TAU(i) must contain the scalar factor of the elementary reflector H(i), as returned by ZTZRZF. the scalar factor is doing so much work rn.
  • C β€” is COMPLEX*16 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 gets a whole new outfit, no returns.
  • LDC β€” is INTEGER. The leading dimension of the array C. LDC >= max(1,M). leading dimension stays booked and busy.
  • WORK β€” is COMPLEX*16 array, dimension (MAX(1,LWORK)). On exit, if INFO = 0, WORK(1) returns the optimal LWORK. workspace queen.
  • 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.

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. yes bestie, the -1 is a whole query moment, not a crash.

  • INFO β€” is INTEGER. = 0: successful exit. < 0: if INFO = -i, the i-th argument had an illegal value. if this hits, one of your arguments is not passing the vibe check.

🌟 Author 🌟

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

🌸 Contributors: 🌸

  • A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA

🧚 Further Details: 🧚

again, the section is just !> β€” literally no extra details, just vibes and a comment marker.

Definition at line 185 of file zunmrz.f.

🌈 Author 🌈

Generated automatically by Doxygen for LAPACK from the source code. πŸ’–


and that's the whole tea: this iconic page is from LAPACK Version 3.12.0, and you're reading unmrz(3).

πŸ“¦ where this page comes from