unm2r(3)

πŸ’– NAME πŸ’–

Library Functions Manual? More like library functions bestie. This is unm2r(3) β€” unm2r β€” {un,or}m2r: multiply by Q from geqrf, level 2.


✨ SYNOPSIS ✨

🫢 Functions 🫢

  • cunm2r β€” CUNM2R multiplies a general matrix by the unitary matrix from a QR factorization determined by cgeqrf (unblocked algorithm).
subroutine cunm2r (side, trans, m, n, k, a, lda, tau, c, ldc, work,
    info)
  • dorm2r β€” DORM2R multiplies a general matrix by the orthogonal matrix from a QR factorization determined by sgeqrf (unblocked algorithm).
subroutine dorm2r (side, trans, m, n, k, a, lda, tau, c, ldc, work,
    info)
  • sorm2r β€” SORM2R multiplies a general matrix by the orthogonal matrix from a QR factorization determined by sgeqrf (unblocked algorithm).
subroutine sorm2r (side, trans, m, n, k, a, lda, tau, c, ldc, work,
    info)
  • zunm2r β€” ZUNM2R multiplies a general matrix by the unitary matrix from a QR factorization determined by cgeqrf (unblocked algorithm).
subroutine zunm2r (side, trans, m, n, k, a, lda, tau, c, ldc, work,
    info)

🌈 DETAILED DESCRIPTION 🌈

Okay so this is the overview zone β€” the real function-by-function tea starts right below in Function Documentation. πŸ’…


πŸ‘‘ FUNCTION DOCUMENTATION πŸ‘‘

🌟 subroutine cunm2r 🌟

subroutine cunm2r (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 info)

CUNM2R multiplies a general matrix by the unitary matrix from a QR factorization determined by cgeqrf (unblocked algorithm).

πŸ’« Purpose πŸ’«

Okay so CUNM2R overwrites the general complex m-by-n matrix C with:

Q * C  if SIDE = 'L' and TRANS = 'N', or

Q**H* C  if SIDE = 'L' and TRANS = 'C', or

C * Q  if SIDE = 'R' and TRANS = 'N', or

C * Q**H if SIDE = 'R' and TRANS = 'C',

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 CGEQRF. Q is of order m if SIDE = 'L' and of order n if SIDE = 'R'.

πŸŽ€ Parameters πŸŽ€

  • SIDE β€” CHARACTER*1. = 'L': apply Q or Q**H from the Left; = 'R': apply Q or Q**H from the Right.
  • TRANS β€” CHARACTER*1. = 'N': apply Q (No transpose); = 'C': apply Q**H (Conjugate transpose).
  • M β€” INTEGER. The number of rows of the matrix C. M >= 0.
  • N β€” INTEGER. The number of columns of the matrix C. N >= 0.
  • K β€” INTEGER. The number of elementary reflectors whose product defines the matrix Q. If SIDE = 'L', M >= K >= 0; if SIDE = 'R', N >= K >= 0.
  • A β€” COMPLEX array, dimension (LDA,K). The i-th column must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by CGEQRF in the first k columns of its array argument A. A is modified by the routine but restored on exit.
  • LDA β€” INTEGER. The leading dimension of the array A. If SIDE = 'L', LDA >= max(1,M); if SIDE = 'R', LDA >= max(1,N).
  • TAU β€” COMPLEX array, dimension (K). TAU(i) must contain the scalar factor of the elementary reflector H(i), as returned by CGEQRF.
  • C β€” 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 β€” INTEGER. The leading dimension of the array C. LDC >= max(1,M).
  • WORK β€” COMPLEX array, dimension (N) if SIDE = 'L', (M) if SIDE = 'R'.
  • INFO β€” 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 157 of file cunm2r.f.


🌟 subroutine dorm2r 🌟

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

DORM2R multiplies a general matrix by the orthogonal matrix from a QR factorization determined by sgeqrf (unblocked algorithm).

πŸ’« Purpose πŸ’«

Okay so DORM2R overwrites the general real m by n matrix C with:

Q * C  if SIDE = 'L' and TRANS = 'N', or

Q**T* C  if SIDE = 'L' and TRANS = 'T', or

C * Q  if SIDE = 'R' and TRANS = 'N', or

C * Q**T if SIDE = 'R' and TRANS = '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 DGEQRF. Q is of order m if SIDE = 'L' and of order n if SIDE = 'R'.

πŸŽ€ Parameters πŸŽ€

  • SIDE β€” CHARACTER*1. = 'L': apply Q or Q**T from the Left; = 'R': apply Q or Q**T from the Right.
  • TRANS β€” CHARACTER*1. = 'N': apply Q (No transpose); = 'T': apply Q**T (Transpose).
  • M β€” INTEGER. The number of rows of the matrix C. M >= 0.
  • N β€” INTEGER. The number of columns of the matrix C. N >= 0.
  • K β€” INTEGER. The number of elementary reflectors whose product defines the matrix Q. If SIDE = 'L', M >= K >= 0; if SIDE = 'R', N >= K >= 0.
  • A β€” DOUBLE PRECISION array, dimension (LDA,K). The i-th column must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by DGEQRF in the first k columns of its array argument A.
  • LDA β€” INTEGER. The leading dimension of the array A. If SIDE = 'L', LDA >= max(1,M); if SIDE = 'R', LDA >= max(1,N).
  • TAU β€” DOUBLE PRECISION array, dimension (K). TAU(i) must contain the scalar factor of the elementary reflector H(i), as returned by DGEQRF.
  • C β€” DOUBLE PRECISION array, dimension (LDC,N). On entry, the m by n matrix C. On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q.
  • LDC β€” INTEGER. The leading dimension of the array C. LDC >= max(1,M).
  • WORK β€” DOUBLE PRECISION array, dimension (N) if SIDE = 'L', (M) if SIDE = 'R'.
  • INFO β€” 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 156 of file dorm2r.f.


🌟 subroutine sorm2r 🌟

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

SORM2R multiplies a general matrix by the orthogonal matrix from a QR factorization determined by sgeqrf (unblocked algorithm).

πŸ’« Purpose πŸ’«

Okay so SORM2R overwrites the general real m by n matrix C with:

Q * C  if SIDE = 'L' and TRANS = 'N', or

Q**T* C  if SIDE = 'L' and TRANS = 'T', or

C * Q  if SIDE = 'R' and TRANS = 'N', or

C * Q**T if SIDE = 'R' and TRANS = '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 SGEQRF. Q is of order m if SIDE = 'L' and of order n if SIDE = 'R'.

πŸŽ€ Parameters πŸŽ€

  • SIDE β€” CHARACTER*1. = 'L': apply Q or Q**T from the Left; = 'R': apply Q or Q**T from the Right.
  • TRANS β€” CHARACTER*1. = 'N': apply Q (No transpose); = 'T': apply Q**T (Transpose).
  • M β€” INTEGER. The number of rows of the matrix C. M >= 0.
  • N β€” INTEGER. The number of columns of the matrix C. N >= 0.
  • K β€” INTEGER. The number of elementary reflectors whose product defines the matrix Q. If SIDE = 'L', M >= K >= 0; if SIDE = 'R', N >= K >= 0.
  • A β€” REAL array, dimension (LDA,K). The i-th column must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by SGEQRF in the first k columns of its array argument A. A is modified by the routine but restored on exit.
  • LDA β€” INTEGER. The leading dimension of the array A. If SIDE = 'L', LDA >= max(1,M); if SIDE = 'R', LDA >= max(1,N).
  • TAU
  • TAU β€” ok so TAU is a REAL array, dimension (K). TAU(i) must contain the scalar factor of the elementary reflector H(i), as returned by SGEQRF. That's the whole assignment, bestie πŸ’–
  • C β€” C is a REAL array, dimension (LDC,N). On entry it's the m by n matrix C. On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q. Not me warning you: the original C is literally gone, so don't expect it to text you back 😭
  • LDC β€” LDC is INTEGER, the leading dimension of the array C. Constraint: LDC >= max(1,M). Periodt πŸ’…
  • WORK β€” WORK is a REAL array, dimension (N) if SIDE = 'L', and (M) if SIDE = 'R'. It's giving scratch space, but make it useful 🫢
  • INFO β€” INFO is INTEGER. = 0: successful exit. < 0: if INFO = -i, the i-th argument had an illegal value. Do not ignore this, bestie. It's literally the vibe check ⚠️

πŸ‘‘ Author πŸ‘‘

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

Definition at line 157 of file sorm2r.f.


πŸ¦‹ subroutine zunm2r πŸ¦‹

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

ZUNM2R multiplies a general matrix by the unitary matrix from a QR factorization determined by cgeqrf (unblocked algorithm). Iconic behavior, no cap πŸ‘‘

✨ Purpose ✨

ZUNM2R overwrites the general complex m-by-n matrix C with:

      Q * C  if SIDE = 'L' and TRANS = 'N', or

      Q**H* C  if SIDE = 'L' and TRANS = 'C', or

      C * Q  if SIDE = 'R' and TRANS = 'N', or

      C * Q**H if SIDE = 'R' and TRANS = 'C',

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 ZGEQRF. Q is of order m if SIDE = 'L' and of order n if SIDE = 'R'. It's giving matrix magic, and honestly? Obsessed. 🌈

πŸ’… Parameters πŸ’…

  • SIDE β€” 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 β€” TRANS is CHARACTER*1. = 'N': apply Q (No transpose). = 'C': apply Q**H (Conjugate transpose). Conjugate transpose is the main character here, iykyk. πŸ’œ
  • M β€” M is INTEGER, the number of rows of the matrix C. Constraint: M >= 0. Respect the row count fr fr ✨
  • N β€” N is INTEGER, the number of columns of the matrix C. Constraint: N >= 0. Columns are also valid, periodt 🌸
  • K β€” K is INTEGER, the number of elementary reflectors whose product defines the matrix Q. If SIDE = 'L', then M >= K >= 0; if SIDE = 'R', then N >= K >= 0. The way these bounds are not optional... πŸ‘€
  • A β€” A is a COMPLEX*16 array, dimension (LDA,K). 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. A is modified by the routine but restored on exit. So it gets touched, but it gets put back. We love a respectful icon 🫢
  • LDA β€” LDA is INTEGER, the leading dimension of the array A. If SIDE = 'L', then LDA >= max(1,M); if SIDE = 'R', then LDA >= max(1,N). Do not fumble this one, bestie. 🚨
  • TAU β€” TAU is a COMPLEX*16 array, dimension (K). TAU(i) must contain the scalar factor of the elementary reflector H(i), as returned by ZGEQRF. Same energy, complex edition πŸ’–
  • C β€” C is a COMPLEX*16 array, dimension (LDC,N). On entry, it's 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. Again: overwritten means the old C is not coming back. Not me being dramatic, just accurate 😭
  • LDC β€” LDC is INTEGER, the leading dimension of the array C. Constraint: LDC >= max(1,M). Slay the dimension check πŸ’…
  • WORK β€” WORK is a COMPLEX*16 array, dimension (N) if SIDE = 'L', and (M) if SIDE = 'R'. Scratch space but make it make sense ✨
  • INFO β€” INFO is INTEGER. = 0: successful exit. < 0: if INFO = -i, the i-th argument had an illegal value. This is your bestie telling you something went wrong β€” listen. 🫢

🌈 Author 🌈

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

Definition at line 157 of file zunm2r.f.

🫢 Author 🫢

Generated automatically by Doxygen for LAPACK from the source code.


Footer stamp: LAPACK, Version 3.12.0, unm2r(3) β€” no date listed in the footer, so we're not inventing one. Bye bestie, go slay those matrices! πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from