Developer Reference

Contents

p?larfc

Applies the conjugate transpose of an elementary reflector to a general matrix.

Syntax

void
pclarfc
(
char
*side
,
MKL_INT
*m
,
MKL_INT
*n
,
MKL_Complex8
*v
,
MKL_INT
*iv
,
MKL_INT
*jv
,
MKL_INT
*descv
,
MKL_INT
*incv
,
MKL_Complex8
*tau
,
MKL_Complex8
*c
,
MKL_INT
*ic
,
MKL_INT
*jc
,
MKL_INT
*descc
,
MKL_Complex8
*work
);
void
pzlarfc
(
char
*side
,
MKL_INT
*m
,
MKL_INT
*n
,
MKL_Complex16
*v
,
MKL_INT
*iv
,
MKL_INT
*jv
,
MKL_INT
*descv
,
MKL_INT
*incv
,
MKL_Complex16
*tau
,
MKL_Complex16
*c
,
MKL_INT
*ic
,
MKL_INT
*jc
,
MKL_INT
*descc
,
MKL_Complex16
*work
);
Include Files
  • mkl_scalapack.h
Description
The
p?larfc
function
applies a complex elementary reflector
Q
H
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.
Input Parameters
side
(global)
if
side
=
'L'
: form
Q
H
*sub(
C
)
;
if
side
=
'R'
: form sub
(
C
)*Q
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)
.
v
(local).
Pointer into the local memory to an array of size
lld_v
*
LOCc
(
n_v
)
, containing the local pieces of the global distributed matrix
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 array
v
is the representation of
Q
.
v
is not used if
tau
= 0
.
iv
,
jv
(global)
The row and column indices in the global matrix
V
indicating the first row and the first column of the matrix sub(
V
), respectively.
descv
(global and local) array of size
dlen_
. The array descriptor for the distributed matrix
V
.
incv
(global)
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.
tau
(local)
Array of size
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
.
c
(local).
Pointer into the local memory to an array of size
lld_c
*
LOCc
(
jc
+
n
-1)
, containing the local pieces of 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 matrix sub(
C
), respectively.
descc
(global and local) array of size
dlen_
. The array descriptor for the distributed matrix
C
.
work
(local)
.
Workspace array of size
lwork
.
If
incv
= 1,
  if
side
=
'L'
,
    if
ivcol
=
iccol
,
      
lwork
nqc
0
    else
      
lwork
mpc
0 +
max
( 1,
nqc
0 )
    end if
  else if
side
=
'R'
,
    
lwork
nqc
0 +
max
(
max
( 1,
mpc
0 ),
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
mpc
0 +
max
(
max
( 1,
nqc
0 ),
numroc
(
numroc
(
      
m
+
iroffc
,
mb_v
,0,0,
nprow
),
mb_v
,0,0,
lcmp
) )
  else if
side
=
'R'
,
    if
ivrow
=
icrow
,
      
lwork
mpc
0
    else
      
lwork
nqc
0 +
max
( 1,
mpc
0 )
    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
)
,
mpc
0 =
numroc
(
m
+
iroffc
,
mb_c
,
myrow
,
icrow
,
nprow
)
,
nqc
0 =
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
H
*sub(
C
)
if
side
=
'L'
, or
sub(
C
) *
Q
H
if
side
=
'R'
.

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.