p?unmhr
p?unmhr
Multiplies a general matrix by the unitary transformation matrix from a reduction to Hessenberg form determined by
p?gehrd
.Syntax
void
pcunmhr
(
char
*side
,
char
*trans
,
MKL_INT
*m
,
MKL_INT
*n
,
MKL_INT
*ilo
,
MKL_INT
*ihi
,
MKL_Complex8
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
MKL_Complex8
*tau
,
MKL_Complex8
*c
,
MKL_INT
*ic
,
MKL_INT
*jc
,
MKL_INT
*descc
,
MKL_Complex8
*work
,
MKL_INT
*lwork
,
MKL_INT
*info
);
void
pzunmhr
(
char
*side
,
char
*trans
,
MKL_INT
*m
,
MKL_INT
*n
,
MKL_INT
*ilo
,
MKL_INT
*ihi
,
MKL_Complex16
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
MKL_Complex16
*tau
,
MKL_Complex16
*c
,
MKL_INT
*ic
,
MKL_INT
*jc
,
MKL_INT
*descc
,
MKL_Complex16
*work
,
MKL_INT
*lwork
,
MKL_INT
*info
);
Include Files
- mkl_scalapack.h
Description
This
function
overwrites the general complex distributed m
-by-n
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 = 'H' : | Q H C ) | sub( C )*Q H |
where if and if .
Q
is a complex unitary distributed matrix of order nq
, with nq
= m
side
= 'L'
nq
= n
side
= 'R'
Q
= H
(ilo
) H
(ilo
+1)... H
(ihi
-1).Input Parameters
- side
- (global)=:'L'QorQis applied from the left.H=:'R'QorQis applied from the right.H
- trans
- (global)=, no transpose,'N'Qis applied.=, conjugate transpose,'C'Qis applied.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)
- ilo,ihi
- (global)These must be the same parametersiloandihi, respectively, as supplied top?gehrd.Qis equal to the unit matrix except in the distributed submatrixQ(ia+ilo:ia+ihi-1,ja+ilo:ja+ihi-1).If, thenside='L'1≤.ilo≤ihi≤max(1,m)If, thenside='R'1≤ilo≤ihi≤max(1,n)iloandihiare relative indexes.
- 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).side='R'Contains the vectors which define the elementary reflectors, as returned byp?gehrd.
- 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, ifLOCc(ja+m-2), andside='L'ifLOCc(ja+n-2).side='R'tau[contains the scalar factor of the elementary reflectorj]H(as returned byj+1)p?gehrd(0 ≤.j< size(tau))tauis tied to the distributed matrixA.
- c
- (local)Pointer into the local memory to an array of size.lld_c*LOCc(jc+n-1)Contains the local pieces of the distributed matrix sub(C).
- 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 with sizelwork.
- lwork
- (local or global)The size of the arraywork.lworkmust be at leastiaa=ia+ilo;jaa=ja+ilo-1;If,side='L';mi=ihi-ilo;ni=n;icc=ic+ilo;jcc=jclwork≥max((nb_a*(nb_a-1))/2, (nqc0+mpc0)*nb_a) +nb_a*nb_aelse if,side='R';mi=m;ni=ihi-ilo;icc=ic;jcc=jc+ilolwork≥max((nb_a*(nb_a-1))/2, (nqc0 +max(npa0+numroc(numroc(ni+icoffc,nb_a, 0, 0,NPCOL),nb_a, 0, 0,lcmq),mpc0))*nb_a) +nb_a*nb_aend ifwherewithlcmq=lcm/NPCOL,lcm=ilcm(NPROW,NPCOL)iroffa=mod(iaa-1,mb_a),,icoffa=mod(jaa-1,nb_a),iarow=indxg2p(iaa,mb_a,MYROW,rsrc_a,NPROW),npa0 =numroc(ni+iroffa,mb_a,MYROW,iarow,NPROW),iroffc=mod(icc-1,mb_c),icoffc=mod(jcc-1,nb_c),icrow=indxg2p(icc,mb_c,MYROW,rsrc_c,NPROW),iccol=indxg2p(jcc,nb_c,MYCOL,csrc_c,NPCOL),mpc0 =numroc(mi+iroffc,mb_c,MYROW,icrow,NPROW),nqc0 =numroc(ni+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
- Cis overwritten byQ* 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.