p?larz
p?larz
Applies an elementary reflector as returned by
p?tzrzf
to a general matrix.Syntax
void
pslarz
(
char
*side
,
MKL_INT
*m
,
MKL_INT
*n
,
MKL_INT
*l
,
float
*v
,
MKL_INT
*iv
,
MKL_INT
*jv
,
MKL_INT
*descv
,
MKL_INT
*incv
,
float
*tau
,
float
*c
,
MKL_INT
*ic
,
MKL_INT
*jc
,
MKL_INT
*descc
,
float
*work
);
void
pdlarz
(
char
*side
,
MKL_INT
*m
,
MKL_INT
*n
,
MKL_INT
*l
,
double
*v
,
MKL_INT
*iv
,
MKL_INT
*jv
,
MKL_INT
*descv
,
MKL_INT
*incv
,
double
*tau
,
double
*c
,
MKL_INT
*ic
,
MKL_INT
*jc
,
MKL_INT
*descc
,
double
*work
);
void
pclarz
(
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
pzlarz
(
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 real/complex , from either the left or the right.
p?larz
function
applies a real/complex elementary reflector Q
(or Q
T
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 real/complex scalar and v
is a real/complex vector.If , then
tau
= 0Q
is taken to be the unit matrix.Input Parameters
- side
- (global)if: formside='L'),Q*sub(Cif: form subside='R'(,C)*Q(for real flavors).Q=QT
- 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 distributed 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).Array of sizelworkIfincv= 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.Herelcmis the least common multiple ofnprowandnpcolandlcm=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(C), orside='L'sub(ifC)*Q.side='R'