Developer Reference for Intel® oneAPI Math Kernel Library for C
p?larzc
Applies (multiplies by) the conjugate transpose of an elementary reflector as returned by p?tzrzf to a general matrix.
Syntax
voidpclarzc ( char*side , MKL_INT*m , MKL_INT*n , MKL_INT*l , MKL_Complex8*v , MKL_INT*iv , MKL_INT*jv , MKL_INT*descv , MKL_INT*incv , MKL_Complex8*tau , MKL_Complex8*c , MKL_INT*ic , MKL_INT*jc , MKL_INT*descc , MKL_Complex8*work );
voidpzlarzc ( char*side , MKL_INT*m , MKL_INT*n , MKL_INT*l , MKL_Complex16*v , MKL_INT*iv , MKL_INT*jv , MKL_INT*descv , MKL_INT*incv , MKL_Complex16*tau , MKL_Complex16*c , MKL_INT*ic , MKL_INT*jc , MKL_INT*descc , MKL_Complex16*work );
Include Files
mkl_scalapack.h
Description
pclarzc pzlarzc The p?larzc routine function applies a complex elementary reflector Q^{H} to a complex m -by- n distributed matrix sub(C) = C(ic:ic+m-1, jc:jc+n-1) , from either the left or the right. Q is represented in the form
Q = i-tau*v*v' ,
where tau is a complex scalar and v is a complex vector.
If tau = 0 , then Q is taken to be the unit matrix.
Q is a product of k elementary reflectors as returned by p?tzrzf (Reduces the upper trapezoidal matrix A to upper triangular form.) .
Input Parameters
side
(global)
if side = 'L' : form Q^{H}*sub(C) ; if side = 'R' : form sub(C)*Q^{H} .
m
(global)
The number of rows in the distributed matrix sub( C ). (m ≥ 0) .
n
(global)
The number of columns in the distributed matrix sub( C ). (n ≥ 0) .
l
(global)
The columns of the distributed matrix sub( A ) containing the meaningful part of the Householder reflectors. If side = 'L' , m ≥ l ≥ 0, if side = 'R' , n ≥ l ≥ 0 .
- v
-
(local).
COMPLEX for pclarzc COMPLEX*16 for pzlarzc .
Pointer into the local memory to an array of size lld_v * LOCc ( n_v ) containing the local pieces of the global distributed matrix V representing the Householder transformation Q ,
V(iv:iv+l-1, jv) if side = 'L' and incv = 1 , V(iv, jv:jv+l-1) if side = 'L' and incv = m_v , V(iv:iv+l-1, jv) if side = 'R' and incv = 1 , V(iv, jv:jv+l-1) if side = 'R' and incv = m_v . The vector v in the representation of Q . v is not used if tau = 0 .
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
(global and local) array of size dlen_ . The array descriptor for the distributed matrix V .
incv
(global)
The global increment for the elements of V . Only two values of incv are supported in this version, namely 1 and m_v . incv must not be zero.
- tau
-
(local) COMPLEX for pclarzc COMPLEX*16 for pzlarzc . Array of size LOCc ( jv ) if incv = 1 , and LOCr ( iv ) otherwise. This array contains the Householder scalars related to the Householder vectors. tau is tied to the distributed matrix V .
- c
-
(local). COMPLEX for pclarzc COMPLEX*16 for pzlarzc .
Pointer into the local memory to an array of size lld_c * LOCc ( jc + n -1) , containing the local pieces of sub( C ).
ic , jc
(global)
The row and column indices in the global matrix C indicating the first row and the first column of the matrix sub( C ), respectively.
descc
(global and local) array of size dlen_ . The array descriptor for the distributed matrix C .
- work
-
(local). Here lcm is the least common multiple of nprow and npcol ; lcm = ilcm(nprow, npcol) , lcmp = lcm/nprow , lcmq= lcm/npcol , iroffc = mod(ic-1, mb_c), icoffc= mod(jc-1, nb_c) , icrow = indxg2p(ic, mb_c, myrow, rsrc_c, nprow) , iccol = indxg2p(jc, nb_c, mycol, csrc_c, npcol) , mpc0 = numroc(m+iroffc, mb_c, myrow, icrow, nprow) , nqc0 = numroc(n+icoffc, nb_c, mycol, iccol, npcol) , ilcm , indxg2p , and numroc are ScaLAPACK tool functions;
myrow , mycol , nprow , and npcol can be determined by calling the function blacs_gridinfo .
Output Parameters
- c
-
(local). On exit, sub( C ) is overwritten by the Q^{H}*sub(C) if side = 'L' , or sub(C)*Q^{H} if side = 'R' .