p?larzc
p?larzc
Applies (multiplies by) the conjugate transpose of an elementary reflector as returned by
p?tzrzf
to a general matrix.Syntax
void
pclarzc
(
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
);
void
pzlarzc
(
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
The to a complex
p?larzc
function
applies a complex elementary reflector Q
H
m
-by-n
distributed matrix sub(,
, from either the left or the right. C
) = C
(ic
:ic
+m
-1jc
:jc
+n
-1)Q
is represented in the formQ
= i
-tau
*v
*v'
where
tau
is a complex scalar and v
is a complex vector.If , then
tau
= 0Q
is taken to be the unit matrix.Input Parameters
- side
- (global)if: formside='L';*sub(QHC)if: formside='R'sub(.C)*QH
- 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).
- Pointer into the local memory to an array of sizecontaining the local pieces of the global distributed matrixlld_v*LOCc(n_v)Vrepresenting the Householder transformationQ,V(ifiv:iv+l-1,jv)andside='L',incv= 1V(ifiv,jv:jv+l-1)andside='L',incv=m_vV(ifiv:iv+l-1,jv)andside='R',incv= 1V(ifiv,jv:jv+l-1)andside='R'.incv=m_vThe vectorvin the representation ofQ.vis not used if.tau= 0
- iv,jv
- (global)The row and column indices in the global matrixVindicating the first row and the first column of the matrix sub(V), respectively.
- descv
- (global and local) array of sizedlen_. The array descriptor for the distributed matrixV.
- incv
- (global)The global increment for the elements ofV. Only two values ofincvare supported in this version, namely 1 andm_v.incvmust not be zero.
- tau
- (local)Array of sizeLOCc(jv) if, andincv= 1LOCr(iv) otherwise. This array contains the Householder scalars related to the Householder vectors.tauis tied to the distributed matrixV.
- c
- (local).Pointer into the local memory to an array of size, containing the local pieces of sub(lld_c*LOCc(jc+n-1)C).
- ic,jc
- (global)The row and column indices in the global matrixCindicating the first row and the first column of the matrix sub(C), respectively.
- descc
- (global and local) array of sizedlen_. The array descriptor for the distributed matrixC.
- work
- (local).If incv = 1, if side = 'L' , if ivcol = iccol, lwork ≥ nqc0 else lwork ≥ mpc0 + max(1, nqc0) end if else if side = 'R' , lwork ≥ nqc0 + max(max(1, mpc0), numroc(numroc(n+icoffc, nb_v, 0, 0, npcol), nb_v, 0, 0, lcmq)) end if else if incv = m_v, if side = 'L' , lwork ≥ mpc0 + max(max(1, nqc0), numroc(numroc(m+iroffc, mb_v, 0, 0, nprow), mb_v, 0, 0, lcmp)) else if side = 'R', if ivrow = icrow, lwork ≥ mpc0 else lwork ≥ nqc0 + max(1, mpc0) end if end if end ifHerelcmis the least common multiple ofnprowandnpcol;,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, andnumrocare ScaLAPACK tool functions;myrow,mycol,nprow, andnpcolcan be determined by calling thefunctionblacs_gridinfo.
Output Parameters
- c
- (local).On exit, sub(C) is overwritten by theifQ*sub(HC), orside='L'sub(ifC)*QH.side='R'