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
voidpslarzb ( 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 );
voidpdlarzb ( 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 );
voidpclarzb ( 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 );
voidpzlarzb ( 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 Q:code:`T` (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 Q:code:`T` ( Q:code:`H` for complex flavors) from the Left; if side = 'R' : apply Q or Q:code:`T` ( Q:code:`H` 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 .