# ?larfx

Applies an elementary reflector to a general rectangular matrix, with loop unrolling when the reflector has order less than or equal to 10.

## Syntax

call slarfx( side, m, n, v, tau, c, ldc, work )

call dlarfx( side, m, n, v, tau, c, ldc, work )

call clarfx( side, m, n, v, tau, c, ldc, work )

call zlarfx( side, m, n, v, tau, c, ldc, work )

## Description

The routine ?larfx 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 form

`H = I - tau*v*v'`, where tau is a real/complex scalar and v is a real/complex vector.

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

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

v

  REAL for slarfx

  DOUBLE PRECISION for dlarfx

  COMPLEX for clarfx

  COMPLEX*16 for zlarfx

  Array, DIMENSION

  (m) if `side = 'L'` or

  (n) if `side = 'R'`.

  The vector v in the representation of H.

tau

  REAL for slarfx

  DOUBLE PRECISION for dlarfx

  COMPLEX for clarfx

  COMPLEX*16 for zlarfx

  The value tau in the representation of H.

c

  REAL for slarfx

  DOUBLE PRECISION for dlarfx

  COMPLEX for clarfx

  COMPLEX*16 for zlarfx

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

ldc

  INTEGER. The leading dimension of the array c. lda ≥ (1,m).

work

  REAL for slarfx

  DOUBLE PRECISION for dlarfx

  COMPLEX for clarfx

  COMPLEX*16 for zlarfx

  Workspace array, DIMENSION

  (n) if `side = 'L'` or

  (m) if `side = 'R'`.

  work is not referenced if H has order < 11.

## Output Parameters

c

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

Parent topic: Auxiliary Routines