Applies the conjugate transpose of an elementary reflector to a general matrix.
call pclarfc(side, m, n, v, iv, jv, descv, incv, tau, c, ic, jc, descc, work)
call pzlarfc(side, m, n, v, iv, jv, descv, incv, tau, c, ic, jc, descc, work)
The p?larfc routine applies a complex elementary reflector QH to a complex m-by-n distributed matrix sub(C) = C(ic:ic+m-1, jc:jc+n-1), from either the left or the right. Q is represented in the form
Q = i-tau*v*v',
where tau is a complex scalar and v is a complex vector.
If tau = 0, then Q is taken to be the unit matrix.
(global).CHARACTER.
if side = 'L': form QH*sub(C) ;
if side = 'R': form sub (C)*QH.
(global) INTEGER.
The number of rows to be operated on, that is, the number of rows of the distributed submatrix sub(C). (m ≥ 0).
(global) INTEGER.
The number of columns to be operated on, that is, the number of columns of the distributed submatrix sub(C). (n ≥ 0).
(local).
COMPLEX for pclarfc
COMPLEX*16 for pzlarfc.
Pointer into the local memory to an array of DIMENSION (lld_v,*) containing the local pieces of the distributed vectors v representing the Householder transformation Q,
v(iv:iv+m-1, jv) if side = 'L' and incv = 1,
v(iv, jv:jv+m-1) if side = 'L' and incv = m_v,
v(iv:iv+n-1, jv) if side = 'R' and incv = 1,
v(iv, jv:jv+n-1) if side = 'R' and incv = m_v.
The vector v is the representation of Q. v is not used if tau = 0.
(global) INTEGER.
The row and column indices in the global array V indicating the first row and the first column of the submatrix sub(V), respectively.
(global and local) INTEGER array, DIMENSION (dlen_). The array descriptor for the distributed matrix V.
(global) INTEGER.
The global increment for the elements of v. Only two values of incv are supported in this version, namely 1 and m_v.
incv must not be zero.
(local)
COMPLEX for pclarfc
COMPLEX*16 for pzlarfc.
Array, DIMENSION LOCc(jv) if incv = 1, and LOCr(iv) otherwise. This array contains the Householder scalars related to the Householder vectors.
tau is tied to the distributed matrix V.
(local).
COMPLEX for pclarfc
COMPLEX*16 for pzlarfc.
Pointer into the local memory to an array of DIMENSION (lld_c, LOCc(jc+n-1) ), containing the local pieces of sub(C).
(global) INTEGER.
The row and column indices in the global array C indicating the first row and the first column of the submatrix sub(C), respectively.
(global and local) INTEGER array, DIMENSION (dlen_). The array descriptor for the distributed matrix C.
(local).
COMPLEX for pclarfc
COMPLEX*16 for pzlarfc.
Workspace array, DIMENSION (lwork).
If incv = 1,
if side = 'L' ,
if ivcol = iccol,
lwork ≥ nqc0
else
lwork ≥ mpc0 + max( 1, nqc0 )
end if
else if side = 'R',
lwork ≥ nqc0 + max( max( 1, mpc0 ), numroc( numroc(
n+icoffc,nb_v,0,0,npcol ), nb_v,0,0,lcmq ) )
end if
else if incv = m_v,
if side = 'L',
lwork ≥ mpc0 + max( max( 1, nqc0 ), numroc( numroc(
m+iroffc,mb_v,0,0,nprow ),mb_v,0,0,lcmp ) )
else if side = 'R' ,
if ivrow = icrow,
lwork ≥ mpc0
else
lwork ≥ nqc0 + max( 1, mpc0 )
end if
end if
end if,
where lcm is the least common multiple of nprow and npcol and lcm = 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, and numroc are ScaLAPACK tool functions;myrow, mycol, nprow, and npcol can be determined by calling the subroutine blacs_gridinfo.
Copyright © 1994 - 2011, Intel Corporation. All rights reserved.