Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 11/07/2023
Public

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

Document Table of Contents

?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 )

Include Files

  • mkl.fi

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 following forms:

  • H = I - tau*v*vT, where tau is a real scalar and v is a real vector.

  • H = I - tau*v*vH, where tau is a complex scalar and v is a complex vector.

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

Input Parameters

The data types are given for the Fortran interface.

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

DOUBLE COMPLEX for zlarfx

Array, size

(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

DOUBLE COMPLEX for zlarfx

The value tau in the representation of H.

c

REAL for slarfx

DOUBLE PRECISION for dlarfx

COMPLEX for clarfx

DOUBLE COMPLEX for zlarfx

Array, size ldc by 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

DOUBLE COMPLEX for zlarfx

Workspace array, size

(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'.