Developer Reference for Intel® oneAPI Math Kernel Library for C
p?larzt
Forms the triangular factor T of a block reflector H=I-V*T*V H as returned by p?tzrzf .
Syntax
voidpslarzt ( 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 );
voidpdlarzt ( 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 );
voidpclarzt ( 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 );
voidpzlarzt ( 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
pslarzt pdlarzt pclarzt pzlarzt The p?larzt routine function 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 (Reduces the upper trapezoidal matrix A to upper triangular form.) .
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≤k≤mb_v(= nb_v) .
- v
-
REAL for pslarzt DOUBLE PRECISION for pdlarzt COMPLEX for pclarzt COMPLEX*16 for pzlarzt .
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) REAL for pslarzt DOUBLE PRECISION for pdlarzt COMPLEX for pclarzt COMPLEX*16 for pzlarzt . 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). REAL for pslarzt DOUBLE PRECISION for pdlarzt COMPLEX for pclarzt COMPLEX*16 for pzlarzt . Workspace array of size (k*(k-1)/2) .
Output Parameters
- v
-
REAL for pslarzt DOUBLE PRECISION for pdlarzt COMPLEX for pclarzt COMPLEX*16 for pzlarzt .
- t
-
(local) REAL for pslarzt DOUBLE PRECISION for pdlarzt COMPLEX for pclarzt COMPLEX*16 for pzlarzt .
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.