p?ormrz
p?ormrz
Multiplies a general matrix by the orthogonal matrix from a reduction to upper triangular form formed by
p?tzrzf
.Syntax
void
psormrz
(
char
*side
,
char
*trans
,
MKL_INT
*m
,
MKL_INT
*n
,
MKL_INT
*k
,
MKL_INT
*l
,
float
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
float
*tau
,
float
*c
,
MKL_INT
*ic
,
MKL_INT
*jc
,
MKL_INT
*descc
,
float
*work
,
MKL_INT
*lwork
,
MKL_INT
*info
);
void
pdormrz
(
char
*side
,
char
*trans
,
MKL_INT
*m
,
MKL_INT
*n
,
MKL_INT
*k
,
MKL_INT
*l
,
double
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
double
*tau
,
double
*c
,
MKL_INT
*ic
,
MKL_INT
*jc
,
MKL_INT
*descc
,
double
*work
,
MKL_INT
*lwork
,
MKL_INT
*info
);
Include Files
- mkl_scalapack.h
Description
This
function
overwrites the general real m
-by-n
distributed matrix sub(C
) = C
(iс
:iс
+m
-1,jс
:jс
+n
-1) withside ='L' | side ='R' | |
trans = 'N' : | Q *sub(C ) | sub( C )*Q |
trans = 'T' : | Q T C ) | sub( C )*Q T |
where
Q
is a real orthogonal distributed matrix defined as the product of k
elementary reflectorsQ
= H
(1) H
(2)... H
(k
) Input Parameters
- side
- (global)=:'L'QorQis applied from the left.T=:'R'QorQis applied from the right.T
- trans
- (global)=, no transpose,'N'Qis applied.=, transpose,'T'Qis applied.T
- m
- (global) The number of rows in the distributed matrixsub(C)(.m≥0)
- n
- (global) The number of columns in the distributed matrixsub(C)(.n≥0)
- k
- (global) The number of elementary reflectors whose product defines the matrixQ. Constraints:If,side='L'm≥k≥0If,side='R'.n≥k≥0
- l
- (global)The columns of the distributed matrix sub(A) containing the meaningful part of the Householder reflectors.If,side='L'm≥l≥0If,side='R'.n≥l≥0
- a
- (local)Pointer into the local memory to an array of sizeiflld_a*LOCc(ja+m-1), andside='L'iflld_a*LOCc(ja+n-1), whereside='R'.lld_a≥max(1,LOCr(ia+k-1))Thei-th rowof the matrix stored inmust contain the vector that defines the elementary reflectoraH(i),ia≤i≤ia+k-1, as returned byp?tzrzfin thekrows of its distributed matrix argumentA(ia:ia+k-1,ja:*).A(ia:ia+k-1,ja:*) is modified by thefunctionbut restored on exit.
- ia,ja
- (global) The row and column indices in the global matrixAindicating the first row and the first column of the submatrixA, respectively.
- desca
- (global and local) array of sizedlen_. The array descriptor for the distributed matrixA.
- tau
- (local)Array of size.LOCc(ia+k-1)Contains the scalar factortau[of elementary reflectorsi]H(as returned byi+1)p?tzrzf(0 ≤.i<)LOCc(ia+k-1)tauis tied to the distributed matrixA.
- c
- (local)Pointer into the local memory to an array of local size.lld_c*LOCc(jc+n-1)Contains the local pieces of the distributed matrix sub(C) to be factored.
- ic,jc
- (global) The row and column indices in the global matrixCindicating the first row and the first column of the submatrixC, respectively.
- descc
- (global and local) array of sizedlen_. The array descriptor for the distributed matrixC.
- work
- (local)Workspace array of size oflwork.
- lwork
- (local or global) size ofwork, must be at least:If,side='L'lwork≥max((mb_a*(mb_a-1))/2, (mpc0 +max(mqa0 +numroc(numroc(n+iroffc,mb_a, 0, 0,NPROW),mb_a, 0, 0,lcmp),nqc0))*mb_a) +mb_a*mb_aelse if,side='R'lwork≥max((mb_a*(mb_a-1))/2, (mpc0 +nqc0)*mb_a) +mb_a*mb_aend ifwherewithlcmp=lcm/NPROW,lcm=ilcm(NPROW,NPCOL),iroffa=mod(ia-1,mb_a),icoffa=mod(ja-1,nb_a),iacol=indxg2p(ja,nb_a,MYCOL,csrc_a,NPCOL),mqa0 =numroc(n+icoffa,nb_a,MYCOL,iacol,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)mod(is the integer remainder ofx,y).x/yilcm,indxg2pandnumrocare ScaLAPACK tool functions;MYROW,MYCOL,NPROWandNPCOLcan be determined by calling thefunctionblacs_gridinfo.If, thenlwork= -1lworkis global input and a workspace query is assumed; thefunctiononly calculates the minimum and optimal size for all work arrays. Each of these values is returned in the first entry of the corresponding work array, and no error message is issued bypxerbla.
Output Parameters
- c
- Overwritten by the productQ*sub(C), orQ'*sub (C), or sub(C)*Q', or sub(C)*Q
- work[0]
- On exitcontains the minimum value ofwork[0]lworkrequired for optimum performance.
- info
- (global)= 0: the execution is successful.< 0: if thei-th argument is an array and thej-th entry, indexedhad an illegal value, thenj- 1,info= -(i*100+j); if thei-th argument is a scalar and had an illegal value, theninfo=-i.