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( 23 )
 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'00, A, 1, TAU, C, 1, W, 1, INFO )
135          CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
136          INFOT = 2
137          CALL ZUNMTR( 'L''/''N'00, A, 1, TAU, C, 1, W, 1, INFO )
138          CALL CHKXER( 'ZUNMTR', INFOT, NOUT, LERR, OK )
139          INFOT = 3
140          CALL ZUNMTR( 'L''U''/'00, 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'-10, 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'20, 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'02, 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'20, 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'02, 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'20, 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'00, A, TAU, C, 1, W, INFO )
197          CALL CHKXER( 'ZUPMTR', INFOT, NOUT, LERR, OK )
198          INFOT = 2
199          CALL ZUPMTR( 'L''/''N'00, A, TAU, C, 1, W, INFO )
200          CALL CHKXER( 'ZUPMTR', INFOT, NOUT, LERR, OK )
201          INFOT = 3
202          CALL ZUPMTR( 'L''U''/'00, A, TAU, C, 1, W, INFO )
203          CALL CHKXER( 'ZUPMTR', INFOT, NOUT, LERR, OK )
204          INFOT = 4
205          CALL ZUPMTR( 'L''U''N'-10, 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'20, 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, 10.0D00.0D0000.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, 10.0D01.0D0100.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, 10.0D00.0D0000.0D0,
372      $                M, X, Z, 1, W, 1, RW, IW, I3, INFO )
373          INFOT = 4
374          CALL ZHEEVX( 'V''A''U'-1, A, 10.0D00.0D000,
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, 10.0D00.0D0000.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, 10.0D00.0D0000.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, 10.0D00.0D0000.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, 20.0D00.0D0210.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, 20.0D00.0D0000.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, 20.0D00.0D0000.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, 10.0D00.0D0110.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, 10.0D00.0D0110.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, 10.0D00.0D011,
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, 10.0D00.0D011,
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, 10.0D00.0D0110.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, 10.0D00.0D0110.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, 10.0D00.0D0010.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, 20.0D00.0D0210.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, 10.0D00.0D0110.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, 10.0D00.0D0110.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, 10.0D00.0D0110.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, 10.0D00.0D0110.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.0D00.0D0000.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.0D01.0D0100.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.0D00.0D0000.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.0D00.0D0000.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.0D00.0D0000.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.0D00.0D0000.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.0D00.0D0210.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.0D00.0D0000.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'00, A, 1, D, E, Z, 1, W, INFO )
590          CALL CHKXER( 'ZHBTRD', INFOT, NOUT, LERR, OK )
591          INFOT = 2
592          CALL ZHBTRD( 'N''/'00, A, 1, D, E, Z, 1, W, INFO )
593          CALL CHKXER( 'ZHBTRD', INFOT, NOUT, LERR, OK )
594          INFOT = 3
595          CALL ZHBTRD( 'N''U'-10, 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'11, A, 1, D, E, Z, 1, W, INFO )
602          CALL CHKXER( 'ZHBTRD', INFOT, NOUT, LERR, OK )
603          INFOT = 10
604          CALL ZHBTRD( 'V''U'20, 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'00, 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''/'00, 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'-10, 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'21, 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'21, 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'10, 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'21, 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'21, 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'10, 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'21, 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'21, 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'10, 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'21, 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'21, 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'00, A, 1, X, Z, 1, W, RW, INFO )
678          CALL CHKXER( 'ZHBEV ', INFOT, NOUT, LERR, OK )
679          INFOT = 2
680          CALL ZHBEV( 'N''/'00, A, 1, X, Z, 1, W, RW, INFO )
681          CALL CHKXER( 'ZHBEV ', INFOT, NOUT, LERR, OK )
682          INFOT = 3
683          CALL ZHBEV( 'N''U'-10, 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'21, A, 1, X, Z, 1, W, RW, INFO )
690          CALL CHKXER( 'ZHBEV ', INFOT, NOUT, LERR, OK )
691          INFOT = 9
692          CALL ZHBEV( 'V''U'20, 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'00, A, 1, Q, 10.0D00.0D00,
701      $                00.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'00, A, 1, Q, 10.0D01.0D01,
705      $                00.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''/'00, A, 1, Q, 10.0D00.0D00,
709      $                00.0D0, M, X, Z, 1, W, RW, IW, I3, INFO )
710          INFOT = 4
711          CALL ZHBEVX( 'V''A''U'-10, A, 1, Q, 10.0D00.0D00,
712      $                00.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, 10.0D00.0D00,
716      $                00.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'21, A, 1, Q, 20.0D00.0D00,
720      $                00.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'20, A, 1, Q, 10.0D00.0D00,
724      $                00.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'10, A, 1, Q, 10.0D00.0D00,
728      $                00.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'10, A, 1, Q, 10.0D00.0D00,
732      $                00.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'10, A, 1, Q, 10.0D00.0D01,
736      $                20.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'20, A, 1, Q, 20.0D00.0D00,
740      $                00.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 FORMAT1X, 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