Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 12/16/2022
Public

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

Document Table of Contents

?larft

Forms the triangular factor T of a block reflector H = I - V*T*V**H.

Syntax

lapack_int LAPACKE_slarft (int matrix_layout , char direct , char storev , lapack_int n , lapack_int k , const float * v , lapack_int ldv , const float * tau , float * t , lapack_int ldt );

lapack_int LAPACKE_dlarft (int matrix_layout , char direct , char storev , lapack_int n , lapack_int k , const double * v , lapack_int ldv , const double * tau , double * t , lapack_int ldt );

lapack_int LAPACKE_clarft (int matrix_layout , char direct , char storev , lapack_int n , lapack_int k , const lapack_complex_float * v , lapack_int ldv , const lapack_complex_float * tau , lapack_complex_float * t , lapack_int ldt );

lapack_int LAPACKE_zlarft (int matrix_layout , char direct , char storev , lapack_int n , lapack_int k , const lapack_complex_double * v , lapack_int ldv , const lapack_complex_double * tau , lapack_complex_double * t , lapack_int ldt );

Include Files
  • mkl.h
Description

The routine ?larft forms the triangular factor T of a real/complex block reflector H of order n, which is defined as a product of k elementary reflectors.

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*VT (for real flavors) or H = I - V*T*VH (for complex flavors) .

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 - VT*T*V (for real flavors) or H = I - VH*T*V (for complex flavors).

Input Parameters

A <datatype> placeholder, if present, is used for the C interface data types in the C interface section above. See C Interface Conventions for the C interface principal conventions and type definitions.

direct

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

= 'F': H = H(1)*H(2)*. . . *H(k) (forward)

= 'B': H = H(k)*. . .*H(2)*H(1) (backward)

storev

Specifies how the vectors which define the elementary reflectors are stored (see also Application Notes below):

= 'C': column-wise

= 'R': row-wise.

n

The order of the block reflector H. n 0.

k

The order of the triangular factor T (equal to the number of elementary reflectors). k 1.

v

The size limitations depend on values of parameters storev and side as described in the following table:

 

storev = C

storev = R

Column major

max(1,ldv*k)

max(1,ldv*n)

Row major

max(1,ldv*n)

max(1,ldv*k)

The matrix v. See Application Notes below.

ldv

The leading dimension of the array v.

If storev = 'C', ldv max(1,n) for column major and ldvmax(1,k) for row major;

if storev = 'R', ldvk for column major and ldvmax(1,n) for row major.

tau

Array, size (k). tau[i-1] must contain the scalar factor of the elementary reflector H(i).

ldt

The leading dimension of the output array t. ldtk.

Output Parameters
t

Array, size ldt * k. The k-by-k triangular factor T of the block reflector. If direct = 'F', T is upper triangular; if direct = 'B', T is lower triangular. The rest of the array is not used.

v

The matrix V.

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