larzb#

Functions

void slarzb(
    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 C,
    const INT            ldc,
          f32*  restrict work,
    const INT            ldwork
);
void slarzb(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 C, const INT ldc, f32 *restrict work, const INT ldwork)#

SLARZB applies a real block reflector H or its transpose H**T to a real distributed M-by-N matrix C from either the left or the right.

Currently, only STOREV = ‘R’ and DIRECT = ‘B’ are supported.

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); ‘C’: 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, not supported); ‘B’: H = H(k) … H(2) H(1) (Backward).

in
storev

Indicates how the vectors which define the elementary reflectors are stored: ‘C’: Columnwise (not supported); ‘R’: Rowwise.

in
m

Number of rows of the matrix C. m >= 0.

in
n

Number of columns of the matrix C. n >= 0.

in
k

The order of the matrix T (= the number of elementary reflectors whose product defines the block reflector).

in
l

The number of columns of the matrix V containing the meaningful part of the Householder reflectors. If side = “L”, m >= l >= 0; if side = “R”, n >= l >= 0.

in
V

Double precision array, dimension (ldv, nv). If storev = “C”, nv = k; if storev = “R”, nv = l.

in
ldv

Leading dimension of V. If storev = “C”, ldv >= l; if storev = “R”, ldv >= k.

in
T

Double precision array, dimension (ldt, k). The triangular k-by-k matrix T in the representation of the block reflector.

in
ldt

Leading dimension of T. ldt >= k.

inout
C

Double precision array, dimension (ldc, n). On entry, the m-by-n matrix C. On exit, C is overwritten by H*C or H**T*C or C*H or C*H**T.

in
ldc

Leading dimension of C. ldc >= max(1, m).

out
work

Double precision array, dimension (ldwork, k).

in
ldwork

Leading dimension of work. If side = “L”, ldwork >= max(1, n); if side = “R”, ldwork >= max(1, m).

Functions

void dlarzb(
    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 C,
    const INT            ldc,
          f64*  restrict work,
    const INT            ldwork
);
void dlarzb(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 C, const INT ldc, f64 *restrict work, const INT ldwork)#

DLARZB applies a real block reflector H or its transpose H**T to a real distributed M-by-N matrix C from either the left or the right.

Currently, only STOREV = ‘R’ and DIRECT = ‘B’ are supported.

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); ‘C’: 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, not supported); ‘B’: H = H(k) … H(2) H(1) (Backward).

in
storev

Indicates how the vectors which define the elementary reflectors are stored: ‘C’: Columnwise (not supported); ‘R’: Rowwise.

in
m

Number of rows of the matrix C. m >= 0.

in
n

Number of columns of the matrix C. n >= 0.

in
k

The order of the matrix T (= the number of elementary reflectors whose product defines the block reflector).

in
l

The number of columns of the matrix V containing the meaningful part of the Householder reflectors. If side = “L”, m >= l >= 0; if side = “R”, n >= l >= 0.

in
V

Double precision array, dimension (ldv, nv). If storev = “C”, nv = k; if storev = “R”, nv = l.

in
ldv

Leading dimension of V. If storev = “C”, ldv >= l; if storev = “R”, ldv >= k.

in
T

Double precision array, dimension (ldt, k). The triangular k-by-k matrix T in the representation of the block reflector.

in
ldt

Leading dimension of T. ldt >= k.

inout
C

Double precision array, dimension (ldc, n). On entry, the m-by-n matrix C. On exit, C is overwritten by H*C or H**T*C or C*H or C*H**T.

in
ldc

Leading dimension of C. ldc >= max(1, m).

out
work

Double precision array, dimension (ldwork, k).

in
ldwork

Leading dimension of work. If side = “L”, ldwork >= max(1, n); if side = “R”, ldwork >= max(1, m).

Functions

void clarzb(
    const char*          side,
    const char*          trans,
    const char*          direct,
    const char*          storev,
    const INT            m,
    const INT            n,
    const INT            k,
    const INT            l,
          c64*  restrict V,
    const INT            ldv,
          c64*  restrict T,
    const INT            ldt,
          c64*  restrict C,
    const INT            ldc,
          c64*  restrict work,
    const INT            ldwork
);
void clarzb(const char *side, const char *trans, const char *direct, const char *storev, const INT m, const INT n, const INT k, const INT l, c64 *restrict V, const INT ldv, c64 *restrict T, const INT ldt, c64 *restrict C, const INT ldc, c64 *restrict work, const INT ldwork)#

CLARZB applies a complex block reflector H or its transpose H**H to a complex distributed M-by-N C from the left or the right.

Currently, only STOREV = ‘R’ and DIRECT = ‘B’ are supported.

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, not supported); ‘B’: H = H(k) … H(2) H(1) (Backward).

in
storev

Indicates how the vectors which define the elementary reflectors are stored: ‘C’: Columnwise (not supported); ‘R’: Rowwise.

in
m

Number of rows of the matrix C. m >= 0.

in
n

Number of columns of the matrix C. n >= 0.

in
k

The order of the matrix T (= the number of elementary reflectors whose product defines the block reflector).

in
l

The number of columns of the matrix V containing the meaningful part of the Householder reflectors. If side = “L”, m >= l >= 0; if side = “R”, n >= l >= 0.

in
V

Complex array, dimension (ldv, nv). If storev = “C”, nv = k; if storev = “R”, nv = l.

in
ldv

Leading dimension of V. If storev = “C”, ldv >= l; if storev = “R”, ldv >= k.

in
T

Complex array, dimension (ldt, k). The triangular k-by-k matrix T in the representation of the block reflector.

in
ldt

Leading dimension of T. ldt >= k.

inout
C

Complex array, dimension (ldc, n). On entry, the m-by-n matrix C. On exit, C is overwritten by H*C or H**H*C or C*H or C*H**H.

in
ldc

Leading dimension of C. ldc >= max(1, m).

out
work

Complex array, dimension (ldwork, k).

in
ldwork

Leading dimension of work. If side = “L”, ldwork >= max(1, n); if side = “R”, ldwork >= max(1, m).

Functions

void zlarzb(
    const char*          side,
    const char*          trans,
    const char*          direct,
    const char*          storev,
    const INT            m,
    const INT            n,
    const INT            k,
    const INT            l,
          c128* restrict V,
    const INT            ldv,
          c128* restrict T,
    const INT            ldt,
          c128* restrict C,
    const INT            ldc,
          c128* restrict work,
    const INT            ldwork
);
void zlarzb(const char *side, const char *trans, const char *direct, const char *storev, const INT m, const INT n, const INT k, const INT l, c128 *restrict V, const INT ldv, c128 *restrict T, const INT ldt, c128 *restrict C, const INT ldc, c128 *restrict work, const INT ldwork)#

ZLARZB applies a complex block reflector H or its transpose H**H to a complex distributed M-by-N C from the left or the right.

Currently, only STOREV = ‘R’ and DIRECT = ‘B’ are supported.

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, not supported); ‘B’: H = H(k) … H(2) H(1) (Backward).

in
storev

Indicates how the vectors which define the elementary reflectors are stored: ‘C’: Columnwise (not supported); ‘R’: Rowwise.

in
m

Number of rows of the matrix C. m >= 0.

in
n

Number of columns of the matrix C. n >= 0.

in
k

The order of the matrix T (= the number of elementary reflectors whose product defines the block reflector).

in
l

The number of columns of the matrix V containing the meaningful part of the Householder reflectors. If side = “L”, m >= l >= 0; if side = “R”, n >= l >= 0.

in
V

Complex array, dimension (ldv, nv). If storev = “C”, nv = k; if storev = “R”, nv = l.

in
ldv

Leading dimension of V. If storev = “C”, ldv >= l; if storev = “R”, ldv >= k.

in
T

Complex array, dimension (ldt, k). The triangular k-by-k matrix T in the representation of the block reflector.

in
ldt

Leading dimension of T. ldt >= k.

inout
C

Complex array, dimension (ldc, n). On entry, the m-by-n matrix C. On exit, C is overwritten by H*C or H**H*C or C*H or C*H**H.

in
ldc

Leading dimension of C. ldc >= max(1, m).

out
work

Complex array, dimension (ldwork, k).

in
ldwork

Leading dimension of work. If side = “L”, ldwork >= max(1, n); if side = “R”, ldwork >= max(1, m).