1ILAENV ‐ called from the LAPACK routines to choose problem‐depen‐
2dent parameters for the local environment INTEGER FUNCTION
3ILAENV( ISPEC, NAME, OPTS, N1, N2, N3, N4 )
4 CHARACTER*( * ) NAME, OPTS
5 INTEGER ISPEC, N1, N2, N3, N4 ILAENV is called from the LA‐
6PACK routines to choose problem‐dependent parameters for the lo‐
7cal environment. See ISPEC for a description of the parameters.
8
9ILAENV returns an INTEGER
10if ILAENV >= 0: ILAENV returns the value of the parameter speci‐
11fied by ISPEC if ILAENV < 0: if ILAENV = ‐k, the k‐th argument
12had an illegal value.
13
14This version provides a set of parameters which should give good,
15but not optimal, performance on many of the currently available
16computers. Users are encouraged to modify this subroutine to set
17the tuning parameters for their particular machine using the op‐
18tion and problem size information in the arguments.
19
20This routine will not function correctly if it is converted to
21all lower case. Converting it to all upper case is allowed.
22
23ISPEC (input) INTEGER Specifies the parameter to be returned as
24the value of ILAENV. = 1: the optimal blocksize; if this value
25is 1, an unblocked algorithm will give the best performance. =
262: the minimum block size for which the block routine should be
27used; if the usable block size is less than this value, an un‐
28blocked routine should be used. = 3: the crossover point (in a
29block routine, for N less than this value, an unblocked routine
30should be used) = 4: the number of shifts, used in the nonsymmet‐
31ric eigenvalue routines (DEPRECATED) = 5: the minimum column di‐
32mension for blocking to be used; rectangular blocks must have di‐
33mension at least k by m, where k is given by ILAENV(2,...) and m
34by ILAENV(5,...) = 6: the crossover point for the SVD (when re‐
35ducing an m by n matrix to bidiagonal form, if max(m,n)/min(m,n)
36exceeds this value, a QR factorization is used first to reduce
37the matrix to a triangular form.) = 7: the number of processors
38= 8: the crossover point for the multishift QR method for nonsym‐
39metric eigenvalue problems (DEPRECATED) = 9: maximum size of the
40subproblems at the bottom of the computation tree in the divide‐
41and‐conquer algorithm (used by xGELSD and xGESDD) =10: ieee NaN
42arithmetic can be trusted not to trap
43=11: infinity arithmetic can be trusted not to trap
4412 <= ISPEC <= 16: xHSEQR or one of its subroutines, see IPARMQ
45for detailed explanation NAME (input) CHARACTER*(*) The name
46of the calling subroutine, in either upper case or lower case.
47OPTS (input) CHARACTER*(*) The character options to the sub‐
48routine NAME, concatenated into a single character string. For
49example, UPLO = 'U', TRANS = 'T', and DIAG = 'N' for a triangular
50routine would be specified as OPTS = 'UTN'. N1 (input) IN‐
51TEGER N2 (input) INTEGER N3 (input) INTEGER N4
52(input) INTEGER Problem dimensions for the subroutine NAME; these
53may not all be required. The following conventions have been
54used when calling ILAENV from the LAPACK routines:
551) OPTS is a concatenation of all of the character options to
56 subroutine NAME, in the same order that they appear in the
57 argument list for NAME, even if they are not used in deter‐
58mining
59 the value of the parameter specified by ISPEC.
602) The problem dimensions N1, N2, N3, N4 are specified in the
61order
62 that they appear in the argument list for NAME. N1 is used
63 first, N2 second, and so on, and unused problem dimensions
64are
65 passed a value of ‐1.
663) The parameter value returned by ILAENV is checked for validi‐
67ty in
68 the calling subroutine. For example, ILAENV is used to re‐
69trieve
70 the optimal blocksize for STRTRI as follows:
71
72 NB = ILAENV( 1, 'STRTRI', UPLO // DIAG, N, ‐1, ‐1, ‐1 )
73 IF( NB.LE.1 ) NB = MAX( 1, N )
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132