tprfb(3)

✨ tprfb(3) ✨ β€” Library Functions Manual

okay so bestie, welcome to tprfb πŸ’… this page is the whole glow-up of larfb's energy: it applies a block reflector Q (like larfb does) but for the triangular-pentagonal store. it's giving custom reflector representation, no cap.


πŸŽ€ NAME πŸŽ€

tprfb β€” tprfb: applies Q (like larfb)


🌸 SYNOPSIS 🌸

Functions

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. πŸ’–

subroutine dtprfb (side, trans, direct, storev, m, n, k, l, v, ldv, t,
    ldt, a, lda, b, ldb, work, ldwork)

DTPRFB applies a real "triangular-pentagonal" block reflector to a real matrix, which is composed of two blocks.

subroutine stprfb (side, trans, direct, storev, m, n, k, l, v, ldv, t,
    ldt, a, lda, b, ldb, work, ldwork)

STPRFB applies a real "triangular-pentagonal" block reflector to a real matrix, which is composed of two blocks.

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" block reflector to a complex matrix, which is composed of two blocks. ⭐


πŸ¦‹ Detailed Description πŸ¦‹

bestie. this is where it gets real. we're going deep, four routines at a time. 🫢

πŸ’œ Function Documentation πŸ’œ

πŸ”₯ subroutine ctprfb πŸ”₯

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. it's literally the whole personality of this routine, ok? πŸ‘‘

✨ 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 it, that's the vibe. πŸ’…

🌈 Parameters 🌈

  • SIDE β€” CHARACTER*1
    • = 'L': apply H or H**H from the Left
    • = 'R': apply H or H**H from the Right
  • TRANS β€” CHARACTER*1
    • = 'N': apply H (No transpose)
    • = 'C': apply H**H (Conjugate transpose)
  • DIRECT β€” CHARACTER*1 Indicates how H is 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 matrix B. M >= 0.
  • N β€” INTEGER The number of columns of the matrix B. N >= 0.
  • K β€” INTEGER The order of the matrix T, i.e. the number of elementary reflectors whose product defines the block reflector. K >= 0.
  • L β€” INTEGER The order of the trapezoidal part of V. K >= L >= 0. See Further Details.
  • V β€” COMPLEX array, dimension
(LDV,K) if STOREV = 'C'
(LDV,M) if STOREV = 'R' and SIDE = 'L'
(LDV,N) if STOREV = 'R' and SIDE = 'R'

The pentagonal matrix V, which contains the elementary reflectors H(1), H(2), ..., H(K). See Further Details.

  • LDV β€” INTEGER The leading dimension of the array V. If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M); if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N); if STOREV = 'R', LDV >= K.
  • T β€” COMPLEX array, dimension (LDT,K) The triangular K-by-K matrix T in the representation of the block reflector.
  • LDT β€” INTEGER The leading dimension of the array T. LDT >= K.
  • A β€” COMPLEX array, dimension
(LDA,N) if SIDE = 'L' or (LDA,K) if SIDE = 'R'

On entry, the K-by-N or M-by-K matrix A. On exit, A is overwritten by the corresponding block of H*C or H**H*C or C*H or C*H**H. See Further Details.

  • LDA β€” INTEGER The leading dimension of the array A. If SIDE = 'L', LDA >= max(1,K); If SIDE = 'R', LDA >= max(1,M).
  • B β€” COMPLEX array, dimension (LDB,N) On entry, the M-by-N matrix B. On exit, B is overwritten by the corresponding block of H*C or H**H*C or C*H or C*H**H. See Further Details.
  • LDB β€” INTEGER The leading dimension of the array B. LDB >= max(1,M).
  • WORK β€” COMPLEX array, dimension
(LDWORK,N) if SIDE = 'L',
(LDWORK,K) if SIDE = 'R'.
  • LDWORK β€” INTEGER The leading dimension of the array WORK. If SIDE = 'L', LDWORK >= K; if SIDE = 'R', LDWORK >= M.

🌟 Author 🌟

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

🧚 Further Details: 🧚

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' and DIRECT = 'F', C = [A B].

If SIDE = 'L' and DIRECT = 'F':

C = [A]
    [B].

If SIDE = 'R' and DIRECT = 'B', C = [B A].

If SIDE = 'L' and DIRECT = '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. πŸ’€ (yes, the trapezoid leaves when L=0, iconic behaviour)

If DIRECT = 'F' and STOREV = 'C':

V = [V1]
    [V2]
  • V2 is upper trapezoidal (first L rows of K-by-K upper triangular)

If DIRECT = 'F' and STOREV = 'R':

V = [V1 V2]
  • V2 is lower trapezoidal (first L columns of K-by-K lower triangular)

If DIRECT = 'B' and STOREV = 'C':

V = [V2]
    [V1]
  • V2 is lower trapezoidal (last L rows of K-by-K lower triangular)

If DIRECT = 'B' and STOREV = 'R':

V = [V2 V1]
  • V2 is upper trapezoidal (last L columns of K-by-K upper triangular)

If STOREV = 'C' and SIDE = 'L', V is M-by-K with V2 L-by-K.

If STOREV = 'C' and SIDE = 'R', V is N-by-K with V2 L-by-K.

If STOREV = 'R' and SIDE = 'L', V is K-by-M with V2 K-by-L.

If STOREV = 'R' and SIDE = 'R', V is K-by-N with V2 K-by-L.

Definition at line 249 of file ctprfb.f. πŸ“


πŸ’– subroutine dtprfb πŸ’–

subroutine dtprfb (character side, character trans, character direct,
    character storev, integer m, integer n, integer k, integer l, double
    precision, dimension( ldv, * ) v, integer ldv, double precision,
    dimension( ldt, * ) t, integer ldt, double precision, dimension( lda, *
    ) a, integer lda, double precision, dimension( ldb, * ) b, integer ldb,
    double precision, dimension( ldwork, * ) work, integer ldwork)

DTPRFB applies a real "triangular-pentagonal" block reflector to a real matrix, which is composed of two blocks. yes bestie, it's the real one β€” DOUBLE PRECISION everywhere, no imaginary parts invited πŸŽ€

✨ Purpose: ✨

DTPRFB applies a real block reflector H or its transpose H**T to a real matrix C, which is composed of two blocks A and B, either from the left or right. πŸ¦‹

🌈 Parameters 🌈

  • SIDE β€” CHARACTER*1
    • = 'L': apply H or H**T from the Left
    • = 'R': apply H or H**T from the Right
  • TRANS β€” CHARACTER*1
    • = 'N': apply H (No transpose)
    • = 'T': apply H**T (Transpose)
  • DIRECT β€” CHARACTER*1 Indicates how H is 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 matrix B. M >= 0.
  • N β€” INTEGER The number of columns of the matrix B. N >= 0.
  • K β€” INTEGER The order of the matrix T, i.e. the number of elementary reflectors whose product defines the block reflector. K >= 0.
  • L β€” INTEGER The order of the trapezoidal part of V. K >= L >= 0. See Further Details.
  • V β€” DOUBLE PRECISION array, dimension
(LDV,K) if STOREV = 'C'
(LDV,M) if STOREV = 'R' and SIDE = 'L'
(LDV,N) if STOREV = 'R' and SIDE = 'R'

The pentagonal matrix V, which contains the elementary reflectors H(1), H(2), ..., H(K). See Further Details.

  • LDV

okay bestie that's where this part stops β€” the LDV description is being dramatic and continuing in the next part, so don't go anywhere πŸ’…βœ¨

  • LDV β€” okay so LDV is an INTEGER, and it's the leading dimension of the array V, bestie. If STOREV = 'C' and SIDE = 'L', then LDV >= max(1,M); if STOREV = 'C' and SIDE = 'R', then LDV >= max(1,N); and if STOREV = 'R', then LDV >= K. No cap, that's the rule πŸ’…
  • T β€” T is a DOUBLE PRECISION array, dimension (LDT,K). It's the triangular K-by-K matrix T in the representation of the block reflector. Iconic little triangle, honestly πŸŽ€
  • LDT β€” LDT is an INTEGER, the leading dimension of the array T. And LDT >= K. Periodt ✨
  • A β€” A is a DOUBLE PRECISION array, dimension (LDA,N) if SIDE = 'L' or (LDA,K) if SIDE = 'R'. On entry, it's the K-by-N or M-by-K matrix A. On exit, A is overwritten by the corresponding block of H*C or H**T*C or C*H or C*H**T. See Further Details, bestie πŸ’–
  • LDA β€” LDA is an INTEGER, the leading dimension of the array A. If SIDE = 'L', then LDA >= max(1,K); if SIDE = 'R', then LDA >= max(1,M). Slay those bounds 🌸
  • B β€” B is a DOUBLE PRECISION array, dimension (LDB,N). On entry, it's the M-by-N matrix B. On exit, B is overwritten by the corresponding block of H*C or H**T*C or C*H or C*H**T. See Further Details. She's getting rewritten, not ignored πŸ’…
  • LDB β€” LDB is an INTEGER, the leading dimension of the array B. And LDB >= max(1,M). That's the vibe check for LDB πŸ¦‹
  • WORK β€” WORK is a DOUBLE PRECISION array, dimension (LDWORK,N) if SIDE = 'L', or (LDWORK,K) if SIDE = 'R'. The workspace is lowkey doing the most 🫢
  • LDWORK β€” LDWORK is an INTEGER, the leading dimension of the array WORK. If SIDE = 'L', then LDWORK >= K; if SIDE = 'R', then LDWORK >= M. That's the whole rule, no extra lore ✨

πŸ‘‘ Author πŸ‘‘

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

✨ Further Details ✨

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. She's a combo situation, not a single matrix, iykyk πŸ’œ

If SIDE = 'R' and DIRECT = 'F':

C = [A B]

If SIDE = 'L' and DIRECT = 'F':

C = [A]
    [B]

If SIDE = 'R' and DIRECT = 'B':

C = [B A]

If SIDE = 'L' and DIRECT = '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. It's giving shape-shifter, but make it linear algebra 🧚

If DIRECT = 'F' and STOREV = 'C':

V = [V1]
    [V2]
  • V2 is upper trapezoidal (first L rows of K-by-K upper triangular)

If DIRECT = 'F' and STOREV = 'R':

V = [V1 V2]
  • V2 is lower trapezoidal (first L columns of K-by-K lower triangular)

If DIRECT = 'B' and STOREV = 'C':

V = [V2]
    [V1]
  • V2 is lower trapezoidal (last L rows of K-by-K lower triangular)

If DIRECT = 'B' and STOREV = 'R':

V = [V2 V1]
  • V2 is upper trapezoidal (last L columns of K-by-K upper triangular)

And the size situation, because context is everything:

  • If STOREV = 'C' and SIDE = 'L', V is M-by-K with V2 L-by-K.
  • If STOREV = 'C' and SIDE = 'R', V is N-by-K with V2 L-by-K.
  • If STOREV = 'R' and SIDE = 'L', V is K-by-M with V2 K-by-L.
  • If STOREV = 'R' and SIDE = 'R', V is K-by-N with V2 K-by-L.

Definition at line 249 of file dtprfb.f.


πŸ¦‹ subroutine stprfb πŸ¦‹

subroutine stprfb (character side, character trans, character direct,
    character storev, integer m, integer n, integer k, integer l, real,
    dimension( ldv, * ) v, integer ldv, real, dimension( ldt, * ) t, integer
    ldt, real, dimension( lda, * ) a, integer lda, real, dimension( ldb, * )
    b, integer ldb, real, dimension( ldwork, * ) work, integer ldwork)

STPRFB applies a real "triangular-pentagonal" block reflector to a real matrix, which is composed of two blocks. Same energy as before, but now we're in REAL territory, bestie 🌈

🌟 Purpose 🌟

STPRFB applies a real block reflector H or its transpose H**T to a real matrix C, which is composed of two blocks A and B, either from the left or right. Left or right, she's applying either way πŸ’…

✨ Parameters ✨

  • SIDE β€” SIDE is CHARACTER*1. = 'L': apply H or H**T from the Left. = 'R': apply H or H**T from the Right. Pick a side, any side πŸŽ€
  • TRANS β€” TRANS is CHARACTER*1. = 'N': apply H (No transpose). = 'T': apply H**T (Transpose). The T stands for "transpose era", obviously ✨
  • DIRECT β€” DIRECT is CHARACTER*1, and it indicates how H is 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). Forward or backward, she contains multitudes πŸ¦‹
  • STOREV β€” STOREV is CHARACTER*1, and it indicates how the vectors which define the elementary reflectors are stored. = 'C': Columns. = 'R': Rows. Columns or rows, the vectors are stored with intention πŸ’–
  • M β€” M is an INTEGER. It's the number of rows of the matrix B. And M >= 0. Respect the zero case, bestie 🫢
  • N β€” N is an INTEGER. It's the number of columns of the matrix B. And N >= 0. Again: zero is valid, no erasure 🌸
  • K β€” K is an INTEGER. It's the order of the matrix T, i.e. the number of elementary reflectors whose product defines the block reflector. And K >= 0. The reflectors are reflecting, periodt πŸ’…
  • L β€” L is an INTEGER. It's the order of the trapezoidal part of V. And K >= L >= 0. See Further Details. Trapezoidal era is real πŸ”₯
  • V β€” V is a REAL array, dimension (LDV,K) if STOREV = 'C', (LDV,M) if STOREV = 'R' and SIDE = 'L', or (LDV,N) if STOREV = 'R' and SIDE = 'R'. It's the pentagonal matrix V, which contains the elementary reflectors H(1), H(2), ..., H(K). See Further Details. Pentagonal, not regular pentagon, don't get it twisted 🧚
  • LDV β€” LDV is an INTEGER, the leading dimension of the array V. If STOREV = 'C' and SIDE = 'L', then LDV >= max(1,M); if STOREV = 'C' and SIDE = 'R', then LDV >= max(1,N); if STOREV = 'R', then LDV >= K. Same leading-dimension rules, new datatype, no cap πŸ’œ
  • T β€” T is a REAL array, dimension (LDT,K). It's the triangular K-by-K matrix T in the representation of the block reflector. Triangular and thriving ⭐
  • LDT β€” LDT is an INTEGER, the leading dimension of the array T. And LDT >= K. That's it, that's the constraint πŸŽ€
  • A β€” A is a REAL array, dimension (LDA,N) if SIDE = 'L' or (LDA,K) if SIDE = 'R'. On entry, it's the K-by-N or M-by-K matrix A. On exit, A is overwritten by the corresponding block of H*C or H**T*C or C*H or C*H**T. See Further Details. She enters as herself and leaves as the corresponding block, main character behavior πŸ‘‘
  • LDA β€” LDA is an INTEGER, the leading dimension of the array A. If SIDE = 'L', then LDA >= max(1,K); if SIDE = 'R', then LDA >= max(1,M). Keep LDA fed and happy 🌸
  • B β€” B is a REAL array, dimension (LDB,N). On entry, it's the M-by-N matrix B. On exit, B is overwritten by the corresponding block of H*C or H**T*C or C*H or C*H**T. See Further Details. Overwritten, but make it fashion πŸ’…
  • LDB β€” LDB is an INTEGER, the leading dimension of the array B. And LDB >= max(1,M). The B matrix deserves proper leading-dimension care πŸ¦‹
  • WORK β€” WORK is a REAL array, dimension (LDWORK,N) if SIDE = 'L', or (LDWORK,K) if SIDE = 'R'. Workspace stays working, honestly 🫢
  • LDWORK β€” LDWORK is an INTEGER, the leading dimension of the array WORK. If SIDE = 'L', then LDWORK >= K; if SIDE = 'R', then LDWORK >= M. Respect the workspace bounds, bestie ✨

πŸ‘‘ Author πŸ‘‘

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

🌸 Further Details 🌸

okay so the matrix C is a composite matrix made from blocks A and B. Block B is M-by-N; if SIDE = 'R', then A is M-by-K, and if SIDE = 'L', then A is K-by-N. πŸ’…

If SIDE = 'R' and DIRECT = 'F', C = [A B].

If SIDE = 'L' and DIRECT = 'F', C = [A]
                                    [B].

If SIDE = 'R' and DIRECT = 'B', C = [B A].

If SIDE = 'L' and DIRECT = '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' and STOREV = 'C':  V = [V1]
                                       [V2]
   - V2 is upper trapezoidal (first L rows of K-by-K upper triangular)

If DIRECT = 'F' and STOREV = 'R':  V = [V1 V2]

   - V2 is lower trapezoidal (first L columns of K-by-K lower triangular)

If DIRECT = 'B' and STOREV = 'C':  V = [V2]
                                       [V1]
   - V2 is lower trapezoidal (last L rows of K-by-K lower triangular)

If DIRECT = 'B' and STOREV = 'R':  V = [V2 V1]

   - V2 is upper trapezoidal (last L columns of K-by-K upper triangular)
If STOREV = 'C' and SIDE = 'L', V is M-by-K with V2 L-by-K.

If STOREV = 'C' and SIDE = 'R', V is N-by-K with V2 L-by-K.

If STOREV = 'R' and SIDE = 'L', V is K-by-M with V2 K-by-L.

If STOREV = 'R' and SIDE = 'R', V is K-by-N with V2 K-by-L.

Definition at line 249 of file stprfb.f.

πŸ’œ subroutine ztprfb β€” complex edition πŸ’œ

   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. iconic behavior honestly ✨

🌟 Purpose 🌟

ZTPRFB 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. πŸ¦‹

πŸŽ€ Parameters (the whole guest list) πŸŽ€

  • SIDE β€” SIDE is CHARACTER*1; = 'L': apply H or H**H from the Left; = 'R': apply H or H**H from the Right.
  • TRANS β€” TRANS is CHARACTER*1; = 'N': apply H (No transpose); = 'C': apply H**H (Conjugate transpose).
  • DIRECT β€” DIRECT is CHARACTER*1; indicates how H is 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 β€” STOREV is CHARACTER*1; indicates how the vectors which define the elementary reflectors are stored: = 'C': Columns; = 'R': Rows.
  • M β€” M is INTEGER; the number of rows of the matrix B. M >= 0.
  • N β€” N is INTEGER; the number of columns of the matrix B. N >= 0.
  • K β€” K is INTEGER; the order of the matrix T, i.e. the number of elementary reflectors whose product defines the block reflector. K >= 0.
  • L β€” L is INTEGER; the order of the trapezoidal part of V. K >= L >= 0. See Further Details.
  • V β€” V is COMPLEX*16 array, dimension (LDV,K) if STOREV = 'C'; (LDV,M) if STOREV = 'R' and SIDE = 'L'; (LDV,N) if STOREV = 'R' and SIDE = 'R'. The pentagonal matrix V, which contains the elementary reflectors H(1), H(2), ..., H(K). See Further Details.
  • LDV β€” LDV is INTEGER; the leading dimension of the array V. If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M); if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N); if STOREV = 'R', LDV >= K.
  • T β€” T is COMPLEX*16 array, dimension (LDT,K). The triangular K-by-K matrix T in the representation of the block reflector.
  • LDT β€” LDT is INTEGER; the leading dimension of the array T. LDT >= K.
  • A β€” A is COMPLEX*16 array, dimension (LDA,N) if SIDE = 'L' or (LDA,K) if SIDE = 'R'. On entry, the K-by-N or M-by-K matrix A. On exit, A is overwritten by the corresponding block of H*C or H**H*C or C*H or C*H**H. See Further Details.
  • LDA β€” LDA is INTEGER; the leading dimension of the array A. If SIDE = 'L', LDA >= max(1,K); If SIDE = 'R', LDA >= max(1,M).
  • B β€” B is COMPLEX*16 array, dimension (LDB,N). On entry, the M-by-N matrix B. On exit, B is overwritten by the corresponding block of H*C or H**H*C or C*H or C*H**H. See Further Details.
  • LDB β€” LDB is INTEGER; the leading dimension of the array B. LDB >= max(1,M).
  • WORK β€” WORK is COMPLEX*16 array, dimension (LDWORK,N) if SIDE = 'L', (LDWORK,K) if SIDE = 'R'.
  • LDWORK β€” LDWORK is INTEGER; the leading dimension of the array WORK. If SIDE = 'L', LDWORK >= K; if SIDE = 'R', LDWORK >= M.

πŸ‘‘ Author πŸ‘‘

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

✨ Further Details: the encore ✨

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' and DIRECT = 'F', C = [A B].

If SIDE = 'L' and DIRECT = 'F', C = [A]
                                    [B].

If SIDE = 'R' and DIRECT = 'B', C = [B A].

If SIDE = 'L' and DIRECT = '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' and STOREV = 'C':  V = [V1]
                                       [V2]
   - V2 is upper trapezoidal (first L rows of K-by-K upper triangular)

If DIRECT = 'F' and STOREV = 'R':  V = [V1 V2]

   - V2 is lower trapezoidal (first L columns of K-by-K lower triangular)

If DIRECT = 'B' and STOREV = 'C':  V = [V2]
                                       [V1]
   - V2 is lower trapezoidal (last L rows of K-by-K lower triangular)

If DIRECT = 'B' and STOREV = 'R':  V = [V2 V1]

   - V2 is upper trapezoidal (last L columns of K-by-K upper triangular)
If STOREV = 'C' and SIDE = 'L', V is M-by-K with V2 L-by-K.

If STOREV = 'C' and SIDE = 'R', V is N-by-K with V2 L-by-K.

If STOREV = 'R' and SIDE = 'L', V is K-by-M with V2 K-by-L.

If STOREV = 'R' and SIDE = 'R', V is K-by-N with V2 K-by-L.

Definition at line 249 of file ztprfb.f.

πŸ‘‘ Author 🌈

Generated automatically by Doxygen for LAPACK from the source code.


Cute sign-off, bestie: this page is from LAPACK, Version 3.12.0, and the footer's date-ish spot ends with tprfb(3) β€” no separate date printed in this copy, no cap. πŸ’–βœ¨

πŸ“¦ where this page comes from