gemqrt(3)

πŸ’… gemqrt(3) β€” multiply by Q from geqrt

This is the gemqrt(3) page from the Library Functions Manual, bestie. We're doing the LAPACK thing where you already have a Q from geqrt and now you need to actually multiply by it. Slay. ✨

🌸 NAME 🌸

gemqrt - gemqrt: multiply by Q from geqrt.

✨ SYNOPSIS ✨

🧚 Functions

  • CGEMQRT:
subroutine cgemqrt (side, trans, m, n, k, nb, v, ldv, t, ldt, c, ldc,
    work, info)
  • DGEMQRT:
subroutine dgemqrt (side, trans, m, n, k, nb, v, ldv, t, ldt, c, ldc,
    work, info)
  • SGEMQRT:
subroutine sgemqrt (side, trans, m, n, k, nb, v, ldv, t, ldt, c, ldc,
    work, info)
  • ZGEMQRT:
subroutine zgemqrt (side, trans, m, n, k, nb, v, ldv, t, ldt, c, ldc,
    work, info)

🫢 Detailed Description 🫢

The actual function docs are below, bestie β€” this part is just the landing zone. πŸ¦‹

πŸ‘‘ Function Documentation πŸ‘‘

πŸ’– subroutine cgemqrt β€” CGEMQRT

subroutine cgemqrt (character side, character trans, integer m, integer n,
    integer k, integer nb, complex, dimension( ldv, * ) v, integer ldv,
    complex, dimension( ldt, * ) t, integer ldt, complex, dimension( ldc, *
    ) c, integer ldc, complex, dimension( * ) work, integer info)

🎯 Purpose

Okay so CGEMQRT 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 orthogonal matrix defined as the product of K elementary reflectors:

Q = H(1) H(2) . . . H(K) = I - V T V**H

generated using the compact WY representation as returned by CGEQRT. πŸ’«

Q is of order M if SIDE = 'L' and of order N if SIDE = 'R'. Periodt.

πŸ’… Parameters

  • SIDE β€” direction check: CHARACTER*1. = 'L': apply Q or Q**H from the Left; = 'R': apply Q or Q**H from the Right. πŸ’…
  • TRANS β€” transpose vibe: CHARACTER*1. = 'N': No transpose, apply Q; = 'C': Conjugate transpose, apply Q**H. ✨
  • 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. πŸŽ€
  • NB β€” INTEGER. The block size used for the storage of T. K >= NB >= 1. This must be the same value of NB used to generate T in CGEQRT. πŸ”₯
  • V β€” COMPLEX array, dimension (LDV,K). The i-th column must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by CGEQRT in the first K columns of its array argument A. πŸ¦‹
  • LDV β€” INTEGER. The leading dimension of the array V. If SIDE = 'L', LDA >= max(1,M); if SIDE = 'R', LDA >= max(1,N). 🫢
  • T β€” COMPLEX array, dimension (LDT,K). The upper triangular factors of the block reflectors as returned by CGEQRT, stored as a NB-by-N matrix. 😭
  • LDT β€” INTEGER. The leading dimension of the array T. LDT >= NB. πŸ’œ
  • C β€” COMPLEX array, dimension (LDC,N). On entry, the M-by-N matrix C. On exit, C is overwritten by Q C, Q**H C, C Q**H or C Q. πŸ’€
  • LDC β€” INTEGER. The leading dimension of the array C. LDC >= max(1,M). 🌸
  • WORK β€” COMPLEX array. The dimension of WORK is N*NB if SIDE = 'L', or M*NB 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 166 of file cgemqrt.f.


πŸ’– subroutine dgemqrt β€” DGEMQRT

subroutine dgemqrt (character side, character trans, integer m, integer n,
    integer k, integer nb, double precision, dimension( ldv, * ) v, integer
    ldv, double precision, dimension( ldt, * ) t, integer ldt, double
    precision, dimension( ldc, * ) c, integer ldc, double precision,
    dimension( * ) work, integer info)

🎯 Purpose

DGEMQRT 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) = I - V T V**T

generated using the compact WY representation as returned by DGEQRT. πŸ’«

Q is of order M if SIDE = 'L' and of order N if SIDE = 'R'. No cap.

πŸ’… Parameters

  • SIDE β€” which side are we on: CHARACTER*1. = 'L': apply Q or Q**T from the Left; = 'R': apply Q or Q**T from the Right. πŸ’…
  • TRANS β€” transpose tea: CHARACTER*1. = 'N': No transpose, apply Q; = 'C': Transpose, apply Q**T. ✨
  • 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. πŸŽ€
  • NB β€” INTEGER. The block size used for the storage of T. K >= NB >= 1. This must be the same value of NB used to generate T in DGEQRT. πŸ”₯
  • V β€” DOUBLE PRECISION array, dimension (LDV,K). The i-th column must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by DGEQRT in the first K columns of its array argument A. πŸ¦‹
  • LDV β€” INTEGER. The leading dimension of the array V. If SIDE = 'L', LDA >= max(1,M); if SIDE = 'R', LDA >= max(1,N). 🫢
  • T β€” DOUBLE PRECISION array, dimension (LDT,K). The upper triangular factors of the block reflectors as returned by DGEQRT, stored as a NB-by-N matrix. 😭
  • LDT β€” INTEGER. The leading dimension of the array T. LDT >= NB. πŸ’œ
  • C β€” DOUBLE PRECISION array, dimension (LDC,N). On entry, the M-by-N matrix C. On exit, C is overwritten by Q C, Q**T C, C Q**T or C Q. πŸ’€
  • LDC β€” INTEGER. The leading dimension of the array C. LDC >= max(1,M). 🌸
  • WORK β€” DOUBLE PRECISION array. The dimension of WORK is N*NB if SIDE = 'L', or M*NB 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 166 of file dgemqrt.f.


πŸ’– subroutine sgemqrt β€” SGEMQRT

subroutine sgemqrt (character side, character trans, integer m, integer n,
    integer k, integer nb, real, dimension( ldv, * ) v, integer ldv, real,
    dimension( ldt, * ) t, integer ldt, real, dimension( ldc, * ) c, integer
    ldc, real, dimension( * ) work, integer info)

🎯 Purpose

SGEMQRT 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) = I - V T V**T

generated using the compact WY representation as returned by SGEQRT. πŸ’«

Q is of order M if SIDE = 'L' and of order N if SIDE = 'R'. Iconic.

πŸ’… Parameters

  • SIDE β€” pick a side: CHARACTER*1. = 'L': apply Q or Q**T from the Left; = 'R': apply Q or Q**T from the Right. πŸ’…
  • TRANS β€” transpose mode: CHARACTER*1. = 'N': No transpose, apply Q; = 'T': Transpose, apply Q**T. ✨
  • 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. πŸŽ€
  • NB β€” INTEGER. The block size used for the storage of T. K >= NB >= 1. This must be the same value of NB used to generate T in SGEQRT. πŸ”₯
  • V β€” REAL array, dimension (LDV,K). The i-th column must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by SGEQRT in the first K columns of its array argument A. πŸ¦‹
  • LDV β€” INTEGER. The leading dimension of the array V. If SIDE = 'L', LDA >= max(1,M); if SIDE = 'R', LDA >= max(1,N). 🫢
  • T β€” REAL array, dimension (LDT,K). The upper triangular factors of the block reflectors as returned by SGEQRT, stored as a NB-by-N matrix. 😭
  • LDT
  • LDT (INTEGER) β€” the leading dimension of the array T, bestie. Rule of the land: LDT >= NB. ✨
  • C β€” REAL array, dimension (LDC,N) πŸ’–
    • On entry: the M-by-N matrix C.
    • On exit: C gets overwritten by Q C, Q**T C, C Q**T or C Q. Like, it's gone, it's transformed, that's the whole point. πŸ¦‹
  • LDC (INTEGER) β€” the leading dimension of the array C. Constraint: LDC >= max(1,M). No cap.
  • WORK β€” REAL array. The dimension of WORK is N*NB if SIDE = 'L', or M*NB if SIDE = 'R'. It's giving "scratch space with rules", honestly. πŸ’…
  • INFO (INTEGER) β€” the vibe check at the end 😌
    • = 0: successful exit, we ate. πŸ”₯
    • < 0: if INFO = -i, the i-th argument had an illegal value. Somebody passed something cursed, and this is how you find out. πŸ’€

πŸ’œ Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Definition at line 166 of file sgemqrt.f.


πŸ¦‹ subroutine zgemqrt (character side, character trans, integer m, integer n, integer k, integer nb, complex*16, dimension( ldv, * ) v, integer ldv, complex*16, dimension( ldt, * ) t, integer ldt, complex*16, dimension( ldc, * ) c, integer ldc, complex*16, dimension( * ) work, integer info)

ZGEMQRT β€” okay so this is the complex*16 sibling and it is iconic. πŸ‘‘

✨ Purpose:

!>
!> ZGEMQRT 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 orthogonal matrix defined as the product of K
!> elementary reflectors:
!>
!>       Q = H(1) H(2) . . . H(K) = I - V T V**H
!>
!> generated using the compact WY representation as returned by ZGEQRT.
!>
!> Q is of order M if SIDE = 'L' and of order N  if SIDE = 'R'.
!>

So real talk: Q is a complex orthogonal matrix built as the product of K elementary reflectors, and it was generated with the compact WY representation like ZGEQRT returned it. Q is of order M if SIDE = 'L' and of order N if SIDE = 'R'. That's literally the whole deal. 🫢

🌸 Parameters

  • SIDE β€” CHARACTER1*
    • = 'L': apply Q or Q**H from the Left;
    • = 'R': apply Q or Q**H from the Right.
  • TRANS β€” CHARACTER1*
    • = 'N': No transpose, apply Q;
    • = 'C': Conjugate transpose, apply Q**H.
  • M (INTEGER) β€” the number of rows of the matrix C. Constraint: M >= 0.
  • N (INTEGER) β€” the number of columns of the matrix C. Constraint: 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.
  • NB (INTEGER) β€” the block size used for the storage of T. Constraint: K >= NB >= 1. ⚠️ Real one here: this must be the same value of NB used to generate T in ZGEQRT. Not a similar value. The same one. Don't fumble this. πŸ’€
  • V β€” COMPLEX16 array, dimension (LDV,K)* β€” the i-th column must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by ZGEQRT in the first K columns of its array argument A. That's the tea. πŸ“
  • LDV (INTEGER) β€” the leading dimension of the array V.
    • If SIDE = 'L', LDA >= max(1,M);
    • if SIDE = 'R', LDA >= max(1,N).
  • T β€” COMPLEX16 array, dimension (LDT,K)* β€” the upper triangular factors of the block reflectors as returned by ZGEQRT, stored as a NB-by-N matrix. πŸ’…
  • LDT (INTEGER) β€” the leading dimension of the array T. Constraint: LDT >= NB.
  • C β€” COMPLEX16 array, dimension (LDC,N)* πŸ’–
    • On entry: the M-by-N matrix C.
    • On exit: C is overwritten by Q C, Q**H C, C Q**H or C Q.
  • LDC (INTEGER) β€” the leading dimension of the array C. Constraint: LDC >= max(1,M).
  • WORK β€” COMPLEX16 array*. The dimension of WORK is N*NB if SIDE = 'L', or M*NB if SIDE = 'R'. Same deal as before, just complex now. ✨
  • INFO (INTEGER) β€” the final verdict 😭
    • = 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 zgemqrt.f.


πŸ‘‘ Author

Generated automatically by Doxygen for LAPACK from the source code.


And that's the whole page, bestie β€” every flag, every constraint, every vibe. 🧚

Okay so the actual footer energy: this is from LAPACK, Version 3.12.0, and the page is gemqrt(3). Generated automatically by Doxygen, so like, no human wrote it and yet it still ate. Slay. πŸŽ€βœ¨ periodt.

πŸ“¦ where this page comes from