1 SUBROUTINE ZERRST( PATH, NUNIT )
2 *
3 * -- LAPACK test routine (version 3.1) --
4 * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
5 * November 2006
6 *
7 * .. Scalar Arguments ..
8 CHARACTER*3 PATH
9 INTEGER NUNIT
10 * ..
11 *
12 * Purpose
13 * =======
14 *
15 * ZERRST tests the error exits for ZHETRD, ZUNGTR, CUNMTR, ZHPTRD,
16 * ZUNGTR, ZUPMTR, ZSTEQR, CSTEIN, ZPTEQR, ZHBTRD,
17 * ZHEEV, CHEEVX, CHEEVD, ZHBEV, CHBEVX, CHBEVD,
18 * ZHPEV, CHPEVX, CHPEVD, and ZSTEDC.
19 *
20 * Arguments
21 * =========
22 *
23 * PATH (input) CHARACTER*3
24 * The LAPACK path name for the routines to be tested.
25 *
26 * NUNIT (input) INTEGER
27 * The unit number for output.
28 *
29 * =====================================================================
30 *
31 * .. Parameters ..
32 INTEGER NMAX, LIW, LW
33 PARAMETER ( NMAX = 3, LIW = 12*NMAX, LW = 20*NMAX )
34 * ..
35 * .. Local Scalars ..
36 CHARACTER*2 C2
37 INTEGER I, INFO, J, M, N, NT
38 * ..
39 * .. Local Arrays ..
40 INTEGER I1( NMAX ), I2( NMAX ), I3( NMAX ), IW( LIW )
41 DOUBLE PRECISION D( NMAX ), E( NMAX ), R( LW ), RW( LW ),
42 $ X( NMAX )
43 COMPLEX*16 A( NMAX, NMAX ), C( NMAX, NMAX ),
44 $ Q( NMAX, NMAX ), TAU( NMAX ), W( LW ),
45 $ Z( NMAX, NMAX )
46 * ..
47 * .. External Functions ..
48 LOGICAL LSAMEN
49 EXTERNAL LSAMEN
50 * ..
51 * .. External Subroutines ..
52 EXTERNAL CHKXER, ZHBEV, ZHBEVD, ZHBEVX, ZHBTRD, ZHEEV,
53 $ ZHEEVD, ZHEEVR, ZHEEVX, ZHETRD, ZHPEV, ZHPEVD,
54 $ ZHPEVX, ZHPTRD, ZPTEQR, ZSTEDC, ZSTEIN, ZSTEQR,
55 $ ZUNGTR, ZUNMTR, ZUPGTR, ZUPMTR
56 * ..
57 * .. Scalars in Common ..
58 LOGICAL LERR, OK
59 CHARACTER*32 SRNAMT
60 INTEGER INFOT, NOUT
61 * ..
62 * .. Common blocks ..
63 COMMON / INFOC / INFOT, NOUT, OK, LERR
64 COMMON / SRNAMC / SRNAMT
65 * ..
66 * .. Intrinsic Functions ..
67 INTRINSIC DBLE
68 * ..
69 * .. Executable Statements ..
70 *
71 NOUT = NUNIT
72 WRITE( NOUT, FMT = * )
73 C2 = PATH( 2: 3 )
74 *
75 * Set the variables to innocuous values.
76 *
77 DO 20 J = 1, NMAX
78 DO 10 I = 1, NMAX
79 A( I, J ) = 1.D0 / DBLE( I+J )
80 10 CONTINUE
81 20 CONTINUE
82 DO 30 J = 1, NMAX
83 D( J ) = DBLE( J )
84 E( J ) = 0.0D0
85 I1( J ) = J
86 I2( J ) = J
87 TAU( J ) = 1.D0
88 30 CONTINUE
89 OK = .TRUE.
90 NT = 0
91 *
92 * Test error exits for the ST path.
93 *
94 IF( LSAMEN( 2, C2, 'ST' ) ) THEN
95 *
96 * ZHETRD
97 *
98 SRNAMT = 'ZHETRD'
99 INFOT = 1
100 CALL ZHETRD( '/', 0, A, 1, D, E, TAU, W, 1, INFO )
101 CALL CHKXER( 'ZHETRD', INFOT, NOUT, LERR, OK )
102 INFOT = 2
103 CALL ZHETRD( 'U', -1, A, 1, D, E, TAU, W, 1, INFO )
104 CALL CHKXER( 'ZHETRD', INFOT, NOUT, LERR, OK )
105 INFOT = 4
106 CALL ZHETRD( 'U', 2, A, 1, D, E, TAU, W, 1, INFO )
107 CALL CHKXER( 'ZHETRD', INFOT, NOUT, LERR, OK )
108 INFOT = 9
109 CALL ZHETRD( 'U', 0, A, 1, D, E, TAU, W, 0, INFO )
110 CALL CHKXER( 'ZHETRD', INFOT, NOUT, LERR, OK )
111 NT = NT + 4
112 *
113 * ZUNGTR
114 *
115 SRNAMT = 'ZUNGTR'
116 INFOT = 1
117 CALL ZUNGTR( '/', 0, A, 1, TAU, W, 1, INFO )
118 CALL CHKXER( 'ZUNGTR', INFOT, NOUT, LERR, OK )
119 INFOT = 2
120 CALL ZUNGTR( 'U', -1, A, 1, TAU, W, 1, INFO )
121 CALL CHKXER( 'ZUNGTR', INFOT, NOUT, LERR, OK )
122 INFOT = 4
123 CALL ZUNGTR( 'U', 2, A, 1, TAU, W, 1, INFO )
124 CALL CHKXER( 'ZUNGTR', INFOT, NOUT, LERR, OK )
125 INFOT = 7
126 CALL ZUNGTR( 'U', 3, A, 3, TAU, W, 1, INFO )
127 CALL CHKXER( 'ZUNGTR', INFOT, NOUT, LERR, OK )
128 NT = NT + 4
129 *
130 * ZUNMTR
131 *
132 SRNAMT = 'ZUNMTR'
133 INFOT = 1
134 CALL ZUNMTR( '/', 'U', 'N', 0, 0, A, 1, TAU, C, 1, W, 1, INFO )
135 CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
136 INFOT = 2
137 CALL ZUNMTR( 'L', '/', 'N', 0, 0, A, 1, TAU, C, 1, W, 1, INFO )
138 CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
139 INFOT = 3
140 CALL ZUNMTR( 'L', 'U', '/', 0, 0, A, 1, TAU, C, 1, W, 1, INFO )
141 CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
142 INFOT = 4
143 CALL ZUNMTR( 'L', 'U', 'N', -1, 0, A, 1, TAU, C, 1, W, 1,
144 $ INFO )
145 CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
146 INFOT = 5
147 CALL ZUNMTR( 'L', 'U', 'N', 0, -1, A, 1, TAU, C, 1, W, 1,
148 $ INFO )
149 CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
150 INFOT = 7
151 CALL ZUNMTR( 'L', 'U', 'N', 2, 0, A, 1, TAU, C, 2, W, 1, INFO )
152 CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
153 INFOT = 7
154 CALL ZUNMTR( 'R', 'U', 'N', 0, 2, A, 1, TAU, C, 1, W, 1, INFO )
155 CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
156 INFOT = 10
157 CALL ZUNMTR( 'L', 'U', 'N', 2, 0, A, 2, TAU, C, 1, W, 1, INFO )
158 CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
159 INFOT = 12
160 CALL ZUNMTR( 'L', 'U', 'N', 0, 2, A, 1, TAU, C, 1, W, 1, INFO )
161 CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
162 INFOT = 12
163 CALL ZUNMTR( 'R', 'U', 'N', 2, 0, A, 1, TAU, C, 2, W, 1, INFO )
164 CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
165 NT = NT + 10
166 *
167 * ZHPTRD
168 *
169 SRNAMT = 'ZHPTRD'
170 INFOT = 1
171 CALL ZHPTRD( '/', 0, A, D, E, TAU, INFO )
172 CALL CHKXER( 'ZHPTRD', INFOT, NOUT, LERR, OK )
173 INFOT = 2
174 CALL ZHPTRD( 'U', -1, A, D, E, TAU, INFO )
175 CALL CHKXER( 'ZHPTRD', INFOT, NOUT, LERR, OK )
176 NT = NT + 2
177 *
178 * ZUPGTR
179 *
180 SRNAMT = 'ZUPGTR'
181 INFOT = 1
182 CALL ZUPGTR( '/', 0, A, TAU, Z, 1, W, INFO )
183 CALL CHKXER( 'ZUPGTR', INFOT, NOUT, LERR, OK )
184 INFOT = 2
185 CALL ZUPGTR( 'U', -1, A, TAU, Z, 1, W, INFO )
186 CALL CHKXER( 'ZUPGTR', INFOT, NOUT, LERR, OK )
187 INFOT = 6
188 CALL ZUPGTR( 'U', 2, A, TAU, Z, 1, W, INFO )
189 CALL CHKXER( 'ZUPGTR', INFOT, NOUT, LERR, OK )
190 NT = NT + 3
191 *
192 * ZUPMTR
193 *
194 SRNAMT = 'ZUPMTR'
195 INFOT = 1
196 CALL ZUPMTR( '/', 'U', 'N', 0, 0, A, TAU, C, 1, W, INFO )
197 CALL CHKXER( 'ZUPMTR', INFOT, NOUT, LERR, OK )
198 INFOT = 2
199 CALL ZUPMTR( 'L', '/', 'N', 0, 0, A, TAU, C, 1, W, INFO )
200 CALL CHKXER( 'ZUPMTR', INFOT, NOUT, LERR, OK )
201 INFOT = 3
202 CALL ZUPMTR( 'L', 'U', '/', 0, 0, A, TAU, C, 1, W, INFO )
203 CALL CHKXER( 'ZUPMTR', INFOT, NOUT, LERR, OK )
204 INFOT = 4
205 CALL ZUPMTR( 'L', 'U', 'N', -1, 0, A, TAU, C, 1, W, INFO )
206 CALL CHKXER( 'ZUPMTR', INFOT, NOUT, LERR, OK )
207 INFOT = 5
208 CALL ZUPMTR( 'L', 'U', 'N', 0, -1, A, TAU, C, 1, W, INFO )
209 CALL CHKXER( 'ZUPMTR', INFOT, NOUT, LERR, OK )
210 INFOT = 9
211 CALL ZUPMTR( 'L', 'U', 'N', 2, 0, A, TAU, C, 1, W, INFO )
212 CALL CHKXER( 'ZUPMTR', INFOT, NOUT, LERR, OK )
213 NT = NT + 6
214 *
215 * ZPTEQR
216 *
217 SRNAMT = 'ZPTEQR'
218 INFOT = 1
219 CALL ZPTEQR( '/', 0, D, E, Z, 1, RW, INFO )
220 CALL CHKXER( 'ZPTEQR', INFOT, NOUT, LERR, OK )
221 INFOT = 2
222 CALL ZPTEQR( 'N', -1, D, E, Z, 1, RW, INFO )
223 CALL CHKXER( 'ZPTEQR', INFOT, NOUT, LERR, OK )
224 INFOT = 6
225 CALL ZPTEQR( 'V', 2, D, E, Z, 1, RW, INFO )
226 CALL CHKXER( 'ZPTEQR', INFOT, NOUT, LERR, OK )
227 NT = NT + 3
228 *
229 * ZSTEIN
230 *
231 SRNAMT = 'ZSTEIN'
232 INFOT = 1
233 CALL ZSTEIN( -1, D, E, 0, X, I1, I2, Z, 1, RW, IW, I3, INFO )
234 CALL CHKXER( 'ZSTEIN', INFOT, NOUT, LERR, OK )
235 INFOT = 4
236 CALL ZSTEIN( 0, D, E, -1, X, I1, I2, Z, 1, RW, IW, I3, INFO )
237 CALL CHKXER( 'ZSTEIN', INFOT, NOUT, LERR, OK )
238 INFOT = 4
239 CALL ZSTEIN( 0, D, E, 1, X, I1, I2, Z, 1, RW, IW, I3, INFO )
240 CALL CHKXER( 'ZSTEIN', INFOT, NOUT, LERR, OK )
241 INFOT = 9
242 CALL ZSTEIN( 2, D, E, 0, X, I1, I2, Z, 1, RW, IW, I3, INFO )
243 CALL CHKXER( 'ZSTEIN', INFOT, NOUT, LERR, OK )
244 NT = NT + 4
245 *
246 * ZSTEQR
247 *
248 SRNAMT = 'ZSTEQR'
249 INFOT = 1
250 CALL ZSTEQR( '/', 0, D, E, Z, 1, RW, INFO )
251 CALL CHKXER( 'ZSTEQR', INFOT, NOUT, LERR, OK )
252 INFOT = 2
253 CALL ZSTEQR( 'N', -1, D, E, Z, 1, RW, INFO )
254 CALL CHKXER( 'ZSTEQR', INFOT, NOUT, LERR, OK )
255 INFOT = 6
256 CALL ZSTEQR( 'V', 2, D, E, Z, 1, RW, INFO )
257 CALL CHKXER( 'ZSTEQR', INFOT, NOUT, LERR, OK )
258 NT = NT + 3
259 *
260 * ZSTEDC
261 *
262 SRNAMT = 'ZSTEDC'
263 INFOT = 1
264 CALL ZSTEDC( '/', 0, D, E, Z, 1, W, 1, RW, 1, IW, 1, INFO )
265 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
266 INFOT = 2
267 CALL ZSTEDC( 'N', -1, D, E, Z, 1, W, 1, RW, 1, IW, 1, INFO )
268 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
269 INFOT = 6
270 CALL ZSTEDC( 'V', 2, D, E, Z, 1, W, 4, RW, 23, IW, 28, INFO )
271 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
272 INFOT = 8
273 CALL ZSTEDC( 'N', 2, D, E, Z, 1, W, 0, RW, 1, IW, 1, INFO )
274 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
275 INFOT = 8
276 CALL ZSTEDC( 'V', 2, D, E, Z, 2, W, 0, RW, 23, IW, 28, INFO )
277 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
278 INFOT = 10
279 CALL ZSTEDC( 'N', 2, D, E, Z, 1, W, 1, RW, 0, IW, 1, INFO )
280 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
281 INFOT = 10
282 CALL ZSTEDC( 'I', 2, D, E, Z, 2, W, 1, RW, 1, IW, 12, INFO )
283 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
284 INFOT = 10
285 CALL ZSTEDC( 'V', 2, D, E, Z, 2, W, 4, RW, 1, IW, 28, INFO )
286 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
287 INFOT = 12
288 CALL ZSTEDC( 'N', 2, D, E, Z, 1, W, 1, RW, 1, IW, 0, INFO )
289 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
290 INFOT = 12
291 CALL ZSTEDC( 'I', 2, D, E, Z, 2, W, 1, RW, 23, IW, 0, INFO )
292 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
293 INFOT = 12
294 CALL ZSTEDC( 'V', 2, D, E, Z, 2, W, 4, RW, 23, IW, 0, INFO )
295 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
296 NT = NT + 11
297 *
298 * ZHEEVD
299 *
300 SRNAMT = 'ZHEEVD'
301 INFOT = 1
302 CALL ZHEEVD( '/', 'U', 0, A, 1, X, W, 1, RW, 1, IW, 1, INFO )
303 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
304 INFOT = 2
305 CALL ZHEEVD( 'N', '/', 0, A, 1, X, W, 1, RW, 1, IW, 1, INFO )
306 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
307 INFOT = 3
308 CALL ZHEEVD( 'N', 'U', -1, A, 1, X, W, 1, RW, 1, IW, 1, INFO )
309 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
310 INFOT = 5
311 CALL ZHEEVD( 'N', 'U', 2, A, 1, X, W, 3, RW, 2, IW, 1, INFO )
312 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
313 INFOT = 8
314 CALL ZHEEVD( 'N', 'U', 1, A, 1, X, W, 0, RW, 1, IW, 1, INFO )
315 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
316 INFOT = 8
317 CALL ZHEEVD( 'N', 'U', 2, A, 2, X, W, 2, RW, 2, IW, 1, INFO )
318 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
319 INFOT = 8
320 CALL ZHEEVD( 'V', 'U', 2, A, 2, X, W, 3, RW, 25, IW, 12, INFO )
321 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
322 INFOT = 10
323 CALL ZHEEVD( 'N', 'U', 1, A, 1, X, W, 1, RW, 0, IW, 1, INFO )
324 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
325 INFOT = 10
326 CALL ZHEEVD( 'N', 'U', 2, A, 2, X, W, 3, RW, 1, IW, 1, INFO )
327 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
328 INFOT = 10
329 CALL ZHEEVD( 'V', 'U', 2, A, 2, X, W, 8, RW, 18, IW, 12, INFO )
330 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
331 INFOT = 12
332 CALL ZHEEVD( 'N', 'U', 1, A, 1, X, W, 1, RW, 1, IW, 0, INFO )
333 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
334 INFOT = 12
335 CALL ZHEEVD( 'V', 'U', 2, A, 2, X, W, 8, RW, 25, IW, 11, INFO )
336 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
337 NT = NT + 12
338 *
339 * ZHEEV
340 *
341 SRNAMT = 'ZHEEV '
342 INFOT = 1
343 CALL ZHEEV( '/', 'U', 0, A, 1, X, W, 1, RW, INFO )
344 CALL CHKXER( 'ZHEEV ', INFOT, NOUT, LERR, OK )
345 INFOT = 2
346 CALL ZHEEV( 'N', '/', 0, A, 1, X, W, 1, RW, INFO )
347 CALL CHKXER( 'ZHEEV ', INFOT, NOUT, LERR, OK )
348 INFOT = 3
349 CALL ZHEEV( 'N', 'U', -1, A, 1, X, W, 1, RW, INFO )
350 CALL CHKXER( 'ZHEEV ', INFOT, NOUT, LERR, OK )
351 INFOT = 5
352 CALL ZHEEV( 'N', 'U', 2, A, 1, X, W, 3, RW, INFO )
353 CALL CHKXER( 'ZHEEV ', INFOT, NOUT, LERR, OK )
354 INFOT = 8
355 CALL ZHEEV( 'N', 'U', 2, A, 2, X, W, 2, RW, INFO )
356 CALL CHKXER( 'ZHEEV ', INFOT, NOUT, LERR, OK )
357 NT = NT + 5
358 *
359 * ZHEEVX
360 *
361 SRNAMT = 'ZHEEVX'
362 INFOT = 1
363 CALL ZHEEVX( '/', 'A', 'U', 0, A, 1, 0.0D0, 0.0D0, 0, 0, 0.0D0,
364 $ M, X, Z, 1, W, 1, RW, IW, I3, INFO )
365 CALL CHKXER( 'ZHEEVX', INFOT, NOUT, LERR, OK )
366 INFOT = 2
367 CALL ZHEEVX( 'V', '/', 'U', 0, A, 1, 0.0D0, 1.0D0, 1, 0, 0.0D0,
368 $ M, X, Z, 1, W, 1, RW, IW, I3, INFO )
369 CALL CHKXER( 'ZHEEVX', INFOT, NOUT, LERR, OK )
370 INFOT = 3
371 CALL ZHEEVX( 'V', 'A', '/', 0, A, 1, 0.0D0, 0.0D0, 0, 0, 0.0D0,
372 $ M, X, Z, 1, W, 1, RW, IW, I3, INFO )
373 INFOT = 4
374 CALL ZHEEVX( 'V', 'A', 'U', -1, A, 1, 0.0D0, 0.0D0, 0, 0,
375 $ 0.0D0, M, X, Z, 1, W, 1, RW, IW, I3, INFO )
376 CALL CHKXER( 'ZHEEVX', INFOT, NOUT, LERR, OK )
377 INFOT = 6
378 CALL ZHEEVX( 'V', 'A', 'U', 2, A, 1, 0.0D0, 0.0D0, 0, 0, 0.0D0,
379 $ M, X, Z, 2, W, 3, RW, IW, I3, INFO )
380 CALL CHKXER( 'ZHEEVX', INFOT, NOUT, LERR, OK )
381 INFOT = 8
382 CALL ZHEEVX( 'V', 'V', 'U', 1, A, 1, 0.0D0, 0.0D0, 0, 0, 0.0D0,
383 $ M, X, Z, 1, W, 1, RW, IW, I3, INFO )
384 CALL CHKXER( 'ZHEEVX', INFOT, NOUT, LERR, OK )
385 INFOT = 9
386 CALL ZHEEVX( 'V', 'I', 'U', 1, A, 1, 0.0D0, 0.0D0, 0, 0, 0.0D0,
387 $ M, X, Z, 1, W, 1, RW, IW, I3, INFO )
388 CALL CHKXER( 'ZHEEVX', INFOT, NOUT, LERR, OK )
389 INFOT = 10
390 CALL ZHEEVX( 'V', 'I', 'U', 2, A, 2, 0.0D0, 0.0D0, 2, 1, 0.0D0,
391 $ M, X, Z, 2, W, 3, RW, IW, I3, INFO )
392 CALL CHKXER( 'ZHEEVX', INFOT, NOUT, LERR, OK )
393 INFOT = 15
394 CALL ZHEEVX( 'V', 'A', 'U', 2, A, 2, 0.0D0, 0.0D0, 0, 0, 0.0D0,
395 $ M, X, Z, 1, W, 3, RW, IW, I3, INFO )
396 CALL CHKXER( 'ZHEEVX', INFOT, NOUT, LERR, OK )
397 INFOT = 17
398 CALL ZHEEVX( 'V', 'A', 'U', 2, A, 2, 0.0D0, 0.0D0, 0, 0, 0.0D0,
399 $ M, X, Z, 2, W, 2, RW, IW, I1, INFO )
400 CALL CHKXER( 'ZHEEVX', INFOT, NOUT, LERR, OK )
401 NT = NT + 10
402 *
403 * ZHEEVR
404 *
405 SRNAMT = 'ZHEEVR'
406 N = 1
407 INFOT = 1
408 CALL ZHEEVR( '/', 'A', 'U', 0, A, 1, 0.0D0, 0.0D0, 1, 1, 0.0D0,
409 $ M, R, Z, 1, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ),
410 $ 10*N, INFO )
411 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
412 INFOT = 2
413 CALL ZHEEVR( 'V', '/', 'U', 0, A, 1, 0.0D0, 0.0D0, 1, 1, 0.0D0,
414 $ M, R, Z, 1, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ),
415 $ 10*N, INFO )
416 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
417 INFOT = 3
418 CALL ZHEEVR( 'V', 'A', '/', -1, A, 1, 0.0D0, 0.0D0, 1, 1,
419 $ 0.0D0, M, R, Z, 1, IW, Q, 2*N, RW, 24*N,
420 $ IW( 2*N+1 ), 10*N, INFO )
421 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
422 INFOT = 4
423 CALL ZHEEVR( 'V', 'A', 'U', -1, A, 1, 0.0D0, 0.0D0, 1, 1,
424 $ 0.0D0, M, R, Z, 1, IW, Q, 2*N, RW, 24*N,
425 $ IW( 2*N+1 ), 10*N, INFO )
426 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
427 INFOT = 6
428 CALL ZHEEVR( 'V', 'A', 'U', 2, A, 1, 0.0D0, 0.0D0, 1, 1, 0.0D0,
429 $ M, R, Z, 1, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ),
430 $ 10*N, INFO )
431 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
432 INFOT = 8
433 CALL ZHEEVR( 'V', 'V', 'U', 1, A, 1, 0.0D0, 0.0D0, 1, 1, 0.0D0,
434 $ M, R, Z, 1, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ),
435 $ 10*N, INFO )
436 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
437 INFOT = 9
438 CALL ZHEEVR( 'V', 'I', 'U', 1, A, 1, 0.0D0, 0.0D0, 0, 1, 0.0D0,
439 $ M, R, Z, 1, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ),
440 $ 10*N, INFO )
441 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
442 INFOT = 10
443 *
444 CALL ZHEEVR( 'V', 'I', 'U', 2, A, 2, 0.0D0, 0.0D0, 2, 1, 0.0D0,
445 $ M, R, Z, 1, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ),
446 $ 10*N, INFO )
447 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
448 INFOT = 15
449 CALL ZHEEVR( 'V', 'I', 'U', 1, A, 1, 0.0D0, 0.0D0, 1, 1, 0.0D0,
450 $ M, R, Z, 0, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ),
451 $ 10*N, INFO )
452 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
453 INFOT = 18
454 CALL ZHEEVR( 'V', 'I', 'U', 1, A, 1, 0.0D0, 0.0D0, 1, 1, 0.0D0,
455 $ M, R, Z, 1, IW, Q, 2*N-1, RW, 24*N, IW( 2*N+1 ),
456 $ 10*N, INFO )
457 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
458 INFOT = 20
459 CALL ZHEEVR( 'V', 'I', 'U', 1, A, 1, 0.0D0, 0.0D0, 1, 1, 0.0D0,
460 $ M, R, Z, 1, IW, Q, 2*N, RW, 24*N-1, IW( 2*N-1 ),
461 $ 10*N, INFO )
462 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
463 INFOT = 22
464 CALL ZHEEVR( 'V', 'I', 'U', 1, A, 1, 0.0D0, 0.0D0, 1, 1, 0.0D0,
465 $ M, R, Z, 1, IW, Q, 2*N, RW, 24*N, IW, 10*N-1,
466 $ INFO )
467 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
468 NT = NT + 12
469 *
470 * ZHPEVD
471 *
472 SRNAMT = 'ZHPEVD'
473 INFOT = 1
474 CALL ZHPEVD( '/', 'U', 0, A, X, Z, 1, W, 1, RW, 1, IW, 1,
475 $ INFO )
476 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
477 INFOT = 2
478 CALL ZHPEVD( 'N', '/', 0, A, X, Z, 1, W, 1, RW, 1, IW, 1,
479 $ INFO )
480 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
481 INFOT = 3
482 CALL ZHPEVD( 'N', 'U', -1, A, X, Z, 1, W, 1, RW, 1, IW, 1,
483 $ INFO )
484 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
485 INFOT = 7
486 CALL ZHPEVD( 'V', 'U', 2, A, X, Z, 1, W, 4, RW, 25, IW, 12,
487 $ INFO )
488 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
489 INFOT = 9
490 CALL ZHPEVD( 'N', 'U', 1, A, X, Z, 1, W, 0, RW, 1, IW, 1,
491 $ INFO )
492 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
493 INFOT = 9
494 CALL ZHPEVD( 'N', 'U', 2, A, X, Z, 2, W, 1, RW, 2, IW, 1,
495 $ INFO )
496 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
497 INFOT = 9
498 CALL ZHPEVD( 'V', 'U', 2, A, X, Z, 2, W, 2, RW, 25, IW, 12,
499 $ INFO )
500 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
501 INFOT = 11
502 CALL ZHPEVD( 'N', 'U', 1, A, X, Z, 1, W, 1, RW, 0, IW, 1,
503 $ INFO )
504 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
505 INFOT = 11
506 CALL ZHPEVD( 'N', 'U', 2, A, X, Z, 2, W, 2, RW, 1, IW, 1,
507 $ INFO )
508 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
509 INFOT = 11
510 CALL ZHPEVD( 'V', 'U', 2, A, X, Z, 2, W, 4, RW, 18, IW, 12,
511 $ INFO )
512 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
513 INFOT = 13
514 CALL ZHPEVD( 'N', 'U', 1, A, X, Z, 1, W, 1, RW, 1, IW, 0,
515 $ INFO )
516 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
517 INFOT = 13
518 CALL ZHPEVD( 'N', 'U', 2, A, X, Z, 2, W, 2, RW, 2, IW, 0,
519 $ INFO )
520 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
521 INFOT = 13
522 CALL ZHPEVD( 'V', 'U', 2, A, X, Z, 2, W, 4, RW, 25, IW, 2,
523 $ INFO )
524 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
525 NT = NT + 13
526 *
527 * ZHPEV
528 *
529 SRNAMT = 'ZHPEV '
530 INFOT = 1
531 CALL ZHPEV( '/', 'U', 0, A, X, Z, 1, W, RW, INFO )
532 CALL CHKXER( 'ZHPEV ', INFOT, NOUT, LERR, OK )
533 INFOT = 2
534 CALL ZHPEV( 'N', '/', 0, A, X, Z, 1, W, RW, INFO )
535 CALL CHKXER( 'ZHPEV ', INFOT, NOUT, LERR, OK )
536 INFOT = 3
537 CALL ZHPEV( 'N', 'U', -1, A, X, Z, 1, W, RW, INFO )
538 CALL CHKXER( 'ZHPEV ', INFOT, NOUT, LERR, OK )
539 INFOT = 7
540 CALL ZHPEV( 'V', 'U', 2, A, X, Z, 1, W, RW, INFO )
541 CALL CHKXER( 'ZHPEV ', INFOT, NOUT, LERR, OK )
542 NT = NT + 4
543 *
544 * ZHPEVX
545 *
546 SRNAMT = 'ZHPEVX'
547 INFOT = 1
548 CALL ZHPEVX( '/', 'A', 'U', 0, A, 0.0D0, 0.0D0, 0, 0, 0.0D0, M,
549 $ X, Z, 1, W, RW, IW, I3, INFO )
550 CALL CHKXER( 'ZHPEVX', INFOT, NOUT, LERR, OK )
551 INFOT = 2
552 CALL ZHPEVX( 'V', '/', 'U', 0, A, 0.0D0, 1.0D0, 1, 0, 0.0D0, M,
553 $ X, Z, 1, W, RW, IW, I3, INFO )
554 CALL CHKXER( 'ZHPEVX', INFOT, NOUT, LERR, OK )
555 INFOT = 3
556 CALL ZHPEVX( 'V', 'A', '/', 0, A, 0.0D0, 0.0D0, 0, 0, 0.0D0, M,
557 $ X, Z, 1, W, RW, IW, I3, INFO )
558 CALL CHKXER( 'ZHPEVX', INFOT, NOUT, LERR, OK )
559 INFOT = 4
560 CALL ZHPEVX( 'V', 'A', 'U', -1, A, 0.0D0, 0.0D0, 0, 0, 0.0D0,
561 $ M, X, Z, 1, W, RW, IW, I3, INFO )
562 CALL CHKXER( 'ZHPEVX', INFOT, NOUT, LERR, OK )
563 INFOT = 7
564 CALL ZHPEVX( 'V', 'V', 'U', 1, A, 0.0D0, 0.0D0, 0, 0, 0.0D0, M,
565 $ X, Z, 1, W, RW, IW, I3, INFO )
566 CALL CHKXER( 'ZHPEVX', INFOT, NOUT, LERR, OK )
567 INFOT = 8
568 CALL ZHPEVX( 'V', 'I', 'U', 1, A, 0.0D0, 0.0D0, 0, 0, 0.0D0, M,
569 $ X, Z, 1, W, RW, IW, I3, INFO )
570 CALL CHKXER( 'ZHPEVX', INFOT, NOUT, LERR, OK )
571 INFOT = 9
572 CALL ZHPEVX( 'V', 'I', 'U', 2, A, 0.0D0, 0.0D0, 2, 1, 0.0D0, M,
573 $ X, Z, 2, W, RW, IW, I3, INFO )
574 CALL CHKXER( 'ZHPEVX', INFOT, NOUT, LERR, OK )
575 INFOT = 14
576 CALL ZHPEVX( 'V', 'A', 'U', 2, A, 0.0D0, 0.0D0, 0, 0, 0.0D0, M,
577 $ X, Z, 1, W, RW, IW, I3, INFO )
578 CALL CHKXER( 'ZHPEVX', INFOT, NOUT, LERR, OK )
579 NT = NT + 8
580 *
581 * Test error exits for the HB path.
582 *
583 ELSE IF( LSAMEN( 2, C2, 'HB' ) ) THEN
584 *
585 * ZHBTRD
586 *
587 SRNAMT = 'ZHBTRD'
588 INFOT = 1
589 CALL ZHBTRD( '/', 'U', 0, 0, A, 1, D, E, Z, 1, W, INFO )
590 CALL CHKXER( 'ZHBTRD', INFOT, NOUT, LERR, OK )
591 INFOT = 2
592 CALL ZHBTRD( 'N', '/', 0, 0, A, 1, D, E, Z, 1, W, INFO )
593 CALL CHKXER( 'ZHBTRD', INFOT, NOUT, LERR, OK )
594 INFOT = 3
595 CALL ZHBTRD( 'N', 'U', -1, 0, A, 1, D, E, Z, 1, W, INFO )
596 CALL CHKXER( 'ZHBTRD', INFOT, NOUT, LERR, OK )
597 INFOT = 4
598 CALL ZHBTRD( 'N', 'U', 0, -1, A, 1, D, E, Z, 1, W, INFO )
599 CALL CHKXER( 'ZHBTRD', INFOT, NOUT, LERR, OK )
600 INFOT = 6
601 CALL ZHBTRD( 'N', 'U', 1, 1, A, 1, D, E, Z, 1, W, INFO )
602 CALL CHKXER( 'ZHBTRD', INFOT, NOUT, LERR, OK )
603 INFOT = 10
604 CALL ZHBTRD( 'V', 'U', 2, 0, A, 1, D, E, Z, 1, W, INFO )
605 CALL CHKXER( 'ZHBTRD', INFOT, NOUT, LERR, OK )
606 NT = NT + 6
607 *
608 * ZHBEVD
609 *
610 SRNAMT = 'ZHBEVD'
611 INFOT = 1
612 CALL ZHBEVD( '/', 'U', 0, 0, A, 1, X, Z, 1, W, 1, RW, 1, IW, 1,
613 $ INFO )
614 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
615 INFOT = 2
616 CALL ZHBEVD( 'N', '/', 0, 0, A, 1, X, Z, 1, W, 1, RW, 1, IW, 1,
617 $ INFO )
618 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
619 INFOT = 3
620 CALL ZHBEVD( 'N', 'U', -1, 0, A, 1, X, Z, 1, W, 1, RW, 1, IW,
621 $ 1, INFO )
622 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
623 INFOT = 4
624 CALL ZHBEVD( 'N', 'U', 0, -1, A, 1, X, Z, 1, W, 1, RW, 1, IW,
625 $ 1, INFO )
626 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
627 INFOT = 6
628 CALL ZHBEVD( 'N', 'U', 2, 1, A, 1, X, Z, 1, W, 2, RW, 2, IW, 1,
629 $ INFO )
630 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
631 INFOT = 9
632 CALL ZHBEVD( 'V', 'U', 2, 1, A, 2, X, Z, 1, W, 8, RW, 25, IW,
633 $ 12, INFO )
634 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
635 INFOT = 11
636 CALL ZHBEVD( 'N', 'U', 1, 0, A, 1, X, Z, 1, W, 0, RW, 1, IW, 1,
637 $ INFO )
638 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
639 INFOT = 11
640 CALL ZHBEVD( 'N', 'U', 2, 1, A, 2, X, Z, 2, W, 1, RW, 2, IW, 1,
641 $ INFO )
642 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
643 INFOT = 11
644 CALL ZHBEVD( 'V', 'U', 2, 1, A, 2, X, Z, 2, W, 2, RW, 25, IW,
645 $ 12, INFO )
646 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
647 INFOT = 13
648 CALL ZHBEVD( 'N', 'U', 1, 0, A, 1, X, Z, 1, W, 1, RW, 0, IW, 1,
649 $ INFO )
650 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
651 INFOT = 13
652 CALL ZHBEVD( 'N', 'U', 2, 1, A, 2, X, Z, 2, W, 2, RW, 1, IW, 1,
653 $ INFO )
654 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
655 INFOT = 13
656 CALL ZHBEVD( 'V', 'U', 2, 1, A, 2, X, Z, 2, W, 8, RW, 2, IW,
657 $ 12, INFO )
658 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
659 INFOT = 15
660 CALL ZHBEVD( 'N', 'U', 1, 0, A, 1, X, Z, 1, W, 1, RW, 1, IW, 0,
661 $ INFO )
662 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
663 INFOT = 15
664 CALL ZHBEVD( 'N', 'U', 2, 1, A, 2, X, Z, 2, W, 2, RW, 2, IW, 0,
665 $ INFO )
666 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
667 INFOT = 15
668 CALL ZHBEVD( 'V', 'U', 2, 1, A, 2, X, Z, 2, W, 8, RW, 25, IW,
669 $ 2, INFO )
670 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
671 NT = NT + 15
672 *
673 * ZHBEV
674 *
675 SRNAMT = 'ZHBEV '
676 INFOT = 1
677 CALL ZHBEV( '/', 'U', 0, 0, A, 1, X, Z, 1, W, RW, INFO )
678 CALL CHKXER( 'ZHBEV ', INFOT, NOUT, LERR, OK )
679 INFOT = 2
680 CALL ZHBEV( 'N', '/', 0, 0, A, 1, X, Z, 1, W, RW, INFO )
681 CALL CHKXER( 'ZHBEV ', INFOT, NOUT, LERR, OK )
682 INFOT = 3
683 CALL ZHBEV( 'N', 'U', -1, 0, A, 1, X, Z, 1, W, RW, INFO )
684 CALL CHKXER( 'ZHBEV ', INFOT, NOUT, LERR, OK )
685 INFOT = 4
686 CALL ZHBEV( 'N', 'U', 0, -1, A, 1, X, Z, 1, W, RW, INFO )
687 CALL CHKXER( 'ZHBEV ', INFOT, NOUT, LERR, OK )
688 INFOT = 6
689 CALL ZHBEV( 'N', 'U', 2, 1, A, 1, X, Z, 1, W, RW, INFO )
690 CALL CHKXER( 'ZHBEV ', INFOT, NOUT, LERR, OK )
691 INFOT = 9
692 CALL ZHBEV( 'V', 'U', 2, 0, A, 1, X, Z, 1, W, RW, INFO )
693 CALL CHKXER( 'ZHBEV ', INFOT, NOUT, LERR, OK )
694 NT = NT + 6
695 *
696 * ZHBEVX
697 *
698 SRNAMT = 'ZHBEVX'
699 INFOT = 1
700 CALL ZHBEVX( '/', 'A', 'U', 0, 0, A, 1, Q, 1, 0.0D0, 0.0D0, 0,
701 $ 0, 0.0D0, M, X, Z, 1, W, RW, IW, I3, INFO )
702 CALL CHKXER( 'ZHBEVX', INFOT, NOUT, LERR, OK )
703 INFOT = 2
704 CALL ZHBEVX( 'V', '/', 'U', 0, 0, A, 1, Q, 1, 0.0D0, 1.0D0, 1,
705 $ 0, 0.0D0, M, X, Z, 1, W, RW, IW, I3, INFO )
706 CALL CHKXER( 'ZHBEVX', INFOT, NOUT, LERR, OK )
707 INFOT = 3
708 CALL ZHBEVX( 'V', 'A', '/', 0, 0, A, 1, Q, 1, 0.0D0, 0.0D0, 0,
709 $ 0, 0.0D0, M, X, Z, 1, W, RW, IW, I3, INFO )
710 INFOT = 4
711 CALL ZHBEVX( 'V', 'A', 'U', -1, 0, A, 1, Q, 1, 0.0D0, 0.0D0, 0,
712 $ 0, 0.0D0, M, X, Z, 1, W, RW, IW, I3, INFO )
713 CALL CHKXER( 'ZHBEVX', INFOT, NOUT, LERR, OK )
714 INFOT = 5
715 CALL ZHBEVX( 'V', 'A', 'U', 0, -1, A, 1, Q, 1, 0.0D0, 0.0D0, 0,
716 $ 0, 0.0D0, M, X, Z, 1, W, RW, IW, I3, INFO )
717 CALL CHKXER( 'ZHBEVX', INFOT, NOUT, LERR, OK )
718 INFOT = 7
719 CALL ZHBEVX( 'V', 'A', 'U', 2, 1, A, 1, Q, 2, 0.0D0, 0.0D0, 0,
720 $ 0, 0.0D0, M, X, Z, 2, W, RW, IW, I3, INFO )
721 CALL CHKXER( 'ZHBEVX', INFOT, NOUT, LERR, OK )
722 INFOT = 9
723 CALL ZHBEVX( 'V', 'A', 'U', 2, 0, A, 1, Q, 1, 0.0D0, 0.0D0, 0,
724 $ 0, 0.0D0, M, X, Z, 2, W, RW, IW, I3, INFO )
725 CALL CHKXER( 'ZHBEVX', INFOT, NOUT, LERR, OK )
726 INFOT = 11
727 CALL ZHBEVX( 'V', 'V', 'U', 1, 0, A, 1, Q, 1, 0.0D0, 0.0D0, 0,
728 $ 0, 0.0D0, M, X, Z, 1, W, RW, IW, I3, INFO )
729 CALL CHKXER( 'ZHBEVX', INFOT, NOUT, LERR, OK )
730 INFOT = 12
731 CALL ZHBEVX( 'V', 'I', 'U', 1, 0, A, 1, Q, 1, 0.0D0, 0.0D0, 0,
732 $ 0, 0.0D0, M, X, Z, 1, W, RW, IW, I3, INFO )
733 CALL CHKXER( 'ZHBEVX', INFOT, NOUT, LERR, OK )
734 INFOT = 13
735 CALL ZHBEVX( 'V', 'I', 'U', 1, 0, A, 1, Q, 1, 0.0D0, 0.0D0, 1,
736 $ 2, 0.0D0, M, X, Z, 1, W, RW, IW, I3, INFO )
737 CALL CHKXER( 'ZHBEVX', INFOT, NOUT, LERR, OK )
738 INFOT = 18
739 CALL ZHBEVX( 'V', 'A', 'U', 2, 0, A, 1, Q, 2, 0.0D0, 0.0D0, 0,
740 $ 0, 0.0D0, M, X, Z, 1, W, RW, IW, I3, INFO )
741 CALL CHKXER( 'ZHBEVX', INFOT, NOUT, LERR, OK )
742 NT = NT + 11
743 END IF
744 *
745 * Print a summary line.
746 *
747 IF( OK ) THEN
748 WRITE( NOUT, FMT = 9999 )PATH, NT
749 ELSE
750 WRITE( NOUT, FMT = 9998 )PATH
751 END IF
752 *
753 9999 FORMAT( 1X, A3, ' routines passed the tests of the error exits',
754 $ ' (', I3, ' tests done)' )
755 9998 FORMAT( ' *** ', A3, ' routines failed the tests of the error ',
756 $ 'exits ***' )
757 *
758 RETURN
759 *
760 * End of ZERRST
761 *
762 END
2 *
3 * -- LAPACK test routine (version 3.1) --
4 * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
5 * November 2006
6 *
7 * .. Scalar Arguments ..
8 CHARACTER*3 PATH
9 INTEGER NUNIT
10 * ..
11 *
12 * Purpose
13 * =======
14 *
15 * ZERRST tests the error exits for ZHETRD, ZUNGTR, CUNMTR, ZHPTRD,
16 * ZUNGTR, ZUPMTR, ZSTEQR, CSTEIN, ZPTEQR, ZHBTRD,
17 * ZHEEV, CHEEVX, CHEEVD, ZHBEV, CHBEVX, CHBEVD,
18 * ZHPEV, CHPEVX, CHPEVD, and ZSTEDC.
19 *
20 * Arguments
21 * =========
22 *
23 * PATH (input) CHARACTER*3
24 * The LAPACK path name for the routines to be tested.
25 *
26 * NUNIT (input) INTEGER
27 * The unit number for output.
28 *
29 * =====================================================================
30 *
31 * .. Parameters ..
32 INTEGER NMAX, LIW, LW
33 PARAMETER ( NMAX = 3, LIW = 12*NMAX, LW = 20*NMAX )
34 * ..
35 * .. Local Scalars ..
36 CHARACTER*2 C2
37 INTEGER I, INFO, J, M, N, NT
38 * ..
39 * .. Local Arrays ..
40 INTEGER I1( NMAX ), I2( NMAX ), I3( NMAX ), IW( LIW )
41 DOUBLE PRECISION D( NMAX ), E( NMAX ), R( LW ), RW( LW ),
42 $ X( NMAX )
43 COMPLEX*16 A( NMAX, NMAX ), C( NMAX, NMAX ),
44 $ Q( NMAX, NMAX ), TAU( NMAX ), W( LW ),
45 $ Z( NMAX, NMAX )
46 * ..
47 * .. External Functions ..
48 LOGICAL LSAMEN
49 EXTERNAL LSAMEN
50 * ..
51 * .. External Subroutines ..
52 EXTERNAL CHKXER, ZHBEV, ZHBEVD, ZHBEVX, ZHBTRD, ZHEEV,
53 $ ZHEEVD, ZHEEVR, ZHEEVX, ZHETRD, ZHPEV, ZHPEVD,
54 $ ZHPEVX, ZHPTRD, ZPTEQR, ZSTEDC, ZSTEIN, ZSTEQR,
55 $ ZUNGTR, ZUNMTR, ZUPGTR, ZUPMTR
56 * ..
57 * .. Scalars in Common ..
58 LOGICAL LERR, OK
59 CHARACTER*32 SRNAMT
60 INTEGER INFOT, NOUT
61 * ..
62 * .. Common blocks ..
63 COMMON / INFOC / INFOT, NOUT, OK, LERR
64 COMMON / SRNAMC / SRNAMT
65 * ..
66 * .. Intrinsic Functions ..
67 INTRINSIC DBLE
68 * ..
69 * .. Executable Statements ..
70 *
71 NOUT = NUNIT
72 WRITE( NOUT, FMT = * )
73 C2 = PATH( 2: 3 )
74 *
75 * Set the variables to innocuous values.
76 *
77 DO 20 J = 1, NMAX
78 DO 10 I = 1, NMAX
79 A( I, J ) = 1.D0 / DBLE( I+J )
80 10 CONTINUE
81 20 CONTINUE
82 DO 30 J = 1, NMAX
83 D( J ) = DBLE( J )
84 E( J ) = 0.0D0
85 I1( J ) = J
86 I2( J ) = J
87 TAU( J ) = 1.D0
88 30 CONTINUE
89 OK = .TRUE.
90 NT = 0
91 *
92 * Test error exits for the ST path.
93 *
94 IF( LSAMEN( 2, C2, 'ST' ) ) THEN
95 *
96 * ZHETRD
97 *
98 SRNAMT = 'ZHETRD'
99 INFOT = 1
100 CALL ZHETRD( '/', 0, A, 1, D, E, TAU, W, 1, INFO )
101 CALL CHKXER( 'ZHETRD', INFOT, NOUT, LERR, OK )
102 INFOT = 2
103 CALL ZHETRD( 'U', -1, A, 1, D, E, TAU, W, 1, INFO )
104 CALL CHKXER( 'ZHETRD', INFOT, NOUT, LERR, OK )
105 INFOT = 4
106 CALL ZHETRD( 'U', 2, A, 1, D, E, TAU, W, 1, INFO )
107 CALL CHKXER( 'ZHETRD', INFOT, NOUT, LERR, OK )
108 INFOT = 9
109 CALL ZHETRD( 'U', 0, A, 1, D, E, TAU, W, 0, INFO )
110 CALL CHKXER( 'ZHETRD', INFOT, NOUT, LERR, OK )
111 NT = NT + 4
112 *
113 * ZUNGTR
114 *
115 SRNAMT = 'ZUNGTR'
116 INFOT = 1
117 CALL ZUNGTR( '/', 0, A, 1, TAU, W, 1, INFO )
118 CALL CHKXER( 'ZUNGTR', INFOT, NOUT, LERR, OK )
119 INFOT = 2
120 CALL ZUNGTR( 'U', -1, A, 1, TAU, W, 1, INFO )
121 CALL CHKXER( 'ZUNGTR', INFOT, NOUT, LERR, OK )
122 INFOT = 4
123 CALL ZUNGTR( 'U', 2, A, 1, TAU, W, 1, INFO )
124 CALL CHKXER( 'ZUNGTR', INFOT, NOUT, LERR, OK )
125 INFOT = 7
126 CALL ZUNGTR( 'U', 3, A, 3, TAU, W, 1, INFO )
127 CALL CHKXER( 'ZUNGTR', INFOT, NOUT, LERR, OK )
128 NT = NT + 4
129 *
130 * ZUNMTR
131 *
132 SRNAMT = 'ZUNMTR'
133 INFOT = 1
134 CALL ZUNMTR( '/', 'U', 'N', 0, 0, A, 1, TAU, C, 1, W, 1, INFO )
135 CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
136 INFOT = 2
137 CALL ZUNMTR( 'L', '/', 'N', 0, 0, A, 1, TAU, C, 1, W, 1, INFO )
138 CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
139 INFOT = 3
140 CALL ZUNMTR( 'L', 'U', '/', 0, 0, A, 1, TAU, C, 1, W, 1, INFO )
141 CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
142 INFOT = 4
143 CALL ZUNMTR( 'L', 'U', 'N', -1, 0, A, 1, TAU, C, 1, W, 1,
144 $ INFO )
145 CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
146 INFOT = 5
147 CALL ZUNMTR( 'L', 'U', 'N', 0, -1, A, 1, TAU, C, 1, W, 1,
148 $ INFO )
149 CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
150 INFOT = 7
151 CALL ZUNMTR( 'L', 'U', 'N', 2, 0, A, 1, TAU, C, 2, W, 1, INFO )
152 CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
153 INFOT = 7
154 CALL ZUNMTR( 'R', 'U', 'N', 0, 2, A, 1, TAU, C, 1, W, 1, INFO )
155 CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
156 INFOT = 10
157 CALL ZUNMTR( 'L', 'U', 'N', 2, 0, A, 2, TAU, C, 1, W, 1, INFO )
158 CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
159 INFOT = 12
160 CALL ZUNMTR( 'L', 'U', 'N', 0, 2, A, 1, TAU, C, 1, W, 1, INFO )
161 CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
162 INFOT = 12
163 CALL ZUNMTR( 'R', 'U', 'N', 2, 0, A, 1, TAU, C, 2, W, 1, INFO )
164 CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
165 NT = NT + 10
166 *
167 * ZHPTRD
168 *
169 SRNAMT = 'ZHPTRD'
170 INFOT = 1
171 CALL ZHPTRD( '/', 0, A, D, E, TAU, INFO )
172 CALL CHKXER( 'ZHPTRD', INFOT, NOUT, LERR, OK )
173 INFOT = 2
174 CALL ZHPTRD( 'U', -1, A, D, E, TAU, INFO )
175 CALL CHKXER( 'ZHPTRD', INFOT, NOUT, LERR, OK )
176 NT = NT + 2
177 *
178 * ZUPGTR
179 *
180 SRNAMT = 'ZUPGTR'
181 INFOT = 1
182 CALL ZUPGTR( '/', 0, A, TAU, Z, 1, W, INFO )
183 CALL CHKXER( 'ZUPGTR', INFOT, NOUT, LERR, OK )
184 INFOT = 2
185 CALL ZUPGTR( 'U', -1, A, TAU, Z, 1, W, INFO )
186 CALL CHKXER( 'ZUPGTR', INFOT, NOUT, LERR, OK )
187 INFOT = 6
188 CALL ZUPGTR( 'U', 2, A, TAU, Z, 1, W, INFO )
189 CALL CHKXER( 'ZUPGTR', INFOT, NOUT, LERR, OK )
190 NT = NT + 3
191 *
192 * ZUPMTR
193 *
194 SRNAMT = 'ZUPMTR'
195 INFOT = 1
196 CALL ZUPMTR( '/', 'U', 'N', 0, 0, A, TAU, C, 1, W, INFO )
197 CALL CHKXER( 'ZUPMTR', INFOT, NOUT, LERR, OK )
198 INFOT = 2
199 CALL ZUPMTR( 'L', '/', 'N', 0, 0, A, TAU, C, 1, W, INFO )
200 CALL CHKXER( 'ZUPMTR', INFOT, NOUT, LERR, OK )
201 INFOT = 3
202 CALL ZUPMTR( 'L', 'U', '/', 0, 0, A, TAU, C, 1, W, INFO )
203 CALL CHKXER( 'ZUPMTR', INFOT, NOUT, LERR, OK )
204 INFOT = 4
205 CALL ZUPMTR( 'L', 'U', 'N', -1, 0, A, TAU, C, 1, W, INFO )
206 CALL CHKXER( 'ZUPMTR', INFOT, NOUT, LERR, OK )
207 INFOT = 5
208 CALL ZUPMTR( 'L', 'U', 'N', 0, -1, A, TAU, C, 1, W, INFO )
209 CALL CHKXER( 'ZUPMTR', INFOT, NOUT, LERR, OK )
210 INFOT = 9
211 CALL ZUPMTR( 'L', 'U', 'N', 2, 0, A, TAU, C, 1, W, INFO )
212 CALL CHKXER( 'ZUPMTR', INFOT, NOUT, LERR, OK )
213 NT = NT + 6
214 *
215 * ZPTEQR
216 *
217 SRNAMT = 'ZPTEQR'
218 INFOT = 1
219 CALL ZPTEQR( '/', 0, D, E, Z, 1, RW, INFO )
220 CALL CHKXER( 'ZPTEQR', INFOT, NOUT, LERR, OK )
221 INFOT = 2
222 CALL ZPTEQR( 'N', -1, D, E, Z, 1, RW, INFO )
223 CALL CHKXER( 'ZPTEQR', INFOT, NOUT, LERR, OK )
224 INFOT = 6
225 CALL ZPTEQR( 'V', 2, D, E, Z, 1, RW, INFO )
226 CALL CHKXER( 'ZPTEQR', INFOT, NOUT, LERR, OK )
227 NT = NT + 3
228 *
229 * ZSTEIN
230 *
231 SRNAMT = 'ZSTEIN'
232 INFOT = 1
233 CALL ZSTEIN( -1, D, E, 0, X, I1, I2, Z, 1, RW, IW, I3, INFO )
234 CALL CHKXER( 'ZSTEIN', INFOT, NOUT, LERR, OK )
235 INFOT = 4
236 CALL ZSTEIN( 0, D, E, -1, X, I1, I2, Z, 1, RW, IW, I3, INFO )
237 CALL CHKXER( 'ZSTEIN', INFOT, NOUT, LERR, OK )
238 INFOT = 4
239 CALL ZSTEIN( 0, D, E, 1, X, I1, I2, Z, 1, RW, IW, I3, INFO )
240 CALL CHKXER( 'ZSTEIN', INFOT, NOUT, LERR, OK )
241 INFOT = 9
242 CALL ZSTEIN( 2, D, E, 0, X, I1, I2, Z, 1, RW, IW, I3, INFO )
243 CALL CHKXER( 'ZSTEIN', INFOT, NOUT, LERR, OK )
244 NT = NT + 4
245 *
246 * ZSTEQR
247 *
248 SRNAMT = 'ZSTEQR'
249 INFOT = 1
250 CALL ZSTEQR( '/', 0, D, E, Z, 1, RW, INFO )
251 CALL CHKXER( 'ZSTEQR', INFOT, NOUT, LERR, OK )
252 INFOT = 2
253 CALL ZSTEQR( 'N', -1, D, E, Z, 1, RW, INFO )
254 CALL CHKXER( 'ZSTEQR', INFOT, NOUT, LERR, OK )
255 INFOT = 6
256 CALL ZSTEQR( 'V', 2, D, E, Z, 1, RW, INFO )
257 CALL CHKXER( 'ZSTEQR', INFOT, NOUT, LERR, OK )
258 NT = NT + 3
259 *
260 * ZSTEDC
261 *
262 SRNAMT = 'ZSTEDC'
263 INFOT = 1
264 CALL ZSTEDC( '/', 0, D, E, Z, 1, W, 1, RW, 1, IW, 1, INFO )
265 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
266 INFOT = 2
267 CALL ZSTEDC( 'N', -1, D, E, Z, 1, W, 1, RW, 1, IW, 1, INFO )
268 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
269 INFOT = 6
270 CALL ZSTEDC( 'V', 2, D, E, Z, 1, W, 4, RW, 23, IW, 28, INFO )
271 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
272 INFOT = 8
273 CALL ZSTEDC( 'N', 2, D, E, Z, 1, W, 0, RW, 1, IW, 1, INFO )
274 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
275 INFOT = 8
276 CALL ZSTEDC( 'V', 2, D, E, Z, 2, W, 0, RW, 23, IW, 28, INFO )
277 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
278 INFOT = 10
279 CALL ZSTEDC( 'N', 2, D, E, Z, 1, W, 1, RW, 0, IW, 1, INFO )
280 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
281 INFOT = 10
282 CALL ZSTEDC( 'I', 2, D, E, Z, 2, W, 1, RW, 1, IW, 12, INFO )
283 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
284 INFOT = 10
285 CALL ZSTEDC( 'V', 2, D, E, Z, 2, W, 4, RW, 1, IW, 28, INFO )
286 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
287 INFOT = 12
288 CALL ZSTEDC( 'N', 2, D, E, Z, 1, W, 1, RW, 1, IW, 0, INFO )
289 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
290 INFOT = 12
291 CALL ZSTEDC( 'I', 2, D, E, Z, 2, W, 1, RW, 23, IW, 0, INFO )
292 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
293 INFOT = 12
294 CALL ZSTEDC( 'V', 2, D, E, Z, 2, W, 4, RW, 23, IW, 0, INFO )
295 CALL CHKXER( 'ZSTEDC', INFOT, NOUT, LERR, OK )
296 NT = NT + 11
297 *
298 * ZHEEVD
299 *
300 SRNAMT = 'ZHEEVD'
301 INFOT = 1
302 CALL ZHEEVD( '/', 'U', 0, A, 1, X, W, 1, RW, 1, IW, 1, INFO )
303 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
304 INFOT = 2
305 CALL ZHEEVD( 'N', '/', 0, A, 1, X, W, 1, RW, 1, IW, 1, INFO )
306 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
307 INFOT = 3
308 CALL ZHEEVD( 'N', 'U', -1, A, 1, X, W, 1, RW, 1, IW, 1, INFO )
309 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
310 INFOT = 5
311 CALL ZHEEVD( 'N', 'U', 2, A, 1, X, W, 3, RW, 2, IW, 1, INFO )
312 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
313 INFOT = 8
314 CALL ZHEEVD( 'N', 'U', 1, A, 1, X, W, 0, RW, 1, IW, 1, INFO )
315 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
316 INFOT = 8
317 CALL ZHEEVD( 'N', 'U', 2, A, 2, X, W, 2, RW, 2, IW, 1, INFO )
318 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
319 INFOT = 8
320 CALL ZHEEVD( 'V', 'U', 2, A, 2, X, W, 3, RW, 25, IW, 12, INFO )
321 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
322 INFOT = 10
323 CALL ZHEEVD( 'N', 'U', 1, A, 1, X, W, 1, RW, 0, IW, 1, INFO )
324 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
325 INFOT = 10
326 CALL ZHEEVD( 'N', 'U', 2, A, 2, X, W, 3, RW, 1, IW, 1, INFO )
327 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
328 INFOT = 10
329 CALL ZHEEVD( 'V', 'U', 2, A, 2, X, W, 8, RW, 18, IW, 12, INFO )
330 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
331 INFOT = 12
332 CALL ZHEEVD( 'N', 'U', 1, A, 1, X, W, 1, RW, 1, IW, 0, INFO )
333 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
334 INFOT = 12
335 CALL ZHEEVD( 'V', 'U', 2, A, 2, X, W, 8, RW, 25, IW, 11, INFO )
336 CALL CHKXER( 'ZHEEVD', INFOT, NOUT, LERR, OK )
337 NT = NT + 12
338 *
339 * ZHEEV
340 *
341 SRNAMT = 'ZHEEV '
342 INFOT = 1
343 CALL ZHEEV( '/', 'U', 0, A, 1, X, W, 1, RW, INFO )
344 CALL CHKXER( 'ZHEEV ', INFOT, NOUT, LERR, OK )
345 INFOT = 2
346 CALL ZHEEV( 'N', '/', 0, A, 1, X, W, 1, RW, INFO )
347 CALL CHKXER( 'ZHEEV ', INFOT, NOUT, LERR, OK )
348 INFOT = 3
349 CALL ZHEEV( 'N', 'U', -1, A, 1, X, W, 1, RW, INFO )
350 CALL CHKXER( 'ZHEEV ', INFOT, NOUT, LERR, OK )
351 INFOT = 5
352 CALL ZHEEV( 'N', 'U', 2, A, 1, X, W, 3, RW, INFO )
353 CALL CHKXER( 'ZHEEV ', INFOT, NOUT, LERR, OK )
354 INFOT = 8
355 CALL ZHEEV( 'N', 'U', 2, A, 2, X, W, 2, RW, INFO )
356 CALL CHKXER( 'ZHEEV ', INFOT, NOUT, LERR, OK )
357 NT = NT + 5
358 *
359 * ZHEEVX
360 *
361 SRNAMT = 'ZHEEVX'
362 INFOT = 1
363 CALL ZHEEVX( '/', 'A', 'U', 0, A, 1, 0.0D0, 0.0D0, 0, 0, 0.0D0,
364 $ M, X, Z, 1, W, 1, RW, IW, I3, INFO )
365 CALL CHKXER( 'ZHEEVX', INFOT, NOUT, LERR, OK )
366 INFOT = 2
367 CALL ZHEEVX( 'V', '/', 'U', 0, A, 1, 0.0D0, 1.0D0, 1, 0, 0.0D0,
368 $ M, X, Z, 1, W, 1, RW, IW, I3, INFO )
369 CALL CHKXER( 'ZHEEVX', INFOT, NOUT, LERR, OK )
370 INFOT = 3
371 CALL ZHEEVX( 'V', 'A', '/', 0, A, 1, 0.0D0, 0.0D0, 0, 0, 0.0D0,
372 $ M, X, Z, 1, W, 1, RW, IW, I3, INFO )
373 INFOT = 4
374 CALL ZHEEVX( 'V', 'A', 'U', -1, A, 1, 0.0D0, 0.0D0, 0, 0,
375 $ 0.0D0, M, X, Z, 1, W, 1, RW, IW, I3, INFO )
376 CALL CHKXER( 'ZHEEVX', INFOT, NOUT, LERR, OK )
377 INFOT = 6
378 CALL ZHEEVX( 'V', 'A', 'U', 2, A, 1, 0.0D0, 0.0D0, 0, 0, 0.0D0,
379 $ M, X, Z, 2, W, 3, RW, IW, I3, INFO )
380 CALL CHKXER( 'ZHEEVX', INFOT, NOUT, LERR, OK )
381 INFOT = 8
382 CALL ZHEEVX( 'V', 'V', 'U', 1, A, 1, 0.0D0, 0.0D0, 0, 0, 0.0D0,
383 $ M, X, Z, 1, W, 1, RW, IW, I3, INFO )
384 CALL CHKXER( 'ZHEEVX', INFOT, NOUT, LERR, OK )
385 INFOT = 9
386 CALL ZHEEVX( 'V', 'I', 'U', 1, A, 1, 0.0D0, 0.0D0, 0, 0, 0.0D0,
387 $ M, X, Z, 1, W, 1, RW, IW, I3, INFO )
388 CALL CHKXER( 'ZHEEVX', INFOT, NOUT, LERR, OK )
389 INFOT = 10
390 CALL ZHEEVX( 'V', 'I', 'U', 2, A, 2, 0.0D0, 0.0D0, 2, 1, 0.0D0,
391 $ M, X, Z, 2, W, 3, RW, IW, I3, INFO )
392 CALL CHKXER( 'ZHEEVX', INFOT, NOUT, LERR, OK )
393 INFOT = 15
394 CALL ZHEEVX( 'V', 'A', 'U', 2, A, 2, 0.0D0, 0.0D0, 0, 0, 0.0D0,
395 $ M, X, Z, 1, W, 3, RW, IW, I3, INFO )
396 CALL CHKXER( 'ZHEEVX', INFOT, NOUT, LERR, OK )
397 INFOT = 17
398 CALL ZHEEVX( 'V', 'A', 'U', 2, A, 2, 0.0D0, 0.0D0, 0, 0, 0.0D0,
399 $ M, X, Z, 2, W, 2, RW, IW, I1, INFO )
400 CALL CHKXER( 'ZHEEVX', INFOT, NOUT, LERR, OK )
401 NT = NT + 10
402 *
403 * ZHEEVR
404 *
405 SRNAMT = 'ZHEEVR'
406 N = 1
407 INFOT = 1
408 CALL ZHEEVR( '/', 'A', 'U', 0, A, 1, 0.0D0, 0.0D0, 1, 1, 0.0D0,
409 $ M, R, Z, 1, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ),
410 $ 10*N, INFO )
411 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
412 INFOT = 2
413 CALL ZHEEVR( 'V', '/', 'U', 0, A, 1, 0.0D0, 0.0D0, 1, 1, 0.0D0,
414 $ M, R, Z, 1, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ),
415 $ 10*N, INFO )
416 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
417 INFOT = 3
418 CALL ZHEEVR( 'V', 'A', '/', -1, A, 1, 0.0D0, 0.0D0, 1, 1,
419 $ 0.0D0, M, R, Z, 1, IW, Q, 2*N, RW, 24*N,
420 $ IW( 2*N+1 ), 10*N, INFO )
421 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
422 INFOT = 4
423 CALL ZHEEVR( 'V', 'A', 'U', -1, A, 1, 0.0D0, 0.0D0, 1, 1,
424 $ 0.0D0, M, R, Z, 1, IW, Q, 2*N, RW, 24*N,
425 $ IW( 2*N+1 ), 10*N, INFO )
426 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
427 INFOT = 6
428 CALL ZHEEVR( 'V', 'A', 'U', 2, A, 1, 0.0D0, 0.0D0, 1, 1, 0.0D0,
429 $ M, R, Z, 1, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ),
430 $ 10*N, INFO )
431 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
432 INFOT = 8
433 CALL ZHEEVR( 'V', 'V', 'U', 1, A, 1, 0.0D0, 0.0D0, 1, 1, 0.0D0,
434 $ M, R, Z, 1, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ),
435 $ 10*N, INFO )
436 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
437 INFOT = 9
438 CALL ZHEEVR( 'V', 'I', 'U', 1, A, 1, 0.0D0, 0.0D0, 0, 1, 0.0D0,
439 $ M, R, Z, 1, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ),
440 $ 10*N, INFO )
441 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
442 INFOT = 10
443 *
444 CALL ZHEEVR( 'V', 'I', 'U', 2, A, 2, 0.0D0, 0.0D0, 2, 1, 0.0D0,
445 $ M, R, Z, 1, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ),
446 $ 10*N, INFO )
447 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
448 INFOT = 15
449 CALL ZHEEVR( 'V', 'I', 'U', 1, A, 1, 0.0D0, 0.0D0, 1, 1, 0.0D0,
450 $ M, R, Z, 0, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ),
451 $ 10*N, INFO )
452 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
453 INFOT = 18
454 CALL ZHEEVR( 'V', 'I', 'U', 1, A, 1, 0.0D0, 0.0D0, 1, 1, 0.0D0,
455 $ M, R, Z, 1, IW, Q, 2*N-1, RW, 24*N, IW( 2*N+1 ),
456 $ 10*N, INFO )
457 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
458 INFOT = 20
459 CALL ZHEEVR( 'V', 'I', 'U', 1, A, 1, 0.0D0, 0.0D0, 1, 1, 0.0D0,
460 $ M, R, Z, 1, IW, Q, 2*N, RW, 24*N-1, IW( 2*N-1 ),
461 $ 10*N, INFO )
462 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
463 INFOT = 22
464 CALL ZHEEVR( 'V', 'I', 'U', 1, A, 1, 0.0D0, 0.0D0, 1, 1, 0.0D0,
465 $ M, R, Z, 1, IW, Q, 2*N, RW, 24*N, IW, 10*N-1,
466 $ INFO )
467 CALL CHKXER( 'ZHEEVR', INFOT, NOUT, LERR, OK )
468 NT = NT + 12
469 *
470 * ZHPEVD
471 *
472 SRNAMT = 'ZHPEVD'
473 INFOT = 1
474 CALL ZHPEVD( '/', 'U', 0, A, X, Z, 1, W, 1, RW, 1, IW, 1,
475 $ INFO )
476 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
477 INFOT = 2
478 CALL ZHPEVD( 'N', '/', 0, A, X, Z, 1, W, 1, RW, 1, IW, 1,
479 $ INFO )
480 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
481 INFOT = 3
482 CALL ZHPEVD( 'N', 'U', -1, A, X, Z, 1, W, 1, RW, 1, IW, 1,
483 $ INFO )
484 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
485 INFOT = 7
486 CALL ZHPEVD( 'V', 'U', 2, A, X, Z, 1, W, 4, RW, 25, IW, 12,
487 $ INFO )
488 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
489 INFOT = 9
490 CALL ZHPEVD( 'N', 'U', 1, A, X, Z, 1, W, 0, RW, 1, IW, 1,
491 $ INFO )
492 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
493 INFOT = 9
494 CALL ZHPEVD( 'N', 'U', 2, A, X, Z, 2, W, 1, RW, 2, IW, 1,
495 $ INFO )
496 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
497 INFOT = 9
498 CALL ZHPEVD( 'V', 'U', 2, A, X, Z, 2, W, 2, RW, 25, IW, 12,
499 $ INFO )
500 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
501 INFOT = 11
502 CALL ZHPEVD( 'N', 'U', 1, A, X, Z, 1, W, 1, RW, 0, IW, 1,
503 $ INFO )
504 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
505 INFOT = 11
506 CALL ZHPEVD( 'N', 'U', 2, A, X, Z, 2, W, 2, RW, 1, IW, 1,
507 $ INFO )
508 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
509 INFOT = 11
510 CALL ZHPEVD( 'V', 'U', 2, A, X, Z, 2, W, 4, RW, 18, IW, 12,
511 $ INFO )
512 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
513 INFOT = 13
514 CALL ZHPEVD( 'N', 'U', 1, A, X, Z, 1, W, 1, RW, 1, IW, 0,
515 $ INFO )
516 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
517 INFOT = 13
518 CALL ZHPEVD( 'N', 'U', 2, A, X, Z, 2, W, 2, RW, 2, IW, 0,
519 $ INFO )
520 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
521 INFOT = 13
522 CALL ZHPEVD( 'V', 'U', 2, A, X, Z, 2, W, 4, RW, 25, IW, 2,
523 $ INFO )
524 CALL CHKXER( 'ZHPEVD', INFOT, NOUT, LERR, OK )
525 NT = NT + 13
526 *
527 * ZHPEV
528 *
529 SRNAMT = 'ZHPEV '
530 INFOT = 1
531 CALL ZHPEV( '/', 'U', 0, A, X, Z, 1, W, RW, INFO )
532 CALL CHKXER( 'ZHPEV ', INFOT, NOUT, LERR, OK )
533 INFOT = 2
534 CALL ZHPEV( 'N', '/', 0, A, X, Z, 1, W, RW, INFO )
535 CALL CHKXER( 'ZHPEV ', INFOT, NOUT, LERR, OK )
536 INFOT = 3
537 CALL ZHPEV( 'N', 'U', -1, A, X, Z, 1, W, RW, INFO )
538 CALL CHKXER( 'ZHPEV ', INFOT, NOUT, LERR, OK )
539 INFOT = 7
540 CALL ZHPEV( 'V', 'U', 2, A, X, Z, 1, W, RW, INFO )
541 CALL CHKXER( 'ZHPEV ', INFOT, NOUT, LERR, OK )
542 NT = NT + 4
543 *
544 * ZHPEVX
545 *
546 SRNAMT = 'ZHPEVX'
547 INFOT = 1
548 CALL ZHPEVX( '/', 'A', 'U', 0, A, 0.0D0, 0.0D0, 0, 0, 0.0D0, M,
549 $ X, Z, 1, W, RW, IW, I3, INFO )
550 CALL CHKXER( 'ZHPEVX', INFOT, NOUT, LERR, OK )
551 INFOT = 2
552 CALL ZHPEVX( 'V', '/', 'U', 0, A, 0.0D0, 1.0D0, 1, 0, 0.0D0, M,
553 $ X, Z, 1, W, RW, IW, I3, INFO )
554 CALL CHKXER( 'ZHPEVX', INFOT, NOUT, LERR, OK )
555 INFOT = 3
556 CALL ZHPEVX( 'V', 'A', '/', 0, A, 0.0D0, 0.0D0, 0, 0, 0.0D0, M,
557 $ X, Z, 1, W, RW, IW, I3, INFO )
558 CALL CHKXER( 'ZHPEVX', INFOT, NOUT, LERR, OK )
559 INFOT = 4
560 CALL ZHPEVX( 'V', 'A', 'U', -1, A, 0.0D0, 0.0D0, 0, 0, 0.0D0,
561 $ M, X, Z, 1, W, RW, IW, I3, INFO )
562 CALL CHKXER( 'ZHPEVX', INFOT, NOUT, LERR, OK )
563 INFOT = 7
564 CALL ZHPEVX( 'V', 'V', 'U', 1, A, 0.0D0, 0.0D0, 0, 0, 0.0D0, M,
565 $ X, Z, 1, W, RW, IW, I3, INFO )
566 CALL CHKXER( 'ZHPEVX', INFOT, NOUT, LERR, OK )
567 INFOT = 8
568 CALL ZHPEVX( 'V', 'I', 'U', 1, A, 0.0D0, 0.0D0, 0, 0, 0.0D0, M,
569 $ X, Z, 1, W, RW, IW, I3, INFO )
570 CALL CHKXER( 'ZHPEVX', INFOT, NOUT, LERR, OK )
571 INFOT = 9
572 CALL ZHPEVX( 'V', 'I', 'U', 2, A, 0.0D0, 0.0D0, 2, 1, 0.0D0, M,
573 $ X, Z, 2, W, RW, IW, I3, INFO )
574 CALL CHKXER( 'ZHPEVX', INFOT, NOUT, LERR, OK )
575 INFOT = 14
576 CALL ZHPEVX( 'V', 'A', 'U', 2, A, 0.0D0, 0.0D0, 0, 0, 0.0D0, M,
577 $ X, Z, 1, W, RW, IW, I3, INFO )
578 CALL CHKXER( 'ZHPEVX', INFOT, NOUT, LERR, OK )
579 NT = NT + 8
580 *
581 * Test error exits for the HB path.
582 *
583 ELSE IF( LSAMEN( 2, C2, 'HB' ) ) THEN
584 *
585 * ZHBTRD
586 *
587 SRNAMT = 'ZHBTRD'
588 INFOT = 1
589 CALL ZHBTRD( '/', 'U', 0, 0, A, 1, D, E, Z, 1, W, INFO )
590 CALL CHKXER( 'ZHBTRD', INFOT, NOUT, LERR, OK )
591 INFOT = 2
592 CALL ZHBTRD( 'N', '/', 0, 0, A, 1, D, E, Z, 1, W, INFO )
593 CALL CHKXER( 'ZHBTRD', INFOT, NOUT, LERR, OK )
594 INFOT = 3
595 CALL ZHBTRD( 'N', 'U', -1, 0, A, 1, D, E, Z, 1, W, INFO )
596 CALL CHKXER( 'ZHBTRD', INFOT, NOUT, LERR, OK )
597 INFOT = 4
598 CALL ZHBTRD( 'N', 'U', 0, -1, A, 1, D, E, Z, 1, W, INFO )
599 CALL CHKXER( 'ZHBTRD', INFOT, NOUT, LERR, OK )
600 INFOT = 6
601 CALL ZHBTRD( 'N', 'U', 1, 1, A, 1, D, E, Z, 1, W, INFO )
602 CALL CHKXER( 'ZHBTRD', INFOT, NOUT, LERR, OK )
603 INFOT = 10
604 CALL ZHBTRD( 'V', 'U', 2, 0, A, 1, D, E, Z, 1, W, INFO )
605 CALL CHKXER( 'ZHBTRD', INFOT, NOUT, LERR, OK )
606 NT = NT + 6
607 *
608 * ZHBEVD
609 *
610 SRNAMT = 'ZHBEVD'
611 INFOT = 1
612 CALL ZHBEVD( '/', 'U', 0, 0, A, 1, X, Z, 1, W, 1, RW, 1, IW, 1,
613 $ INFO )
614 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
615 INFOT = 2
616 CALL ZHBEVD( 'N', '/', 0, 0, A, 1, X, Z, 1, W, 1, RW, 1, IW, 1,
617 $ INFO )
618 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
619 INFOT = 3
620 CALL ZHBEVD( 'N', 'U', -1, 0, A, 1, X, Z, 1, W, 1, RW, 1, IW,
621 $ 1, INFO )
622 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
623 INFOT = 4
624 CALL ZHBEVD( 'N', 'U', 0, -1, A, 1, X, Z, 1, W, 1, RW, 1, IW,
625 $ 1, INFO )
626 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
627 INFOT = 6
628 CALL ZHBEVD( 'N', 'U', 2, 1, A, 1, X, Z, 1, W, 2, RW, 2, IW, 1,
629 $ INFO )
630 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
631 INFOT = 9
632 CALL ZHBEVD( 'V', 'U', 2, 1, A, 2, X, Z, 1, W, 8, RW, 25, IW,
633 $ 12, INFO )
634 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
635 INFOT = 11
636 CALL ZHBEVD( 'N', 'U', 1, 0, A, 1, X, Z, 1, W, 0, RW, 1, IW, 1,
637 $ INFO )
638 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
639 INFOT = 11
640 CALL ZHBEVD( 'N', 'U', 2, 1, A, 2, X, Z, 2, W, 1, RW, 2, IW, 1,
641 $ INFO )
642 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
643 INFOT = 11
644 CALL ZHBEVD( 'V', 'U', 2, 1, A, 2, X, Z, 2, W, 2, RW, 25, IW,
645 $ 12, INFO )
646 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
647 INFOT = 13
648 CALL ZHBEVD( 'N', 'U', 1, 0, A, 1, X, Z, 1, W, 1, RW, 0, IW, 1,
649 $ INFO )
650 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
651 INFOT = 13
652 CALL ZHBEVD( 'N', 'U', 2, 1, A, 2, X, Z, 2, W, 2, RW, 1, IW, 1,
653 $ INFO )
654 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
655 INFOT = 13
656 CALL ZHBEVD( 'V', 'U', 2, 1, A, 2, X, Z, 2, W, 8, RW, 2, IW,
657 $ 12, INFO )
658 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
659 INFOT = 15
660 CALL ZHBEVD( 'N', 'U', 1, 0, A, 1, X, Z, 1, W, 1, RW, 1, IW, 0,
661 $ INFO )
662 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
663 INFOT = 15
664 CALL ZHBEVD( 'N', 'U', 2, 1, A, 2, X, Z, 2, W, 2, RW, 2, IW, 0,
665 $ INFO )
666 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
667 INFOT = 15
668 CALL ZHBEVD( 'V', 'U', 2, 1, A, 2, X, Z, 2, W, 8, RW, 25, IW,
669 $ 2, INFO )
670 CALL CHKXER( 'ZHBEVD', INFOT, NOUT, LERR, OK )
671 NT = NT + 15
672 *
673 * ZHBEV
674 *
675 SRNAMT = 'ZHBEV '
676 INFOT = 1
677 CALL ZHBEV( '/', 'U', 0, 0, A, 1, X, Z, 1, W, RW, INFO )
678 CALL CHKXER( 'ZHBEV ', INFOT, NOUT, LERR, OK )
679 INFOT = 2
680 CALL ZHBEV( 'N', '/', 0, 0, A, 1, X, Z, 1, W, RW, INFO )
681 CALL CHKXER( 'ZHBEV ', INFOT, NOUT, LERR, OK )
682 INFOT = 3
683 CALL ZHBEV( 'N', 'U', -1, 0, A, 1, X, Z, 1, W, RW, INFO )
684 CALL CHKXER( 'ZHBEV ', INFOT, NOUT, LERR, OK )
685 INFOT = 4
686 CALL ZHBEV( 'N', 'U', 0, -1, A, 1, X, Z, 1, W, RW, INFO )
687 CALL CHKXER( 'ZHBEV ', INFOT, NOUT, LERR, OK )
688 INFOT = 6
689 CALL ZHBEV( 'N', 'U', 2, 1, A, 1, X, Z, 1, W, RW, INFO )
690 CALL CHKXER( 'ZHBEV ', INFOT, NOUT, LERR, OK )
691 INFOT = 9
692 CALL ZHBEV( 'V', 'U', 2, 0, A, 1, X, Z, 1, W, RW, INFO )
693 CALL CHKXER( 'ZHBEV ', INFOT, NOUT, LERR, OK )
694 NT = NT + 6
695 *
696 * ZHBEVX
697 *
698 SRNAMT = 'ZHBEVX'
699 INFOT = 1
700 CALL ZHBEVX( '/', 'A', 'U', 0, 0, A, 1, Q, 1, 0.0D0, 0.0D0, 0,
701 $ 0, 0.0D0, M, X, Z, 1, W, RW, IW, I3, INFO )
702 CALL CHKXER( 'ZHBEVX', INFOT, NOUT, LERR, OK )
703 INFOT = 2
704 CALL ZHBEVX( 'V', '/', 'U', 0, 0, A, 1, Q, 1, 0.0D0, 1.0D0, 1,
705 $ 0, 0.0D0, M, X, Z, 1, W, RW, IW, I3, INFO )
706 CALL CHKXER( 'ZHBEVX', INFOT, NOUT, LERR, OK )
707 INFOT = 3
708 CALL ZHBEVX( 'V', 'A', '/', 0, 0, A, 1, Q, 1, 0.0D0, 0.0D0, 0,
709 $ 0, 0.0D0, M, X, Z, 1, W, RW, IW, I3, INFO )
710 INFOT = 4
711 CALL ZHBEVX( 'V', 'A', 'U', -1, 0, A, 1, Q, 1, 0.0D0, 0.0D0, 0,
712 $ 0, 0.0D0, M, X, Z, 1, W, RW, IW, I3, INFO )
713 CALL CHKXER( 'ZHBEVX', INFOT, NOUT, LERR, OK )
714 INFOT = 5
715 CALL ZHBEVX( 'V', 'A', 'U', 0, -1, A, 1, Q, 1, 0.0D0, 0.0D0, 0,
716 $ 0, 0.0D0, M, X, Z, 1, W, RW, IW, I3, INFO )
717 CALL CHKXER( 'ZHBEVX', INFOT, NOUT, LERR, OK )
718 INFOT = 7
719 CALL ZHBEVX( 'V', 'A', 'U', 2, 1, A, 1, Q, 2, 0.0D0, 0.0D0, 0,
720 $ 0, 0.0D0, M, X, Z, 2, W, RW, IW, I3, INFO )
721 CALL CHKXER( 'ZHBEVX', INFOT, NOUT, LERR, OK )
722 INFOT = 9
723 CALL ZHBEVX( 'V', 'A', 'U', 2, 0, A, 1, Q, 1, 0.0D0, 0.0D0, 0,
724 $ 0, 0.0D0, M, X, Z, 2, W, RW, IW, I3, INFO )
725 CALL CHKXER( 'ZHBEVX', INFOT, NOUT, LERR, OK )
726 INFOT = 11
727 CALL ZHBEVX( 'V', 'V', 'U', 1, 0, A, 1, Q, 1, 0.0D0, 0.0D0, 0,
728 $ 0, 0.0D0, M, X, Z, 1, W, RW, IW, I3, INFO )
729 CALL CHKXER( 'ZHBEVX', INFOT, NOUT, LERR, OK )
730 INFOT = 12
731 CALL ZHBEVX( 'V', 'I', 'U', 1, 0, A, 1, Q, 1, 0.0D0, 0.0D0, 0,
732 $ 0, 0.0D0, M, X, Z, 1, W, RW, IW, I3, INFO )
733 CALL CHKXER( 'ZHBEVX', INFOT, NOUT, LERR, OK )
734 INFOT = 13
735 CALL ZHBEVX( 'V', 'I', 'U', 1, 0, A, 1, Q, 1, 0.0D0, 0.0D0, 1,
736 $ 2, 0.0D0, M, X, Z, 1, W, RW, IW, I3, INFO )
737 CALL CHKXER( 'ZHBEVX', INFOT, NOUT, LERR, OK )
738 INFOT = 18
739 CALL ZHBEVX( 'V', 'A', 'U', 2, 0, A, 1, Q, 2, 0.0D0, 0.0D0, 0,
740 $ 0, 0.0D0, M, X, Z, 1, W, RW, IW, I3, INFO )
741 CALL CHKXER( 'ZHBEVX', INFOT, NOUT, LERR, OK )
742 NT = NT + 11
743 END IF
744 *
745 * Print a summary line.
746 *
747 IF( OK ) THEN
748 WRITE( NOUT, FMT = 9999 )PATH, NT
749 ELSE
750 WRITE( NOUT, FMT = 9998 )PATH
751 END IF
752 *
753 9999 FORMAT( 1X, A3, ' routines passed the tests of the error exits',
754 $ ' (', I3, ' tests done)' )
755 9998 FORMAT( ' *** ', A3, ' routines failed the tests of the error ',
756 $ 'exits ***' )
757 *
758 RETURN
759 *
760 * End of ZERRST
761 *
762 END