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