Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F78531886
iparmq.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
Wed, Aug 21, 11:11
Size
11 KB
Mime Type
text/html
Expires
Fri, Aug 23, 11:11 (2 d)
Engine
blob
Format
Raw Data
Handle
20017757
Attached To
rLAMMPS lammps
iparmq.f
View Options
*>
\
brief
\
b
IPARMQ
*
*
===========
DOCUMENTATION
===========
*
*
Online
html
documentation
available
at
*
http
:
//
www
.
netlib
.
org
/
lapack
/
explore
-
html
/
*
*>
\
htmlonly
*>
Download
IPARMQ
+
dependencies
*>
<
a
href
=
"http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/iparmq.f"
>
*>
[
TGZ
]
</
a
>
*>
<
a
href
=
"http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/iparmq.f"
>
*>
[
ZIP
]
</
a
>
*>
<
a
href
=
"http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/iparmq.f"
>
*>
[
TXT
]
</
a
>
*>
\
endhtmlonly
*
*
Definition
:
*
===========
*
*
INTEGER
FUNCTION
IPARMQ
(
ISPEC
,
NAME
,
OPTS
,
N
,
ILO
,
IHI
,
LWORK
)
*
*
..
Scalar
Arguments
..
*
INTEGER
IHI
,
ILO
,
ISPEC
,
LWORK
,
N
*
CHARACTER
NAME
*
(
*
),
OPTS
*
(
*
)
*
*
*>
\
par
Purpose
:
*
=============
*>
*>
\
verbatim
*>
*>
This
program
sets
problem
and
machine
dependent
parameters
*>
useful
for
xHSEQR
and
its
subroutines
.
It
is
called
whenever
*>
ILAENV
is
called
with
12
<=
ISPEC
<=
16
*>
\
endverbatim
*
*
Arguments
:
*
==========
*
*>
\
param
[
in
]
ISPEC
*>
\
verbatim
*>
ISPEC
is
integer
scalar
*>
ISPEC
specifies
which
tunable
parameter
IPARMQ
should
*>
return
.
*>
*>
ISPEC
=
12
:
(
INMIN
)
Matrices
of
order
nmin
or
less
*>
are
sent
directly
to
xLAHQR
,
the
implicit
*>
double
shift
QR
algorithm
.
NMIN
must
be
*>
at
least
1
1.
*>
*>
ISPEC
=
13
:
(
INWIN
)
Size
of
the
deflation
window
.
*>
This
is
best
set
greater
than
or
equal
to
*>
the
number
of
simultaneous
shifts
NS
.
*>
Larger
matrices
benefit
from
larger
deflation
*>
windows
.
*>
*>
ISPEC
=
14
:
(
INIBL
)
Determines
when
to
stop
nibbling
and
*>
invest
in
an
(
expensive
)
multi
-
shift
QR
sweep
.
*>
If
the
aggressive
early
deflation
subroutine
*>
finds
LD
converged
eigenvalues
from
an
order
*>
NW
deflation
window
and
LD
.GT.
(
NW
*
NIBBLE
)
/
100
,
*>
then
the
next
QR
sweep
is
skipped
and
early
*>
deflation
is
applied
immediately
to
the
*>
remaining
active
diagonal
block
.
Setting
*>
IPARMQ
(
ISPEC
=
14
)
=
0
causes
TTQRE
to
skip
a
*>
multi
-
shift
QR
sweep
whenever
early
deflation
*>
finds
a
converged
eigenvalue
.
Setting
*>
IPARMQ
(
ISPEC
=
14
)
greater
than
or
equal
to
100
*>
prevents
TTQRE
from
skipping
a
multi
-
shift
*>
QR
sweep
.
*>
*>
ISPEC
=
15
:
(
NSHFTS
)
The
number
of
simultaneous
shifts
in
*>
a
multi
-
shift
QR
iteration
.
*>
*>
ISPEC
=
16
:
(
IACC22
)
IPARMQ
is
set
to
0
,
1
or
2
with
the
*>
following
meanings
.
*>
0
:
During
the
multi
-
shift
QR
sweep
,
*>
xLAQR5
does
not
accumulate
reflections
and
*>
does
not
use
matrix
-
matrix
multiply
to
*>
update
the
far
-
from
-
diagonal
matrix
*>
entries
.
*>
1
:
During
the
multi
-
shift
QR
sweep
,
*>
xLAQR5
and
/
or
xLAQRaccumulates
reflections
and
uses
*>
matrix
-
matrix
multiply
to
update
the
*>
far
-
from
-
diagonal
matrix
entries
.
*>
2
:
During
the
multi
-
shift
QR
sweep
.
*>
xLAQR5
accumulates
reflections
and
takes
*>
advantage
of
2
-
by
-
2
block
structure
during
*>
matrix
-
matrix
multiplies
.
*>
(
If
xTRMM
is
slower
than
xGEMM
,
then
*>
IPARMQ
(
ISPEC
=
16
)
=
1
may
be
more
efficient
than
*>
IPARMQ
(
ISPEC
=
16
)
=
2
despite
the
greater
level
of
*>
arithmetic
work
implied
by
the
latter
choice
.
)
*>
\
endverbatim
*>
*>
\
param
[
in
]
NAME
*>
\
verbatim
*>
NAME
is
character
string
*>
Name
of
the
calling
subroutine
*>
\
endverbatim
*>
*>
\
param
[
in
]
OPTS
*>
\
verbatim
*>
OPTS
is
character
string
*>
This
is
a
concatenation
of
the
string
arguments
to
*>
TTQRE
.
*>
\
endverbatim
*>
*>
\
param
[
in
]
N
*>
\
verbatim
*>
N
is
integer
scalar
*>
N
is
the
order
of
the
Hessenberg
matrix
H
.
*>
\
endverbatim
*>
*>
\
param
[
in
]
ILO
*>
\
verbatim
*>
ILO
is
INTEGER
*>
\
endverbatim
*>
*>
\
param
[
in
]
IHI
*>
\
verbatim
*>
IHI
is
INTEGER
*>
It
is
assumed
that
H
is
already
upper
triangular
*>
in
rows
and
columns
1
:
ILO
-
1
and
IHI
+
1
:
N
.
*>
\
endverbatim
*>
*>
\
param
[
in
]
LWORK
*>
\
verbatim
*>
LWORK
is
integer
scalar
*>
The
amount
of
workspace
available
.
*>
\
endverbatim
*
*
Authors
:
*
========
*
*>
\
author
Univ
.
of
Tennessee
*>
\
author
Univ
.
of
California
Berkeley
*>
\
author
Univ
.
of
Colorado
Denver
*>
\
author
NAG
Ltd
.
*
*>
\
date
November
2011
*
*>
\
ingroup
auxOTHERauxiliary
*
*>
\
par
Further
Details
:
*
=====================
*>
*>
\
verbatim
*>
*>
Little
is
known
about
how
best
to
choose
these
parameters
.
*>
It
is
possible
to
use
different
values
of
the
parameters
*>
for
each
of
CHSEQR
,
DHSEQR
,
SHSEQR
and
ZHSEQR
.
*>
*>
It
is
probably
best
to
choose
different
parameters
for
*>
different
matrices
and
different
parameters
at
different
*>
times
during
the
iteration
,
but
this
has
not
been
*>
implemented
---
yet
.
*>
*>
*>
The
best
choices
of
most
of
the
parameters
depend
*>
in
an
ill
-
understood
way
on
the
relative
execution
*>
rate
of
xLAQR3
and
xLAQR5
and
on
the
nature
of
each
*>
particular
eigenvalue
problem
.
Experiment
may
be
the
*>
only
practical
way
to
determine
which
choices
are
most
*>
effective
.
*>
*>
Following
is
a
list
of
default
values
supplied
by
IPARMQ
.
*>
These
defaults
may
be
adjusted
in
order
to
attain
better
*>
performance
in
any
particular
computational
environment
.
*>
*>
IPARMQ
(
ISPEC
=
12
)
The
xLAHQR
vs
xLAQR0
crossover
point
.
*>
Default
:
7
5.
(
Must
be
at
least
1
1.
)
*>
*>
IPARMQ
(
ISPEC
=
13
)
Recommended
deflation
window
size
.
*>
This
depends
on
ILO
,
IHI
and
NS
,
the
*>
number
of
simultaneous
shifts
returned
*>
by
IPARMQ
(
ISPEC
=
15
)
.
The
default
for
*>
(
IHI
-
ILO
+
1
)
.LE.
500
is
NS
.
The
default
*>
for
(
IHI
-
ILO
+
1
)
.GT.
500
is
3
*
NS
/
2.
*>
*>
IPARMQ
(
ISPEC
=
14
)
Nibble
crossover
point
.
Default
:
1
4.
*>
*>
IPARMQ
(
ISPEC
=
15
)
Number
of
simultaneous
shifts
,
NS
.
*>
a
multi
-
shift
QR
iteration
.
*>
*>
If
IHI
-
ILO
+
1
is
...
*>
*>
greater
than
...
but
less
...
the
*>
or
equal
to
...
than
default
is
*>
*>
0
30
NS
=
2
+
*>
30
60
NS
=
4
+
*>
60
150
NS
=
10
*>
150
590
NS
=
**
*>
590
3000
NS
=
64
*>
3000
6000
NS
=
128
*>
6000
infinity
NS
=
256
*>
*>
(
+
)
By
default
matrices
of
this
order
are
*>
passed
to
the
implicit
double
shift
routine
*>
xLAHQR
.
See
IPARMQ
(
ISPEC
=
12
)
above
.
These
*>
values
of
NS
are
used
only
in
case
of
a
rare
*>
xLAHQR
failure
.
*>
*>
(
**
)
The
asterisks
(
**
)
indicate
an
ad
-
hoc
*>
function
increasing
from
10
to
6
4.
*>
*>
IPARMQ
(
ISPEC
=
16
)
Select
structured
matrix
multiply
.
*>
(
See
ISPEC
=
16
above
for
details
.
)
*>
Default
:
3.
*>
\
endverbatim
*>
*
=====================================================================
INTEGER
FUNCTION
IPARMQ
(
ISPEC
,
NAME
,
OPTS
,
N
,
ILO
,
IHI
,
LWORK
)
*
*
--
LAPACK
auxiliary
routine
(
version
3.4.0
)
--
*
--
LAPACK
is
a
software
package
provided
by
Univ
.
of
Tennessee
,
--
*
--
Univ
.
of
California
Berkeley
,
Univ
.
of
Colorado
Denver
and
NAG
Ltd
..
--
*
November
2011
*
*
..
Scalar
Arguments
..
INTEGER
IHI
,
ILO
,
ISPEC
,
LWORK
,
N
CHARACTER
NAME
*
(
*
),
OPTS
*
(
*
)
*
*
================================================================
*
..
Parameters
..
INTEGER
INMIN
,
INWIN
,
INIBL
,
ISHFTS
,
IACC22
PARAMETER
(
INMIN
=
12
,
INWIN
=
13
,
INIBL
=
14
,
$
ISHFTS
=
15
,
IACC22
=
16
)
INTEGER
NMIN
,
K22MIN
,
KACMIN
,
NIBBLE
,
KNWSWP
PARAMETER
(
NMIN
=
75
,
K22MIN
=
14
,
KACMIN
=
14
,
$
NIBBLE
=
14
,
KNWSWP
=
500
)
REAL
TWO
PARAMETER
(
TWO
=
2.0
)
*
..
*
..
Local
Scalars
..
INTEGER
NH
,
NS
*
..
*
..
Intrinsic
Functions
..
INTRINSIC
LOG
,
MAX
,
MOD
,
NINT
,
REAL
*
..
*
..
Executable
Statements
..
IF
(
(
ISPEC
.EQ.
ISHFTS
)
.OR.
(
ISPEC
.EQ.
INWIN
)
.OR.
$
(
ISPEC
.EQ.
IACC22
)
)
THEN
*
*
====
Set
the
number
simultaneous
shifts
====
*
NH
=
IHI
-
ILO
+
1
NS
=
2
IF
(
NH
.GE.
30
)
$
NS
=
4
IF
(
NH
.GE.
60
)
$
NS
=
10
IF
(
NH
.GE.
150
)
$
NS
=
MAX
(
10
,
NH
/
NINT
(
LOG
(
REAL
(
NH
)
)
/
LOG
(
TWO
)
)
)
IF
(
NH
.GE.
590
)
$
NS
=
64
IF
(
NH
.GE.
3000
)
$
NS
=
128
IF
(
NH
.GE.
6000
)
$
NS
=
256
NS
=
MAX
(
2
,
NS
-
MOD
(
NS
,
2
)
)
END IF
*
IF
(
ISPEC
.EQ.
INMIN
)
THEN
*
*
*
=====
Matrices
of
order
smaller
than
NMIN
get
sent
*
.
to
xLAHQR
,
the
classic
double
shift
algorithm
.
*
.
This
must
be
at
least
1
1.
====
*
IPARMQ
=
NMIN
*
ELSE IF
(
ISPEC
.EQ.
INIBL
)
THEN
*
*
====
INIBL
:
skip
a
multi
-
shift
qr
iteration
and
*
.
whenever
aggressive
early
deflation
finds
*
.
at
least
(
NIBBLE
*
(
window
size
)
/
100
)
deflations
.
====
*
IPARMQ
=
NIBBLE
*
ELSE IF
(
ISPEC
.EQ.
ISHFTS
)
THEN
*
*
====
NSHFTS
:
The
number
of
simultaneous
shifts
=====
*
IPARMQ
=
NS
*
ELSE IF
(
ISPEC
.EQ.
INWIN
)
THEN
*
*
====
NW
:
deflation
window
size
.
====
*
IF
(
NH
.LE.
KNWSWP
)
THEN
IPARMQ
=
NS
ELSE
IPARMQ
=
3
*
NS
/
2
END IF
*
ELSE IF
(
ISPEC
.EQ.
IACC22
)
THEN
*
*
====
IACC22
:
Whether
to
accumulate
reflections
*
.
before
updating
the
far
-
from
-
diagonal
elements
*
.
and
whether
to
use
2
-
by
-
2
block
structure
while
*
.
doing
it
.
A
small
amount
of
work
could
be
saved
*
.
by
making
this
choice
dependent
also
upon
the
*
.
NH
=
IHI
-
ILO
+
1.
*
IPARMQ
=
0
IF
(
NS
.GE.
KACMIN
)
$
IPARMQ
=
1
IF
(
NS
.GE.
K22MIN
)
$
IPARMQ
=
2
*
ELSE
*
=====
invalid
value
of
ispec
=====
IPARMQ
=
-
1
*
END IF
*
*
====
End
of
IPARMQ
====
*
END
Event Timeline
Log In to Comment