SRC/cunmbr.f(3)

πŸ’– NAME πŸ’–

okay bestie, welcome to the SRC/cunmbr.f page from the Library Functions Manual β€” it’s literally the home of the CUNMBR subroutine, and we’re about to get into it. no cap, every detail is staying right here. πŸ’…

✨ SYNOPSIS ✨

🌸 Functions/Subroutines 🌸

  • subroutine cunmbr (vect, side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info) β€” CUNMBR

πŸ¦‹ Function/Subroutine Documentation πŸ¦‹

🌟 subroutine cunmbr 🌟

subroutine cunmbr (character vect, 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 lwork, integer info)

CUNMBR

πŸŽ€ Purpose πŸŽ€

okay so here’s the vibe check: if VECT = 'Q', CUNMBR 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

And if VECT = 'P', CUNMBR overwrites the general complex M-by-N matrix C with:

                SIDE = 'L'     SIDE = 'R'
TRANS = 'N':      P * C          C * P
TRANS = 'C':      P**H * C       C * P**H

Here Q and P**H are the unitary matrices determined by CGEBRD when reducing a complex matrix A to bidiagonal form: A = Q * B * P**H. Q and P**H are defined as products of elementary reflectors H(i) and G(i) respectively. iconic math behavior, honestly.

Let nq = m if SIDE = 'L' and nq = n if SIDE = 'R'. So nq is literally the order of the unitary matrix Q or P**H that is applied.

If VECT = 'Q', A is assumed to have been an NQ-by-K matrix: if nq >= k, Q = H(1) H(2) . . . H(k); if nq < k, Q = H(1) H(2) . . . H(nq-1).

If VECT = 'P', A is assumed to have been a K-by-NQ matrix: if k < nq, P = G(1) G(2) . . . G(k); if k >= nq, P = G(1) G(2) . . . G(nq-1).

🌈 Parameters 🌈

  • VECT β€” this one is CHARACTER*1. Drop in 'Q' and you’re applying Q or Q**H; drop in 'P' and it’s P or P**H. pick your fighter.
  • SIDE β€” CHARACTER*1. 'L' means apply Q, Q**H, P or P**H from the Left; 'R' means apply them from the Right. left or right, no in-between.
  • TRANS β€” CHARACTER*1. 'N': No transpose, apply Q or P; 'C': Conjugate transpose, apply Q**H or P**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. If VECT = 'Q', it’s the number of columns in the original matrix reduced by CGEBRD. If VECT = 'P', it’s the number of rows in the original matrix reduced by CGEBRD. Constraint: K >= 0.
  • A β€” COMPLEX array, dimension (LDA,min(nq,K)) if VECT = 'Q', or (LDA,nq) if VECT = 'P'. These are the vectors which define the elementary reflectors H(i) and G(i), whose products determine the matrices Q and P, as returned by CGEBRD.
  • LDA β€” INTEGER. The leading dimension of the array A. If VECT = 'Q', LDA >= max(1,nq); if VECT = 'P', LDA >= max(1,min(nq,K)).
  • TAU β€” COMPLEX array, dimension (min(nq,K)). TAU(i) must contain the scalar factor of the elementary reflector H(i) or G(i) which determines Q or P, as returned by CGEBRD in the array argument TAUQ or TAUP.
  • 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 or P*C or P**H*C or C*P or C*P**H.
  • LDC β€” INTEGER. The leading dimension of the array C. Constraint: LDC >= max(1,M).
  • WORK β€” COMPLEX array, dimension (MAX(1,LWORK)). On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
  • LWORK β€” INTEGER. The dimension of the array WORK. If SIDE = 'L', LWORK >= max(1,N); if SIDE = 'R', LWORK >= max(1,M); if N = 0 or M = 0, LWORK >= 1. For optimum performance LWORK >= max(1,N*NB) if SIDE = 'L', and LWORK >= max(1,M*NB) if SIDE = 'R', where NB is the optimal blocksize. (NB = 0 if M = 0 or N = 0.) 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. workspace query era.
  • 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

Definition at line 195 of file cunmbr.f.

πŸͺ„ Author

Generated automatically by Doxygen for LAPACK from the source code.


okay that’s the whole page, bestie β€” from LAPACK Version 3.12.0, page SRC/cunmbr.f(3). slay your linear algebra era πŸ’…βœ¨πŸ«Ά

πŸ“¦ where this page comes from