1       SUBROUTINE CERRST( 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 *  CERRST tests the error exits for CHETRD, CUNGTR, CUNMTR, CHPTRD,
 16 *  CUNGTR, CUPMTR, CSTEQR, CSTEIN, CPTEQR, CHBTRD,
 17 *  CHEEV, CHEEVX, CHEEVD, CHBEV, CHBEVX, CHBEVD,
 18 *  CHPEV, CHPEVX, CHPEVD, and CSTEDC.
 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       REAL               D( NMAX ), E( NMAX ), R( LW ), RW( LW ),
 42      $                   X( NMAX )
 43       COMPLEX            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           CHBEV, CHBEVD, CHBEVX, CHBTRD, CHEEV, CHEEVD,
 53      $                   CHEEVR, CHEEVX, CHETRD, CHKXER, CHPEV, CHPEVD,
 54      $                   CHPEVX, CHPTRD, CPTEQR, CSTEDC, CSTEIN, CSTEQR,
 55      $                   CUNGTR, CUNMTR, CUPGTR, CUPMTR
 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          REAL
 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/ REAL( I+J )
 80    10    CONTINUE
 81    20 CONTINUE
 82       DO 30 J = 1, NMAX
 83          D( J ) = REAL( J )
 84          E( J ) = 0.0
 85          I1( J ) = J
 86          I2( J ) = J
 87          TAU( J ) = 1.
 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 *        CHETRD
 97 *
 98          SRNAMT = 'CHETRD'
 99          INFOT = 1
100          CALL CHETRD( '/'0, A, 1, D, E, TAU, W, 1, INFO )
101          CALL CHKXER( 'CHETRD', INFOT, NOUT, LERR, OK )
102          INFOT = 2
103          CALL CHETRD( 'U'-1, A, 1, D, E, TAU, W, 1, INFO )
104          CALL CHKXER( 'CHETRD', INFOT, NOUT, LERR, OK )
105          INFOT = 4
106          CALL CHETRD( 'U'2, A, 1, D, E, TAU, W, 1, INFO )
107          CALL CHKXER( 'CHETRD', INFOT, NOUT, LERR, OK )
108          INFOT = 9
109          CALL CHETRD( 'U'0, A, 1, D, E, TAU, W, 0, INFO )
110          CALL CHKXER( 'CHETRD', INFOT, NOUT, LERR, OK )
111          NT = NT + 4
112 *
113 *        CUNGTR
114 *
115          SRNAMT = 'CUNGTR'
116          INFOT = 1
117          CALL CUNGTR( '/'0, A, 1, TAU, W, 1, INFO )
118          CALL CHKXER( 'CUNGTR', INFOT, NOUT, LERR, OK )
119          INFOT = 2
120          CALL CUNGTR( 'U'-1, A, 1, TAU, W, 1, INFO )
121          CALL CHKXER( 'CUNGTR', INFOT, NOUT, LERR, OK )
122          INFOT = 4
123          CALL CUNGTR( 'U'2, A, 1, TAU, W, 1, INFO )
124          CALL CHKXER( 'CUNGTR', INFOT, NOUT, LERR, OK )
125          INFOT = 7
126          CALL CUNGTR( 'U'3, A, 3, TAU, W, 1, INFO )
127          CALL CHKXER( 'CUNGTR', INFOT, NOUT, LERR, OK )
128          NT = NT + 4
129 *
130 *        CUNMTR
131 *
132          SRNAMT = 'CUNMTR'
133          INFOT = 1
134          CALL CUNMTR( '/''U''N'00, A, 1, TAU, C, 1, W, 1, INFO )
135          CALL CHKXER( 'CUNMTR', INFOT, NOUT, LERR, OK )
136          INFOT = 2
137          CALL CUNMTR( 'L''/''N'00, A, 1, TAU, C, 1, W, 1, INFO )
138          CALL CHKXER( 'CUNMTR', INFOT, NOUT, LERR, OK )
139          INFOT = 3
140          CALL CUNMTR( 'L''U''/'00, A, 1, TAU, C, 1, W, 1, INFO )
141          CALL CHKXER( 'CUNMTR', INFOT, NOUT, LERR, OK )
142          INFOT = 4
143          CALL CUNMTR( 'L''U''N'-10, A, 1, TAU, C, 1, W, 1,
144      $                INFO )
145          CALL CHKXER( 'CUNMTR', INFOT, NOUT, LERR, OK )
146          INFOT = 5
147          CALL CUNMTR( 'L''U''N'0-1, A, 1, TAU, C, 1, W, 1,
148      $                INFO )
149          CALL CHKXER( 'CUNMTR', INFOT, NOUT, LERR, OK )
150          INFOT = 7
151          CALL CUNMTR( 'L''U''N'20, A, 1, TAU, C, 2, W, 1, INFO )
152          CALL CHKXER( 'CUNMTR', INFOT, NOUT, LERR, OK )
153          INFOT = 7
154          CALL CUNMTR( 'R''U''N'02, A, 1, TAU, C, 1, W, 1, INFO )
155          CALL CHKXER( 'CUNMTR', INFOT, NOUT, LERR, OK )
156          INFOT = 10
157          CALL CUNMTR( 'L''U''N'20, A, 2, TAU, C, 1, W, 1, INFO )
158          CALL CHKXER( 'CUNMTR', INFOT, NOUT, LERR, OK )
159          INFOT = 12
160          CALL CUNMTR( 'L''U''N'02, A, 1, TAU, C, 1, W, 1, INFO )
161          CALL CHKXER( 'CUNMTR', INFOT, NOUT, LERR, OK )
162          INFOT = 12
163          CALL CUNMTR( 'R''U''N'20, A, 1, TAU, C, 2, W, 1, INFO )
164          CALL CHKXER( 'CUNMTR', INFOT, NOUT, LERR, OK )
165          NT = NT + 10
166 *
167 *        CHPTRD
168 *
169          SRNAMT = 'CHPTRD'
170          INFOT = 1
171          CALL CHPTRD( '/'0, A, D, E, TAU, INFO )
172          CALL CHKXER( 'CHPTRD', INFOT, NOUT, LERR, OK )
173          INFOT = 2
174          CALL CHPTRD( 'U'-1, A, D, E, TAU, INFO )
175          CALL CHKXER( 'CHPTRD', INFOT, NOUT, LERR, OK )
176          NT = NT + 2
177 *
178 *        CUPGTR
179 *
180          SRNAMT = 'CUPGTR'
181          INFOT = 1
182          CALL CUPGTR( '/'0, A, TAU, Z, 1, W, INFO )
183          CALL CHKXER( 'CUPGTR', INFOT, NOUT, LERR, OK )
184          INFOT = 2
185          CALL CUPGTR( 'U'-1, A, TAU, Z, 1, W, INFO )
186          CALL CHKXER( 'CUPGTR', INFOT, NOUT, LERR, OK )
187          INFOT = 6
188          CALL CUPGTR( 'U'2, A, TAU, Z, 1, W, INFO )
189          CALL CHKXER( 'CUPGTR', INFOT, NOUT, LERR, OK )
190          NT = NT + 3
191 *
192 *        CUPMTR
193 *
194          SRNAMT = 'CUPMTR'
195          INFOT = 1
196          CALL CUPMTR( '/''U''N'00, A, TAU, C, 1, W, INFO )
197          CALL CHKXER( 'CUPMTR', INFOT, NOUT, LERR, OK )
198          INFOT = 2
199          CALL CUPMTR( 'L''/''N'00, A, TAU, C, 1, W, INFO )
200          CALL CHKXER( 'CUPMTR', INFOT, NOUT, LERR, OK )
201          INFOT = 3
202          CALL CUPMTR( 'L''U''/'00, A, TAU, C, 1, W, INFO )
203          CALL CHKXER( 'CUPMTR', INFOT, NOUT, LERR, OK )
204          INFOT = 4
205          CALL CUPMTR( 'L''U''N'-10, A, TAU, C, 1, W, INFO )
206          CALL CHKXER( 'CUPMTR', INFOT, NOUT, LERR, OK )
207          INFOT = 5
208          CALL CUPMTR( 'L''U''N'0-1, A, TAU, C, 1, W, INFO )
209          CALL CHKXER( 'CUPMTR', INFOT, NOUT, LERR, OK )
210          INFOT = 9
211          CALL CUPMTR( 'L''U''N'20, A, TAU, C, 1, W, INFO )
212          CALL CHKXER( 'CUPMTR', INFOT, NOUT, LERR, OK )
213          NT = NT + 6
214 *
215 *        CPTEQR
216 *
217          SRNAMT = 'CPTEQR'
218          INFOT = 1
219          CALL CPTEQR( '/'0, D, E, Z, 1, RW, INFO )
220          CALL CHKXER( 'CPTEQR', INFOT, NOUT, LERR, OK )
221          INFOT = 2
222          CALL CPTEQR( 'N'-1, D, E, Z, 1, RW, INFO )
223          CALL CHKXER( 'CPTEQR', INFOT, NOUT, LERR, OK )
224          INFOT = 6
225          CALL CPTEQR( 'V'2, D, E, Z, 1, RW, INFO )
226          CALL CHKXER( 'CPTEQR', INFOT, NOUT, LERR, OK )
227          NT = NT + 3
228 *
229 *        CSTEIN
230 *
231          SRNAMT = 'CSTEIN'
232          INFOT = 1
233          CALL CSTEIN( -1, D, E, 0, X, I1, I2, Z, 1, RW, IW, I3, INFO )
234          CALL CHKXER( 'CSTEIN', INFOT, NOUT, LERR, OK )
235          INFOT = 4
236          CALL CSTEIN( 0, D, E, -1, X, I1, I2, Z, 1, RW, IW, I3, INFO )
237          CALL CHKXER( 'CSTEIN', INFOT, NOUT, LERR, OK )
238          INFOT = 4
239          CALL CSTEIN( 0, D, E, 1, X, I1, I2, Z, 1, RW, IW, I3, INFO )
240          CALL CHKXER( 'CSTEIN', INFOT, NOUT, LERR, OK )
241          INFOT = 9
242          CALL CSTEIN( 2, D, E, 0, X, I1, I2, Z, 1, RW, IW, I3, INFO )
243          CALL CHKXER( 'CSTEIN', INFOT, NOUT, LERR, OK )
244          NT = NT + 4
245 *
246 *        CSTEQR
247 *
248          SRNAMT = 'CSTEQR'
249          INFOT = 1
250          CALL CSTEQR( '/'0, D, E, Z, 1, RW, INFO )
251          CALL CHKXER( 'CSTEQR', INFOT, NOUT, LERR, OK )
252          INFOT = 2
253          CALL CSTEQR( 'N'-1, D, E, Z, 1, RW, INFO )
254          CALL CHKXER( 'CSTEQR', INFOT, NOUT, LERR, OK )
255          INFOT = 6
256          CALL CSTEQR( 'V'2, D, E, Z, 1, RW, INFO )
257          CALL CHKXER( 'CSTEQR', INFOT, NOUT, LERR, OK )
258          NT = NT + 3
259 *
260 *        CSTEDC
261 *
262          SRNAMT = 'CSTEDC'
263          INFOT = 1
264          CALL CSTEDC( '/'0, D, E, Z, 1, W, 1, RW, 1, IW, 1, INFO )
265          CALL CHKXER( 'CSTEDC', INFOT, NOUT, LERR, OK )
266          INFOT = 2
267          CALL CSTEDC( 'N'-1, D, E, Z, 1, W, 1, RW, 1, IW, 1, INFO )
268          CALL CHKXER( 'CSTEDC', INFOT, NOUT, LERR, OK )
269          INFOT = 6
270          CALL CSTEDC( 'V'2, D, E, Z, 1, W, 4, RW, 23, IW, 28, INFO )
271          CALL CHKXER( 'CSTEDC', INFOT, NOUT, LERR, OK )
272          INFOT = 8
273          CALL CSTEDC( 'N'2, D, E, Z, 1, W, 0, RW, 1, IW, 1, INFO )
274          CALL CHKXER( 'CSTEDC', INFOT, NOUT, LERR, OK )
275          INFOT = 8
276          CALL CSTEDC( 'V'2, D, E, Z, 2, W, 0, RW, 23, IW, 28, INFO )
277          CALL CHKXER( 'CSTEDC', INFOT, NOUT, LERR, OK )
278          INFOT = 10
279          CALL CSTEDC( 'N'2, D, E, Z, 1, W, 1, RW, 0, IW, 1, INFO )
280          CALL CHKXER( 'CSTEDC', INFOT, NOUT, LERR, OK )
281          INFOT = 10
282          CALL CSTEDC( 'I'2, D, E, Z, 2, W, 1, RW, 1, IW, 12, INFO )
283          CALL CHKXER( 'CSTEDC', INFOT, NOUT, LERR, OK )
284          INFOT = 10
285          CALL CSTEDC( 'V'2, D, E, Z, 2, W, 4, RW, 1, IW, 28, INFO )
286          CALL CHKXER( 'CSTEDC', INFOT, NOUT, LERR, OK )
287          INFOT = 12
288          CALL CSTEDC( 'N'2, D, E, Z, 1, W, 1, RW, 1, IW, 0, INFO )
289          CALL CHKXER( 'CSTEDC', INFOT, NOUT, LERR, OK )
290          INFOT = 12
291          CALL CSTEDC( 'I'2, D, E, Z, 2, W, 1, RW, 23, IW, 0, INFO )
292          CALL CHKXER( 'CSTEDC', INFOT, NOUT, LERR, OK )
293          INFOT = 12
294          CALL CSTEDC( 'V'2, D, E, Z, 2, W, 4, RW, 23, IW, 0, INFO )
295          CALL CHKXER( 'CSTEDC', INFOT, NOUT, LERR, OK )
296          NT = NT + 11
297 *
298 *        CHEEVD
299 *
300          SRNAMT = 'CHEEVD'
301          INFOT = 1
302          CALL CHEEVD( '/''U'0, A, 1, X, W, 1, RW, 1, IW, 1, INFO )
303          CALL CHKXER( 'CHEEVD', INFOT, NOUT, LERR, OK )
304          INFOT = 2
305          CALL CHEEVD( 'N''/'0, A, 1, X, W, 1, RW, 1, IW, 1, INFO )
306          CALL CHKXER( 'CHEEVD', INFOT, NOUT, LERR, OK )
307          INFOT = 3
308          CALL CHEEVD( 'N''U'-1, A, 1, X, W, 1, RW, 1, IW, 1, INFO )
309          CALL CHKXER( 'CHEEVD', INFOT, NOUT, LERR, OK )
310          INFOT = 5
311          CALL CHEEVD( 'N''U'2, A, 1, X, W, 3, RW, 2, IW, 1, INFO )
312          CALL CHKXER( 'CHEEVD', INFOT, NOUT, LERR, OK )
313          INFOT = 8
314          CALL CHEEVD( 'N''U'1, A, 1, X, W, 0, RW, 1, IW, 1, INFO )
315          CALL CHKXER( 'CHEEVD', INFOT, NOUT, LERR, OK )
316          INFOT = 8
317          CALL CHEEVD( 'N''U'2, A, 2, X, W, 2, RW, 2, IW, 1, INFO )
318          CALL CHKXER( 'CHEEVD', INFOT, NOUT, LERR, OK )
319          INFOT = 8
320          CALL CHEEVD( 'V''U'2, A, 2, X, W, 3, RW, 25, IW, 12, INFO )
321          CALL CHKXER( 'CHEEVD', INFOT, NOUT, LERR, OK )
322          INFOT = 10
323          CALL CHEEVD( 'N''U'1, A, 1, X, W, 1, RW, 0, IW, 1, INFO )
324          CALL CHKXER( 'CHEEVD', INFOT, NOUT, LERR, OK )
325          INFOT = 10
326          CALL CHEEVD( 'N''U'2, A, 2, X, W, 3, RW, 1, IW, 1, INFO )
327          CALL CHKXER( 'CHEEVD', INFOT, NOUT, LERR, OK )
328          INFOT = 10
329          CALL CHEEVD( 'V''U'2, A, 2, X, W, 8, RW, 18, IW, 12, INFO )
330          CALL CHKXER( 'CHEEVD', INFOT, NOUT, LERR, OK )
331          INFOT = 12
332          CALL CHEEVD( 'N''U'1, A, 1, X, W, 1, RW, 1, IW, 0, INFO )
333          CALL CHKXER( 'CHEEVD', INFOT, NOUT, LERR, OK )
334          INFOT = 12
335          CALL CHEEVD( 'V''U'2, A, 2, X, W, 8, RW, 25, IW, 11, INFO )
336          CALL CHKXER( 'CHEEVD', INFOT, NOUT, LERR, OK )
337          NT = NT + 12
338 *
339 *        CHEEV
340 *
341          SRNAMT = 'CHEEV '
342          INFOT = 1
343          CALL CHEEV( '/''U'0, A, 1, X, W, 1, RW, INFO )
344          CALL CHKXER( 'CHEEV ', INFOT, NOUT, LERR, OK )
345          INFOT = 2
346          CALL CHEEV( 'N''/'0, A, 1, X, W, 1, RW, INFO )
347          CALL CHKXER( 'CHEEV ', INFOT, NOUT, LERR, OK )
348          INFOT = 3
349          CALL CHEEV( 'N''U'-1, A, 1, X, W, 1, RW, INFO )
350          CALL CHKXER( 'CHEEV ', INFOT, NOUT, LERR, OK )
351          INFOT = 5
352          CALL CHEEV( 'N''U'2, A, 1, X, W, 3, RW, INFO )
353          CALL CHKXER( 'CHEEV ', INFOT, NOUT, LERR, OK )
354          INFOT = 8
355          CALL CHEEV( 'N''U'2, A, 2, X, W, 2, RW, INFO )
356          CALL CHKXER( 'CHEEV ', INFOT, NOUT, LERR, OK )
357          NT = NT + 5
358 *
359 *        CHEEVX
360 *
361          SRNAMT = 'CHEEVX'
362          INFOT = 1
363          CALL CHEEVX( '/''A''U'0, A, 10.00.0000.0, M, X,
364      $                Z, 1, W, 1, RW, IW, I3, INFO )
365          CALL CHKXER( 'CHEEVX', INFOT, NOUT, LERR, OK )
366          INFOT = 2
367          CALL CHEEVX( 'V''/''U'0, A, 10.01.0100.0, M, X,
368      $                Z, 1, W, 1, RW, IW, I3, INFO )
369          CALL CHKXER( 'CHEEVX', INFOT, NOUT, LERR, OK )
370          INFOT = 3
371          CALL CHEEVX( 'V''A''/'0, A, 10.00.0000.0, M, X,
372      $                Z, 1, W, 1, RW, IW, I3, INFO )
373          INFOT = 4
374          CALL CHEEVX( 'V''A''U'-1, A, 10.00.0000.0, M,
375      $                X, Z, 1, W, 1, RW, IW, I3, INFO )
376          CALL CHKXER( 'CHEEVX', INFOT, NOUT, LERR, OK )
377          INFOT = 6
378          CALL CHEEVX( 'V''A''U'2, A, 10.00.0000.0, M, X,
379      $                Z, 2, W, 3, RW, IW, I3, INFO )
380          CALL CHKXER( 'CHEEVX', INFOT, NOUT, LERR, OK )
381          INFOT = 8
382          CALL CHEEVX( 'V''V''U'1, A, 10.00.0000.0, M, X,
383      $                Z, 1, W, 1, RW, IW, I3, INFO )
384          CALL CHKXER( 'CHEEVX', INFOT, NOUT, LERR, OK )
385          INFOT = 9
386          CALL CHEEVX( 'V''I''U'1, A, 10.00.0000.0, M, X,
387      $                Z, 1, W, 1, RW, IW, I3, INFO )
388          CALL CHKXER( 'CHEEVX', INFOT, NOUT, LERR, OK )
389          INFOT = 10
390          CALL CHEEVX( 'V''I''U'2, A, 20.00.0210.0, M, X,
391      $                Z, 2, W, 3, RW, IW, I3, INFO )
392          CALL CHKXER( 'CHEEVX', INFOT, NOUT, LERR, OK )
393          INFOT = 15
394          CALL CHEEVX( 'V''A''U'2, A, 20.00.0000.0, M, X,
395      $                Z, 1, W, 3, RW, IW, I3, INFO )
396          CALL CHKXER( 'CHEEVX', INFOT, NOUT, LERR, OK )
397          INFOT = 17
398          CALL CHEEVX( 'V''A''U'2, A, 20.00.0000.0, M, X,
399      $                Z, 2, W, 2, RW, IW, I1, INFO )
400          CALL CHKXER( 'CHEEVX', INFOT, NOUT, LERR, OK )
401          NT = NT + 10
402 *
403 *        CHEEVR
404 *
405          SRNAMT = 'CHEEVR'
406          N = 1
407          INFOT = 1
408          CALL CHEEVR( '/''A''U'0, A, 10.00.0110.0, M, R,
409      $                Z, 1, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ), 10*N,
410      $                INFO )
411          CALL CHKXER( 'CHEEVR', INFOT, NOUT, LERR, OK )
412          INFOT = 2
413          CALL CHEEVR( 'V''/''U'0, A, 10.00.0110.0, M, R,
414      $                Z, 1, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ), 10*N,
415      $                INFO )
416          CALL CHKXER( 'CHEEVR', INFOT, NOUT, LERR, OK )
417          INFOT = 3
418          CALL CHEEVR( 'V''A''/'-1, A, 10.00.0110.0, M,
419      $                R, Z, 1, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ), 10*N,
420      $                INFO )
421          CALL CHKXER( 'CHEEVR', INFOT, NOUT, LERR, OK )
422          INFOT = 4
423          CALL CHEEVR( 'V''A''U'-1, A, 10.00.0110.0, M,
424      $                R, Z, 1, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ), 10*N,
425      $                INFO )
426          CALL CHKXER( 'CHEEVR', INFOT, NOUT, LERR, OK )
427          INFOT = 6
428          CALL CHEEVR( 'V''A''U'2, A, 10.00.0110.0, M, R,
429      $                Z, 1, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ), 10*N,
430      $                INFO )
431          CALL CHKXER( 'CHEEVR', INFOT, NOUT, LERR, OK )
432          INFOT = 8
433          CALL CHEEVR( 'V''V''U'1, A, 10.0E00.0E0110.0,
434      $                M, R, Z, 1, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ),
435      $                10*N, INFO )
436          CALL CHKXER( 'CHEEVR', INFOT, NOUT, LERR, OK )
437          INFOT = 9
438          CALL CHEEVR( 'V''I''U'1, A, 10.0E00.0E0010.0,
439      $                M, R, Z, 1, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ),
440      $                10*N, INFO )
441          CALL CHKXER( 'CHEEVR', INFOT, NOUT, LERR, OK )
442          INFOT = 10
443 *
444          CALL CHEEVR( 'V''I''U'2, A, 20.0E00.0E0210.0,
445      $                M, R, Z, 1, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ),
446      $                10*N, INFO )
447          CALL CHKXER( 'CHEEVR', INFOT, NOUT, LERR, OK )
448          INFOT = 15
449          CALL CHEEVR( 'V''I''U'1, A, 10.0E00.0E0110.0,
450      $                M, R, Z, 0, IW, Q, 2*N, RW, 24*N, IW( 2*N+1 ),
451      $                10*N, INFO )
452          CALL CHKXER( 'CHEEVR', INFOT, NOUT, LERR, OK )
453          INFOT = 18
454          CALL CHEEVR( 'V''I''U'1, A, 10.0E00.0E0110.0,
455      $                M, R, Z, 1, IW, Q, 2*N-1, RW, 24*N, IW( 2*N+1 ),
456      $                10*N, INFO )
457          CALL CHKXER( 'CHEEVR', INFOT, NOUT, LERR, OK )
458          INFOT = 20
459          CALL CHEEVR( 'V''I''U'1, A, 10.0E00.0E0110.0,
460      $                M, R, Z, 1, IW, Q, 2*N, RW, 24*N-1, IW( 2*N-1 ),
461      $                10*N, INFO )
462          CALL CHKXER( 'CHEEVR', INFOT, NOUT, LERR, OK )
463          INFOT = 22
464          CALL CHEEVR( 'V''I''U'1, A, 10.0E00.0E0110.0,
465      $                M, R, Z, 1, IW, Q, 2*N, RW, 24*N, IW, 10*N-1,
466      $                INFO )
467          CALL CHKXER( 'CHEEVR', INFOT, NOUT, LERR, OK )
468          NT = NT + 12
469 *
470 *        CHPEVD
471 *
472          SRNAMT = 'CHPEVD'
473          INFOT = 1
474          CALL CHPEVD( '/''U'0, A, X, Z, 1, W, 1, RW, 1, IW, 1,
475      $                INFO )
476          CALL CHKXER( 'CHPEVD', INFOT, NOUT, LERR, OK )
477          INFOT = 2
478          CALL CHPEVD( 'N''/'0, A, X, Z, 1, W, 1, RW, 1, IW, 1,
479      $                INFO )
480          CALL CHKXER( 'CHPEVD', INFOT, NOUT, LERR, OK )
481          INFOT = 3
482          CALL CHPEVD( 'N''U'-1, A, X, Z, 1, W, 1, RW, 1, IW, 1,
483      $                INFO )
484          CALL CHKXER( 'CHPEVD', INFOT, NOUT, LERR, OK )
485          INFOT = 7
486          CALL CHPEVD( 'V''U'2, A, X, Z, 1, W, 4, RW, 25, IW, 12,
487      $                INFO )
488          CALL CHKXER( 'CHPEVD', INFOT, NOUT, LERR, OK )
489          INFOT = 9
490          CALL CHPEVD( 'N''U'1, A, X, Z, 1, W, 0, RW, 1, IW, 1,
491      $                INFO )
492          CALL CHKXER( 'CHPEVD', INFOT, NOUT, LERR, OK )
493          INFOT = 9
494          CALL CHPEVD( 'N''U'2, A, X, Z, 2, W, 1, RW, 2, IW, 1,
495      $                INFO )
496          CALL CHKXER( 'CHPEVD', INFOT, NOUT, LERR, OK )
497          INFOT = 9
498          CALL CHPEVD( 'V''U'2, A, X, Z, 2, W, 2, RW, 25, IW, 12,
499      $                INFO )
500          CALL CHKXER( 'CHPEVD', INFOT, NOUT, LERR, OK )
501          INFOT = 11
502          CALL CHPEVD( 'N''U'1, A, X, Z, 1, W, 1, RW, 0, IW, 1,
503      $                INFO )
504          CALL CHKXER( 'CHPEVD', INFOT, NOUT, LERR, OK )
505          INFOT = 11
506          CALL CHPEVD( 'N''U'2, A, X, Z, 2, W, 2, RW, 1, IW, 1,
507      $                INFO )
508          CALL CHKXER( 'CHPEVD', INFOT, NOUT, LERR, OK )
509          INFOT = 11
510          CALL CHPEVD( 'V''U'2, A, X, Z, 2, W, 4, RW, 18, IW, 12,
511      $                INFO )
512          CALL CHKXER( 'CHPEVD', INFOT, NOUT, LERR, OK )
513          INFOT = 13
514          CALL CHPEVD( 'N''U'1, A, X, Z, 1, W, 1, RW, 1, IW, 0,
515      $                INFO )
516          CALL CHKXER( 'CHPEVD', INFOT, NOUT, LERR, OK )
517          INFOT = 13
518          CALL CHPEVD( 'N''U'2, A, X, Z, 2, W, 2, RW, 2, IW, 0,
519      $                INFO )
520          CALL CHKXER( 'CHPEVD', INFOT, NOUT, LERR, OK )
521          INFOT = 13
522          CALL CHPEVD( 'V''U'2, A, X, Z, 2, W, 4, RW, 25, IW, 2,
523      $                INFO )
524          CALL CHKXER( 'CHPEVD', INFOT, NOUT, LERR, OK )
525          NT = NT + 13
526 *
527 *        CHPEV
528 *
529          SRNAMT = 'CHPEV '
530          INFOT = 1
531          CALL CHPEV( '/''U'0, A, X, Z, 1, W, RW, INFO )
532          CALL CHKXER( 'CHPEV ', INFOT, NOUT, LERR, OK )
533          INFOT = 2
534          CALL CHPEV( 'N''/'0, A, X, Z, 1, W, RW, INFO )
535          CALL CHKXER( 'CHPEV ', INFOT, NOUT, LERR, OK )
536          INFOT = 3
537          CALL CHPEV( 'N''U'-1, A, X, Z, 1, W, RW, INFO )
538          CALL CHKXER( 'CHPEV ', INFOT, NOUT, LERR, OK )
539          INFOT = 7
540          CALL CHPEV( 'V''U'2, A, X, Z, 1, W, RW, INFO )
541          CALL CHKXER( 'CHPEV ', INFOT, NOUT, LERR, OK )
542          NT = NT + 4
543 *
544 *        CHPEVX
545 *
546          SRNAMT = 'CHPEVX'
547          INFOT = 1
548          CALL CHPEVX( '/''A''U'0, A, 0.00.0000.0, M, X, Z,
549      $                1, W, RW, IW, I3, INFO )
550          CALL CHKXER( 'CHPEVX', INFOT, NOUT, LERR, OK )
551          INFOT = 2
552          CALL CHPEVX( 'V''/''U'0, A, 0.01.0100.0, M, X, Z,
553      $                1, W, RW, IW, I3, INFO )
554          CALL CHKXER( 'CHPEVX', INFOT, NOUT, LERR, OK )
555          INFOT = 3
556          CALL CHPEVX( 'V''A''/'0, A, 0.00.0000.0, M, X, Z,
557      $                1, W, RW, IW, I3, INFO )
558          CALL CHKXER( 'CHPEVX', INFOT, NOUT, LERR, OK )
559          INFOT = 4
560          CALL CHPEVX( 'V''A''U'-1, A, 0.00.0000.0, M, X,
561      $                Z, 1, W, RW, IW, I3, INFO )
562          CALL CHKXER( 'CHPEVX', INFOT, NOUT, LERR, OK )
563          INFOT = 7
564          CALL CHPEVX( 'V''V''U'1, A, 0.00.0000.0, M, X, Z,
565      $                1, W, RW, IW, I3, INFO )
566          CALL CHKXER( 'CHPEVX', INFOT, NOUT, LERR, OK )
567          INFOT = 8
568          CALL CHPEVX( 'V''I''U'1, A, 0.00.0000.0, M, X, Z,
569      $                1, W, RW, IW, I3, INFO )
570          CALL CHKXER( 'CHPEVX', INFOT, NOUT, LERR, OK )
571          INFOT = 9
572          CALL CHPEVX( 'V''I''U'2, A, 0.00.0210.0, M, X, Z,
573      $                2, W, RW, IW, I3, INFO )
574          CALL CHKXER( 'CHPEVX', INFOT, NOUT, LERR, OK )
575          INFOT = 14
576          CALL CHPEVX( 'V''A''U'2, A, 0.00.0000.0, M, X, Z,
577      $                1, W, RW, IW, I3, INFO )
578          CALL CHKXER( 'CHPEVX', 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 *        CHBTRD
586 *
587          SRNAMT = 'CHBTRD'
588          INFOT = 1
589          CALL CHBTRD( '/''U'00, A, 1, D, E, Z, 1, W, INFO )
590          CALL CHKXER( 'CHBTRD', INFOT, NOUT, LERR, OK )
591          INFOT = 2
592          CALL CHBTRD( 'N''/'00, A, 1, D, E, Z, 1, W, INFO )
593          CALL CHKXER( 'CHBTRD', INFOT, NOUT, LERR, OK )
594          INFOT = 3
595          CALL CHBTRD( 'N''U'-10, A, 1, D, E, Z, 1, W, INFO )
596          CALL CHKXER( 'CHBTRD', INFOT, NOUT, LERR, OK )
597          INFOT = 4
598          CALL CHBTRD( 'N''U'0-1, A, 1, D, E, Z, 1, W, INFO )
599          CALL CHKXER( 'CHBTRD', INFOT, NOUT, LERR, OK )
600          INFOT = 6
601          CALL CHBTRD( 'N''U'11, A, 1, D, E, Z, 1, W, INFO )
602          CALL CHKXER( 'CHBTRD', INFOT, NOUT, LERR, OK )
603          INFOT = 10
604          CALL CHBTRD( 'V''U'20, A, 1, D, E, Z, 1, W, INFO )
605          CALL CHKXER( 'CHBTRD', INFOT, NOUT, LERR, OK )
606          NT = NT + 6
607 *
608 *        CHBEVD
609 *
610          SRNAMT = 'CHBEVD'
611          INFOT = 1
612          CALL CHBEVD( '/''U'00, A, 1, X, Z, 1, W, 1, RW, 1, IW, 1,
613      $                INFO )
614          CALL CHKXER( 'CHBEVD', INFOT, NOUT, LERR, OK )
615          INFOT = 2
616          CALL CHBEVD( 'N''/'00, A, 1, X, Z, 1, W, 1, RW, 1, IW, 1,
617      $                INFO )
618          CALL CHKXER( 'CHBEVD', INFOT, NOUT, LERR, OK )
619          INFOT = 3
620          CALL CHBEVD( 'N''U'-10, A, 1, X, Z, 1, W, 1, RW, 1, IW,
621      $                1, INFO )
622          CALL CHKXER( 'CHBEVD', INFOT, NOUT, LERR, OK )
623          INFOT = 4
624          CALL CHBEVD( 'N''U'0-1, A, 1, X, Z, 1, W, 1, RW, 1, IW,
625      $                1, INFO )
626          CALL CHKXER( 'CHBEVD', INFOT, NOUT, LERR, OK )
627          INFOT = 6
628          CALL CHBEVD( 'N''U'21, A, 1, X, Z, 1, W, 2, RW, 2, IW, 1,
629      $                INFO )
630          CALL CHKXER( 'CHBEVD', INFOT, NOUT, LERR, OK )
631          INFOT = 9
632          CALL CHBEVD( 'V''U'21, A, 2, X, Z, 1, W, 8, RW, 25, IW,
633      $                12, INFO )
634          CALL CHKXER( 'CHBEVD', INFOT, NOUT, LERR, OK )
635          INFOT = 11
636          CALL CHBEVD( 'N''U'10, A, 1, X, Z, 1, W, 0, RW, 1, IW, 1,
637      $                INFO )
638          CALL CHKXER( 'CHBEVD', INFOT, NOUT, LERR, OK )
639          INFOT = 11
640          CALL CHBEVD( 'N''U'21, A, 2, X, Z, 2, W, 1, RW, 2, IW, 1,
641      $                INFO )
642          CALL CHKXER( 'CHBEVD', INFOT, NOUT, LERR, OK )
643          INFOT = 11
644          CALL CHBEVD( 'V''U'21, A, 2, X, Z, 2, W, 2, RW, 25, IW,
645      $                12, INFO )
646          CALL CHKXER( 'CHBEVD', INFOT, NOUT, LERR, OK )
647          INFOT = 13
648          CALL CHBEVD( 'N''U'10, A, 1, X, Z, 1, W, 1, RW, 0, IW, 1,
649      $                INFO )
650          CALL CHKXER( 'CHBEVD', INFOT, NOUT, LERR, OK )
651          INFOT = 13
652          CALL CHBEVD( 'N''U'21, A, 2, X, Z, 2, W, 2, RW, 1, IW, 1,
653      $                INFO )
654          CALL CHKXER( 'CHBEVD', INFOT, NOUT, LERR, OK )
655          INFOT = 13
656          CALL CHBEVD( 'V''U'21, A, 2, X, Z, 2, W, 8, RW, 2, IW,
657      $                12, INFO )
658          CALL CHKXER( 'CHBEVD', INFOT, NOUT, LERR, OK )
659          INFOT = 15
660          CALL CHBEVD( 'N''U'10, A, 1, X, Z, 1, W, 1, RW, 1, IW, 0,
661      $                INFO )
662          CALL CHKXER( 'CHBEVD', INFOT, NOUT, LERR, OK )
663          INFOT = 15
664          CALL CHBEVD( 'N''U'21, A, 2, X, Z, 2, W, 2, RW, 2, IW, 0,
665      $                INFO )
666          CALL CHKXER( 'CHBEVD', INFOT, NOUT, LERR, OK )
667          INFOT = 15
668          CALL CHBEVD( 'V''U'21, A, 2, X, Z, 2, W, 8, RW, 25, IW,
669      $                2, INFO )
670          CALL CHKXER( 'CHBEVD', INFOT, NOUT, LERR, OK )
671          NT = NT + 15
672 *
673 *        CHBEV
674 *
675          SRNAMT = 'CHBEV '
676          INFOT = 1
677          CALL CHBEV( '/''U'00, A, 1, X, Z, 1, W, RW, INFO )
678          CALL CHKXER( 'CHBEV ', INFOT, NOUT, LERR, OK )
679          INFOT = 2
680          CALL CHBEV( 'N''/'00, A, 1, X, Z, 1, W, RW, INFO )
681          CALL CHKXER( 'CHBEV ', INFOT, NOUT, LERR, OK )
682          INFOT = 3
683          CALL CHBEV( 'N''U'-10, A, 1, X, Z, 1, W, RW, INFO )
684          CALL CHKXER( 'CHBEV ', INFOT, NOUT, LERR, OK )
685          INFOT = 4
686          CALL CHBEV( 'N''U'0-1, A, 1, X, Z, 1, W, RW, INFO )
687          CALL CHKXER( 'CHBEV ', INFOT, NOUT, LERR, OK )
688          INFOT = 6
689          CALL CHBEV( 'N''U'21, A, 1, X, Z, 1, W, RW, INFO )
690          CALL CHKXER( 'CHBEV ', INFOT, NOUT, LERR, OK )
691          INFOT = 9
692          CALL CHBEV( 'V''U'20, A, 1, X, Z, 1, W, RW, INFO )
693          CALL CHKXER( 'CHBEV ', INFOT, NOUT, LERR, OK )
694          NT = NT + 6
695 *
696 *        CHBEVX
697 *
698          SRNAMT = 'CHBEVX'
699          INFOT = 1
700          CALL CHBEVX( '/''A''U'00, A, 1, Q, 10.00.000,
701      $                0.0, M, X, Z, 1, W, RW, IW, I3, INFO )
702          CALL CHKXER( 'CHBEVX', INFOT, NOUT, LERR, OK )
703          INFOT = 2
704          CALL CHBEVX( 'V''/''U'00, A, 1, Q, 10.01.010,
705      $                0.0, M, X, Z, 1, W, RW, IW, I3, INFO )
706          CALL CHKXER( 'CHBEVX', INFOT, NOUT, LERR, OK )
707          INFOT = 3
708          CALL CHBEVX( 'V''A''/'00, A, 1, Q, 10.00.000,
709      $                0.0, M, X, Z, 1, W, RW, IW, I3, INFO )
710          INFOT = 4
711          CALL CHBEVX( 'V''A''U'-10, A, 1, Q, 10.00.000,
712      $                0.0, M, X, Z, 1, W, RW, IW, I3, INFO )
713          CALL CHKXER( 'CHBEVX', INFOT, NOUT, LERR, OK )
714          INFOT = 5
715          CALL CHBEVX( 'V''A''U'0-1, A, 1, Q, 10.00.000,
716      $                0.0, M, X, Z, 1, W, RW, IW, I3, INFO )
717          CALL CHKXER( 'CHBEVX', INFOT, NOUT, LERR, OK )
718          INFOT = 7
719          CALL CHBEVX( 'V''A''U'21, A, 1, Q, 20.00.000,
720      $                0.0, M, X, Z, 2, W, RW, IW, I3, INFO )
721          CALL CHKXER( 'CHBEVX', INFOT, NOUT, LERR, OK )
722          INFOT = 9
723          CALL CHBEVX( 'V''A''U'20, A, 1, Q, 10.00.000,
724      $                0.0, M, X, Z, 2, W, RW, IW, I3, INFO )
725          CALL CHKXER( 'CHBEVX', INFOT, NOUT, LERR, OK )
726          INFOT = 11
727          CALL CHBEVX( 'V''V''U'10, A, 1, Q, 10.00.000,
728      $                0.0, M, X, Z, 1, W, RW, IW, I3, INFO )
729          CALL CHKXER( 'CHBEVX', INFOT, NOUT, LERR, OK )
730          INFOT = 12
731          CALL CHBEVX( 'V''I''U'10, A, 1, Q, 10.00.000,
732      $                0.0, M, X, Z, 1, W, RW, IW, I3, INFO )
733          CALL CHKXER( 'CHBEVX', INFOT, NOUT, LERR, OK )
734          INFOT = 13
735          CALL CHBEVX( 'V''I''U'10, A, 1, Q, 10.00.012,
736      $                0.0, M, X, Z, 1, W, RW, IW, I3, INFO )
737          CALL CHKXER( 'CHBEVX', INFOT, NOUT, LERR, OK )
738          INFOT = 18
739          CALL CHBEVX( 'V''A''U'20, A, 1, Q, 20.00.000,
740      $                0.0, M, X, Z, 1, W, RW, IW, I3, INFO )
741          CALL CHKXER( 'CHBEVX', 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 CERRST
761 *
762       END