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