?larz

Applies an elementary reflector (as returned by ?tzrzf) to a general matrix.

Syntax

call slarz( side, m, n, l, v, incv, tau, c, ldc, work )

call dlarz( side, m, n, l, v, incv, tau, c, ldc, work )

call clarz( side, m, n, l, v, incv, tau, c, ldc, work )

call zlarz( side, m, n, l, v, incv, tau, c, ldc, work )

Include Files

  • mkl.fi

Description

The routine ?larz applies a real/complex elementary reflector H to a real/complex m-by-n matrix C, from either the left or the right. H is represented in the forms

H = I-tau*v*vT for real flavors and H = I-tau*v*vH for complex flavors,

where tau is a real/complex scalar and v is a real/complex vector, respectively.

If tau = 0, then H is taken to be the unit matrix.

For complex flavors, to apply HH (the conjugate transpose of H), supply conjg(tau) instead of tau.

H is a product of k elementary reflectors as returned by ?tzrzf.

Input Parameters

side

CHARACTER*1.

If side = 'L': form H*C

If side = 'R': form C*H

m

INTEGER. The number of rows of the matrix C.

n

INTEGER. The number of columns of the matrix C.

l

INTEGER. The number of entries of the vector v containing the meaningful part of the Householder vectors.

If side = 'L', mL 0,

if side = 'R', nL 0.

v

REAL for slarz

DOUBLE PRECISION for dlarz

COMPLEX for clarz

DOUBLE COMPLEX for zlarz

Array, DIMENSION (1+(l-1)*abs(incv)).

The vector v in the representation of H as returned by ?tzrzf.

v is not used if tau = 0.

incv

INTEGER. The increment between elements of v.

incv 0.

tau

REAL for slarz

DOUBLE PRECISION for dlarz

COMPLEX for clarz

DOUBLE COMPLEX for zlarz

The value tau in the representation of H.

c

REAL for slarz

DOUBLE PRECISION for dlarz

COMPLEX for clarz

DOUBLE COMPLEX for zlarz

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 slarz

DOUBLE PRECISION for dlarz

COMPLEX for clarz

DOUBLE COMPLEX for zlarz

Workspace array, DIMENSION

(n) if side = 'L' or

(m) if side = 'R'.

Output Parameters

c

On exit, C is overwritten by the matrix H*C if side = 'L', or C*H if side = 'R'.

For more complete information about compiler optimizations, see our Optimization Notice.