(S|D|C|Z)LARF

Single, double, single complex, and double complex LARF.

Description

Applies an elementary reflector to a rectangular matrix from the left or right.

If SIDE is ‘L’,

C \assign H * C

If SIDE is ‘R’,

C \assign C * H

The reflector is:

H = I - \tau \mult v \mult \trans{v}

LAPACK Interface

void slarf(const char *SIDE, const qml_long *M, const qml_long *N, const float *V,
    const qml_long *INCV, const float *TAU, float *C, const qml_long *LDC,
    float *WORK);

void dlarf(const char *SIDE, const qml_long *M, const qml_long *N, const double *V,
    const qml_long *INCV, const double *TAU, double *C, const qml_long *LDC,
    double *WORK);

void clarf(const char *SIDE, const qml_long *M, const qml_long *N,
    const qml_single_complex *V, const qml_long *INCV, const qml_single_complex *TAU,
    qml_single_complex *C, const qml_long *LDC, qml_single_complex *WORK);

void zlarf(const char *SIDE, const qml_long *M, const qml_long *N,
    const qml_double_complex *V, const qml_long *INCV, const qml_double_complex *TAU,
    qml_double_complex *C, const qml_long *LDC, qml_double_complex *WORK);

Arguments

SIDE Which side to mulplify reflector from, ‘L’ or ‘R’
M Number of rows of C
N Number of columns of C
V Vector representing reflector
INCV Stride between elements in V
TAU Scale factor for elementary reflector
C Matrix of size M x N
LDC Leading dimension of C
WORK Work space of size at least N if SIDE is ‘L’, or M if SIDE is ‘R’