/home/abui.../ctpmqrt.f(3)
πΈ ctpmqrt.f β LAPACK Library Functions Manual πΈ
okay bestie, so this page lives at /home/abui.../ctpmqrt.f(3) in the LAPACK Library Functions Manual, and it's literally all about one single icon of a subroutine. she's giving main character energy and she does one thing: she applies a complex orthogonal matrix Q to a general complex matrix C. and C is actually two blocks, A and B. periodt. π
β¨ NAME β¨
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/ctpmqrt.f
like, that's the whole name. it's a whole path. she's not mysterious, she's just filed very specifically. π
π¦ SYNOPSIS π¦
Functions/Subroutines
subroutine CTPMQRT (side, trans, m, n, k, l, nb, v, ldv, t, ldt, a, lda,
b, ldb, work, info)
CTPMQRT
π Function/Subroutine Documentation π
subroutine CTPMQRT (character side, character trans, integer m, integer n,
integer k, integer l, integer nb, complex, dimension( ldv, * ) v,
integer ldv, complex, dimension( ldt, * ) t, integer ldt, complex,
dimension( lda, * ) a, integer lda, complex, dimension( ldb, * ) b,
integer ldb, complex, dimension( * ) work, integer info)
CTPMQRT β yes, again. she said her name twice, she's confident, let her have it. β¨
π Purpose π
!> CTPMQRT applies a complex orthogonal matrix Q obtained from a !> complex block reflector H to a general !> complex matrix C, which consists of two blocks A and B. !>
translation: Q came from a complex block reflector H, and now she's getting applied to a general complex matrix C β which is lowkey just two blocks, A and B, living their lives stacked or side-by-side depending on the vibe. π₯
π 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 B.M >= 0. not me measuring the height of B πNβN is INTEGER. the number of columns of the matrix B.N >= 0. and this is her width. both non-negative, we respect that. πKβK is INTEGER. the number of elementary reflectors whose product defines the matrix Q. it's giving "built from pieces" and honestly? iconic. πLβL is INTEGER. the order of the trapezoidal part of V.K >= L >= 0. see Further Details, babes, it's down there. πNBβNB is INTEGER. the block size used for the storage of T.K >= NB >= 1. π¨ and listen: this must be the same value of NB used to generate T in CTPQRT. no cap, it has to match, do not freestyle this one.VβV is COMPLEX array, dimension (LDV,K). the i-th column must contain the vector which defines the elementary reflectorH(i), fori = 1,2,...,k, as returned byCTPQRTinB. see Further Details. πΈLDVβLDV is INTEGER. the leading dimension of the array V.- If
SIDE = 'L',LDV >= max(1,M); - if
SIDE = 'R',LDV >= max(1,N).
- If
TβT is COMPLEX array, dimension (LDT,K). the upper triangular factors of the block reflectors as returned byCTPQRT, stored as aNB-by-Kmatrix. π«LDTβLDT is INTEGER. the leading dimension of the array T.LDT >= NB.AβA is COMPLEX array, dimension(LDA,N)ifSIDE = 'L'or(LDA,K)ifSIDE = 'R'
On entry: the K-by-N or M-by-K matrix A. On exit: A is overwritten by the corresponding block of Q*C or Q**H*C or C*Q or C*Q**H. See Further Details. πͺ (yes she comes back different, that's the whole point)
LDAβLDA is INTEGER. the leading dimension of the array A. ok so heads up, word for word from the source: IfSIDE = 'L',LDC >= max(1,K); IfSIDE = 'R',LDC >= max(1,M). π«Ά that's literally what it says, I'm not editing the queen's handwriting.BβB is COMPLEX array, dimension (LDB,N). On entry, theM-by-Nmatrix B. On exit, B is overwritten by the corresponding block ofQ*CorQ**H*CorC*QorC*Q**H. See Further Details. π¦LDBβLDB is INTEGER. the leading dimension of the array B.LDB >= max(1,M). that's it, that's the rule.WORKβWORK is COMPLEX array. the dimension of WORK isN*NBifSIDE = 'L', orM*NBifSIDE = 'R'. β¨ size her correctly pls, she's working.INFOβINFO is INTEGERπ£= 0: successful exit (slay)< 0: ifINFO = -i, the i-th argument had an illegal value (oop β go check argument number i)
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the whole friend group co-signed this one. π«Ά
π Further Details: π
!> The columns of the pentagonal matrix V contain the elementary reflectors !> H(1), H(2), ..., H(K); V is composed of a rectangular block V1 and a !> trapezoidal block V2: > > V = [V1] > [V2]. > > The size of the trapezoidal block V2 is determined by the parameter L, > where 0 <= L <= K; V2 is upper trapezoidal, consisting of the first L > rows of a K-by-K upper triangular matrix. If L=K, V2 is upper triangular; > if L=0, there is no trapezoidal block, hence V = V1 is rectangular. > > If SIDE = 'L': C = [A] where A is K-by-N, B is M-by-N and V is M-by-K. > [B] > > If SIDE = 'R': C = [A B] where A is M-by-K, B is M-by-N and V is N-by-K. > > The complex orthogonal matrix Q is formed from V and T. > > If TRANS='N' and SIDE='L', C is on exit replaced with Q * C. > > If TRANS='C' and SIDE='L', C is on exit replaced with Q**H * C. > > If TRANS='N' and SIDE='R', C is on exit replaced with C * Q. > > If TRANS='C' and SIDE='R', C is on exit replaced with C * Q**H. >
so real quick, the shapes recap because I know you're a visual learner bestie π§
SIDE = 'L'β C is stacked, A on top of B. A isK-by-N, B isM-by-N, V isM-by-K.SIDE = 'R'β C is side-by-side,[A B]. A isM-by-K, B isM-by-N, V isN-by-K.- Q itself is formed from V and T. those two are a package deal, iykyk. π
and the four exit vibes, one more time so it's crystal:
TRANS='N'+SIDE='L'βQ * CTRANS='C'+SIDE='L'βQ**H * CTRANS='N'+SIDE='R'βC * QTRANS='C'+SIDE='R'βC * Q**H
π Definition π
Definition at line 214 of file ctpmqrt.f. β
Author (the meta one)
Generated automatically by Doxygen for LAPACK from the source code. π€ she was assembled by the robots, and she ate.
π that's the whole page, no crumbs left. shoutout to LAPACK, Version 3.12.0, and to the footer date stamp on /home/abui.../ctpmqrt.f(3) β mwah, go apply some matrices, bestie. πβ¨π
π¦ where this page comes from
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms