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