p?larfc
p?larfc
Applies the conjugate transpose of an elementary reflector to a general matrix.
Syntax
void
pclarfc
(
char
*side
,
MKL_INT
*m
,
MKL_INT
*n
,
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
pzlarfc
(
char
*side
,
MKL_INT
*m
,
MKL_INT
*n
,
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 , , from either the left or the right.
p?larfc
function
applies a complex elementary reflector Q
H
m
-by-n
distributed matrix sub(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';Q*sub(HC)if: form subside='R'(.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)
- v
- (local).Pointer into the local memory to an array of size, containing the local pieces of the global distributed matrixlld_v*LOCc(n_v)Vrepresenting the Householder transformationQ,V(ifiv:iv+m-1,jv)andside='L',incv= 1V(ifiv,jv:jv+m-1)andside='L',incv=m_vV(ifiv:iv+n-1,jv)andside='R',incv= 1V(ifiv,jv:jv+n-1)andside='R'.incv=m_vThe arrayvis 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).Workspace array of sizelwork.Ifincv= 1,ifside='L',ifivcol=iccol,lwork≥nqc0elselwork≥mpc0 +max( 1,nqc0 )end ifelse ifside='R',lwork≥nqc0 +max(max( 1,mpc0 ),numroc(numroc(n+icoffc,nb_v,0,0,npcol),nb_v,0,0,lcmq) )end ifelse ifincv=m_v,ifside='L',lwork≥mpc0 +max(max( 1,nqc0 ),numroc(numroc(m+iroffc,mb_v,0,0,nprow),mb_v,0,0,lcmp) )else ifside='R',ifivrow=icrow,lwork≥mpc0elselwork≥nqc0 +max( 1,mpc0 )end ifend ifend if,wherelcmis the least common multiple ofnprowandnpcoland,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'