tprfb#

Functions

void stprfb(
    const char*          side,
    const char*          trans,
    const char*          direct,
    const char*          storev,
    const INT            m,
    const INT            n,
    const INT            k,
    const INT            l,
    const f32*  restrict V,
    const INT            ldv,
    const f32*  restrict T,
    const INT            ldt,
          f32*  restrict A,
    const INT            lda,
          f32*  restrict B,
    const INT            ldb,
          f32*  restrict work,
    const INT            ldwork
);
void stprfb(const char *side, const char *trans, const char *direct, const char *storev, const INT m, const INT n, const INT k, const INT l, const f32 *restrict V, const INT ldv, const f32 *restrict T, const INT ldt, f32 *restrict A, const INT lda, f32 *restrict B, const INT ldb, f32 *restrict work, const INT ldwork)#

STPRFB applies a real “triangular-pentagonal” 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

in
side

‘L’: apply H or H**T from the Left; ‘R’: apply H or H**T from the Right.

in
trans

‘N’: apply H (No transpose); ‘T’: apply H**T (Transpose).

in
direct

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).

in
storev

Indicates how the vectors which define the elementary reflectors are stored: ‘C’: Columns; ‘R’: Rows.

in
m

The number of rows of the matrix B. m >= 0.

in
n

The number of columns of the matrix B. n >= 0.

in
k

The order of the matrix T, i.e. the number of elementary reflectors whose product defines the block reflector. k >= 0.

in
l

The order of the trapezoidal part of V. k >= l >= 0. See Further Details.

in
V

The pentagonal matrix V, which contains the elementary reflectors H(1), H(2), …, H(k).

in
ldv

The leading dimension of V.

in
T

The triangular k-by-k matrix T in the representation of the block reflector.

in
ldt

The leading dimension of T. ldt >= k.

inout
A

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**T*C or C*H or C*H**T.

in
lda

The leading dimension of A.

inout
B

On entry, 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.

in
ldb

The leading dimension of B. ldb >= max(1,m).

out
work

Workspace array.

in
ldwork

The leading dimension of work.

Functions

void dtprfb(
    const char*          side,
    const char*          trans,
    const char*          direct,
    const char*          storev,
    const INT            m,
    const INT            n,
    const INT            k,
    const INT            l,
    const f64*  restrict V,
    const INT            ldv,
    const f64*  restrict T,
    const INT            ldt,
          f64*  restrict A,
    const INT            lda,
          f64*  restrict B,
    const INT            ldb,
          f64*  restrict work,
    const INT            ldwork
);
void dtprfb(const char *side, const char *trans, const char *direct, const char *storev, const INT m, const INT n, const INT k, const INT l, const f64 *restrict V, const INT ldv, const f64 *restrict T, const INT ldt, f64 *restrict A, const INT lda, f64 *restrict B, const INT ldb, f64 *restrict work, const INT ldwork)#

DTPRFB applies a real “triangular-pentagonal” 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

in
side

‘L’: apply H or H**T from the Left; ‘R’: apply H or H**T from the Right.

in
trans

‘N’: apply H (No transpose); ‘T’: apply H**T (Transpose).

in
direct

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).

in
storev

Indicates how the vectors which define the elementary reflectors are stored: ‘C’: Columns; ‘R’: Rows.

in
m

The number of rows of the matrix B. m >= 0.

in
n

The number of columns of the matrix B. n >= 0.

in
k

The order of the matrix T, i.e. the number of elementary reflectors whose product defines the block reflector. k >= 0.

in
l

The order of the trapezoidal part of V. k >= l >= 0. See Further Details.

in
V

The pentagonal matrix V, which contains the elementary reflectors H(1), H(2), …, H(k).

in
ldv

The leading dimension of V.

in
T

The triangular k-by-k matrix T in the representation of the block reflector.

in
ldt

The leading dimension of T. ldt >= k.

inout
A

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**T*C or C*H or C*H**T.

in
lda

The leading dimension of A.

inout
B

On entry, 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.

in
ldb

The leading dimension of B. ldb >= max(1,m).

out
work

Workspace array.

in
ldwork

The leading dimension of work.

Functions

void ctprfb(
    const char*          side,
    const char*          trans,
    const char*          direct,
    const char*          storev,
    const INT            m,
    const INT            n,
    const INT            k,
    const INT            l,
    const c64*  restrict V,
    const INT            ldv,
    const c64*  restrict T,
    const INT            ldt,
          c64*  restrict A,
    const INT            lda,
          c64*  restrict B,
    const INT            ldb,
          c64*  restrict work,
    const INT            ldwork
);
void ctprfb(const char *side, const char *trans, const char *direct, const char *storev, const INT m, const INT n, const INT k, const INT l, const c64 *restrict V, const INT ldv, const c64 *restrict T, const INT ldt, c64 *restrict A, const INT lda, c64 *restrict B, const INT ldb, c64 *restrict work, const INT ldwork)#

CTPRFB applies a complex “triangular-pentagonal” 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

in
side

‘L’: apply H or H**H from the Left; ‘R’: apply H or H**H from the Right.

in
trans

‘N’: apply H (No transpose); ‘C’: apply H**H (Conjugate transpose).

in
direct

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).

in
storev

Indicates how the vectors which define the elementary reflectors are stored: ‘C’: Columns; ‘R’: Rows.

in
m

The number of rows of the matrix B. m >= 0.

in
n

The number of columns of the matrix B. n >= 0.

in
k

The order of the matrix T, i.e. the number of elementary reflectors whose product defines the block reflector. k >= 0.

in
l

The order of the trapezoidal part of V. k >= l >= 0. See Further Details.

in
V

The pentagonal matrix V, which contains the elementary reflectors H(1), H(2), …, H(k).

in
ldv

The leading dimension of V.

in
T

The triangular k-by-k matrix T in the representation of the block reflector.

in
ldt

The leading dimension of T. ldt >= k.

inout
A

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.

in
lda

The leading dimension of A.

inout
B

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.

in
ldb

The leading dimension of B. ldb >= max(1,m).

out
work

Workspace array.

in
ldwork

The leading dimension of work.

Functions

void ztprfb(
    const char*          side,
    const char*          trans,
    const char*          direct,
    const char*          storev,
    const INT            m,
    const INT            n,
    const INT            k,
    const INT            l,
    const c128* restrict V,
    const INT            ldv,
    const c128* restrict T,
    const INT            ldt,
          c128* restrict A,
    const INT            lda,
          c128* restrict B,
    const INT            ldb,
          c128* restrict work,
    const INT            ldwork
);
void ztprfb(const char *side, const char *trans, const char *direct, const char *storev, const INT m, const INT n, const INT k, const INT l, const c128 *restrict V, const INT ldv, const c128 *restrict T, const INT ldt, c128 *restrict A, const INT lda, c128 *restrict B, const INT ldb, c128 *restrict work, const INT ldwork)#

ZTPRFB applies a complex “triangular-pentagonal” 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

in
side

‘L’: apply H or H**H from the Left; ‘R’: apply H or H**H from the Right.

in
trans

‘N’: apply H (No transpose); ‘C’: apply H**H (Conjugate transpose).

in
direct

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).

in
storev

Indicates how the vectors which define the elementary reflectors are stored: ‘C’: Columns; ‘R’: Rows.

in
m

The number of rows of the matrix B. m >= 0.

in
n

The number of columns of the matrix B. n >= 0.

in
k

The order of the matrix T, i.e. the number of elementary reflectors whose product defines the block reflector. k >= 0.

in
l

The order of the trapezoidal part of V. k >= l >= 0. See Further Details.

in
V

The pentagonal matrix V, which contains the elementary reflectors H(1), H(2), …, H(k).

in
ldv

The leading dimension of V.

in
T

The triangular k-by-k matrix T in the representation of the block reflector.

in
ldt

The leading dimension of T. ldt >= k.

inout
A

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.

in
lda

The leading dimension of A.

inout
B

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.

in
ldb

The leading dimension of B. ldb >= max(1,m).

out
work

Workspace array.

in
ldwork

The leading dimension of work.