1TSTIEE(1) LAPACK test routine (version 3.2) TSTIEE(1)
2
3
4
6 TSTIEE - called from the LAPACK routines to choose problem-dependent
7 parameters for the local environment
8
10 PROGRAM MAIN
11
12 INTEGER ILAENV
13
14 EXTERNAL ILAENV
15
16 INTEGER IEEEOK
17
18 WRITE( 6, FMT = * ) 'We are about to check whether infinity
19 arithmetic'
20
21 WRITE( 6, FMT = * )'can be trusted. If this test hangs, set'
22
23 WRITE( 6, FMT = * ) 'ILAENV = 0 for ISPEC = 10 in
24 LAPACK/SRC/ilaenv.f'
25
26 IEEEOK = ILAENV( 10, 'ILAENV', 'N', 1, 2, 3, 4 )
27
28 WRITE( 6, FMT = * )
29
30 IF( IEEEOK.EQ.0 ) THEN
31
32 WRITE( 6, FMT = * ) 'Infinity arithmetic did not perform per the
33 ieee spec'
34
35 ELSE
36
37 WRITE( 6, FMT = * ) 'Infinity arithmetic performed as per the
38 ieee spec.'
39
40 WRITE( 6, FMT = * ) 'However, this is not an exhaustive test and
41 does not'
42
43 WRITE( 6, FMT = * ) 'guarantee that infinity arithmetic meets
44 the', ' ieee spec.'
45
46 END IF
47
48 WRITE( 6, FMT = * )
49
50 WRITE( 6, FMT = * ) 'We are about to check whether NaN arith‐
51 metic'
52
53 WRITE( 6, FMT = * )'can be trusted. If this test hangs, set'
54
55 WRITE( 6, FMT = * ) 'ILAENV = 0 for ISPEC = 11 in
56 LAPACK/SRC/ilaenv.f'
57
58 IEEEOK = ILAENV( 11, 'ILAENV', 'N', 1, 2, 3, 4 )
59
60 WRITE( 6, FMT = * )
61
62 IF( IEEEOK.EQ.0 ) THEN
63
64 WRITE( 6, FMT = * ) 'NaN arithmetic did not perform per the ieee
65 spec'
66
67 ELSE
68
69 WRITE( 6, FMT = * )'NaN arithmetic performed as per the ieee', '
70 spec.'
71
72 WRITE( 6, FMT = * ) 'However, this is not an exhaustive test and
73 does not'
74
75 WRITE( 6, FMT = * )'guarantee that NaN arithmetic meets the', '
76 ieee spec.'
77
78 END IF
79
80 WRITE( 6, FMT = * )
81
82 END
83
84 INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3, N4 )
85
86 CHARACTER*(
87 * ) NAME, OPTS
88
89 INTEGER ISPEC, N1, N2, N3, N4
90
92 ILAENV is called from the LAPACK routines to choose problem-dependent
93 parameters for the local environment. See ISPEC for a description of
94 the parameters.
95
96 This version provides a set of parameters which should give good, but
97 not optimal, performance on many of the currently available computers.
98 Users are encouraged to modify this subroutine to set the tuning param‐
99 eters for their particular machine using the option and problem size
100 information in the arguments.
101
102 This routine will not function correctly if it is converted to all
103 lower case. Converting it to all upper case is allowed.
104
105
107 ISPEC (input) INTEGER
108 Specifies the parameter to be returned as the value of ILAENV.
109 = 1: the optimal blocksize; if this value is 1, an unblocked
110 algorithm will give the best performance. = 2: the minimum
111 block size for which the block routine should be used; if the
112 usable block size is less than this value, an unblocked routine
113 should be used. = 3: the crossover point (in a block routine,
114 for N less than this value, an unblocked routine should be
115 used) = 4: the number of shifts, used in the nonsymmetric ei‐
116 genvalue routines = 5: the minimum column dimension for block‐
117 ing to be used; rectangular blocks must have dimension at least
118 k by m, where k is given by ILAENV(2,...) and m by
119 ILAENV(5,...) = 6: the crossover point for the SVD (when
120 reducing an m by n matrix to bidiagonal form, if
121 max(m,n)/min(m,n) exceeds this value, a QR factorization is
122 used first to reduce the matrix to a triangular form.) = 7:
123 the number of processors
124 = 8: the crossover point for the multishift QR and QZ methods
125 for nonsymmetric eigenvalue problems. = 9: maximum size of the
126 subproblems at the bottom of the computation tree in the
127 divide-and-conquer algorithm (used by xGELSD and xGESDD) =10:
128 ieee NaN arithmetic can be trusted not to trap
129 =11: infinity arithmetic can be trusted not to trap
130
131 NAME (input) CHARACTER*(*)
132 The name of the calling subroutine, in either upper case or
133 lower case.
134
135 OPTS (input) CHARACTER*(*)
136 The character options to the subroutine NAME, concatenated into
137 a single character string. For example, UPLO = 'U', TRANS =
138 'T', and DIAG = 'N' for a triangular routine would be specified
139 as OPTS = 'UTN'.
140
141 N1 (input) INTEGER
142 N2 (input) INTEGER N3 (input) INTEGER N4 (input)
143 INTEGER Problem dimensions for the subroutine NAME; these may
144 not all be required.
145
146 >= 0: the value of the parameter specified by ISPEC < 0: if
147 ILAENV = -k, the k-th argument had an illegal value.
148
150 The following conventions have been used when calling ILAENV from the
151 LAPACK routines:
152 1) OPTS is a concatenation of all of the character options to
153 subroutine NAME, in the same order that they appear in the
154 argument list for NAME, even if they are not used in determining
155 the value of the parameter specified by ISPEC.
156 2) The problem dimensions N1, N2, N3, N4 are specified in the order
157 that they appear in the argument list for NAME. N1 is used
158 first, N2 second, and so on, and unused problem dimensions are
159 passed a value of -1.
160 3) The parameter value returned by ILAENV is checked for validity in
161 the calling subroutine. For example, ILAENV is used to retrieve
162 the optimal blocksize for STRTRI as follows:
163
164 NB = ILAENV( 1, 'STRTRI', UPLO // DIAG, N, -1, -1, -1 )
165 IF( NB.LE.1 ) NB = MAX( 1, N )
166
167
168
169
170 LAPACK test routine (version 3.2)November 2008 TSTIEE(1)