Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F86055560
ilaenv.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
Thu, Oct 3, 23:41
Size
17 KB
Mime Type
text/html
Expires
Sat, Oct 5, 23:41 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
21335189
Attached To
rLAMMPS lammps
ilaenv.f
View Options
*>
\
brief
\
b
ILAENV
*
*
===========
DOCUMENTATION
===========
*
*
Online
html
documentation
available
at
*
http
:
//
www
.
netlib
.
org
/
lapack
/
explore
-
html
/
*
*>
\
htmlonly
*>
Download
ILAENV
+
dependencies
*>
<
a
href
=
"http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/ilaenv.f"
>
*>
[
TGZ
]
</
a
>
*>
<
a
href
=
"http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/ilaenv.f"
>
*>
[
ZIP
]
</
a
>
*>
<
a
href
=
"http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/ilaenv.f"
>
*>
[
TXT
]
</
a
>
*>
\
endhtmlonly
*
*
Definition
:
*
===========
*
*
INTEGER
FUNCTION
ILAENV
(
ISPEC
,
NAME
,
OPTS
,
N1
,
N2
,
N3
,
N4
)
*
*
..
Scalar
Arguments
..
*
CHARACTER
*
(
*
)
NAME
,
OPTS
*
INTEGER
ISPEC
,
N1
,
N2
,
N3
,
N4
*
..
*
*
*>
\
par
Purpose
:
*
=============
*>
*>
\
verbatim
*>
*>
ILAENV
is
called
from
the
LAPACK
routines
to
choose
problem
-
dependent
*>
parameters
for
the
local
environment
.
See
ISPEC
for
a
description
of
*>
the
parameters
.
*>
*>
ILAENV
returns
an
INTEGER
*>
if
ILAENV
>=
0
:
ILAENV
returns
the
value
of
the
parameter
specified
by
ISPEC
*>
if
ILAENV
<
0
:
if
ILAENV
=
-
k
,
the
k
-
th
argument
had
an
illegal
value
.
*>
*>
This
version
provides
a
set
of
parameters
which
should
give
good
,
*>
but
not
optimal
,
performance
on
many
of
the
currently
available
*>
computers
.
Users
are
encouraged
to
modify
this
subroutine
to
set
*>
the
tuning
parameters
for
their
particular
machine
using
the
option
*>
and
problem
size
information
in
the
arguments
.
*>
*>
This
routine
will
not
function
correctly
if
it
is
converted
to
all
*>
lower
case
.
Converting
it
to
all
upper
case
is
allowed
.
*>
\
endverbatim
*
*
Arguments
:
*
==========
*
*>
\
param
[
in
]
ISPEC
*>
\
verbatim
*>
ISPEC
is
INTEGER
*>
Specifies
the
parameter
to
be
returned
as
the
value
of
*>
ILAENV
.
*>
=
1
:
the
optimal
blocksize
;
if
this
value
is
1
,
an
unblocked
*>
algorithm
will
give
the
best
performance
.
*>
=
2
:
the
minimum
block
size
for
which
the
block
routine
*>
should
be
used
;
if
the
usable
block
size
is
less
than
*>
this
value
,
an
unblocked
routine
should
be
used
.
*>
=
3
:
the
crossover
point
(
in
a
block
routine
,
for
N
less
*>
than
this
value
,
an
unblocked
routine
should
be
used
)
*>
=
4
:
the
number
of
shifts
,
used
in
the
nonsymmetric
*>
eigenvalue
routines
(
DEPRECATED
)
*>
=
5
:
the
minimum
column
dimension
for
blocking
to
be
used
;
*>
rectangular
blocks
must
have
dimension
at
least
k
by
m
,
*>
where
k
is
given
by
ILAENV
(
2
,
...
)
and
m
by
ILAENV
(
5
,
...
)
*>
=
6
:
the
crossover
point
for
the
SVD
(
when
reducing
an
m
by
n
*>
matrix
to
bidiagonal
form
,
if
max
(
m
,
n
)
/
min
(
m
,
n
)
exceeds
*>
this
value
,
a
QR
factorization
is
used
first
to
reduce
*>
the
matrix
to
a
triangular
form
.
)
*>
=
7
:
the
number
of
processors
*>
=
8
:
the
crossover
point
for
the
multishift
QR
method
*>
for
nonsymmetric
eigenvalue
problems
(
DEPRECATED
)
*>
=
9
:
maximum
size
of
the
subproblems
at
the
bottom
of
the
*>
computation
tree
in
the
divide
-
and
-
conquer
algorithm
*>
(
used
by
xGELSD
and
xGESDD
)
*>
=
10
:
ieee
NaN
arithmetic
can
be
trusted
not
to
trap
*>
=
11
:
infinity
arithmetic
can
be
trusted
not
to
trap
*>
12
<=
ISPEC
<=
16
:
*>
xHSEQR
or
one
of
its
subroutines
,
*>
see
IPARMQ
for
detailed
explanation
*>
\
endverbatim
*>
*>
\
param
[
in
]
NAME
*>
\
verbatim
*>
NAME
is
CHARACTER
*
(
*
)
*>
The
name
of
the
calling
subroutine
,
in
either
upper
case
or
*>
lower
case
.
*>
\
endverbatim
*>
*>
\
param
[
in
]
OPTS
*>
\
verbatim
*>
OPTS
is
CHARACTER
*
(
*
)
*>
The
character
options
to
the
subroutine
NAME
,
concatenated
*>
into
a
single
character
string
.
For
example
,
UPLO
=
'U'
,
*>
TRANS
=
'T'
,
and
DIAG
=
'N'
for
a
triangular
routine
would
*>
be
specified
as
OPTS
=
'UTN'
.
*>
\
endverbatim
*>
*>
\
param
[
in
]
N1
*>
\
verbatim
*>
N1
is
INTEGER
*>
\
endverbatim
*>
*>
\
param
[
in
]
N2
*>
\
verbatim
*>
N2
is
INTEGER
*>
\
endverbatim
*>
*>
\
param
[
in
]
N3
*>
\
verbatim
*>
N3
is
INTEGER
*>
\
endverbatim
*>
*>
\
param
[
in
]
N4
*>
\
verbatim
*>
N4
is
INTEGER
*>
Problem
dimensions
for
the
subroutine
NAME
;
these
may
not all
*>
be
required
.
*>
\
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
*>
*>
The
following
conventions
have
been
used
when
calling
ILAENV
from
the
*>
LAPACK
routines
:
*>
1
)
OPTS
is
a
concatenation
of
all
of
the
character
options
to
*>
subroutine
NAME
,
in
the
same
order
that
they
appear
in
the
*>
argument
list
for
NAME
,
even
if
they
are
not
used
in
determining
*>
the
value
of
the
parameter
specified
by
ISPEC
.
*>
2
)
The
problem
dimensions
N1
,
N2
,
N3
,
N4
are
specified
in
the
order
*>
that
they
appear
in
the
argument
list
for
NAME
.
N1
is
used
*>
first
,
N2
second
,
and
so
on
,
and
unused
problem
dimensions
are
*>
passed
a
value
of
-
1.
*>
3
)
The
parameter
value
returned
by
ILAENV
is
checked
for
validity
in
*>
the
calling
subroutine
.
For
example
,
ILAENV
is
used
to
retrieve
*>
the
optimal
blocksize
for
STRTRI
as
follows
:
*>
*>
NB
=
ILAENV
(
1
,
'STRTRI'
,
UPLO
//
DIAG
,
N
,
-
1
,
-
1
,
-
1
)
*>
IF
(
NB
.LE.
1
)
NB
=
MAX
(
1
,
N
)
*>
\
endverbatim
*>
*
=====================================================================
INTEGER
FUNCTION
ILAENV
(
ISPEC
,
NAME
,
OPTS
,
N1
,
N2
,
N3
,
N4
)
*
*
--
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
..
CHARACTER
*
(
*
)
NAME
,
OPTS
INTEGER
ISPEC
,
N1
,
N2
,
N3
,
N4
*
..
*
*
=====================================================================
*
*
..
Local
Scalars
..
INTEGER
I
,
IC
,
IZ
,
NB
,
NBMIN
,
NX
LOGICAL
CNAME
,
SNAME
CHARACTER
C1
*
1
,
C2
*
2
,
C4
*
2
,
C3
*
3
,
SUBNAM
*
6
*
..
*
..
Intrinsic
Functions
..
INTRINSIC
CHAR
,
ICHAR
,
INT
,
MIN
,
REAL
*
..
*
..
External
Functions
..
INTEGER
IEEECK
,
IPARMQ
EXTERNAL
IEEECK
,
IPARMQ
*
..
*
..
Executable
Statements
..
*
GO
TO
(
10
,
10
,
10
,
80
,
90
,
100
,
110
,
120
,
$
130
,
140
,
150
,
160
,
160
,
160
,
160
,
160
)
ISPEC
*
*
Invalid
value
for
ISPEC
*
ILAENV
=
-
1
RETURN
*
10
CONTINUE
*
*
Convert
NAME
to
upper
case if
the
first
character
is
lower
case
.
*
ILAENV
=
1
SUBNAM
=
NAME
IC
=
ICHAR
(
SUBNAM
(
1
:
1
)
)
IZ
=
ICHAR
(
'Z'
)
IF
(
IZ
.EQ.
90
.OR.
IZ
.EQ.
122
)
THEN
*
*
ASCII
character
set
*
IF
(
IC
.GE.
97
.AND.
IC
.LE.
122
)
THEN
SUBNAM
(
1
:
1
)
=
CHAR
(
IC
-
32
)
DO
20
I
=
2
,
6
IC
=
ICHAR
(
SUBNAM
(
I
:
I
)
)
IF
(
IC
.GE.
97
.AND.
IC
.LE.
122
)
$
SUBNAM
(
I
:
I
)
=
CHAR
(
IC
-
32
)
20
CONTINUE
END IF
*
ELSE IF
(
IZ
.EQ.
233
.OR.
IZ
.EQ.
169
)
THEN
*
*
EBCDIC
character
set
*
IF
(
(
IC
.GE.
129
.AND.
IC
.LE.
137
)
.OR.
$
(
IC
.GE.
145
.AND.
IC
.LE.
153
)
.OR.
$
(
IC
.GE.
162
.AND.
IC
.LE.
169
)
)
THEN
SUBNAM
(
1
:
1
)
=
CHAR
(
IC
+
64
)
DO
30
I
=
2
,
6
IC
=
ICHAR
(
SUBNAM
(
I
:
I
)
)
IF
(
(
IC
.GE.
129
.AND.
IC
.LE.
137
)
.OR.
$
(
IC
.GE.
145
.AND.
IC
.LE.
153
)
.OR.
$
(
IC
.GE.
162
.AND.
IC
.LE.
169
)
)
SUBNAM
(
I
:
$
I
)
=
CHAR
(
IC
+
64
)
30
CONTINUE
END IF
*
ELSE IF
(
IZ
.EQ.
218
.OR.
IZ
.EQ.
250
)
THEN
*
*
Prime
machines
:
ASCII
+
128
*
IF
(
IC
.GE.
225
.AND.
IC
.LE.
250
)
THEN
SUBNAM
(
1
:
1
)
=
CHAR
(
IC
-
32
)
DO
40
I
=
2
,
6
IC
=
ICHAR
(
SUBNAM
(
I
:
I
)
)
IF
(
IC
.GE.
225
.AND.
IC
.LE.
250
)
$
SUBNAM
(
I
:
I
)
=
CHAR
(
IC
-
32
)
40
CONTINUE
END IF
END IF
*
C1
=
SUBNAM
(
1
:
1
)
SNAME
=
C1
.EQ.
'S'
.OR.
C1
.EQ.
'D'
CNAME
=
C1
.EQ.
'C'
.OR.
C1
.EQ.
'Z'
IF
(
.NOT.
(
CNAME
.OR.
SNAME
)
)
$
RETURN
C2
=
SUBNAM
(
2
:
3
)
C3
=
SUBNAM
(
4
:
6
)
C4
=
C3
(
2
:
3
)
*
GO
TO
(
50
,
60
,
70
)
ISPEC
*
50
CONTINUE
*
*
ISPEC
=
1
:
block
size
*
*
In
these
examples
,
separate
code
is
provided
for
setting
NB
for
*
real
and
complex
.
We
assume
that
NB
will
take
the
same
value
in
*
single
or
double precision
.
*
NB
=
1
*
IF
(
C2
.EQ.
'GE'
)
THEN
IF
(
C3
.EQ.
'TRF'
)
THEN
IF
(
SNAME
)
THEN
NB
=
64
ELSE
NB
=
64
END IF
ELSE IF
(
C3
.EQ.
'QRF'
.OR.
C3
.EQ.
'RQF'
.OR.
C3
.EQ.
'LQF'
.OR.
$
C3
.EQ.
'QLF'
)
THEN
IF
(
SNAME
)
THEN
NB
=
32
ELSE
NB
=
32
END IF
ELSE IF
(
C3
.EQ.
'HRD'
)
THEN
IF
(
SNAME
)
THEN
NB
=
32
ELSE
NB
=
32
END IF
ELSE IF
(
C3
.EQ.
'BRD'
)
THEN
IF
(
SNAME
)
THEN
NB
=
32
ELSE
NB
=
32
END IF
ELSE IF
(
C3
.EQ.
'TRI'
)
THEN
IF
(
SNAME
)
THEN
NB
=
64
ELSE
NB
=
64
END IF
END IF
ELSE IF
(
C2
.EQ.
'PO'
)
THEN
IF
(
C3
.EQ.
'TRF'
)
THEN
IF
(
SNAME
)
THEN
NB
=
64
ELSE
NB
=
64
END IF
END IF
ELSE IF
(
C2
.EQ.
'SY'
)
THEN
IF
(
C3
.EQ.
'TRF'
)
THEN
IF
(
SNAME
)
THEN
NB
=
64
ELSE
NB
=
64
END IF
ELSE IF
(
SNAME
.AND.
C3
.EQ.
'TRD'
)
THEN
NB
=
32
ELSE IF
(
SNAME
.AND.
C3
.EQ.
'GST'
)
THEN
NB
=
64
END IF
ELSE IF
(
CNAME
.AND.
C2
.EQ.
'HE'
)
THEN
IF
(
C3
.EQ.
'TRF'
)
THEN
NB
=
64
ELSE IF
(
C3
.EQ.
'TRD'
)
THEN
NB
=
32
ELSE IF
(
C3
.EQ.
'GST'
)
THEN
NB
=
64
END IF
ELSE IF
(
SNAME
.AND.
C2
.EQ.
'OR'
)
THEN
IF
(
C3
(
1
:
1
)
.EQ.
'G'
)
THEN
IF
(
C4
.EQ.
'QR'
.OR.
C4
.EQ.
'RQ'
.OR.
C4
.EQ.
'LQ'
.OR.
C4
.EQ.
$
'QL'
.OR.
C4
.EQ.
'HR'
.OR.
C4
.EQ.
'TR'
.OR.
C4
.EQ.
'BR'
)
$
THEN
NB
=
32
END IF
ELSE IF
(
C3
(
1
:
1
)
.EQ.
'M'
)
THEN
IF
(
C4
.EQ.
'QR'
.OR.
C4
.EQ.
'RQ'
.OR.
C4
.EQ.
'LQ'
.OR.
C4
.EQ.
$
'QL'
.OR.
C4
.EQ.
'HR'
.OR.
C4
.EQ.
'TR'
.OR.
C4
.EQ.
'BR'
)
$
THEN
NB
=
32
END IF
END IF
ELSE IF
(
CNAME
.AND.
C2
.EQ.
'UN'
)
THEN
IF
(
C3
(
1
:
1
)
.EQ.
'G'
)
THEN
IF
(
C4
.EQ.
'QR'
.OR.
C4
.EQ.
'RQ'
.OR.
C4
.EQ.
'LQ'
.OR.
C4
.EQ.
$
'QL'
.OR.
C4
.EQ.
'HR'
.OR.
C4
.EQ.
'TR'
.OR.
C4
.EQ.
'BR'
)
$
THEN
NB
=
32
END IF
ELSE IF
(
C3
(
1
:
1
)
.EQ.
'M'
)
THEN
IF
(
C4
.EQ.
'QR'
.OR.
C4
.EQ.
'RQ'
.OR.
C4
.EQ.
'LQ'
.OR.
C4
.EQ.
$
'QL'
.OR.
C4
.EQ.
'HR'
.OR.
C4
.EQ.
'TR'
.OR.
C4
.EQ.
'BR'
)
$
THEN
NB
=
32
END IF
END IF
ELSE IF
(
C2
.EQ.
'GB'
)
THEN
IF
(
C3
.EQ.
'TRF'
)
THEN
IF
(
SNAME
)
THEN
IF
(
N4
.LE.
64
)
THEN
NB
=
1
ELSE
NB
=
32
END IF
ELSE
IF
(
N4
.LE.
64
)
THEN
NB
=
1
ELSE
NB
=
32
END IF
END IF
END IF
ELSE IF
(
C2
.EQ.
'PB'
)
THEN
IF
(
C3
.EQ.
'TRF'
)
THEN
IF
(
SNAME
)
THEN
IF
(
N2
.LE.
64
)
THEN
NB
=
1
ELSE
NB
=
32
END IF
ELSE
IF
(
N2
.LE.
64
)
THEN
NB
=
1
ELSE
NB
=
32
END IF
END IF
END IF
ELSE IF
(
C2
.EQ.
'TR'
)
THEN
IF
(
C3
.EQ.
'TRI'
)
THEN
IF
(
SNAME
)
THEN
NB
=
64
ELSE
NB
=
64
END IF
END IF
ELSE IF
(
C2
.EQ.
'LA'
)
THEN
IF
(
C3
.EQ.
'UUM'
)
THEN
IF
(
SNAME
)
THEN
NB
=
64
ELSE
NB
=
64
END IF
END IF
ELSE IF
(
SNAME
.AND.
C2
.EQ.
'ST'
)
THEN
IF
(
C3
.EQ.
'EBZ'
)
THEN
NB
=
1
END IF
END IF
ILAENV
=
NB
RETURN
*
60
CONTINUE
*
*
ISPEC
=
2
:
minimum
block
size
*
NBMIN
=
2
IF
(
C2
.EQ.
'GE'
)
THEN
IF
(
C3
.EQ.
'QRF'
.OR.
C3
.EQ.
'RQF'
.OR.
C3
.EQ.
'LQF'
.OR.
C3
.EQ.
$
'QLF'
)
THEN
IF
(
SNAME
)
THEN
NBMIN
=
2
ELSE
NBMIN
=
2
END IF
ELSE IF
(
C3
.EQ.
'HRD'
)
THEN
IF
(
SNAME
)
THEN
NBMIN
=
2
ELSE
NBMIN
=
2
END IF
ELSE IF
(
C3
.EQ.
'BRD'
)
THEN
IF
(
SNAME
)
THEN
NBMIN
=
2
ELSE
NBMIN
=
2
END IF
ELSE IF
(
C3
.EQ.
'TRI'
)
THEN
IF
(
SNAME
)
THEN
NBMIN
=
2
ELSE
NBMIN
=
2
END IF
END IF
ELSE IF
(
C2
.EQ.
'SY'
)
THEN
IF
(
C3
.EQ.
'TRF'
)
THEN
IF
(
SNAME
)
THEN
NBMIN
=
8
ELSE
NBMIN
=
8
END IF
ELSE IF
(
SNAME
.AND.
C3
.EQ.
'TRD'
)
THEN
NBMIN
=
2
END IF
ELSE IF
(
CNAME
.AND.
C2
.EQ.
'HE'
)
THEN
IF
(
C3
.EQ.
'TRD'
)
THEN
NBMIN
=
2
END IF
ELSE IF
(
SNAME
.AND.
C2
.EQ.
'OR'
)
THEN
IF
(
C3
(
1
:
1
)
.EQ.
'G'
)
THEN
IF
(
C4
.EQ.
'QR'
.OR.
C4
.EQ.
'RQ'
.OR.
C4
.EQ.
'LQ'
.OR.
C4
.EQ.
$
'QL'
.OR.
C4
.EQ.
'HR'
.OR.
C4
.EQ.
'TR'
.OR.
C4
.EQ.
'BR'
)
$
THEN
NBMIN
=
2
END IF
ELSE IF
(
C3
(
1
:
1
)
.EQ.
'M'
)
THEN
IF
(
C4
.EQ.
'QR'
.OR.
C4
.EQ.
'RQ'
.OR.
C4
.EQ.
'LQ'
.OR.
C4
.EQ.
$
'QL'
.OR.
C4
.EQ.
'HR'
.OR.
C4
.EQ.
'TR'
.OR.
C4
.EQ.
'BR'
)
$
THEN
NBMIN
=
2
END IF
END IF
ELSE IF
(
CNAME
.AND.
C2
.EQ.
'UN'
)
THEN
IF
(
C3
(
1
:
1
)
.EQ.
'G'
)
THEN
IF
(
C4
.EQ.
'QR'
.OR.
C4
.EQ.
'RQ'
.OR.
C4
.EQ.
'LQ'
.OR.
C4
.EQ.
$
'QL'
.OR.
C4
.EQ.
'HR'
.OR.
C4
.EQ.
'TR'
.OR.
C4
.EQ.
'BR'
)
$
THEN
NBMIN
=
2
END IF
ELSE IF
(
C3
(
1
:
1
)
.EQ.
'M'
)
THEN
IF
(
C4
.EQ.
'QR'
.OR.
C4
.EQ.
'RQ'
.OR.
C4
.EQ.
'LQ'
.OR.
C4
.EQ.
$
'QL'
.OR.
C4
.EQ.
'HR'
.OR.
C4
.EQ.
'TR'
.OR.
C4
.EQ.
'BR'
)
$
THEN
NBMIN
=
2
END IF
END IF
END IF
ILAENV
=
NBMIN
RETURN
*
70
CONTINUE
*
*
ISPEC
=
3
:
crossover
point
*
NX
=
0
IF
(
C2
.EQ.
'GE'
)
THEN
IF
(
C3
.EQ.
'QRF'
.OR.
C3
.EQ.
'RQF'
.OR.
C3
.EQ.
'LQF'
.OR.
C3
.EQ.
$
'QLF'
)
THEN
IF
(
SNAME
)
THEN
NX
=
128
ELSE
NX
=
128
END IF
ELSE IF
(
C3
.EQ.
'HRD'
)
THEN
IF
(
SNAME
)
THEN
NX
=
128
ELSE
NX
=
128
END IF
ELSE IF
(
C3
.EQ.
'BRD'
)
THEN
IF
(
SNAME
)
THEN
NX
=
128
ELSE
NX
=
128
END IF
END IF
ELSE IF
(
C2
.EQ.
'SY'
)
THEN
IF
(
SNAME
.AND.
C3
.EQ.
'TRD'
)
THEN
NX
=
32
END IF
ELSE IF
(
CNAME
.AND.
C2
.EQ.
'HE'
)
THEN
IF
(
C3
.EQ.
'TRD'
)
THEN
NX
=
32
END IF
ELSE IF
(
SNAME
.AND.
C2
.EQ.
'OR'
)
THEN
IF
(
C3
(
1
:
1
)
.EQ.
'G'
)
THEN
IF
(
C4
.EQ.
'QR'
.OR.
C4
.EQ.
'RQ'
.OR.
C4
.EQ.
'LQ'
.OR.
C4
.EQ.
$
'QL'
.OR.
C4
.EQ.
'HR'
.OR.
C4
.EQ.
'TR'
.OR.
C4
.EQ.
'BR'
)
$
THEN
NX
=
128
END IF
END IF
ELSE IF
(
CNAME
.AND.
C2
.EQ.
'UN'
)
THEN
IF
(
C3
(
1
:
1
)
.EQ.
'G'
)
THEN
IF
(
C4
.EQ.
'QR'
.OR.
C4
.EQ.
'RQ'
.OR.
C4
.EQ.
'LQ'
.OR.
C4
.EQ.
$
'QL'
.OR.
C4
.EQ.
'HR'
.OR.
C4
.EQ.
'TR'
.OR.
C4
.EQ.
'BR'
)
$
THEN
NX
=
128
END IF
END IF
END IF
ILAENV
=
NX
RETURN
*
80
CONTINUE
*
*
ISPEC
=
4
:
number
of
shifts
(
used
by
xHSEQR
)
*
ILAENV
=
6
RETURN
*
90
CONTINUE
*
*
ISPEC
=
5
:
minimum
column
dimension
(
not
used
)
*
ILAENV
=
2
RETURN
*
100
CONTINUE
*
*
ISPEC
=
6
:
crossover
point
for
SVD
(
used
by
xGELSS
and
xGESVD
)
*
ILAENV
=
INT
(
REAL
(
MIN
(
N1
,
N2
)
)
*
1.6E0
)
RETURN
*
110
CONTINUE
*
*
ISPEC
=
7
:
number
of
processors
(
not
used
)
*
ILAENV
=
1
RETURN
*
120
CONTINUE
*
*
ISPEC
=
8
:
crossover
point
for
multishift
(
used
by
xHSEQR
)
*
ILAENV
=
50
RETURN
*
130
CONTINUE
*
*
ISPEC
=
9
:
maximum
size
of
the
subproblems
at
the
bottom
of
the
*
computation
tree
in
the
divide
-
and
-
conquer
algorithm
*
(
used
by
xGELSD
and
xGESDD
)
*
ILAENV
=
25
RETURN
*
140
CONTINUE
*
*
ISPEC
=
10
:
ieee
NaN
arithmetic
can
be
trusted
not
to
trap
*
*
ILAENV
=
0
ILAENV
=
1
IF
(
ILAENV
.EQ.
1
)
THEN
ILAENV
=
IEEECK
(
1
,
0.0
,
1.0
)
END IF
RETURN
*
150
CONTINUE
*
*
ISPEC
=
11
:
infinity
arithmetic
can
be
trusted
not
to
trap
*
*
ILAENV
=
0
ILAENV
=
1
IF
(
ILAENV
.EQ.
1
)
THEN
ILAENV
=
IEEECK
(
0
,
0.0
,
1.0
)
END IF
RETURN
*
160
CONTINUE
*
*
12
<=
ISPEC
<=
16
:
xHSEQR
or
one
of
its
subroutines
.
*
ILAENV
=
IPARMQ
(
ISPEC
,
NAME
,
OPTS
,
N1
,
N2
,
N3
,
N4
)
RETURN
*
*
End
of
ILAENV
*
END
Event Timeline
Log In to Comment