Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 3/22/2024
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

?larzb

Applies a block reflector or its transpose/conjugate-transpose to a general matrix.

Syntax

call slarzb( side, trans, direct, storev, m, n, k, l, v, ldv, t, ldt, c, ldc, work, ldwork )

call dlarzb( side, trans, direct, storev, m, n, k, l, v, ldv, t, ldt, c, ldc, work, ldwork )

call clarzb( side, trans, direct, storev, m, n, k, l, v, ldv, t, ldt, c, ldc, work, ldwork )

call zlarzb( side, trans, direct, storev, m, n, k, l, v, ldv, t, ldt, c, ldc, work, ldwork )

Include Files

  • mkl.fi

Description

The routine applies a real/complex block reflector H or its transpose HT (or the conjugate transpose HH for complex flavors) to a real/complex distributed m-by-n matrix C from the left or the right. Currently, only storev = 'R' and direct = 'B' are supported.

Input Parameters

side

CHARACTER*1.

If side = 'L': apply H or HT/HH from the left

If side = 'R': apply H or HT/HH from the right

trans

CHARACTER*1.

If trans = 'N': apply H (No transpose)

If trans='C': apply HH (conjugate transpose)

If trans='T': apply HT (transpose transpose)

direct

CHARACTER*1.

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)

storev

CHARACTER*1.

Indicates how the vectors which define the elementary reflectors are stored:

= 'C': Column-wise (not supported)

= 'R': Row-wise.

m

INTEGER. The number of rows of the matrix C.

n

INTEGER. The number of columns of the matrix C.

k

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

l

INTEGER. The number of columns of the matrix V containing the meaningful part of the Householder reflectors.

If side = 'L', ml 0, if side = 'R', nl 0.

v

REAL for slarzb

DOUBLE PRECISION for dlarzb

COMPLEX for clarzb

DOUBLE COMPLEX for zlarzb

Array, DIMENSION (ldv, nv).

If storev = 'C', nv = k;

if storev = 'R', nv = l.

ldv

INTEGER. The leading dimension of the array v.

If storev = 'C', ldvl; if storev = 'R', ldvk.

t

REAL for slarzb

DOUBLE PRECISION for dlarzb

COMPLEX for clarzb

DOUBLE COMPLEX for zlarzb

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.

ldtk.

c

REAL for slarzb

DOUBLE PRECISION for dlarzb

COMPLEX for clarzb

DOUBLE COMPLEX for zlarzb

Array, DIMENSION (ldc,n). On entry, the m-by-n matrix C.

ldc

INTEGER. The leading dimension of the array c.

ldc max(1,m).

work

REAL for slarzb

DOUBLE PRECISION for dlarzb

COMPLEX for clarzb

DOUBLE COMPLEX for zlarzb

Workspace array, DIMENSION (ldwork, k).

ldwork

INTEGER. The leading dimension of the array work.

If side = 'L', ldwork max(1, n);

if side = 'R', ldwork max(1, m).

Output Parameters

c

On exit, C is overwritten by H*C, or HT/HH*C, or C*H, or C*HT/HH.