SRC/ztprfb.f(3)
π NAME
SRC/ztprfb.f(3) β this page lives in the Library Functions Manual, and it's all about ztprfb, your fave complex block-reflector bestie. β¨
β¨ SYNOPSIS
π§ Functions/Subroutines
subroutine ztprfb (side, trans, direct, storev, m, n, k, l, v, ldv, t,
ldt, a, lda, b, ldb, work, ldwork)
ZTPRFB applies a complex triangular-
pentagonal"blockreflectortoacomplexmatrix,whichiscomposedoftwoblocks.
πΈ Function/Subroutine Documentation
subroutine ztprfb (character side, character trans, character direct,
character storev, integer m, integer n, integer k, integer l,
complex*16, dimension( ldv, * ) v, integer ldv, complex*16, dimension(
ldt, * ) t, integer ldt, complex*16, dimension( lda, * ) a, integer lda,
complex*16, dimension( ldb, * ) b, integer ldb, complex*16, dimension(
ldwork, * ) work, integer ldwork)
ZTPRFB applies a complex "triangular-pentagonal" block reflector to a complex matrix, which is composed of two blocks. That's the whole plot, bestie. π
π Purpose
Okay so ZTPRFB takes a complex block reflector H or its conjugate transpose H**H and applies it to a complex matrix C. That C is made of two blocks: A and B. The reflector can come from the left or the right β your call. β¨
π₯ Parameters
Every single knob, no skips:
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βCOMPLEX*16array, 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βCOMPLEX*16array, dimension(LDT,K). The triangularK-by-KmatrixTin the representation of the block reflector.LDTβINTEGER. The leading dimension of the arrayT.LDT >= K.AβCOMPLEX*16array, 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βCOMPLEX*16array, 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βCOMPLEX*16array, 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.
π§ Further Details
Okay, here's the deep lore. The matrix C is a composite matrix formed from blocks A and B. The block B is of size M-by-N; if SIDE = 'R', A is of size M-by-K, and if SIDE = 'L', A is of size K-by-N. π«Ά
- If
SIDE = 'R'andDIRECT = 'F',C = [A B]. - If
SIDE = 'L'andDIRECT = 'F':
C = [A]
[B].
- If
SIDE = 'R'andDIRECT = 'B',C = [B A]. - If
SIDE = 'L'andDIRECT = 'B':
C = [B]
[A].
The pentagonal matrix V is composed of a rectangular block V1 and a trapezoidal block V2. The size of the trapezoidal block is determined by the parameter L, where 0<=L<=K. If L=K, the V2 block of V is triangular; if L=0, there is no trapezoidal block, thus V = V1 is 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 ztprfb.f.
π Author
Generated automatically by Doxygen for LAPACK from the source code.
And that's the whole page, bestie β stamped LAPACK Version 3.12.0, page SRC/ztprfb.f(3). π
β¨
π¦ 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