LAPACK
3.4.2
LAPACK: Linear Algebra PACKage
Main Page
Modules
Files
File List
File Members
All
Files
Functions
Groups
ilaenv.f
Go to the documentation of this file.
1
*> \brief \b ILAENV
2
*
3
* =========== DOCUMENTATION ===========
4
*
5
* Online html documentation available at
6
* http://www.netlib.org/lapack/explore-html/
7
*
8
* Definition:
9
* ===========
10
*
11
* INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3,
12
* N4 )
13
*
14
* .. Scalar Arguments ..
15
* CHARACTER*( * ) NAME, OPTS
16
* INTEGER ISPEC, N1, N2, N3, N4
17
* ..
18
*
19
*
20
*> \par Purpose:
21
* =============
22
*>
23
*> \verbatim
24
*>
25
*> ILAENV returns problem-dependent parameters for the local
26
*> environment. See ISPEC for a description of the parameters.
27
*>
28
*> In this version, the problem-dependent parameters are contained in
29
*> the integer array IPARMS in the common block CLAENV and the value
30
*> with index ISPEC is copied to ILAENV. This version of ILAENV is
31
*> to be used in conjunction with XLAENV in TESTING and TIMING.
32
*> \endverbatim
33
*
34
* Arguments:
35
* ==========
36
*
37
*> \param[in] ISPEC
38
*> \verbatim
39
*> ISPEC is INTEGER
40
*> Specifies the parameter to be returned as the value of
41
*> ILAENV.
42
*> = 1: the optimal blocksize; if this value is 1, an unblocked
43
*> algorithm will give the best performance.
44
*> = 2: the minimum block size for which the block routine
45
*> should be used; if the usable block size is less than
46
*> this value, an unblocked routine should be used.
47
*> = 3: the crossover point (in a block routine, for N less
48
*> than this value, an unblocked routine should be used)
49
*> = 4: the number of shifts, used in the nonsymmetric
50
*> eigenvalue routines
51
*> = 5: the minimum column dimension for blocking to be used;
52
*> rectangular blocks must have dimension at least k by m,
53
*> where k is given by ILAENV(2,...) and m by ILAENV(5,...)
54
*> = 6: the crossover point for the SVD (when reducing an m by n
55
*> matrix to bidiagonal form, if max(m,n)/min(m,n) exceeds
56
*> this value, a QR factorization is used first to reduce
57
*> the matrix to a triangular form.)
58
*> = 7: the number of processors
59
*> = 8: the crossover point for the multishift QR and QZ methods
60
*> for nonsymmetric eigenvalue problems.
61
*> = 9: maximum size of the subproblems at the bottom of the
62
*> computation tree in the divide-and-conquer algorithm
63
*> =10: ieee NaN arithmetic can be trusted not to trap
64
*> =11: infinity arithmetic can be trusted not to trap
65
*>
66
*> Other specifications (up to 100) can be added later.
67
*> \endverbatim
68
*>
69
*> \param[in] NAME
70
*> \verbatim
71
*> NAME is CHARACTER*(*)
72
*> The name of the calling subroutine.
73
*> \endverbatim
74
*>
75
*> \param[in] OPTS
76
*> \verbatim
77
*> OPTS is CHARACTER*(*)
78
*> The character options to the subroutine NAME, concatenated
79
*> into a single character string. For example, UPLO = 'U',
80
*> TRANS = 'T', and DIAG = 'N' for a triangular routine would
81
*> be specified as OPTS = 'UTN'.
82
*> \endverbatim
83
*>
84
*> \param[in] N1
85
*> \verbatim
86
*> N1 is INTEGER
87
*> \endverbatim
88
*>
89
*> \param[in] N2
90
*> \verbatim
91
*> N2 is INTEGER
92
*> \endverbatim
93
*>
94
*> \param[in] N3
95
*> \verbatim
96
*> N3 is INTEGER
97
*> \endverbatim
98
*>
99
*> \param[in] N4
100
*> \verbatim
101
*> N4 is INTEGER
102
*>
103
*> Problem dimensions for the subroutine NAME; these may not all
104
*> be required.
105
*> \endverbatim
106
*>
107
*> \return ILAENV
108
*> \verbatim
109
*> ILAENV is INTEGER
110
*> >= 0: the value of the parameter specified by ISPEC
111
*> < 0: if ILAENV = -k, the k-th argument had an illegal value.
112
*> \endverbatim
113
*
114
* Authors:
115
* ========
116
*
117
*> \author Univ. of Tennessee
118
*> \author Univ. of California Berkeley
119
*> \author Univ. of Colorado Denver
120
*> \author NAG Ltd.
121
*
122
*> \date November 2011
123
*
124
*> \ingroup aux_lin
125
*
126
*> \par Further Details:
127
* =====================
128
*>
129
*> \verbatim
130
*>
131
*> The following conventions have been used when calling ILAENV from the
132
*> LAPACK routines:
133
*> 1) OPTS is a concatenation of all of the character options to
134
*> subroutine NAME, in the same order that they appear in the
135
*> argument list for NAME, even if they are not used in determining
136
*> the value of the parameter specified by ISPEC.
137
*> 2) The problem dimensions N1, N2, N3, N4 are specified in the order
138
*> that they appear in the argument list for NAME. N1 is used
139
*> first, N2 second, and so on, and unused problem dimensions are
140
*> passed a value of -1.
141
*> 3) The parameter value returned by ILAENV is checked for validity in
142
*> the calling subroutine. For example, ILAENV is used to retrieve
143
*> the optimal blocksize for STRTRI as follows:
144
*>
145
*> NB = ILAENV( 1, 'STRTRI', UPLO // DIAG, N, -1, -1, -1 )
146
*> IF( NB.LE.1 ) NB = MAX( 1, N )
147
*> \endverbatim
148
*>
149
* =====================================================================
150
INTEGER
FUNCTION
ilaenv
( ISPEC, NAME, OPTS, N1, N2, N3,
151
$ n4 )
152
*
153
* -- LAPACK test routine (version 3.4.0) --
154
* -- LAPACK is a software package provided by Univ. of Tennessee, --
155
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
156
* November 2011
157
*
158
* .. Scalar Arguments ..
159
CHARACTER*( * )
name, opts
160
INTEGER
ispec, n1, n2, n3, n4
161
* ..
162
*
163
* =====================================================================
164
*
165
* .. Intrinsic Functions ..
166
INTRINSIC
int, min, real
167
* ..
168
* .. External Functions ..
169
INTEGER
ieeeck
170
EXTERNAL
ieeeck
171
* ..
172
* .. Arrays in Common ..
173
INTEGER
iparms( 100 )
174
* ..
175
* .. Common blocks ..
176
common / claenv / iparms
177
* ..
178
* .. Save statement ..
179
SAVE
/ claenv /
180
* ..
181
* .. Executable Statements ..
182
*
183
IF
( ispec.GE.1 .AND. ispec.LE.5 )
THEN
184
*
185
* Return a value from the common block.
186
*
187
ilaenv
= iparms( ispec )
188
*
189
ELSE
IF
( ispec.EQ.6 )
THEN
190
*
191
* Compute SVD crossover point.
192
*
193
ilaenv
= int(
REAL( MIN( N1, N2 )
)*1.6e0 )
194
*
195
ELSE
IF
( ispec.GE.7 .AND. ispec.LE.9 )
THEN
196
*
197
* Return a value from the common block.
198
*
199
ilaenv
= iparms( ispec )
200
*
201
ELSE
IF
( ispec.EQ.10 )
THEN
202
*
203
* IEEE NaN arithmetic can be trusted not to trap
204
*
205
C ILAENV = 0
206
ilaenv
= 1
207
IF
(
ilaenv
.EQ.1 )
THEN
208
ilaenv
=
ieeeck
( 1, 0.0, 1.0 )
209
END IF
210
*
211
ELSE
IF
( ispec.EQ.11 )
THEN
212
*
213
* Infinity arithmetic can be trusted not to trap
214
*
215
C ILAENV = 0
216
ilaenv
= 1
217
IF
(
ilaenv
.EQ.1 )
THEN
218
ilaenv
=
ieeeck
( 0, 0.0, 1.0 )
219
END IF
220
*
221
ELSE
222
*
223
* Invalid value for ISPEC
224
*
225
ilaenv
= -1
226
END IF
227
*
228
return
229
*
230
* End of ILAENV
231
*
232
END
TESTING
LIN
ilaenv.f
Generated on Tue Sep 25 2012 16:27:48 for LAPACK by
1.8.1.1