Developer Reference

  • 2020.2
  • 07/15/2020
  • Public Content
Contents

?larzt

Forms the triangular factor
T
of a block reflector
H
=
I
-
V*T*V
H
.

Syntax

call slarzt
(
direct
,
storev
,
n
,
k
,
v
,
ldv
,
tau
,
t
,
ldt
)
call dlarzt
(
direct
,
storev
,
n
,
k
,
v
,
ldv
,
tau
,
t
,
ldt
)
call clarzt
(
direct
,
storev
,
n
,
k
,
v
,
ldv
,
tau
,
t
,
ldt
)
call zlarzt
(
direct
,
storev
,
n
,
k
,
v
,
ldv
,
tau
,
t
,
ldt
)
Include Files
  • mkl.fi
Description
The routine forms the triangular factor
T
of a real/complex block reflector
H
of order >
n
, which is defined as a product of
k
elementary reflectors.
If
direct
=
'F'
,
H
=
H
(1)
*
H
(2)*...*
H
(
k
)
, and
T
is upper triangular.
If
direct
=
'B'
,
H
=
H
(
k
)*...*
H
(2)*
H
(1)
, and
T
is lower triangular.
If
storev
=
'C'
, the vector which defines the elementary reflector
H
(
i
) is stored in the
i
-th column of the array
v
, and
H
=
I
-
V
*
T
*
V
T
(for real flavors) or
H
=
I
-
V
*
T
*
V
H
(for complex flavors).
If
storev
=
'R'
, the vector which defines the elementary reflector
H
(
i
) is stored in the
i
-th row of the array
v
, and
H
=
I
-
V
T
*
T
*
V
(for real flavors) or
H
=
I
-
V
H
*
T
*
V
(for complex flavors).
Currently, only
storev
=
'R'
and
direct
=
'B'
are supported.
Input Parameters
direct
CHARACTER*1
.
Specifies the order in which the elementary reflectors are multiplied to form the block reflector:
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
CHARACTER*1
.
Specifies how the vectors which define the elementary reflectors are stored
(see also
Application Notes
below)
:
If
storev
=
'C'
: column-wise (not supported)
If
storev
=
'R'
: row-wise
n
INTEGER
. The order of the block reflector
H
.
n
0
.
k
INTEGER
. The order of the triangular factor
T
(equal to the number of elementary reflectors).
k
1
.
v
REAL
for
slarzt