Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F101898252
dlarft.f
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Fri, Feb 14, 21:44
Size
9 KB
Mime Type
text/html
Expires
Sun, Feb 16, 21:44 (15 h, 49 m)
Engine
blob
Format
Raw Data
Handle
24240259
Attached To
rDLMA Diffusion limited mixed aggregation
dlarft.f
View Options
*>
\
brief
\
b
DLARFT
*
*
===========
DOCUMENTATION
===========
*
*
Online
html
documentation
available
at
*
http
:
//
www
.
netlib
.
org
/
lapack
/
explore
-
html
/
*
*>
\
htmlonly
*>
Download
DLARFT
+
dependencies
*>
<
a
href
=
"http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlarft.f"
>
*>
[
TGZ
]
</
a
>
*>
<
a
href
=
"http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlarft.f"
>
*>
[
ZIP
]
</
a
>
*>
<
a
href
=
"http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlarft.f"
>
*>
[
TXT
]
</
a
>
*>
\
endhtmlonly
*
*
Definition
:
*
===========
*
*
SUBROUTINE
DLARFT
(
DIRECT
,
STOREV
,
N
,
K
,
V
,
LDV
,
TAU
,
T
,
LDT
)
*
*
..
Scalar
Arguments
..
*
CHARACTER
DIRECT
,
STOREV
*
INTEGER
K
,
LDT
,
LDV
,
N
*
..
*
..
Array
Arguments
..
*
DOUBLE PRECISION
T
(
LDT
,
*
),
TAU
(
*
),
V
(
LDV
,
*
)
*
..
*
*
*>
\
par
Purpose
:
*
=============
*>
*>
\
verbatim
*>
*>
DLARFT
forms
the
triangular
factor
T
of
a
real
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
*>
*>
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
*>
\
endverbatim
*
*
Arguments
:
*
==========
*
*>
\
param
[
in
]
DIRECT
*>
\
verbatim
*>
DIRECT
is
CHARACTER
*
1
*>
Specifies
the
order
in
which
the
elementary
reflectors
are
*>
multiplied
to
form
the
block
reflector
:
*>
=
'F'
:
H
=
H
(
1
)
H
(
2
)
.
.
.
H
(
k
)
(
Forward
)
*>
=
'B'
:
H
=
H
(
k
)
.
.
.
H
(
2
)
H
(
1
)
(
Backward
)
*>
\
endverbatim
*>
*>
\
param
[
in
]
STOREV
*>
\
verbatim
*>
STOREV
is
CHARACTER
*
1
*>
Specifies
how
the
vectors
which
define
the
elementary
*>
reflectors
are
stored
(
see
also
Further
Details
):
*>
=
'C'
:
columnwise
*>
=
'R'
:
rowwise
*>
\
endverbatim
*>
*>
\
param
[
in
]
N
*>
\
verbatim
*>
N
is
INTEGER
*>
The
order
of
the
block
reflector
H
.
N
>=
0.
*>
\
endverbatim
*>
*>
\
param
[
in
]
K
*>
\
verbatim
*>
K
is
INTEGER
*>
The
order
of
the
triangular
factor
T
(
=
the
number
of
*>
elementary
reflectors
)
.
K
>=
1.
*>
\
endverbatim
*>
*>
\
param
[
in
]
V
*>
\
verbatim
*>
V
is
DOUBLE PRECISION
array
,
dimension
*>
(
LDV
,
K
)
if
STOREV
=
'C'
*>
(
LDV
,
N
)
if
STOREV
=
'R'
*>
The
matrix
V
.
See
further
details
.
*>
\
endverbatim
*>
*>
\
param
[
in
]
LDV
*>
\
verbatim
*>
LDV
is
INTEGER
*>
The
leading
dimension
of
the
array
V
.
*>
If
STOREV
=
'C'
,
LDV
>=
max
(
1
,
N
);
if
STOREV
=
'R'
,
LDV
>=
K
.
*>
\
endverbatim
*>
*>
\
param
[
in
]
TAU
*>
\
verbatim
*>
TAU
is
DOUBLE PRECISION
array
,
dimension
(
K
)
*>
TAU
(
i
)
must
contain
the
scalar
factor
of
the
elementary
*>
reflector
H
(
i
)
.
*>
\
endverbatim
*>
*>
\
param
[
out
]
T
*>
\
verbatim
*>
T
is
DOUBLE PRECISION
array
,
dimension
(
LDT
,
K
)
*>
The
k
by
k
triangular
factor
T
of
the
block
reflector
.
*>
If
DIRECT
=
'F'
,
T
is
upper
triangular
;
if
DIRECT
=
'B'
,
T
is
*>
lower
triangular
.
The
rest
of
the
array
is
not
used
.
*>
\
endverbatim
*>
*>
\
param
[
in
]
LDT
*>
\
verbatim
*>
LDT
is
INTEGER
*>
The
leading
dimension
of
the
array
T
.
LDT
>=
K
.
*>
\
endverbatim
*
*
Authors
:
*
========
*
*>
\
author
Univ
.
of
Tennessee
*>
\
author
Univ
.
of
California
Berkeley
*>
\
author
Univ
.
of
Colorado
Denver
*>
\
author
NAG
Ltd
.
*
*>
\
date
April
2012
*
*>
\
ingroup
doubleOTHERauxiliary
*
*>
\
par
Further
Details
:
*
=====================
*>
*>
\
verbatim
*>
*>
The
shape
of
the
matrix
V
and
the
storage
of
the
vectors
which
define
*>
the
H
(
i
)
is
best
illustrated
by
the
following
example
with
n
=
5
and
*>
k
=
3.
The
elements
equal
to
1
are
not
stored
.
*>
*>
DIRECT
=
'F'
and
STOREV
=
'C'
:
DIRECT
=
'F'
and
STOREV
=
'R'
:
*>
*>
V
=
(
1
)
V
=
(
1
v1
v1
v1
v1
)
*>
(
v1
1
)
(
1
v2
v2
v2
)
*>
(
v1
v2
1
)
(
1
v3
v3
)
*>
(
v1
v2
v3
)
*>
(
v1
v2
v3
)
*>
*>
DIRECT
=
'B'
and
STOREV
=
'C'
:
DIRECT
=
'B'
and
STOREV
=
'R'
:
*>
*>
V
=
(
v1
v2
v3
)
V
=
(
v1
v1
1
)
*>
(
v1
v2
v3
)
(
v2
v2
v2
1
)
*>
(
1
v2
v3
)
(
v3
v3
v3
v3
1
)
*>
(
1
v3
)
*>
(
1
)
*>
\
endverbatim
*>
*
=====================================================================
SUBROUTINE
DLARFT
(
DIRECT
,
STOREV
,
N
,
K
,
V
,
LDV
,
TAU
,
T
,
LDT
)
*
*
--
LAPACK
auxiliary
routine
(
version
3.4.1
)
--
*
--
LAPACK
is
a
software
package
provided
by
Univ
.
of
Tennessee
,
--
*
--
Univ
.
of
California
Berkeley
,
Univ
.
of
Colorado
Denver
and
NAG
Ltd
..
--
*
April
2012
*
*
..
Scalar
Arguments
..
CHARACTER
DIRECT
,
STOREV
INTEGER
K
,
LDT
,
LDV
,
N
*
..
*
..
Array
Arguments
..
DOUBLE PRECISION
T
(
LDT
,
*
),
TAU
(
*
),
V
(
LDV
,
*
)
*
..
*
*
=====================================================================
*
*
..
Parameters
..
DOUBLE PRECISION
ONE
,
ZERO
PARAMETER
(
ONE
=
1.0
D
+
0
,
ZERO
=
0.0
D
+
0
)
*
..
*
..
Local
Scalars
..
INTEGER
I
,
J
,
PREVLASTV
,
LASTV
*
..
*
..
External
Subroutines
..
EXTERNAL
DGEMV
,
DTRMV
*
..
*
..
External
Functions
..
LOGICAL
LSAME
EXTERNAL
LSAME
*
..
*
..
Executable
Statements
..
*
*
Quick
return if
possible
*
IF
(
N
.EQ.
0
)
$
RETURN
*
IF
(
LSAME
(
DIRECT
,
'F'
)
)
THEN
PREVLASTV
=
N
DO
I
=
1
,
K
PREVLASTV
=
MAX
(
I
,
PREVLASTV
)
IF
(
TAU
(
I
)
.EQ.
ZERO
)
THEN
*
*
H
(
i
)
=
I
*
DO
J
=
1
,
I
T
(
J
,
I
)
=
ZERO
END DO
ELSE
*
*
general
case
*
IF
(
LSAME
(
STOREV
,
'C'
)
)
THEN
*
Skip
any
trailing
zeros
.
DO
LASTV
=
N
,
I
+
1
,
-
1
IF
(
V
(
LASTV
,
I
)
.NE.
ZERO
)
EXIT
END DO
DO
J
=
1
,
I
-
1
T
(
J
,
I
)
=
-
TAU
(
I
)
*
V
(
I
,
J
)
END DO
J
=
MIN
(
LASTV
,
PREVLASTV
)
*
*
T
(
1
:
i
-
1
,
i
)
:
=
-
tau
(
i
)
*
V
(
i
:
j
,
1
:
i
-
1
)
**
T
*
V
(
i
:
j
,
i
)
*
CALL
DGEMV
(
'Transpose'
,
J
-
I
,
I
-
1
,
-
TAU
(
I
),
$
V
(
I
+
1
,
1
),
LDV
,
V
(
I
+
1
,
I
),
1
,
ONE
,
$
T
(
1
,
I
),
1
)
ELSE
*
Skip
any
trailing
zeros
.
DO
LASTV
=
N
,
I
+
1
,
-
1
IF
(
V
(
I
,
LASTV
)
.NE.
ZERO
)
EXIT
END DO
DO
J
=
1
,
I
-
1
T
(
J
,
I
)
=
-
TAU
(
I
)
*
V
(
J
,
I
)
END DO
J
=
MIN
(
LASTV
,
PREVLASTV
)
*
*
T
(
1
:
i
-
1
,
i
)
:
=
-
tau
(
i
)
*
V
(
1
:
i
-
1
,
i
:
j
)
*
V
(
i
,
i
:
j
)
**
T
*
CALL
DGEMV
(
'No transpose'
,
I
-
1
,
J
-
I
,
-
TAU
(
I
),
$
V
(
1
,
I
+
1
),
LDV
,
V
(
I
,
I
+
1
),
LDV
,
ONE
,
$
T
(
1
,
I
),
1
)
END IF
*
*
T
(
1
:
i
-
1
,
i
)
:
=
T
(
1
:
i
-
1
,
1
:
i
-
1
)
*
T
(
1
:
i
-
1
,
i
)
*
CALL
DTRMV
(
'Upper'
,
'No transpose'
,
'Non-unit'
,
I
-
1
,
T
,
$
LDT
,
T
(
1
,
I
),
1
)
T
(
I
,
I
)
=
TAU
(
I
)
IF
(
I
.GT.
1
)
THEN
PREVLASTV
=
MAX
(
PREVLASTV
,
LASTV
)
ELSE
PREVLASTV
=
LASTV
END IF
END IF
END DO
ELSE
PREVLASTV
=
1
DO
I
=
K
,
1
,
-
1
IF
(
TAU
(
I
)
.EQ.
ZERO
)
THEN
*
*
H
(
i
)
=
I
*
DO
J
=
I
,
K
T
(
J
,
I
)
=
ZERO
END DO
ELSE
*
*
general
case
*
IF
(
I
.LT.
K
)
THEN
IF
(
LSAME
(
STOREV
,
'C'
)
)
THEN
*
Skip
any
leading
zeros
.
DO
LASTV
=
1
,
I
-
1
IF
(
V
(
LASTV
,
I
)
.NE.
ZERO
)
EXIT
END DO
DO
J
=
I
+
1
,
K
T
(
J
,
I
)
=
-
TAU
(
I
)
*
V
(
N
-
K
+
I
,
J
)
END DO
J
=
MAX
(
LASTV
,
PREVLASTV
)
*
*
T
(
i
+
1
:
k
,
i
)
=
-
tau
(
i
)
*
V
(
j
:
n
-
k
+
i
,
i
+
1
:
k
)
**
T
*
V
(
j
:
n
-
k
+
i
,
i
)
*
CALL
DGEMV
(
'Transpose'
,
N
-
K
+
I
-
J
,
K
-
I
,
-
TAU
(
I
),
$
V
(
J
,
I
+
1
),
LDV
,
V
(
J
,
I
),
1
,
ONE
,
$
T
(
I
+
1
,
I
),
1
)
ELSE
*
Skip
any
leading
zeros
.
DO
LASTV
=
1
,
I
-
1
IF
(
V
(
I
,
LASTV
)
.NE.
ZERO
)
EXIT
END DO
DO
J
=
I
+
1
,
K
T
(
J
,
I
)
=
-
TAU
(
I
)
*
V
(
J
,
N
-
K
+
I
)
END DO
J
=
MAX
(
LASTV
,
PREVLASTV
)
*
*
T
(
i
+
1
:
k
,
i
)
=
-
tau
(
i
)
*
V
(
i
+
1
:
k
,
j
:
n
-
k
+
i
)
*
V
(
i
,
j
:
n
-
k
+
i
)
**
T
*
CALL
DGEMV
(
'No transpose'
,
K
-
I
,
N
-
K
+
I
-
J
,
$
-
TAU
(
I
),
V
(
I
+
1
,
J
),
LDV
,
V
(
I
,
J
),
LDV
,
$
ONE
,
T
(
I
+
1
,
I
),
1
)
END IF
*
*
T
(
i
+
1
:
k
,
i
)
:
=
T
(
i
+
1
:
k
,
i
+
1
:
k
)
*
T
(
i
+
1
:
k
,
i
)
*
CALL
DTRMV
(
'Lower'
,
'No transpose'
,
'Non-unit'
,
K
-
I
,
$
T
(
I
+
1
,
I
+
1
),
LDT
,
T
(
I
+
1
,
I
),
1
)
IF
(
I
.GT.
1
)
THEN
PREVLASTV
=
MIN
(
PREVLASTV
,
LASTV
)
ELSE
PREVLASTV
=
LASTV
END IF
END IF
T
(
I
,
I
)
=
TAU
(
I
)
END IF
END DO
END IF
RETURN
*
*
End
of
DLARFT
*
END
Event Timeline
Log In to Comment