Visible to Intel only — GUID: GUID-A57F4FB3-8767-4AD9-842D-09E08F3F1933
Visible to Intel only — GUID: GUID-A57F4FB3-8767-4AD9-842D-09E08F3F1933
?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 ldv≥max(1,k) for row major;
if storev = 'R', ldv≥k for column major and ldv≥max(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. ldt≥k.
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.