?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

The FORTRAN 77 interfaces are specified in the mkl_lapack.fi include file (to be used in Fortran programs) and in the mkl_lapack.h include file (to be used in C programs).

Description

The routine applies a real/complex block reflector H or its transpose HT (or 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 HT/HH (transpose/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, 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', m l 0, if side = 'R', n l 0.

v

REAL for slarzb

DOUBLE PRECISION for dlarzb

COMPLEX for clarzb

COMPLEX*16 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', ldv l; if storev = 'R', ldv k.

t

REAL for slarzb

DOUBLE PRECISION for dlarzb

COMPLEX for clarzb

COMPLEX*16 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.

ldt k.

c

REAL for slarzb

DOUBLE PRECISION for dlarzb

COMPLEX for clarzb

COMPLEX*16 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

COMPLEX*16 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.


Submit feedback on this help topic

Copyright © 1994 - 2010, Intel Corporation. All rights reserved.