Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
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

p?larfg

Generates an elementary reflector (Householder matrix).

Syntax

void pslarfg (MKL_INT *n , float *alpha , MKL_INT *iax , MKL_INT *jax , float *x , MKL_INT *ix , MKL_INT *jx , MKL_INT *descx , MKL_INT *incx , float *tau );

void pdlarfg (MKL_INT *n , double *alpha , MKL_INT *iax , MKL_INT *jax , double *x , MKL_INT *ix , MKL_INT *jx , MKL_INT *descx , MKL_INT *incx , double *tau );

void pclarfg (MKL_INT *n , MKL_Complex8 *alpha , MKL_INT *iax , MKL_INT *jax , MKL_Complex8 *x , MKL_INT *ix , MKL_INT *jx , MKL_INT *descx , MKL_INT *incx , MKL_Complex8 *tau );

void pzlarfg (MKL_INT *n , MKL_Complex16 *alpha , MKL_INT *iax , MKL_INT *jax , MKL_Complex16 *x , MKL_INT *ix , MKL_INT *jx , MKL_INT *descx , MKL_INT *incx , MKL_Complex16 *tau );

Include Files

  • mkl_scalapack.h

Description

The p?larfgfunction generates a real/complex elementary reflector H of order n, such that



where alpha is a scalar (a real scalar - for complex flavors), and sub(X) is an (n-1)-element real/complex distributed vector X(ix:ix+n-2, jx) if incx = 1 and X(ix, jx:jx+n-2) if incx = m_x. H is represented in the form



where tau is a real/complex scalar and v is a real/complex (n-1)-element vector. Note that H is not Hermitian.

If the elements of sub(X) are all zero (and X(iax, jax) is real for complex flavors), then tau = 0 and H is taken to be the unit matrix.

Otherwise 1 ≤ real(tau) ≤ 2 and abs(tau-1) ≤ 1.

Input Parameters

n

(global)

The global order of the elementary reflector. n 0.

iax, jax

(global)

The global row and column indices of X(iax, jax) in the global matrix X.

x

(local).

Pointer into the local memory to an array of size lld_x * LOCc(n_x). This array contains the local pieces of the distributed vector sub(X). Before entry, the incremented array sub(X) must contain vector x.

ix, jx

(global)

The row and column indices in the global matrix X indicating the first row and the first column of sub(X), respectively.

descx

(global and local)

Array of size dlen_. The array descriptor for the distributed matrix X.

incx

(global)

The global increment for the elements of x. Only two values of incx are supported in this version, namely 1 and m_x. incx must not be zero.

Output Parameters

alpha

(local)

On exit, alpha is computed in the process scope having the vector sub(X).

x

(local).

On exit, it is overwritten with the vector v.

tau

(local).

Array of size LOCc(jx) if incx = 1, and LOCr(ix) otherwise. This array contains the Householder scalars related to the Householder vectors.

tau is tied to the distributed matrix X.

See Also