Developer Reference for Intel® oneAPI Math Kernel Library for C
p?larzb
Applies a block reflector or its transpose/conjugate-transpose as returned by p?tzrzf to a general matrix.
Syntax
void pslarzb(char *side, char *trans, char *direct, char *storev, MKL_INT *m, MKL_INT *n,
MKL_INT *k, MKL_INT *l, float *v, MKL_INT *iv, MKL_INT *jv, MKL_INT *descv,
float *t, float *c, MKL_INT *ic, MKL_INT *jc, MKL_INT *descc, float *work);
void pdlarzb(char *side, char *trans, char *direct, char *storev, MKL_INT *m, MKL_INT *n,
MKL_INT *k, MKL_INT *l, double *v, MKL_INT *iv, MKL_INT *jv, MKL_INT *descv,
double *t, double *c, MKL_INT *ic, MKL_INT *jc, MKL_INT *descc,
double *work);
void pclarzb(char *side, char *trans, char *direct, char *storev, MKL_INT *m, MKL_INT *n,
MKL_INT *k, MKL_INT *l, MKL_Complex8 *v, MKL_INT *iv, MKL_INT *jv,
MKL_INT *descv, MKL_Complex8 *t, MKL_Complex8 *c, MKL_INT *ic, MKL_INT *jc,
MKL_INT *descc, MKL_Complex8 *work);
void pzlarzb(char *side, char *trans, char *direct, char *storev, MKL_INT *m, MKL_INT *n,
MKL_INT *k, MKL_INT *l, MKL_Complex16 *v, MKL_INT *iv, MKL_INT *jv,
MKL_INT *descv, MKL_Complex16 *t, MKL_Complex16 *c, MKL_INT *ic, MKL_INT *jc,
MKL_INT *descc, MKL_Complex16 *work);
Include Files
mkl_scalapack.h
Description
pslarzb pdlarzb pclarzb pzlarzb The p?larzb routine function applies a real/complex block reflector Q or its transpose QT (conjugate transpose Q^{H} for complex flavors) to a real/complex distributed m -by- n matrix sub( C ) = C(ic:ic+m-1 , jc:jc+n-1) from the left or the right.
Q is a product of k elementary reflectors as returned by p?tzrzf (Reduces the upper trapezoidal matrix A to upper triangular form.) .
Currently, only storev = 'R' and direct = 'B' are supported.
Input Parameters
side
(global)
if side = 'L' : apply Q or QT ( QH for complex flavors) from the Left; if side = 'R' : apply Q or QT ( QH for complex flavors) from the Right.
trans
(global)
if trans = 'N' : No transpose, apply Q ; If trans='T' : Transpose, apply Q^{T} (real flavors); If trans='C' : Conjugate transpose, apply Q^{H} (complex flavors).
direct
(global)
Indicates how H is formed from a product of elementary reflectors. if direct = 'F': H = H(1)*H(2)*...*H(k) - forward (not supported) ; if direct = 'B': H = H(k)*...*H(2)*H(1) - backward.
storev
(global)
Indicates how the vectors that define the elementary reflectors are stored: if storev = 'C' : columnwise (not supported ). if storev = 'R' : rowwise.
m
(global)
The number of rows in the distributed submatrix sub( C ). (m ≥ 0) .
n
(global)
The number of columns in the distributed submatrix sub( C ). (n ≥ 0) .
k
(global)
The order of the matrix T . (= the number of elementary reflectors whose product defines the block reflector).
l
(global)
The columns of the distributed submatrix sub( A ) containing the meaningful part of the Householder reflectors. If side = 'L' , m ≥ l ≥ 0 , if side = 'R' , n ≥ l ≥ 0 .
- v
-
(local). REAL for pslarzb DOUBLE PRECISION for pdlarzb COMPLEX for pclarzb COMPLEX*16 for pzlarzb .
Pointer into the local memory to an array of size (lld_v, LOCc(jv+m-1))lld_v * LOCc ( jv + m -1) if side = 'L', (lld_v, LOCc(jv+m-1))lld_v * LOCc ( jv + m -1) if side = 'R' .
It contains the local pieces of the distributed vectors V representing the Householder transformation as returned by p?tzrzf . lld_v ≥ LOCr ( iv + k -1).
iv , jv
(global)
The row and column indices in the global matrix V indicating the first row and the first column of the submatrix sub( V ), respectively.
descv
(global and local) array of size dlen_ . The array descriptor for the distributed matrix V .
- t
-
(local) REAL for pslarzb DOUBLE PRECISION for pdlarzb COMPLEX for pclarzb COMPLEX*16 for pzlarzb .
Array of size mb_v * mb_v .
The lower triangular matrix T in the representation of the block reflector.
- c
-
(local). REAL for pslarfb DOUBLE PRECISION for pdlarfb COMPLEX for pclarfb COMPLEX*16 for pzlarfb .
Pointer into the local memory to an array of size (lld_c, LOCc(jc+n-1))lld_c * LOCc ( jc + n -1) .
On entry, the m -by- n distributed matrix sub( C ).
ic , jc
(global)
The row and column indices in the global matrix C indicating the first row and the first column of the submatrix sub( C ), respectively.
descc
(global and local) array of size dlen_ . The array descriptor for the distributed matrix C .
- work
-
(local). REAL for pslarzb DOUBLE PRECISION for pdlarzb COMPLEX for pclarzb COMPLEX*16 for pzlarzb . Array of size lwork . Here lcmq = lcm/npcol with lcm = iclm(nprow, npcol) , iroffv = mod(iv-1, mb_v) , icoffv = mod( jv-1, nb_v) , ivrow = indxg2p(iv, mb_v, myrow, rsrc_v, nprow) , ivcol = indxg2p(jv, nb_v, mycol, csrc_v, npcol) , mqv0 = numroc(m+icoffv, nb_v, mycol, ivcol, npcol) , npv0 = numroc(n+iroffv, mb_v, myrow, ivrow, nprow) , 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) , npc0 = numroc(n+icoffc, mb_c, myrow, icrow, nprow) , nqc0 = numroc(n+icoffc, nb_c, mycol, iccol, npcol) ,
ilcm , indxg2p , and numroc are ScaLAPACK tool functions; myrow , mycol , nprow , and npcol can be determined by calling the function blacs_gridinfo .
Output Parameters
- c
-
(local). On exit, sub( C ) is overwritten by the Q*sub(C), or Q'*sub(C), or sub(C)*Q , or sub(C)*Q' , where Q' is the transpose (conjugate transpose) of Q .