SRC/ctprfb.f(3)
π NAME π
okay bestie, welcome to SRC/ctprfb.f from the Library Functions Manual β this is the CTPRFB routine, and it's literally applying a complex triangular-pentagonal "block reflector" to a complex matrix that's composed of two blocks. no cap, it's giving linear algebra main character energy. π
β¨ SYNOPSIS β¨
π«Ά Functions/Subroutines π«Ά
subroutine ctprfb (side, trans, direct, storev, m, n, k, l, v, ldv, t,
ldt, a, lda, b, ldb, work, ldwork)
CTPRFB applies a complex triangular-pentagonal "block reflector" to a complex matrix, which is composed of two blocks. π
π Function/Subroutine Documentation π
subroutine ctprfb (character side, character trans, character direct,
character storev, integer m, integer n, integer k, integer l, 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( ldwork, * )
work, integer ldwork)
CTPRFB applies a complex "triangular-pentagonal" block reflector to a complex matrix, which is composed of two blocks.
π Purpose π
CTPRFB applies a complex block reflector H or its conjugate transpose H**H to a complex matrix C, which is composed of two blocks A and B, either from the left or right. that's the whole assignment, bestie. π¦
π Parameters π
SIDEβCHARACTER*1.= 'L': applyHorH**Hfrom the Left.= 'R': applyHorH**Hfrom the Right. π«ΆTRANSβCHARACTER*1.= 'N': applyH(No transpose).= 'C': applyH**H(Conjugate transpose). β¨DIRECTβCHARACTER*1. Indicates howHis formed from a product of elementary reflectors.= 'F':H = H(1) H(2) . . . H(k)(Forward).= 'B':H = H(k) . . . H(2) H(1)(Backward). π₯STOREVβCHARACTER*1. Indicates how the vectors which define the elementary reflectors are stored:= 'C': Columns;= 'R': Rows. πMβINTEGER. The number of rows of the matrixB.M >= 0. πNβINTEGER. The number of columns of the matrixB.N >= 0. πKβINTEGER. The order of the matrixT, i.e. the number of elementary reflectors whose product defines the block reflector.K >= 0. πLβINTEGER. The order of the trapezoidal part ofV.K >= L >= 0. See Further Details. πVβCOMPLEXarray, dimension(LDV,K)ifSTOREV = 'C';(LDV,M)ifSTOREV = 'R'andSIDE = 'L';(LDV,N)ifSTOREV = 'R'andSIDE = 'R'. The pentagonal matrixV, which contains the elementary reflectorsH(1), H(2), ..., H(K). See Further Details. π¦LDVβINTEGER. The leading dimension of the arrayV. IfSTOREV = 'C'andSIDE = 'L',LDV >= max(1,M); ifSTOREV = 'C'andSIDE = 'R',LDV >= max(1,N); ifSTOREV = 'R',LDV >= K. πΈTβCOMPLEXarray, dimension(LDT,K). The triangularK-by-KmatrixTin the representation of the block reflector. πLDTβINTEGER. The leading dimension of the arrayT.LDT >= K. πAβCOMPLEXarray, dimension(LDA,N)ifSIDE = 'L'or(LDA,K)ifSIDE = 'R'. On entry, theK-by-NorM-by-KmatrixA. On exit,Ais overwritten by the corresponding block ofH*CorH**H*CorC*HorC*H**H. See Further Details. π₯LDAβINTEGER. The leading dimension of the arrayA. IfSIDE = 'L',LDA >= max(1,K); IfSIDE = 'R',LDA >= max(1,M). π₯BβCOMPLEXarray, dimension(LDB,N). On entry, theM-by-NmatrixB. On exit,Bis overwritten by the corresponding block ofH*CorH**H*CorC*HorC*H**H. See Further Details. π₯LDBβINTEGER. The leading dimension of the arrayB.LDB >= max(1,M). π₯WORKβCOMPLEXarray, dimension(LDWORK,N)ifSIDE = 'L',(LDWORK,K)ifSIDE = 'R'. π§LDWORKβINTEGER. The leading dimension of the arrayWORK. IfSIDE = 'L',LDWORK >= K; ifSIDE = 'R',LDWORK >= M. π§
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
slay, academic royalty. πβ¨
π₯ Further Details π₯
okay bestie, this is the part where the shapes matter, so pay attention. π
- The matrix
Cis a composite matrix formed from blocksAandB. The blockBis of sizeM-by-N; ifSIDE = 'R',Ais of sizeM-by-K, and ifSIDE = 'L',Ais of sizeK-by-N. π - If
SIDE = 'R'andDIRECT = 'F',C = [A B]. - If
SIDE = 'L'andDIRECT = 'F', then:
C = [A]
[B]
- If
SIDE = 'R'andDIRECT = 'B',C = [B A]. - If
SIDE = 'L'andDIRECT = 'B', then:
C = [B]
[A]
- The pentagonal matrix
Vis composed of a rectangular blockV1and a trapezoidal blockV2. The size of the trapezoidal block is determined by the parameterL, where0<=L<=K. IfL=K, theV2block ofVis triangular; ifL=0, there is no trapezoidal block, thusV = V1is rectangular. π¦ - If
DIRECT = 'F'andSTOREV = 'C':
V = [V1]
[V2]
V2is upper trapezoidal (firstLrows ofK-by-Kupper triangular)
- If
DIRECT = 'F'andSTOREV = 'R':V = [V1 V2]V2is lower trapezoidal (firstLcolumns ofK-by-Klower triangular)
- If
DIRECT = 'B'andSTOREV = 'C':
V = [V2]
[V1]
V2is lower trapezoidal (lastLrows ofK-by-Klower triangular)
- If
DIRECT = 'B'andSTOREV = 'R':V = [V2 V1]V2is upper trapezoidal (lastLcolumns ofK-by-Kupper triangular)
- If
STOREV = 'C'andSIDE = 'L',VisM-by-KwithV2L-by-K. - If
STOREV = 'C'andSIDE = 'R',VisN-by-KwithV2L-by-K. - If
STOREV = 'R'andSIDE = 'L',VisK-by-MwithV2K-by-L. - If
STOREV = 'R'andSIDE = 'R',VisK-by-NwithV2K-by-L.
Definition at line 249 of file ctprfb.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
that's the whole page, bestie! brought to you by LAPACK, Version 3.12.0, from SRC/ctprfb.f(3) β stay complex, stay iconic, periodt. πβ¨
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms