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