Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 3/31/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?larzt

Forms the triangular factor T of a block reflector H=I-V*T*VH as returned by p?tzrzf.

Syntax

void pslarzt (char *direct , char *storev , MKL_INT *n , MKL_INT *k , float *v , MKL_INT *iv , MKL_INT *jv , MKL_INT *descv , float *tau , float *t , float *work );

void pdlarzt (char *direct , char *storev , MKL_INT *n , MKL_INT *k , double *v , MKL_INT *iv , MKL_INT *jv , MKL_INT *descv , double *tau , double *t , double *work );

void pclarzt (char *direct , char *storev , MKL_INT *n , MKL_INT *k , MKL_Complex8 *v , MKL_INT *iv , MKL_INT *jv , MKL_INT *descv , MKL_Complex8 *tau , MKL_Complex8 *t , MKL_Complex8 *work );

void pzlarzt (char *direct , char *storev , MKL_INT *n , MKL_INT *k , MKL_Complex16 *v , MKL_INT *iv , MKL_INT *jv , MKL_INT *descv , MKL_Complex16 *tau , MKL_Complex16 *t , MKL_Complex16 *work );

Include Files
  • mkl_scalapack.h
Description

The p?larztfunction forms the triangular factor T of a real/complex block reflector H of order greater than n, which is defined as a product of k elementary reflectors as returned by p?tzrzf.

If direct = 'F', H = H(1)*H(2)*...*H(k), and T is upper triangular;

If direct = 'B', H = H(k)*...*H(2)*H(1), and T is lower triangular.

If storev = 'C', the vector which defines the elementary reflector H(i), is stored in the i-th column of the array v, and

H = i-v*t*v'.

If storev = 'R', the vector, which defines the elementary reflector H(i), is stored in the i-th row of the array v, and

H = i-v'*t*v

Currently, only storev = 'R' and direct = 'B' are supported.

Input Parameters
direct

(global)

Specifies the order in which the elementary reflectors are multiplied to form the block reflector:

if direct = 'F': H = H(1)*H(2)*...*H(k) (Forward, not supported)

if direct = 'B': H = H(k)*...*H(2)*H(1) (Backward).

storev

(global)

Specifies how the vectors which defines the elementary reflectors are stored:

if storev = 'C': columnwise (not supported);

if storev = 'R': rowwise.

n

(global)

The order of the block reflector H. n 0.

k

(global)

The order of the triangular factor T (= the number of elementary reflectors).

1≤kmb_v(= nb_v).

v

Pointer into the local memory to an array of local size LOCr(iv+k-1) * LOCc(jv+n-1).

The distributed matrix V contains the Householder vectors. See Application Notes below.

iv, jv

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

descv

(local) array of size dlen_. The array descriptor for the distributed matrix V.

tau

(local)

Array of size LOCr(iv+k-1) if incv = m_v, and LOCc(jv+k-1) otherwise. This array contains the Householder scalars related to the Householder vectors.

tau is tied to the distributed matrix V.

work

(local).

Workspace array of size(k*(k-1)/2).

Output Parameters
v
t

(local)

Array of size mb_v* mb_v. It contains the k-by-k triangular factor of the block reflector associated with v. t is lower triangular.

Application Notes

The shape of the matrix V and the storage of the vectors which define the H(i) is best illustrated by the following example with n = 5 and k = 3. The elements equal to 1 are not stored; the corresponding array elements are modified but restored on exit. The rest of the array is not used.


Equation


Equation


Equation


Equation

See Also