Developer Reference for Intel® oneAPI Math Kernel Library for C
?larft
Forms the triangular factor T of a block reflector H = I - V * T * V ** H .
Syntax
lapack_intLAPACKE_slarft ( intmatrix_layout , chardirect , charstorev , lapack_intn , lapack_intk , constfloat*v , lapack_intldv , constfloat*tau , float*t , lapack_intldt );
lapack_intLAPACKE_dlarft ( intmatrix_layout , chardirect , charstorev , lapack_intn , lapack_intk , constdouble*v , lapack_intldv , constdouble*tau , double*t , lapack_intldt );
lapack_intLAPACKE_clarft ( intmatrix_layout , chardirect , charstorev , lapack_intn , lapack_intk , constlapack_complex_float*v , lapack_intldv , constlapack_complex_float*tau , lapack_complex_float*t , lapack_intldt );
lapack_intLAPACKE_zlarft ( intmatrix_layout , chardirect , charstorev , lapack_intn , lapack_intk , constlapack_complex_double*v , lapack_intldv , constlapack_complex_double*tau , lapack_complex_double*t , lapack_intldt );
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*V^{T} (for real flavors) or H = I - V*T*V^{H} (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 - V^{T}*T*V (for real flavors) or H = I - V^{H}*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
-
REAL for slarft DOUBLE PRECISION for dlarft COMPLEX for clarft DOUBLE COMPLEX for zlarft Array, DIMENSION ( ldv , k ) if storev = 'C' or ( ldv , n ) if storev = 'R' . The matrix V .
- v
-
The size limitations depend on values of parameters storev and side as described in the following table: 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
-
REAL for slarft DOUBLE PRECISION for dlarft COMPLEX for clarft DOUBLE COMPLEX for zlarft Array, size ( k ). tau(i)[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
-
REAL for slarft DOUBLE PRECISION for dlarft COMPLEX for clarft DOUBLE COMPLEX for zlarft
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.