1*> \brief \b DERRGG
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 DERRGG( 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*> DERRGG tests the error exits for DGGES, DGGESX, DGGEV, DGGEVX,
25*> DGGGLM, DGGHRD, DGGLSE, DGGQRF, DGGRQF, DGGSVD, DGGSVP, DHGEQZ,
26*> DORCSD, DTGEVC, DTGEXC, DTGSEN, DTGSJA, DTGSNA, and DTGSYL.
27*> \endverbatim
28*
29*  Arguments:
30*  ==========
31*
32*> \param[in] PATH
33*> \verbatim
34*>          PATH is CHARACTER*3
35*>          The LAPACK path name for the routines to be tested.
36*> \endverbatim
37*>
38*> \param[in] NUNIT
39*> \verbatim
40*>          NUNIT is INTEGER
41*>          The unit number for output.
42*> \endverbatim
43*
44*  Authors:
45*  ========
46*
47*> \author Univ. of Tennessee
48*> \author Univ. of California Berkeley
49*> \author Univ. of Colorado Denver
50*> \author NAG Ltd.
51*
52*> \date November 2011
53*
54*> \ingroup double_eig
55*
56*  =====================================================================
57      SUBROUTINE DERRGG( PATH, NUNIT )
58*
59*  -- LAPACK test routine (version 3.4.0) --
60*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
61*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
62*     November 2011
63*
64*     .. Scalar Arguments ..
65      CHARACTER*3        PATH
66      INTEGER            NUNIT
67*     ..
68*
69*  =====================================================================
70*
71*     .. Parameters ..
72      INTEGER            NMAX, LW
73      PARAMETER          ( NMAX = 3, LW = 6*NMAX )
74      DOUBLE PRECISION   ONE, ZERO
75      PARAMETER          ( ONE = 1.0D+0, ZERO = 0.0D+0 )
76*     ..
77*     .. Local Scalars ..
78      CHARACTER*2        C2
79      INTEGER            DUMMYK, DUMMYL, I, IFST, ILO, IHI, ILST, INFO,
80     $                   J, M, NCYCLE, NT, SDIM
81      DOUBLE PRECISION   ANRM, BNRM, DIF, SCALE, TOLA, TOLB
82*     ..
83*     .. Local Arrays ..
84      LOGICAL            BW( NMAX ), SEL( NMAX )
85      INTEGER            IW( NMAX )
86      DOUBLE PRECISION   A( NMAX, NMAX ), B( NMAX, NMAX ), LS( NMAX ),
87     $                   Q( NMAX, NMAX ), R1( NMAX ), R2( NMAX ),
88     $                   R3( NMAX ), RCE( 2 ), RCV( 2 ), RS( NMAX ),
89     $                   TAU( NMAX ), U( NMAX, NMAX ), V( NMAX, NMAX ),
90     $                   W( LW ), Z( NMAX, NMAX )
91*     ..
92*     .. External Functions ..
93      LOGICAL            DLCTES, DLCTSX, LSAMEN
94      EXTERNAL           DLCTES, DLCTSX, LSAMEN
95*     ..
96*     .. External Subroutines ..
97      EXTERNAL           CHKXER, DGGES, DGGESX, DGGEV, DGGEVX, DGGGLM,
98     $                   DGGHRD, DGGLSE, DGGQRF, DGGRQF, DGGSVD, DGGSVP,
99     $                   DHGEQZ, DORCSD, DTGEVC, DTGEXC, DTGSEN, DTGSJA,
100     $                   DTGSNA, DTGSYL
101*     ..
102*     .. Scalars in Common ..
103      LOGICAL            LERR, OK
104      CHARACTER*32       SRNAMT
105      INTEGER            INFOT, NOUT
106*     ..
107*     .. Common blocks ..
108      COMMON             / INFOC / INFOT, NOUT, OK, LERR
109      COMMON             / SRNAMC / SRNAMT
110*     ..
111*     .. Executable Statements ..
112*
113      NOUT = NUNIT
114      WRITE( NOUT, FMT = * )
115      C2 = PATH( 2: 3 )
116*
117*     Set the variables to innocuous values.
118*
119      DO 20 J = 1, NMAX
120         SEL( J ) = .TRUE.
121         DO 10 I = 1, NMAX
122            A( I, J ) = ZERO
123            B( I, J ) = ZERO
124   10    CONTINUE
125   20 CONTINUE
126      DO 30 I = 1, NMAX
127         A( I, I ) = ONE
128         B( I, I ) = ONE
129   30 CONTINUE
130      OK = .TRUE.
131      TOLA = 1.0D0
132      TOLB = 1.0D0
133      IFST = 1
134      ILST = 1
135      NT = 0
136*
137*     Test error exits for the GG path.
138*
139      IF( LSAMEN( 2, C2, 'GG' ) ) THEN
140*
141*        DGGHRD
142*
143         SRNAMT = 'DGGHRD'
144         INFOT = 1
145         CALL DGGHRD( '/', 'N', 0, 1, 0, A, 1, B, 1, Q, 1, Z, 1, INFO )
146         CALL CHKXER( 'DGGHRD', INFOT, NOUT, LERR, OK )
147         INFOT = 2
148         CALL DGGHRD( 'N', '/', 0, 1, 0, A, 1, B, 1, Q, 1, Z, 1, INFO )
149         CALL CHKXER( 'DGGHRD', INFOT, NOUT, LERR, OK )
150         INFOT = 3
151         CALL DGGHRD( 'N', 'N', -1, 0, 0, A, 1, B, 1, Q, 1, Z, 1, INFO )
152         CALL CHKXER( 'DGGHRD', INFOT, NOUT, LERR, OK )
153         INFOT = 4
154         CALL DGGHRD( 'N', 'N', 0, 0, 0, A, 1, B, 1, Q, 1, Z, 1, INFO )
155         CALL CHKXER( 'DGGHRD', INFOT, NOUT, LERR, OK )
156         INFOT = 5
157         CALL DGGHRD( 'N', 'N', 0, 1, 1, A, 1, B, 1, Q, 1, Z, 1, INFO )
158         CALL CHKXER( 'DGGHRD', INFOT, NOUT, LERR, OK )
159         INFOT = 7
160         CALL DGGHRD( 'N', 'N', 2, 1, 1, A, 1, B, 2, Q, 1, Z, 1, INFO )
161         CALL CHKXER( 'DGGHRD', INFOT, NOUT, LERR, OK )
162         INFOT = 9
163         CALL DGGHRD( 'N', 'N', 2, 1, 1, A, 2, B, 1, Q, 1, Z, 1, INFO )
164         CALL CHKXER( 'DGGHRD', INFOT, NOUT, LERR, OK )
165         INFOT = 11
166         CALL DGGHRD( 'V', 'N', 2, 1, 1, A, 2, B, 2, Q, 1, Z, 1, INFO )
167         CALL CHKXER( 'DGGHRD', INFOT, NOUT, LERR, OK )
168         INFOT = 13
169         CALL DGGHRD( 'N', 'V', 2, 1, 1, A, 2, B, 2, Q, 1, Z, 1, INFO )
170         CALL CHKXER( 'DGGHRD', INFOT, NOUT, LERR, OK )
171         NT = NT + 9
172*
173*        DHGEQZ
174*
175         SRNAMT = 'DHGEQZ'
176         INFOT = 1
177         CALL DHGEQZ( '/', 'N', 'N', 0, 1, 0, A, 1, B, 1, R1, R2, R3, Q,
178     $                1, Z, 1, W, LW, INFO )
179         CALL CHKXER( 'DHGEQZ', INFOT, NOUT, LERR, OK )
180         INFOT = 2
181         CALL DHGEQZ( 'E', '/', 'N', 0, 1, 0, A, 1, B, 1, R1, R2, R3, Q,
182     $                1, Z, 1, W, LW, INFO )
183         CALL CHKXER( 'DHGEQZ', INFOT, NOUT, LERR, OK )
184         INFOT = 3
185         CALL DHGEQZ( 'E', 'N', '/', 0, 1, 0, A, 1, B, 1, R1, R2, R3, Q,
186     $                1, Z, 1, W, LW, INFO )
187         CALL CHKXER( 'DHGEQZ', INFOT, NOUT, LERR, OK )
188         INFOT = 4
189         CALL DHGEQZ( 'E', 'N', 'N', -1, 0, 0, A, 1, B, 1, R1, R2, R3,
190     $                Q, 1, Z, 1, W, LW, INFO )
191         CALL CHKXER( 'DHGEQZ', INFOT, NOUT, LERR, OK )
192         INFOT = 5
193         CALL DHGEQZ( 'E', 'N', 'N', 0, 0, 0, A, 1, B, 1, R1, R2, R3, Q,
194     $                1, Z, 1, W, LW, INFO )
195         CALL CHKXER( 'DHGEQZ', INFOT, NOUT, LERR, OK )
196         INFOT = 6
197         CALL DHGEQZ( 'E', 'N', 'N', 0, 1, 1, A, 1, B, 1, R1, R2, R3, Q,
198     $                1, Z, 1, W, LW, INFO )
199         CALL CHKXER( 'DHGEQZ', INFOT, NOUT, LERR, OK )
200         INFOT = 8
201         CALL DHGEQZ( 'E', 'N', 'N', 2, 1, 1, A, 1, B, 2, R1, R2, R3, Q,
202     $                1, Z, 1, W, LW, INFO )
203         CALL CHKXER( 'DHGEQZ', INFOT, NOUT, LERR, OK )
204         INFOT = 10
205         CALL DHGEQZ( 'E', 'N', 'N', 2, 1, 1, A, 2, B, 1, R1, R2, R3, Q,
206     $                1, Z, 1, W, LW, INFO )
207         CALL CHKXER( 'DHGEQZ', INFOT, NOUT, LERR, OK )
208         INFOT = 15
209         CALL DHGEQZ( 'E', 'V', 'N', 2, 1, 1, A, 2, B, 2, R1, R2, R3, Q,
210     $                1, Z, 1, W, LW, INFO )
211         CALL CHKXER( 'DHGEQZ', INFOT, NOUT, LERR, OK )
212         INFOT = 17
213         CALL DHGEQZ( 'E', 'N', 'V', 2, 1, 1, A, 2, B, 2, R1, R2, R3, Q,
214     $                1, Z, 1, W, LW, INFO )
215         CALL CHKXER( 'DHGEQZ', INFOT, NOUT, LERR, OK )
216         NT = NT + 10
217*
218*        DTGEVC
219*
220         SRNAMT = 'DTGEVC'
221         INFOT = 1
222         CALL DTGEVC( '/', 'A', SEL, 0, A, 1, B, 1, Q, 1, Z, 1, 0, M, W,
223     $                INFO )
224         CALL CHKXER( 'DTGEVC', INFOT, NOUT, LERR, OK )
225         INFOT = 2
226         CALL DTGEVC( 'R', '/', SEL, 0, A, 1, B, 1, Q, 1, Z, 1, 0, M, W,
227     $                INFO )
228         CALL CHKXER( 'DTGEVC', INFOT, NOUT, LERR, OK )
229         INFOT = 4
230         CALL DTGEVC( 'R', 'A', SEL, -1, A, 1, B, 1, Q, 1, Z, 1, 0, M,
231     $                W, INFO )
232         CALL CHKXER( 'DTGEVC', INFOT, NOUT, LERR, OK )
233         INFOT = 6
234         CALL DTGEVC( 'R', 'A', SEL, 2, A, 1, B, 2, Q, 1, Z, 2, 0, M, W,
235     $                INFO )
236         CALL CHKXER( 'DTGEVC', INFOT, NOUT, LERR, OK )
237         INFOT = 8
238         CALL DTGEVC( 'R', 'A', SEL, 2, A, 2, B, 1, Q, 1, Z, 2, 0, M, W,
239     $                INFO )
240         CALL CHKXER( 'DTGEVC', INFOT, NOUT, LERR, OK )
241         INFOT = 10
242         CALL DTGEVC( 'L', 'A', SEL, 2, A, 2, B, 2, Q, 1, Z, 1, 0, M, W,
243     $                INFO )
244         CALL CHKXER( 'DTGEVC', INFOT, NOUT, LERR, OK )
245         INFOT = 12
246         CALL DTGEVC( 'R', 'A', SEL, 2, A, 2, B, 2, Q, 1, Z, 1, 0, M, W,
247     $                INFO )
248         CALL CHKXER( 'DTGEVC', INFOT, NOUT, LERR, OK )
249         INFOT = 13
250         CALL DTGEVC( 'R', 'A', SEL, 2, A, 2, B, 2, Q, 1, Z, 2, 1, M, W,
251     $                INFO )
252         CALL CHKXER( 'DTGEVC', INFOT, NOUT, LERR, OK )
253         NT = NT + 8
254*
255*     Test error exits for the GSV path.
256*
257      ELSE IF( LSAMEN( 3, PATH, 'GSV' ) ) THEN
258*
259*        DGGSVD
260*
261         SRNAMT = 'DGGSVD'
262         INFOT = 1
263         CALL DGGSVD( '/', 'N', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
264     $                1, R1, R2, U, 1, V, 1, Q, 1, W, IW, INFO )
265         CALL CHKXER( 'DGGSVD', INFOT, NOUT, LERR, OK )
266         INFOT = 2
267         CALL DGGSVD( 'N', '/', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
268     $                1, R1, R2, U, 1, V, 1, Q, 1, W, IW, INFO )
269         CALL CHKXER( 'DGGSVD', INFOT, NOUT, LERR, OK )
270         INFOT = 3
271         CALL DGGSVD( 'N', 'N', '/', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
272     $                1, R1, R2, U, 1, V, 1, Q, 1, W, IW, INFO )
273         CALL CHKXER( 'DGGSVD', INFOT, NOUT, LERR, OK )
274         INFOT = 4
275         CALL DGGSVD( 'N', 'N', 'N', -1, 0, 0, DUMMYK, DUMMYL, A, 1, B,
276     $                1, R1, R2, U, 1, V, 1, Q, 1, W, IW, INFO )
277         CALL CHKXER( 'DGGSVD', INFOT, NOUT, LERR, OK )
278         INFOT = 5
279         CALL DGGSVD( 'N', 'N', 'N', 0, -1, 0, DUMMYK, DUMMYL, A, 1, B,
280     $                1, R1, R2, U, 1, V, 1, Q, 1, W, IW, INFO )
281         CALL CHKXER( 'DGGSVD', INFOT, NOUT, LERR, OK )
282         INFOT = 6
283         CALL DGGSVD( 'N', 'N', 'N', 0, 0, -1, DUMMYK, DUMMYL, A, 1, B,
284     $                1, R1, R2, U, 1, V, 1, Q, 1, W, IW, INFO )
285         CALL CHKXER( 'DGGSVD', INFOT, NOUT, LERR, OK )
286         INFOT = 10
287         CALL DGGSVD( 'N', 'N', 'N', 2, 1, 1, DUMMYK, DUMMYL, A, 1, B,
288     $                1, R1, R2, U, 1, V, 1, Q, 1, W, IW, INFO )
289         CALL CHKXER( 'DGGSVD', INFOT, NOUT, LERR, OK )
290         INFOT = 12
291         CALL DGGSVD( 'N', 'N', 'N', 1, 1, 2, DUMMYK, DUMMYL, A, 1, B,
292     $                1, R1, R2, U, 1, V, 1, Q, 1, W, IW, INFO )
293         CALL CHKXER( 'DGGSVD', INFOT, NOUT, LERR, OK )
294         INFOT = 16
295         CALL DGGSVD( 'U', 'N', 'N', 2, 2, 2, DUMMYK, DUMMYL, A, 2, B,
296     $                2, R1, R2, U, 1, V, 1, Q, 1, W, IW, INFO )
297         CALL CHKXER( 'DGGSVD', INFOT, NOUT, LERR, OK )
298         INFOT = 18
299         CALL DGGSVD( 'N', 'V', 'N', 1, 1, 2, DUMMYK, DUMMYL, A, 1, B,
300     $                2, R1, R2, U, 1, V, 1, Q, 1, W, IW, INFO )
301         CALL CHKXER( 'DGGSVD', INFOT, NOUT, LERR, OK )
302         INFOT = 20
303         CALL DGGSVD( 'N', 'N', 'Q', 1, 2, 1, DUMMYK, DUMMYL, A, 1, B,
304     $                1, R1, R2, U, 1, V, 1, Q, 1, W, IW, INFO )
305         CALL CHKXER( 'DGGSVD', INFOT, NOUT, LERR, OK )
306         NT = NT + 11
307*
308*        DGGSVP
309*
310         SRNAMT = 'DGGSVP'
311         INFOT = 1
312         CALL DGGSVP( '/', 'N', 'N', 0, 0, 0, A, 1, B, 1, TOLA, TOLB,
313     $                DUMMYK, DUMMYL, U, 1, V, 1, Q, 1, IW, TAU, W,
314     $                INFO )
315         CALL CHKXER( 'DGGSVP', INFOT, NOUT, LERR, OK )
316         INFOT = 2
317         CALL DGGSVP( 'N', '/', 'N', 0, 0, 0, A, 1, B, 1, TOLA, TOLB,
318     $                DUMMYK, DUMMYL, U, 1, V, 1, Q, 1, IW, TAU, W,
319     $                INFO )
320         CALL CHKXER( 'DGGSVP', INFOT, NOUT, LERR, OK )
321         INFOT = 3
322         CALL DGGSVP( 'N', 'N', '/', 0, 0, 0, A, 1, B, 1, TOLA, TOLB,
323     $                DUMMYK, DUMMYL, U, 1, V, 1, Q, 1, IW, TAU, W,
324     $                INFO )
325         CALL CHKXER( 'DGGSVP', INFOT, NOUT, LERR, OK )
326         INFOT = 4
327         CALL DGGSVP( 'N', 'N', 'N', -1, 0, 0, A, 1, B, 1, TOLA, TOLB,
328     $                DUMMYK, DUMMYL, U, 1, V, 1, Q, 1, IW, TAU, W,
329     $                INFO )
330         CALL CHKXER( 'DGGSVP', INFOT, NOUT, LERR, OK )
331         INFOT = 5
332         CALL DGGSVP( 'N', 'N', 'N', 0, -1, 0, A, 1, B, 1, TOLA, TOLB,
333     $                DUMMYK, DUMMYL, U, 1, V, 1, Q, 1, IW, TAU, W,
334     $                INFO )
335         CALL CHKXER( 'DGGSVP', INFOT, NOUT, LERR, OK )
336         INFOT = 6
337         CALL DGGSVP( 'N', 'N', 'N', 0, 0, -1, A, 1, B, 1, TOLA, TOLB,
338     $                DUMMYK, DUMMYL, U, 1, V, 1, Q, 1, IW, TAU, W,
339     $                INFO )
340         CALL CHKXER( 'DGGSVP', INFOT, NOUT, LERR, OK )
341         INFOT = 8
342         CALL DGGSVP( 'N', 'N', 'N', 2, 1, 1, A, 1, B, 1, TOLA, TOLB,
343     $                DUMMYK, DUMMYL, U, 1, V, 1, Q, 1, IW, TAU, W,
344     $                INFO )
345         CALL CHKXER( 'DGGSVP', INFOT, NOUT, LERR, OK )
346         INFOT = 10
347         CALL DGGSVP( 'N', 'N', 'N', 1, 2, 1, A, 1, B, 1, TOLA, TOLB,
348     $                DUMMYK, DUMMYL, U, 1, V, 1, Q, 1, IW, TAU, W,
349     $                INFO )
350         CALL CHKXER( 'DGGSVP', INFOT, NOUT, LERR, OK )
351         INFOT = 16
352         CALL DGGSVP( 'U', 'N', 'N', 2, 2, 2, A, 2, B, 2, TOLA, TOLB,
353     $                DUMMYK, DUMMYL, U, 1, V, 1, Q, 1, IW, TAU, W,
354     $                INFO )
355         CALL CHKXER( 'DGGSVP', INFOT, NOUT, LERR, OK )
356         INFOT = 18
357         CALL DGGSVP( 'N', 'V', 'N', 1, 2, 1, A, 1, B, 2, TOLA, TOLB,
358     $                DUMMYK, DUMMYL, U, 1, V, 1, Q, 1, IW, TAU, W,
359     $                INFO )
360         CALL CHKXER( 'DGGSVP', INFOT, NOUT, LERR, OK )
361         INFOT = 20
362         CALL DGGSVP( 'N', 'N', 'Q', 1, 1, 2, A, 1, B, 1, TOLA, TOLB,
363     $                DUMMYK, DUMMYL, U, 1, V, 1, Q, 1, IW, TAU, W,
364     $                INFO )
365         CALL CHKXER( 'DGGSVP', INFOT, NOUT, LERR, OK )
366         NT = NT + 11
367*
368*        DTGSJA
369*
370         SRNAMT = 'DTGSJA'
371         INFOT = 1
372         CALL DTGSJA( '/', 'N', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
373     $                1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
374     $                NCYCLE, INFO )
375         CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
376         INFOT = 2
377         CALL DTGSJA( 'N', '/', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
378     $                1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
379     $                NCYCLE, INFO )
380         CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
381         INFOT = 3
382         CALL DTGSJA( 'N', 'N', '/', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
383     $                1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
384     $                NCYCLE, INFO )
385         CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
386         INFOT = 4
387         CALL DTGSJA( 'N', 'N', 'N', -1, 0, 0, DUMMYK, DUMMYL, A, 1, B,
388     $                1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
389     $                NCYCLE, INFO )
390         CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
391         INFOT = 5
392         CALL DTGSJA( 'N', 'N', 'N', 0, -1, 0, DUMMYK, DUMMYL, A, 1, B,
393     $                1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
394     $                NCYCLE, INFO )
395         CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
396         INFOT = 6
397         CALL DTGSJA( 'N', 'N', 'N', 0, 0, -1, DUMMYK, DUMMYL, A, 1, B,
398     $                1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
399     $                NCYCLE, INFO )
400         CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
401         INFOT = 10
402         CALL DTGSJA( 'N', 'N', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 0, B,
403     $                1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
404     $                NCYCLE, INFO )
405         CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
406         INFOT = 12
407         CALL DTGSJA( 'N', 'N', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
408     $                0, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 1, W,
409     $                NCYCLE, INFO )
410         CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
411         INFOT = 18
412         CALL DTGSJA( 'U', 'N', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
413     $                1, TOLA, TOLB, R1, R2, U, 0, V, 1, Q, 1, W,
414     $                NCYCLE, INFO )
415         CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
416         INFOT = 20
417         CALL DTGSJA( 'N', 'V', 'N', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
418     $                1, TOLA, TOLB, R1, R2, U, 1, V, 0, Q, 1, W,
419     $                NCYCLE, INFO )
420         CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
421         INFOT = 22
422         CALL DTGSJA( 'N', 'N', 'Q', 0, 0, 0, DUMMYK, DUMMYL, A, 1, B,
423     $                1, TOLA, TOLB, R1, R2, U, 1, V, 1, Q, 0, W,
424     $                NCYCLE, INFO )
425         CALL CHKXER( 'DTGSJA', INFOT, NOUT, LERR, OK )
426         NT = NT + 11
427*
428*     Test error exits for the GLM path.
429*
430      ELSE IF( LSAMEN( 3, PATH, 'GLM' ) ) THEN
431*
432*        DGGGLM
433*
434         SRNAMT = 'DGGGLM'
435         INFOT = 1
436         CALL DGGGLM( -1, 0, 0, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
437         CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
438         INFOT = 2
439         CALL DGGGLM( 0, -1, 0, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
440         CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
441         INFOT = 2
442         CALL DGGGLM( 0, 1, 0, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
443         CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
444         INFOT = 3
445         CALL DGGGLM( 0, 0, -1, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
446         CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
447         INFOT = 3
448         CALL DGGGLM( 1, 0, 0, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
449         CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
450         INFOT = 5
451         CALL DGGGLM( 0, 0, 0, A, 0, B, 1, R1, R2, R3, W, LW, INFO )
452         CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
453         INFOT = 7
454         CALL DGGGLM( 0, 0, 0, A, 1, B, 0, R1, R2, R3, W, LW, INFO )
455         CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
456         INFOT = 12
457         CALL DGGGLM( 1, 1, 1, A, 1, B, 1, R1, R2, R3, W, 1, INFO )
458         CALL CHKXER( 'DGGGLM', INFOT, NOUT, LERR, OK )
459         NT = NT + 8
460*
461*     Test error exits for the LSE path.
462*
463      ELSE IF( LSAMEN( 3, PATH, 'LSE' ) ) THEN
464*
465*        DGGLSE
466*
467         SRNAMT = 'DGGLSE'
468         INFOT = 1
469         CALL DGGLSE( -1, 0, 0, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
470         CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
471         INFOT = 2
472         CALL DGGLSE( 0, -1, 0, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
473         CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
474         INFOT = 3
475         CALL DGGLSE( 0, 0, -1, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
476         CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
477         INFOT = 3
478         CALL DGGLSE( 0, 0, 1, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
479         CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
480         INFOT = 3
481         CALL DGGLSE( 0, 1, 0, A, 1, B, 1, R1, R2, R3, W, LW, INFO )
482         CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
483         INFOT = 5
484         CALL DGGLSE( 0, 0, 0, A, 0, B, 1, R1, R2, R3, W, LW, INFO )
485         CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
486         INFOT = 7
487         CALL DGGLSE( 0, 0, 0, A, 1, B, 0, R1, R2, R3, W, LW, INFO )
488         CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
489         INFOT = 12
490         CALL DGGLSE( 1, 1, 1, A, 1, B, 1, R1, R2, R3, W, 1, INFO )
491         CALL CHKXER( 'DGGLSE', INFOT, NOUT, LERR, OK )
492         NT = NT + 8
493*
494*     Test error exits for the CSD path.
495*
496      ELSE IF( LSAMEN( 3, PATH, 'CSD' ) ) THEN
497*
498*        DORCSD
499*
500         SRNAMT = 'DORCSD'
501         INFOT = 7
502         CALL DORCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
503     $                 -1, 0, 0, A, 1, A,
504     $                 1, A, 1, A, 1, A,
505     $                 A, 1, A, 1, A, 1, A,
506     $                 1, W, LW, IW, INFO )
507         CALL CHKXER( 'DORCSD', INFOT, NOUT, LERR, OK )
508         INFOT = 8
509         CALL DORCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
510     $                 1, -1, 0, A, 1, A,
511     $                 1, A, 1, A, 1, A,
512     $                 A, 1, A, 1, A, 1, A,
513     $                 1, W, LW, IW, INFO )
514         CALL CHKXER( 'DORCSD', INFOT, NOUT, LERR, OK )
515         INFOT = 9
516         CALL DORCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
517     $                 1, 1, -1, A, 1, A,
518     $                 1, A, 1, A, 1, A,
519     $                 A, 1, A, 1, A, 1, A,
520     $                 1, W, LW, IW, INFO )
521         CALL CHKXER( 'DORCSD', INFOT, NOUT, LERR, OK )
522         INFOT = 11
523         CALL DORCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
524     $                 1, 1, 1, A, -1, A,
525     $                 1, A, 1, A, 1, A,
526     $                 A, 1, A, 1, A, 1, A,
527     $                 1, W, LW, IW, INFO )
528         CALL CHKXER( 'DORCSD', INFOT, NOUT, LERR, OK )
529         INFOT = 20
530         CALL DORCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
531     $                 1, 1, 1, A, 1, A,
532     $                 1, A, 1, A, 1, A,
533     $                 A, -1, A, 1, A, 1, A,
534     $                 1, W, LW, IW, INFO )
535         CALL CHKXER( 'DORCSD', INFOT, NOUT, LERR, OK )
536         INFOT = 22
537         CALL DORCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
538     $                 1, 1, 1, A, 1, A,
539     $                 1, A, 1, A, 1, A,
540     $                 A, 1, A, -1, A, 1, A,
541     $                 1, W, LW, IW, INFO )
542         CALL CHKXER( 'DORCSD', INFOT, NOUT, LERR, OK )
543         INFOT = 24
544         CALL DORCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
545     $                 1, 1, 1, A, 1, A,
546     $                 1, A, 1, A, 1, A,
547     $                 A, 1, A, 1, A, -1, A,
548     $                 1, W, LW, IW, INFO )
549         CALL CHKXER( 'DORCSD', INFOT, NOUT, LERR, OK )
550         INFOT = 26
551         CALL DORCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
552     $                 1, 1, 1, A, 1, A,
553     $                 1, A, 1, A, 1, A,
554     $                 A, 1, A, 1, A, 1, A,
555     $                 -1, W, LW, IW, INFO )
556         CALL CHKXER( 'DORCSD', INFOT, NOUT, LERR, OK )
557         NT = NT + 8
558*
559*     Test error exits for the GQR path.
560*
561      ELSE IF( LSAMEN( 3, PATH, 'GQR' ) ) THEN
562*
563*        DGGQRF
564*
565         SRNAMT = 'DGGQRF'
566         INFOT = 1
567         CALL DGGQRF( -1, 0, 0, A, 1, R1, B, 1, R2, W, LW, INFO )
568         CALL CHKXER( 'DGGQRF', INFOT, NOUT, LERR, OK )
569         INFOT = 2
570         CALL DGGQRF( 0, -1, 0, A, 1, R1, B, 1, R2, W, LW, INFO )
571         CALL CHKXER( 'DGGQRF', INFOT, NOUT, LERR, OK )
572         INFOT = 3
573         CALL DGGQRF( 0, 0, -1, A, 1, R1, B, 1, R2, W, LW, INFO )
574         CALL CHKXER( 'DGGQRF', INFOT, NOUT, LERR, OK )
575         INFOT = 5
576         CALL DGGQRF( 0, 0, 0, A, 0, R1, B, 1, R2, W, LW, INFO )
577         CALL CHKXER( 'DGGQRF', INFOT, NOUT, LERR, OK )
578         INFOT = 8
579         CALL DGGQRF( 0, 0, 0, A, 1, R1, B, 0, R2, W, LW, INFO )
580         CALL CHKXER( 'DGGQRF', INFOT, NOUT, LERR, OK )
581         INFOT = 11
582         CALL DGGQRF( 1, 1, 2, A, 1, R1, B, 1, R2, W, 1, INFO )
583         CALL CHKXER( 'DGGQRF', INFOT, NOUT, LERR, OK )
584         NT = NT + 6
585*
586*        DGGRQF
587*
588         SRNAMT = 'DGGRQF'
589         INFOT = 1
590         CALL DGGRQF( -1, 0, 0, A, 1, R1, B, 1, R2, W, LW, INFO )
591         CALL CHKXER( 'DGGRQF', INFOT, NOUT, LERR, OK )
592         INFOT = 2
593         CALL DGGRQF( 0, -1, 0, A, 1, R1, B, 1, R2, W, LW, INFO )
594         CALL CHKXER( 'DGGRQF', INFOT, NOUT, LERR, OK )
595         INFOT = 3
596         CALL DGGRQF( 0, 0, -1, A, 1, R1, B, 1, R2, W, LW, INFO )
597         CALL CHKXER( 'DGGRQF', INFOT, NOUT, LERR, OK )
598         INFOT = 5
599         CALL DGGRQF( 0, 0, 0, A, 0, R1, B, 1, R2, W, LW, INFO )
600         CALL CHKXER( 'DGGRQF', INFOT, NOUT, LERR, OK )
601         INFOT = 8
602         CALL DGGRQF( 0, 0, 0, A, 1, R1, B, 0, R2, W, LW, INFO )
603         CALL CHKXER( 'DGGRQF', INFOT, NOUT, LERR, OK )
604         INFOT = 11
605         CALL DGGRQF( 1, 1, 2, A, 1, R1, B, 1, R2, W, 1, INFO )
606         CALL CHKXER( 'DGGRQF', INFOT, NOUT, LERR, OK )
607         NT = NT + 6
608*
609*     Test error exits for the DGS, DGV, DGX, and DXV paths.
610*
611      ELSE IF( LSAMEN( 3, PATH, 'DGS' ) .OR.
612     $         LSAMEN( 3, PATH, 'DGV' ) .OR.
613     $         LSAMEN( 3, PATH, 'DGX' ) .OR. LSAMEN( 3, PATH, 'DXV' ) )
614     $          THEN
615*
616*        DGGES
617*
618         SRNAMT = 'DGGES '
619         INFOT = 1
620         CALL DGGES( '/', 'N', 'S', DLCTES, 1, A, 1, B, 1, SDIM, R1, R2,
621     $               R3, Q, 1, U, 1, W, 1, BW, INFO )
622         CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
623         INFOT = 2
624         CALL DGGES( 'N', '/', 'S', DLCTES, 1, A, 1, B, 1, SDIM, R1, R2,
625     $               R3, Q, 1, U, 1, W, 1, BW, INFO )
626         CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
627         INFOT = 3
628         CALL DGGES( 'N', 'V', '/', DLCTES, 1, A, 1, B, 1, SDIM, R1, R2,
629     $               R3, Q, 1, U, 1, W, 1, BW, INFO )
630         CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
631         INFOT = 5
632         CALL DGGES( 'N', 'V', 'S', DLCTES, -1, A, 1, B, 1, SDIM, R1,
633     $               R2, R3, Q, 1, U, 1, W, 1, BW, INFO )
634         CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
635         INFOT = 7
636         CALL DGGES( 'N', 'V', 'S', DLCTES, 1, A, 0, B, 1, SDIM, R1, R2,
637     $               R3, Q, 1, U, 1, W, 1, BW, INFO )
638         CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
639         INFOT = 9
640         CALL DGGES( 'N', 'V', 'S', DLCTES, 1, A, 1, B, 0, SDIM, R1, R2,
641     $               R3, Q, 1, U, 1, W, 1, BW, INFO )
642         CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
643         INFOT = 15
644         CALL DGGES( 'N', 'V', 'S', DLCTES, 1, A, 1, B, 1, SDIM, R1, R2,
645     $               R3, Q, 0, U, 1, W, 1, BW, INFO )
646         CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
647         INFOT = 15
648         CALL DGGES( 'V', 'V', 'S', DLCTES, 2, A, 2, B, 2, SDIM, R1, R2,
649     $               R3, Q, 1, U, 2, W, 1, BW, INFO )
650         CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
651         INFOT = 17
652         CALL DGGES( 'N', 'V', 'S', DLCTES, 1, A, 1, B, 1, SDIM, R1, R2,
653     $               R3, Q, 1, U, 0, W, 1, BW, INFO )
654         CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
655         INFOT = 17
656         CALL DGGES( 'V', 'V', 'S', DLCTES, 2, A, 2, B, 2, SDIM, R1, R2,
657     $               R3, Q, 2, U, 1, W, 1, BW, INFO )
658         CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
659         INFOT = 19
660         CALL DGGES( 'V', 'V', 'S', DLCTES, 2, A, 2, B, 2, SDIM, R1, R2,
661     $               R3, Q, 2, U, 2, W, 1, BW, INFO )
662         CALL CHKXER( 'DGGES ', INFOT, NOUT, LERR, OK )
663         NT = NT + 11
664*
665*        DGGESX
666*
667         SRNAMT = 'DGGESX'
668         INFOT = 1
669         CALL DGGESX( '/', 'N', 'S', DLCTSX, 'N', 1, A, 1, B, 1, SDIM,
670     $                R1, R2, R3, Q, 1, U, 1, RCE, RCV, W, 1, IW, 1, BW,
671     $                INFO )
672         CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
673         INFOT = 2
674         CALL DGGESX( 'N', '/', 'S', DLCTSX, 'N', 1, A, 1, B, 1, SDIM,
675     $                R1, R2, R3, Q, 1, U, 1, RCE, RCV, W, 1, IW, 1, BW,
676     $                INFO )
677         CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
678         INFOT = 3
679         CALL DGGESX( 'V', 'V', '/', DLCTSX, 'N', 1, A, 1, B, 1, SDIM,
680     $                R1, R2, R3, Q, 1, U, 1, RCE, RCV, W, 1, IW, 1, BW,
681     $                INFO )
682         CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
683         INFOT = 5
684         CALL DGGESX( 'V', 'V', 'S', DLCTSX, '/', 1, A, 1, B, 1, SDIM,
685     $                R1, R2, R3, Q, 1, U, 1, RCE, RCV, W, 1, IW, 1, BW,
686     $                INFO )
687         CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
688         INFOT = 6
689         CALL DGGESX( 'V', 'V', 'S', DLCTSX, 'B', -1, A, 1, B, 1, SDIM,
690     $                R1, R2, R3, Q, 1, U, 1, RCE, RCV, W, 1, IW, 1, BW,
691     $                INFO )
692         CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
693         INFOT = 8
694         CALL DGGESX( 'V', 'V', 'S', DLCTSX, 'B', 1, A, 0, B, 1, SDIM,
695     $                R1, R2, R3, Q, 1, U, 1, RCE, RCV, W, 1, IW, 1, BW,
696     $                INFO )
697         CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
698         INFOT = 10
699         CALL DGGESX( 'V', 'V', 'S', DLCTSX, 'B', 1, A, 1, B, 0, SDIM,
700     $                R1, R2, R3, Q, 1, U, 1, RCE, RCV, W, 1, IW, 1, BW,
701     $                INFO )
702         CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
703         INFOT = 16
704         CALL DGGESX( 'V', 'V', 'S', DLCTSX, 'B', 1, A, 1, B, 1, SDIM,
705     $                R1, R2, R3, Q, 0, U, 1, RCE, RCV, W, 1, IW, 1, BW,
706     $                INFO )
707         CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
708         INFOT = 16
709         CALL DGGESX( 'V', 'V', 'S', DLCTSX, 'B', 2, A, 2, B, 2, SDIM,
710     $                R1, R2, R3, Q, 1, U, 1, RCE, RCV, W, 1, IW, 1, BW,
711     $                INFO )
712         CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
713         INFOT = 18
714         CALL DGGESX( 'V', 'V', 'S', DLCTSX, 'B', 1, A, 1, B, 1, SDIM,
715     $                R1, R2, R3, Q, 1, U, 0, RCE, RCV, W, 1, IW, 1, BW,
716     $                INFO )
717         CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
718         INFOT = 18
719         CALL DGGESX( 'V', 'V', 'S', DLCTSX, 'B', 2, A, 2, B, 2, SDIM,
720     $                R1, R2, R3, Q, 2, U, 1, RCE, RCV, W, 1, IW, 1, BW,
721     $                INFO )
722         CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
723         INFOT = 22
724         CALL DGGESX( 'V', 'V', 'S', DLCTSX, 'B', 2, A, 2, B, 2, SDIM,
725     $                R1, R2, R3, Q, 2, U, 2, RCE, RCV, W, 1, IW, 1, BW,
726     $                INFO )
727         CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
728         INFOT = 24
729         CALL DGGESX( 'V', 'V', 'S', DLCTSX, 'V', 1, A, 1, B, 1, SDIM,
730     $                R1, R2, R3, Q, 1, U, 1, RCE, RCV, W, 32, IW, 0,
731     $                BW, INFO )
732         CALL CHKXER( 'DGGESX', INFOT, NOUT, LERR, OK )
733         NT = NT + 13
734*
735*        DGGEV
736*
737         SRNAMT = 'DGGEV '
738         INFOT = 1
739         CALL DGGEV( '/', 'N', 1, A, 1, B, 1, R1, R2, R3, Q, 1, U, 1, W,
740     $               1, INFO )
741         CALL CHKXER( 'DGGEV ', INFOT, NOUT, LERR, OK )
742         INFOT = 2
743         CALL DGGEV( 'N', '/', 1, A, 1, B, 1, R1, R2, R3, Q, 1, U, 1, W,
744     $               1, INFO )
745         CALL CHKXER( 'DGGEV ', INFOT, NOUT, LERR, OK )
746         INFOT = 3
747         CALL DGGEV( 'V', 'V', -1, A, 1, B, 1, R1, R2, R3, Q, 1, U, 1,
748     $               W, 1, INFO )
749         CALL CHKXER( 'DGGEV ', INFOT, NOUT, LERR, OK )
750         INFOT = 5
751         CALL DGGEV( 'V', 'V', 1, A, 0, B, 1, R1, R2, R3, Q, 1, U, 1, W,
752     $               1, INFO )
753         CALL CHKXER( 'DGGEV ', INFOT, NOUT, LERR, OK )
754         INFOT = 7
755         CALL DGGEV( 'V', 'V', 1, A, 1, B, 0, R1, R2, R3, Q, 1, U, 1, W,
756     $               1, INFO )
757         CALL CHKXER( 'DGGEV ', INFOT, NOUT, LERR, OK )
758         INFOT = 12
759         CALL DGGEV( 'N', 'V', 1, A, 1, B, 1, R1, R2, R3, Q, 0, U, 1, W,
760     $               1, INFO )
761         CALL CHKXER( 'DGGEV ', INFOT, NOUT, LERR, OK )
762         INFOT = 12
763         CALL DGGEV( 'V', 'V', 2, A, 2, B, 2, R1, R2, R3, Q, 1, U, 2, W,
764     $               1, INFO )
765         CALL CHKXER( 'DGGEV ', INFOT, NOUT, LERR, OK )
766         INFOT = 14
767         CALL DGGEV( 'V', 'N', 2, A, 2, B, 2, R1, R2, R3, Q, 2, U, 0, W,
768     $               1, INFO )
769         CALL CHKXER( 'DGGEV ', INFOT, NOUT, LERR, OK )
770         INFOT = 14
771         CALL DGGEV( 'V', 'V', 2, A, 2, B, 2, R1, R2, R3, Q, 2, U, 1, W,
772     $               1, INFO )
773         CALL CHKXER( 'DGGEV ', INFOT, NOUT, LERR, OK )
774         INFOT = 16
775         CALL DGGEV( 'V', 'V', 1, A, 1, B, 1, R1, R2, R3, Q, 1, U, 1, W,
776     $               1, INFO )
777         CALL CHKXER( 'DGGEV ', INFOT, NOUT, LERR, OK )
778         NT = NT + 10
779*
780*        DGGEVX
781*
782         SRNAMT = 'DGGEVX'
783         INFOT = 1
784         CALL DGGEVX( '/', 'N', 'N', 'N', 1, A, 1, B, 1, R1, R2, R3, Q,
785     $                1, U, 1, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
786     $                W, 1, IW, BW, INFO )
787         CALL CHKXER( 'DGGEVX', INFOT, NOUT, LERR, OK )
788         INFOT = 2
789         CALL DGGEVX( 'N', '/', 'N', 'N', 1, A, 1, B, 1, R1, R2, R3, Q,
790     $                1, U, 1, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
791     $                W, 1, IW, BW, INFO )
792         CALL CHKXER( 'DGGEVX', INFOT, NOUT, LERR, OK )
793         INFOT = 3
794         CALL DGGEVX( 'N', 'N', '/', 'N', 1, A, 1, B, 1, R1, R2, R3, Q,
795     $                1, U, 1, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
796     $                W, 1, IW, BW, INFO )
797         CALL CHKXER( 'DGGEVX', INFOT, NOUT, LERR, OK )
798         INFOT = 4
799         CALL DGGEVX( 'N', 'N', 'N', '/', 1, A, 1, B, 1, R1, R2, R3, Q,
800     $                1, U, 1, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
801     $                W, 1, IW, BW, INFO )
802         CALL CHKXER( 'DGGEVX', INFOT, NOUT, LERR, OK )
803         INFOT = 5
804         CALL DGGEVX( 'N', 'N', 'N', 'N', -1, A, 1, B, 1, R1, R2, R3, Q,
805     $                1, U, 1, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
806     $                W, 1, IW, BW, INFO )
807         CALL CHKXER( 'DGGEVX', INFOT, NOUT, LERR, OK )
808         INFOT = 7
809         CALL DGGEVX( 'N', 'N', 'N', 'N', 1, A, 0, B, 1, R1, R2, R3, Q,
810     $                1, U, 1, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
811     $                W, 1, IW, BW, INFO )
812         CALL CHKXER( 'DGGEVX', INFOT, NOUT, LERR, OK )
813         INFOT = 9
814         CALL DGGEVX( 'N', 'N', 'N', 'N', 1, A, 1, B, 0, R1, R2, R3, Q,
815     $                1, U, 1, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
816     $                W, 1, IW, BW, INFO )
817         CALL CHKXER( 'DGGEVX', INFOT, NOUT, LERR, OK )
818         INFOT = 14
819         CALL DGGEVX( 'N', 'N', 'N', 'N', 1, A, 1, B, 1, R1, R2, R3, Q,
820     $                0, U, 1, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
821     $                W, 1, IW, BW, INFO )
822         CALL CHKXER( 'DGGEVX', INFOT, NOUT, LERR, OK )
823         INFOT = 14
824         CALL DGGEVX( 'N', 'V', 'N', 'N', 2, A, 2, B, 2, R1, R2, R3, Q,
825     $                1, U, 2, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
826     $                W, 1, IW, BW, INFO )
827         CALL CHKXER( 'DGGEVX', INFOT, NOUT, LERR, OK )
828         INFOT = 16
829         CALL DGGEVX( 'N', 'N', 'N', 'N', 1, A, 1, B, 1, R1, R2, R3, Q,
830     $                1, U, 0, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
831     $                W, 1, IW, BW, INFO )
832         CALL CHKXER( 'DGGEVX', INFOT, NOUT, LERR, OK )
833         INFOT = 16
834         CALL DGGEVX( 'N', 'N', 'V', 'N', 2, A, 2, B, 2, R1, R2, R3, Q,
835     $                2, U, 1, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
836     $                W, 1, IW, BW, INFO )
837         CALL CHKXER( 'DGGEVX', INFOT, NOUT, LERR, OK )
838         INFOT = 26
839         CALL DGGEVX( 'N', 'N', 'V', 'N', 2, A, 2, B, 2, R1, R2, R3, Q,
840     $                2, U, 2, ILO, IHI, LS, RS, ANRM, BNRM, RCE, RCV,
841     $                W, 1, IW, BW, INFO )
842         CALL CHKXER( 'DGGEVX', INFOT, NOUT, LERR, OK )
843         NT = NT + 12
844*
845*        DTGEXC
846*
847         SRNAMT = 'DTGEXC'
848         INFOT = 3
849         CALL DTGEXC( .TRUE., .TRUE., -1, A, 1, B, 1, Q, 1, Z, 1, IFST,
850     $                ILST, W, 1, INFO )
851         CALL CHKXER( 'DTGEXC', INFOT, NOUT, LERR, OK )
852         INFOT = 5
853         CALL DTGEXC( .TRUE., .TRUE., 1, A, 0, B, 1, Q, 1, Z, 1, IFST,
854     $                ILST, W, 1, INFO )
855         CALL CHKXER( 'DTGEXC', INFOT, NOUT, LERR, OK )
856         INFOT = 7
857         CALL DTGEXC( .TRUE., .TRUE., 1, A, 1, B, 0, Q, 1, Z, 1, IFST,
858     $                ILST, W, 1, INFO )
859         CALL CHKXER( 'DTGEXC', INFOT, NOUT, LERR, OK )
860         INFOT = 9
861         CALL DTGEXC( .FALSE., .TRUE., 1, A, 1, B, 1, Q, 0, Z, 1, IFST,
862     $                ILST, W, 1, INFO )
863         CALL CHKXER( 'DTGEXC', INFOT, NOUT, LERR, OK )
864         INFOT = 9
865         CALL DTGEXC( .TRUE., .TRUE., 1, A, 1, B, 1, Q, 0, Z, 1, IFST,
866     $                ILST, W, 1, INFO )
867         CALL CHKXER( 'DTGEXC', INFOT, NOUT, LERR, OK )
868         INFOT = 11
869         CALL DTGEXC( .TRUE., .FALSE., 1, A, 1, B, 1, Q, 1, Z, 0, IFST,
870     $                ILST, W, 1, INFO )
871         CALL CHKXER( 'DTGEXC', INFOT, NOUT, LERR, OK )
872         INFOT = 11
873         CALL DTGEXC( .TRUE., .TRUE., 1, A, 1, B, 1, Q, 1, Z, 0, IFST,
874     $                ILST, W, 1, INFO )
875         CALL CHKXER( 'DTGEXC', INFOT, NOUT, LERR, OK )
876         INFOT = 15
877         CALL DTGEXC( .TRUE., .TRUE., 1, A, 1, B, 1, Q, 1, Z, 1, IFST,
878     $                ILST, W, 0, INFO )
879         CALL CHKXER( 'DTGEXC', INFOT, NOUT, LERR, OK )
880         NT = NT + 8
881*
882*        DTGSEN
883*
884         SRNAMT = 'DTGSEN'
885         INFOT = 1
886         CALL DTGSEN( -1, .TRUE., .TRUE., SEL, 1, A, 1, B, 1, R1, R2,
887     $                R3, Q, 1, Z, 1, M, TOLA, TOLB, RCV, W, 1, IW, 1,
888     $                INFO )
889         CALL CHKXER( 'DTGSEN', INFOT, NOUT, LERR, OK )
890         INFOT = 5
891         CALL DTGSEN( 1, .TRUE., .TRUE., SEL, -1, A, 1, B, 1, R1, R2,
892     $                R3, Q, 1, Z, 1, M, TOLA, TOLB, RCV, W, 1, IW, 1,
893     $                INFO )
894         CALL CHKXER( 'DTGSEN', INFOT, NOUT, LERR, OK )
895         INFOT = 7
896         CALL DTGSEN( 1, .TRUE., .TRUE., SEL, 1, A, 0, B, 1, R1, R2, R3,
897     $                Q, 1, Z, 1, M, TOLA, TOLB, RCV, W, 1, IW, 1,
898     $                INFO )
899         CALL CHKXER( 'DTGSEN', INFOT, NOUT, LERR, OK )
900         INFOT = 9
901         CALL DTGSEN( 1, .TRUE., .TRUE., SEL, 1, A, 1, B, 0, R1, R2, R3,
902     $                Q, 1, Z, 1, M, TOLA, TOLB, RCV, W, 1, IW, 1,
903     $                INFO )
904         CALL CHKXER( 'DTGSEN', INFOT, NOUT, LERR, OK )
905         INFOT = 14
906         CALL DTGSEN( 1, .TRUE., .TRUE., SEL, 1, A, 1, B, 1, R1, R2, R3,
907     $                Q, 0, Z, 1, M, TOLA, TOLB, RCV, W, 1, IW, 1,
908     $                INFO )
909         CALL CHKXER( 'DTGSEN', INFOT, NOUT, LERR, OK )
910         INFOT = 16
911         CALL DTGSEN( 1, .TRUE., .TRUE., SEL, 1, A, 1, B, 1, R1, R2, R3,
912     $                Q, 1, Z, 0, M, TOLA, TOLB, RCV, W, 1, IW, 1,
913     $                INFO )
914         CALL CHKXER( 'DTGSEN', INFOT, NOUT, LERR, OK )
915         INFOT = 22
916         CALL DTGSEN( 0, .TRUE., .TRUE., SEL, 1, A, 1, B, 1, R1, R2, R3,
917     $                Q, 1, Z, 1, M, TOLA, TOLB, RCV, W, 1, IW, 1,
918     $                INFO )
919         CALL CHKXER( 'DTGSEN', INFOT, NOUT, LERR, OK )
920         INFOT = 22
921         CALL DTGSEN( 1, .TRUE., .TRUE., SEL, 1, A, 1, B, 1, R1, R2, R3,
922     $                Q, 1, Z, 1, M, TOLA, TOLB, RCV, W, 1, IW, 1,
923     $                INFO )
924         CALL CHKXER( 'DTGSEN', INFOT, NOUT, LERR, OK )
925         INFOT = 22
926         CALL DTGSEN( 2, .TRUE., .TRUE., SEL, 1, A, 1, B, 1, R1, R2, R3,
927     $                Q, 1, Z, 1, M, TOLA, TOLB, RCV, W, 1, IW, 1,
928     $                INFO )
929         CALL CHKXER( 'DTGSEN', INFOT, NOUT, LERR, OK )
930         INFOT = 24
931         CALL DTGSEN( 0, .TRUE., .TRUE., SEL, 1, A, 1, B, 1, R1, R2, R3,
932     $                Q, 1, Z, 1, M, TOLA, TOLB, RCV, W, 20, IW, 0,
933     $                INFO )
934         CALL CHKXER( 'DTGSEN', INFOT, NOUT, LERR, OK )
935         INFOT = 24
936         CALL DTGSEN( 1, .TRUE., .TRUE., SEL, 1, A, 1, B, 1, R1, R2, R3,
937     $                Q, 1, Z, 1, M, TOLA, TOLB, RCV, W, 20, IW, 0,
938     $                INFO )
939         CALL CHKXER( 'DTGSEN', INFOT, NOUT, LERR, OK )
940         INFOT = 24
941         CALL DTGSEN( 2, .TRUE., .TRUE., SEL, 1, A, 1, B, 1, R1, R2, R3,
942     $                Q, 1, Z, 1, M, TOLA, TOLB, RCV, W, 20, IW, 1,
943     $                INFO )
944         CALL CHKXER( 'DTGSEN', INFOT, NOUT, LERR, OK )
945         NT = NT + 12
946*
947*        DTGSNA
948*
949         SRNAMT = 'DTGSNA'
950         INFOT = 1
951         CALL DTGSNA( '/', 'A', SEL, 1, A, 1, B, 1, Q, 1, U, 1, R1, R2,
952     $                1, M, W, 1, IW, INFO )
953         CALL CHKXER( 'DTGSNA', INFOT, NOUT, LERR, OK )
954         INFOT = 2
955         CALL DTGSNA( 'B', '/', SEL, 1, A, 1, B, 1, Q, 1, U, 1, R1, R2,
956     $                1, M, W, 1, IW, INFO )
957         CALL CHKXER( 'DTGSNA', INFOT, NOUT, LERR, OK )
958         INFOT = 4
959         CALL DTGSNA( 'B', 'A', SEL, -1, A, 1, B, 1, Q, 1, U, 1, R1, R2,
960     $                1, M, W, 1, IW, INFO )
961         CALL CHKXER( 'DTGSNA', INFOT, NOUT, LERR, OK )
962         INFOT = 6
963         CALL DTGSNA( 'B', 'A', SEL, 1, A, 0, B, 1, Q, 1, U, 1, R1, R2,
964     $                1, M, W, 1, IW, INFO )
965         CALL CHKXER( 'DTGSNA', INFOT, NOUT, LERR, OK )
966         INFOT = 8
967         CALL DTGSNA( 'B', 'A', SEL, 1, A, 1, B, 0, Q, 1, U, 1, R1, R2,
968     $                1, M, W, 1, IW, INFO )
969         CALL CHKXER( 'DTGSNA', INFOT, NOUT, LERR, OK )
970         INFOT = 10
971         CALL DTGSNA( 'E', 'A', SEL, 1, A, 1, B, 1, Q, 0, U, 1, R1, R2,
972     $                1, M, W, 1, IW, INFO )
973         CALL CHKXER( 'DTGSNA', INFOT, NOUT, LERR, OK )
974         INFOT = 12
975         CALL DTGSNA( 'E', 'A', SEL, 1, A, 1, B, 1, Q, 1, U, 0, R1, R2,
976     $                1, M, W, 1, IW, INFO )
977         CALL CHKXER( 'DTGSNA', INFOT, NOUT, LERR, OK )
978         INFOT = 15
979         CALL DTGSNA( 'E', 'A', SEL, 1, A, 1, B, 1, Q, 1, U, 1, R1, R2,
980     $                0, M, W, 1, IW, INFO )
981         CALL CHKXER( 'DTGSNA', INFOT, NOUT, LERR, OK )
982         INFOT = 18
983         CALL DTGSNA( 'E', 'A', SEL, 1, A, 1, B, 1, Q, 1, U, 1, R1, R2,
984     $                1, M, W, 0, IW, INFO )
985         CALL CHKXER( 'DTGSNA', INFOT, NOUT, LERR, OK )
986         NT = NT + 9
987*
988*        DTGSYL
989*
990         SRNAMT = 'DTGSYL'
991         INFOT = 1
992         CALL DTGSYL( '/', 0, 1, 1, A, 1, B, 1, Q, 1, U, 1, V, 1, Z, 1,
993     $                SCALE, DIF, W, 1, IW, INFO )
994         CALL CHKXER( 'DTGSYL', INFOT, NOUT, LERR, OK )
995         INFOT = 2
996         CALL DTGSYL( 'N', -1, 1, 1, A, 1, B, 1, Q, 1, U, 1, V, 1, Z, 1,
997     $                SCALE, DIF, W, 1, IW, INFO )
998         CALL CHKXER( 'DTGSYL', INFOT, NOUT, LERR, OK )
999         INFOT = 3
1000         CALL DTGSYL( 'N', 0, 0, 1, A, 1, B, 1, Q, 1, U, 1, V, 1, Z, 1,
1001     $                SCALE, DIF, W, 1, IW, INFO )
1002         CALL CHKXER( 'DTGSYL', INFOT, NOUT, LERR, OK )
1003         INFOT = 4
1004         CALL DTGSYL( 'N', 0, 1, 0, A, 1, B, 1, Q, 1, U, 1, V, 1, Z, 1,
1005     $                SCALE, DIF, W, 1, IW, INFO )
1006         CALL CHKXER( 'DTGSYL', INFOT, NOUT, LERR, OK )
1007         INFOT = 6
1008         CALL DTGSYL( 'N', 0, 1, 1, A, 0, B, 1, Q, 1, U, 1, V, 1, Z, 1,
1009     $                SCALE, DIF, W, 1, IW, INFO )
1010         CALL CHKXER( 'DTGSYL', INFOT, NOUT, LERR, OK )
1011         INFOT = 8
1012         CALL DTGSYL( 'N', 0, 1, 1, A, 1, B, 0, Q, 1, U, 1, V, 1, Z, 1,
1013     $                SCALE, DIF, W, 1, IW, INFO )
1014         CALL CHKXER( 'DTGSYL', INFOT, NOUT, LERR, OK )
1015         INFOT = 10
1016         CALL DTGSYL( 'N', 0, 1, 1, A, 1, B, 1, Q, 0, U, 1, V, 1, Z, 1,
1017     $                SCALE, DIF, W, 1, IW, INFO )
1018         CALL CHKXER( 'DTGSYL', INFOT, NOUT, LERR, OK )
1019         INFOT = 12
1020         CALL DTGSYL( 'N', 0, 1, 1, A, 1, B, 1, Q, 1, U, 0, V, 1, Z, 1,
1021     $                SCALE, DIF, W, 1, IW, INFO )
1022         CALL CHKXER( 'DTGSYL', INFOT, NOUT, LERR, OK )
1023         INFOT = 14
1024         CALL DTGSYL( 'N', 0, 1, 1, A, 1, B, 1, Q, 1, U, 1, V, 0, Z, 1,
1025     $                SCALE, DIF, W, 1, IW, INFO )
1026         CALL CHKXER( 'DTGSYL', INFOT, NOUT, LERR, OK )
1027         INFOT = 16
1028         CALL DTGSYL( 'N', 0, 1, 1, A, 1, B, 1, Q, 1, U, 1, V, 1, Z, 0,
1029     $                SCALE, DIF, W, 1, IW, INFO )
1030         CALL CHKXER( 'DTGSYL', INFOT, NOUT, LERR, OK )
1031         INFOT = 20
1032         CALL DTGSYL( 'N', 1, 1, 1, A, 1, B, 1, Q, 1, U, 1, V, 1, Z, 1,
1033     $                SCALE, DIF, W, 1, IW, INFO )
1034         CALL CHKXER( 'DTGSYL', INFOT, NOUT, LERR, OK )
1035         INFOT = 20
1036         CALL DTGSYL( 'N', 2, 1, 1, A, 1, B, 1, Q, 1, U, 1, V, 1, Z, 1,
1037     $                SCALE, DIF, W, 1, IW, INFO )
1038         CALL CHKXER( 'DTGSYL', INFOT, NOUT, LERR, OK )
1039         NT = NT + 12
1040      END IF
1041*
1042*     Print a summary line.
1043*
1044      IF( OK ) THEN
1045         WRITE( NOUT, FMT = 9999 )PATH, NT
1046      ELSE
1047         WRITE( NOUT, FMT = 9998 )PATH
1048      END IF
1049*
1050 9999 FORMAT( 1X, A3, ' routines passed the tests of the error exits (',
1051     $      I3, ' tests done)' )
1052 9998 FORMAT( ' *** ', A3, ' routines failed the tests of the error ',
1053     $      'exits ***' )
1054*
1055      RETURN
1056*
1057*     End of DERRGG
1058*
1059      END
1060