LAPACK  3.5.0
LAPACK: Linear Algebra PACKage
 All Classes Files Functions Variables Typedefs Macros
zerrgg.f
Go to the documentation of this file.
1 *> \brief \b ZERRGG
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 ZERRGG( 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 *> ZERRGG tests the error exits for ZGGES, ZGGESX, ZGGEV, ZGGEVX,
25 *> ZGGGLM, ZGGHRD, ZGGLSE, ZGGQRF, ZGGRQF, ZGGSVD, ZGGSVP, ZHGEQZ,
26 *> ZTGEVC, ZTGEXC, ZTGSEN, ZTGSJA, ZTGSNA, ZTGSYL, and ZUNCSD.
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 complex16_eig
55 *
56 * =====================================================================
57  SUBROUTINE zerrgg( 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, ihi, ilo, 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( lw )
86  DOUBLE PRECISION ls( nmax ), r1( nmax ), r2( nmax ),
87  $ rce( nmax ), rcv( nmax ), rs( nmax ), rw( lw )
88  COMPLEX*16 a( nmax, nmax ), alpha( nmax ),
89  $ b( nmax, nmax ), beta( nmax ), q( nmax, nmax ),
90  $ tau( nmax ), u( nmax, nmax ), v( nmax, nmax ),
91  $ w( lw ), z( nmax, nmax )
92 * ..
93 * .. External Functions ..
94  LOGICAL lsamen, zlctes, zlctsx
95  EXTERNAL lsamen, zlctes, zlctsx
96 * ..
97 * .. External Subroutines ..
98  EXTERNAL chkxer, zgges, zggesx, zggev, zggevx, zggglm,
101  $ ztgsyl, zuncsd
102 * ..
103 * .. Scalars in Common ..
104  LOGICAL lerr, ok
105  CHARACTER*32 srnamt
106  INTEGER infot, nout
107 * ..
108 * .. Common blocks ..
109  COMMON / infoc / infot, nout, ok, lerr
110  COMMON / srnamc / srnamt
111 * ..
112 * .. Executable Statements ..
113 *
114  nout = nunit
115  WRITE( nout, fmt = * )
116  c2 = path( 2: 3 )
117 *
118 * Set the variables to innocuous values.
119 *
120  DO 20 j = 1, nmax
121  sel( j ) = .true.
122  DO 10 i = 1, nmax
123  a( i, j ) = zero
124  b( i, j ) = zero
125  10 CONTINUE
126  20 CONTINUE
127  DO 30 i = 1, nmax
128  a( i, i ) = one
129  b( i, i ) = one
130  30 CONTINUE
131  ok = .true.
132  tola = 1.0d0
133  tolb = 1.0d0
134  ifst = 1
135  ilst = 1
136  nt = 0
137 *
138 * Test error exits for the GG path.
139 *
140  IF( lsamen( 2, c2, 'GG' ) ) THEN
141 *
142 * ZGGHRD
143 *
144  srnamt = 'ZGGHRD'
145  infot = 1
146  CALL zgghrd( '/', 'N', 0, 1, 0, a, 1, b, 1, q, 1, z, 1, info )
147  CALL chkxer( 'ZGGHRD', infot, nout, lerr, ok )
148  infot = 2
149  CALL zgghrd( 'N', '/', 0, 1, 0, a, 1, b, 1, q, 1, z, 1, info )
150  CALL chkxer( 'ZGGHRD', infot, nout, lerr, ok )
151  infot = 3
152  CALL zgghrd( 'N', 'N', -1, 0, 0, a, 1, b, 1, q, 1, z, 1, info )
153  CALL chkxer( 'ZGGHRD', infot, nout, lerr, ok )
154  infot = 4
155  CALL zgghrd( 'N', 'N', 0, 0, 0, a, 1, b, 1, q, 1, z, 1, info )
156  CALL chkxer( 'ZGGHRD', infot, nout, lerr, ok )
157  infot = 5
158  CALL zgghrd( 'N', 'N', 0, 1, 1, a, 1, b, 1, q, 1, z, 1, info )
159  CALL chkxer( 'ZGGHRD', infot, nout, lerr, ok )
160  infot = 7
161  CALL zgghrd( 'N', 'N', 2, 1, 1, a, 1, b, 2, q, 1, z, 1, info )
162  CALL chkxer( 'ZGGHRD', infot, nout, lerr, ok )
163  infot = 9
164  CALL zgghrd( 'N', 'N', 2, 1, 1, a, 2, b, 1, q, 1, z, 1, info )
165  CALL chkxer( 'ZGGHRD', infot, nout, lerr, ok )
166  infot = 11
167  CALL zgghrd( 'V', 'N', 2, 1, 1, a, 2, b, 2, q, 1, z, 1, info )
168  CALL chkxer( 'ZGGHRD', infot, nout, lerr, ok )
169  infot = 13
170  CALL zgghrd( 'N', 'V', 2, 1, 1, a, 2, b, 2, q, 1, z, 1, info )
171  CALL chkxer( 'ZGGHRD', infot, nout, lerr, ok )
172  nt = nt + 9
173 *
174 * ZHGEQZ
175 *
176  srnamt = 'ZHGEQZ'
177  infot = 1
178  CALL zhgeqz( '/', 'N', 'N', 0, 1, 0, a, 1, b, 1, alpha, beta,
179  $ q, 1, z, 1, w, 1, rw, info )
180  CALL chkxer( 'ZHGEQZ', infot, nout, lerr, ok )
181  infot = 2
182  CALL zhgeqz( 'E', '/', 'N', 0, 1, 0, a, 1, b, 1, alpha, beta,
183  $ q, 1, z, 1, w, 1, rw, info )
184  CALL chkxer( 'ZHGEQZ', infot, nout, lerr, ok )
185  infot = 3
186  CALL zhgeqz( 'E', 'N', '/', 0, 1, 0, a, 1, b, 1, alpha, beta,
187  $ q, 1, z, 1, w, 1, rw, info )
188  CALL chkxer( 'ZHGEQZ', infot, nout, lerr, ok )
189  infot = 4
190  CALL zhgeqz( 'E', 'N', 'N', -1, 0, 0, a, 1, b, 1, alpha, beta,
191  $ q, 1, z, 1, w, 1, rw, info )
192  CALL chkxer( 'ZHGEQZ', infot, nout, lerr, ok )
193  infot = 5
194  CALL zhgeqz( 'E', 'N', 'N', 0, 0, 0, a, 1, b, 1, alpha, beta,
195  $ q, 1, z, 1, w, 1, rw, info )
196  CALL chkxer( 'ZHGEQZ', infot, nout, lerr, ok )
197  infot = 6
198  CALL zhgeqz( 'E', 'N', 'N', 0, 1, 1, a, 1, b, 1, alpha, beta,
199  $ q, 1, z, 1, w, 1, rw, info )
200  CALL chkxer( 'ZHGEQZ', infot, nout, lerr, ok )
201  infot = 8
202  CALL zhgeqz( 'E', 'N', 'N', 2, 1, 1, a, 1, b, 2, alpha, beta,
203  $ q, 1, z, 1, w, 1, rw, info )
204  CALL chkxer( 'ZHGEQZ', infot, nout, lerr, ok )
205  infot = 10
206  CALL zhgeqz( 'E', 'N', 'N', 2, 1, 1, a, 2, b, 1, alpha, beta,
207  $ q, 1, z, 1, w, 1, rw, info )
208  CALL chkxer( 'ZHGEQZ', infot, nout, lerr, ok )
209  infot = 14
210  CALL zhgeqz( 'E', 'V', 'N', 2, 1, 1, a, 2, b, 2, alpha, beta,
211  $ q, 1, z, 1, w, 1, rw, info )
212  CALL chkxer( 'ZHGEQZ', infot, nout, lerr, ok )
213  infot = 16
214  CALL zhgeqz( 'E', 'N', 'V', 2, 1, 1, a, 2, b, 2, alpha, beta,
215  $ q, 1, z, 1, w, 1, rw, info )
216  CALL chkxer( 'ZHGEQZ', infot, nout, lerr, ok )
217  nt = nt + 10
218 *
219 * ZTGEVC
220 *
221  srnamt = 'ZTGEVC'
222  infot = 1
223  CALL ztgevc( '/', 'A', sel, 0, a, 1, b, 1, q, 1, z, 1, 0, m, w,
224  $ rw, info )
225  CALL chkxer( 'ZTGEVC', infot, nout, lerr, ok )
226  infot = 2
227  CALL ztgevc( 'R', '/', sel, 0, a, 1, b, 1, q, 1, z, 1, 0, m, w,
228  $ rw, info )
229  CALL chkxer( 'ZTGEVC', infot, nout, lerr, ok )
230  infot = 4
231  CALL ztgevc( 'R', 'A', sel, -1, a, 1, b, 1, q, 1, z, 1, 0, m,
232  $ w, rw, info )
233  CALL chkxer( 'ZTGEVC', infot, nout, lerr, ok )
234  infot = 6
235  CALL ztgevc( 'R', 'A', sel, 2, a, 1, b, 2, q, 1, z, 2, 0, m, w,
236  $ rw, info )
237  CALL chkxer( 'ZTGEVC', infot, nout, lerr, ok )
238  infot = 8
239  CALL ztgevc( 'R', 'A', sel, 2, a, 2, b, 1, q, 1, z, 2, 0, m, w,
240  $ rw, info )
241  CALL chkxer( 'ZTGEVC', infot, nout, lerr, ok )
242  infot = 10
243  CALL ztgevc( 'L', 'A', sel, 2, a, 2, b, 2, q, 1, z, 1, 0, m, w,
244  $ rw, info )
245  CALL chkxer( 'ZTGEVC', infot, nout, lerr, ok )
246  infot = 12
247  CALL ztgevc( 'R', 'A', sel, 2, a, 2, b, 2, q, 1, z, 1, 0, m, w,
248  $ rw, info )
249  CALL chkxer( 'ZTGEVC', infot, nout, lerr, ok )
250  infot = 13
251  CALL ztgevc( 'R', 'A', sel, 2, a, 2, b, 2, q, 1, z, 2, 1, m, w,
252  $ rw, info )
253  CALL chkxer( 'ZTGEVC', infot, nout, lerr, ok )
254  nt = nt + 8
255 *
256 * Test error exits for the GSV path.
257 *
258  ELSE IF( lsamen( 3, path, 'GSV' ) ) THEN
259 *
260 * ZGGSVD
261 *
262  srnamt = 'ZGGSVD'
263  infot = 1
264  CALL zggsvd( '/', 'N', 'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
265  $ 1, r1, r2, u, 1, v, 1, q, 1, w, rw, iw, info )
266  CALL chkxer( 'ZGGSVD', infot, nout, lerr, ok )
267  infot = 2
268  CALL zggsvd( 'N', '/', 'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
269  $ 1, r1, r2, u, 1, v, 1, q, 1, w, rw, iw, info )
270  CALL chkxer( 'ZGGSVD', infot, nout, lerr, ok )
271  infot = 3
272  CALL zggsvd( 'N', 'N', '/', 0, 0, 0, dummyk, dummyl, a, 1, b,
273  $ 1, r1, r2, u, 1, v, 1, q, 1, w, rw, iw, info )
274  CALL chkxer( 'ZGGSVD', infot, nout, lerr, ok )
275  infot = 4
276  CALL zggsvd( 'N', 'N', 'N', -1, 0, 0, dummyk, dummyl, a, 1, b,
277  $ 1, r1, r2, u, 1, v, 1, q, 1, w, rw, iw, info )
278  CALL chkxer( 'ZGGSVD', infot, nout, lerr, ok )
279  infot = 5
280  CALL zggsvd( 'N', 'N', 'N', 0, -1, 0, dummyk, dummyl, a, 1, b,
281  $ 1, r1, r2, u, 1, v, 1, q, 1, w, rw, iw, info )
282  CALL chkxer( 'ZGGSVD', infot, nout, lerr, ok )
283  infot = 6
284  CALL zggsvd( 'N', 'N', 'N', 0, 0, -1, dummyk, dummyl, a, 1, b,
285  $ 1, r1, r2, u, 1, v, 1, q, 1, w, rw, iw, info )
286  CALL chkxer( 'ZGGSVD', infot, nout, lerr, ok )
287  infot = 10
288  CALL zggsvd( 'N', 'N', 'N', 2, 1, 1, dummyk, dummyl, a, 1, b,
289  $ 1, r1, r2, u, 1, v, 1, q, 1, w, rw, iw, info )
290  CALL chkxer( 'ZGGSVD', infot, nout, lerr, ok )
291  infot = 12
292  CALL zggsvd( 'N', 'N', 'N', 1, 1, 2, dummyk, dummyl, a, 1, b,
293  $ 1, r1, r2, u, 1, v, 1, q, 1, w, rw, iw, info )
294  CALL chkxer( 'ZGGSVD', infot, nout, lerr, ok )
295  infot = 16
296  CALL zggsvd( 'U', 'N', 'N', 2, 2, 2, dummyk, dummyl, a, 2, b,
297  $ 2, r1, r2, u, 1, v, 1, q, 1, w, rw, iw, info )
298  CALL chkxer( 'ZGGSVD', infot, nout, lerr, ok )
299  infot = 18
300  CALL zggsvd( 'N', 'V', 'N', 2, 2, 2, dummyk, dummyl, a, 2, b,
301  $ 2, r1, r2, u, 2, v, 1, q, 1, w, rw, iw, info )
302  CALL chkxer( 'ZGGSVD', infot, nout, lerr, ok )
303  infot = 20
304  CALL zggsvd( 'N', 'N', 'Q', 2, 2, 2, dummyk, dummyl, a, 2, b,
305  $ 2, r1, r2, u, 2, v, 2, q, 1, w, rw, iw, info )
306  CALL chkxer( 'ZGGSVD', infot, nout, lerr, ok )
307  nt = nt + 11
308 *
309 * ZGGSVP
310 *
311  srnamt = 'ZGGSVP'
312  infot = 1
313  CALL zggsvp( '/', 'N', 'N', 0, 0, 0, a, 1, b, 1, tola, tolb,
314  $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, rw, tau, w,
315  $ info )
316  CALL chkxer( 'ZGGSVP', infot, nout, lerr, ok )
317  infot = 2
318  CALL zggsvp( 'N', '/', 'N', 0, 0, 0, a, 1, b, 1, tola, tolb,
319  $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, rw, tau, w,
320  $ info )
321  CALL chkxer( 'ZGGSVP', infot, nout, lerr, ok )
322  infot = 3
323  CALL zggsvp( 'N', 'N', '/', 0, 0, 0, a, 1, b, 1, tola, tolb,
324  $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, rw, tau, w,
325  $ info )
326  CALL chkxer( 'ZGGSVP', infot, nout, lerr, ok )
327  infot = 4
328  CALL zggsvp( 'N', 'N', 'N', -1, 0, 0, a, 1, b, 1, tola, tolb,
329  $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, rw, tau, w,
330  $ info )
331  CALL chkxer( 'ZGGSVP', infot, nout, lerr, ok )
332  infot = 5
333  CALL zggsvp( 'N', 'N', 'N', 0, -1, 0, a, 1, b, 1, tola, tolb,
334  $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, rw, tau, w,
335  $ info )
336  CALL chkxer( 'ZGGSVP', infot, nout, lerr, ok )
337  infot = 6
338  CALL zggsvp( 'N', 'N', 'N', 0, 0, -1, a, 1, b, 1, tola, tolb,
339  $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, rw, tau, w,
340  $ info )
341  CALL chkxer( 'ZGGSVP', infot, nout, lerr, ok )
342  infot = 8
343  CALL zggsvp( 'N', 'N', 'N', 2, 1, 1, a, 1, b, 1, tola, tolb,
344  $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, rw, tau, w,
345  $ info )
346  CALL chkxer( 'ZGGSVP', infot, nout, lerr, ok )
347  infot = 10
348  CALL zggsvp( 'N', 'N', 'N', 1, 2, 1, a, 1, b, 1, tola, tolb,
349  $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, rw, tau, w,
350  $ info )
351  CALL chkxer( 'ZGGSVP', infot, nout, lerr, ok )
352  infot = 16
353  CALL zggsvp( 'U', 'N', 'N', 2, 2, 2, a, 2, b, 2, tola, tolb,
354  $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, rw, tau, w,
355  $ info )
356  CALL chkxer( 'ZGGSVP', infot, nout, lerr, ok )
357  infot = 18
358  CALL zggsvp( 'N', 'V', 'N', 2, 2, 2, a, 2, b, 2, tola, tolb,
359  $ dummyk, dummyl, u, 2, v, 1, q, 1, iw, rw, tau, w,
360  $ info )
361  CALL chkxer( 'ZGGSVP', infot, nout, lerr, ok )
362  infot = 20
363  CALL zggsvp( 'N', 'N', 'Q', 2, 2, 2, a, 2, b, 2, tola, tolb,
364  $ dummyk, dummyl, u, 2, v, 2, q, 1, iw, rw, tau, w,
365  $ info )
366  CALL chkxer( 'ZGGSVP', infot, nout, lerr, ok )
367  nt = nt + 11
368 *
369 * ZTGSJA
370 *
371  srnamt = 'ZTGSJA'
372  infot = 1
373  CALL ztgsja( '/', 'N', 'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
374  $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
375  $ ncycle, info )
376  CALL chkxer( 'ZTGSJA', infot, nout, lerr, ok )
377  infot = 2
378  CALL ztgsja( 'N', '/', 'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
379  $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
380  $ ncycle, info )
381  CALL chkxer( 'ZTGSJA', infot, nout, lerr, ok )
382  infot = 3
383  CALL ztgsja( 'N', 'N', '/', 0, 0, 0, dummyk, dummyl, a, 1, b,
384  $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
385  $ ncycle, info )
386  CALL chkxer( 'ZTGSJA', infot, nout, lerr, ok )
387  infot = 4
388  CALL ztgsja( 'N', 'N', 'N', -1, 0, 0, dummyk, dummyl, a, 1, b,
389  $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
390  $ ncycle, info )
391  CALL chkxer( 'ZTGSJA', infot, nout, lerr, ok )
392  infot = 5
393  CALL ztgsja( 'N', 'N', 'N', 0, -1, 0, dummyk, dummyl, a, 1, b,
394  $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
395  $ ncycle, info )
396  CALL chkxer( 'ZTGSJA', infot, nout, lerr, ok )
397  infot = 6
398  CALL ztgsja( 'N', 'N', 'N', 0, 0, -1, dummyk, dummyl, a, 1, b,
399  $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
400  $ ncycle, info )
401  CALL chkxer( 'ZTGSJA', infot, nout, lerr, ok )
402  infot = 10
403  CALL ztgsja( 'N', 'N', 'N', 0, 0, 0, dummyk, dummyl, a, 0, b,
404  $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
405  $ ncycle, info )
406  CALL chkxer( 'ZTGSJA', infot, nout, lerr, ok )
407  infot = 12
408  CALL ztgsja( 'N', 'N', 'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
409  $ 0, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
410  $ ncycle, info )
411  CALL chkxer( 'ZTGSJA', infot, nout, lerr, ok )
412  infot = 18
413  CALL ztgsja( 'U', 'N', 'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
414  $ 1, tola, tolb, r1, r2, u, 0, v, 1, q, 1, w,
415  $ ncycle, info )
416  CALL chkxer( 'ZTGSJA', infot, nout, lerr, ok )
417  infot = 20
418  CALL ztgsja( 'N', 'V', 'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
419  $ 1, tola, tolb, r1, r2, u, 1, v, 0, q, 1, w,
420  $ ncycle, info )
421  CALL chkxer( 'ZTGSJA', infot, nout, lerr, ok )
422  infot = 22
423  CALL ztgsja( 'N', 'N', 'Q', 0, 0, 0, dummyk, dummyl, a, 1, b,
424  $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 0, w,
425  $ ncycle, info )
426  CALL chkxer( 'ZTGSJA', infot, nout, lerr, ok )
427  nt = nt + 11
428 *
429 * Test error exits for the GLM path.
430 *
431  ELSE IF( lsamen( 3, path, 'GLM' ) ) THEN
432 *
433 * ZGGGLM
434 *
435  srnamt = 'ZGGGLM'
436  infot = 1
437  CALL zggglm( -1, 0, 0, a, 1, b, 1, tau, alpha, beta, w, lw,
438  $ info )
439  CALL chkxer( 'ZGGGLM', infot, nout, lerr, ok )
440  infot = 2
441  CALL zggglm( 0, -1, 0, a, 1, b, 1, tau, alpha, beta, w, lw,
442  $ info )
443  CALL chkxer( 'ZGGGLM', infot, nout, lerr, ok )
444  infot = 2
445  CALL zggglm( 0, 1, 0, a, 1, b, 1, tau, alpha, beta, w, lw,
446  $ info )
447  CALL chkxer( 'ZGGGLM', infot, nout, lerr, ok )
448  infot = 3
449  CALL zggglm( 0, 0, -1, a, 1, b, 1, tau, alpha, beta, w, lw,
450  $ info )
451  CALL chkxer( 'ZGGGLM', infot, nout, lerr, ok )
452  infot = 3
453  CALL zggglm( 1, 0, 0, a, 1, b, 1, tau, alpha, beta, w, lw,
454  $ info )
455  CALL chkxer( 'ZGGGLM', infot, nout, lerr, ok )
456  infot = 5
457  CALL zggglm( 0, 0, 0, a, 0, b, 1, tau, alpha, beta, w, lw,
458  $ info )
459  CALL chkxer( 'ZGGGLM', infot, nout, lerr, ok )
460  infot = 7
461  CALL zggglm( 0, 0, 0, a, 1, b, 0, tau, alpha, beta, w, lw,
462  $ info )
463  CALL chkxer( 'ZGGGLM', infot, nout, lerr, ok )
464  infot = 12
465  CALL zggglm( 1, 1, 1, a, 1, b, 1, tau, alpha, beta, w, 1,
466  $ info )
467  CALL chkxer( 'ZGGGLM', infot, nout, lerr, ok )
468  nt = nt + 8
469 *
470 * Test error exits for the LSE path.
471 *
472  ELSE IF( lsamen( 3, path, 'LSE' ) ) THEN
473 *
474 * ZGGLSE
475 *
476  srnamt = 'ZGGLSE'
477  infot = 1
478  CALL zgglse( -1, 0, 0, a, 1, b, 1, tau, alpha, beta, w, lw,
479  $ info )
480  CALL chkxer( 'ZGGLSE', infot, nout, lerr, ok )
481  infot = 2
482  CALL zgglse( 0, -1, 0, a, 1, b, 1, tau, alpha, beta, w, lw,
483  $ info )
484  CALL chkxer( 'ZGGLSE', infot, nout, lerr, ok )
485  infot = 3
486  CALL zgglse( 0, 0, -1, a, 1, b, 1, tau, alpha, beta, w, lw,
487  $ info )
488  CALL chkxer( 'ZGGLSE', infot, nout, lerr, ok )
489  infot = 3
490  CALL zgglse( 0, 0, 1, a, 1, b, 1, tau, alpha, beta, w, lw,
491  $ info )
492  CALL chkxer( 'ZGGLSE', infot, nout, lerr, ok )
493  infot = 3
494  CALL zgglse( 0, 1, 0, a, 1, b, 1, tau, alpha, beta, w, lw,
495  $ info )
496  CALL chkxer( 'ZGGLSE', infot, nout, lerr, ok )
497  infot = 5
498  CALL zgglse( 0, 0, 0, a, 0, b, 1, tau, alpha, beta, w, lw,
499  $ info )
500  CALL chkxer( 'ZGGLSE', infot, nout, lerr, ok )
501  infot = 7
502  CALL zgglse( 0, 0, 0, a, 1, b, 0, tau, alpha, beta, w, lw,
503  $ info )
504  CALL chkxer( 'ZGGLSE', infot, nout, lerr, ok )
505  infot = 12
506  CALL zgglse( 1, 1, 1, a, 1, b, 1, tau, alpha, beta, w, 1,
507  $ info )
508  CALL chkxer( 'ZGGLSE', infot, nout, lerr, ok )
509  nt = nt + 8
510 *
511 * Test error exits for the CSD path.
512 *
513  ELSE IF( lsamen( 3, path, 'CSD' ) ) THEN
514 *
515 * ZUNCSD
516 *
517  srnamt = 'ZUNCSD'
518  infot = 7
519  CALL zuncsd( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
520  $ -1, 0, 0, a, 1, a,
521  $ 1, a, 1, a, 1, a,
522  $ a, 1, a, 1, a, 1, a,
523  $ 1, w, lw, rw, lw, iw, info )
524  CALL chkxer( 'ZUNCSD', infot, nout, lerr, ok )
525  infot = 8
526  CALL zuncsd( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
527  $ 1, -1, 0, a, 1, a,
528  $ 1, a, 1, a, 1, a,
529  $ a, 1, a, 1, a, 1, a,
530  $ 1, w, lw, rw, lw, iw, info )
531  CALL chkxer( 'ZUNCSD', infot, nout, lerr, ok )
532  infot = 9
533  CALL zuncsd( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
534  $ 1, 1, -1, a, 1, a,
535  $ 1, a, 1, a, 1, a,
536  $ a, 1, a, 1, a, 1, a,
537  $ 1, w, lw, rw, lw, iw, info )
538  CALL chkxer( 'ZUNCSD', infot, nout, lerr, ok )
539  infot = 11
540  CALL zuncsd( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
541  $ 1, 1, 1, a, -1, a,
542  $ 1, a, 1, a, 1, a,
543  $ a, 1, a, 1, a, 1, a,
544  $ 1, w, lw, rw, lw, iw, info )
545  CALL chkxer( 'ZUNCSD', infot, nout, lerr, ok )
546  infot = 20
547  CALL zuncsd( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
548  $ 1, 1, 1, a, 1, a,
549  $ 1, a, 1, a, 1, a,
550  $ a, -1, a, 1, a, 1, a,
551  $ 1, w, lw, rw, lw, iw, info )
552  CALL chkxer( 'ZUNCSD', infot, nout, lerr, ok )
553  infot = 22
554  CALL zuncsd( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
555  $ 1, 1, 1, a, 1, a,
556  $ 1, a, 1, a, 1, a,
557  $ a, 1, a, -1, a, 1, a,
558  $ 1, w, lw, rw, lw, iw, info )
559  CALL chkxer( 'ZUNCSD', infot, nout, lerr, ok )
560  infot = 24
561  CALL zuncsd( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
562  $ 1, 1, 1, a, 1, a,
563  $ 1, a, 1, a, 1, a,
564  $ a, 1, a, 1, a, -1, a,
565  $ 1, w, lw, rw, lw, iw, info )
566  CALL chkxer( 'ZUNCSD', infot, nout, lerr, ok )
567  infot = 26
568  CALL zuncsd( 'Y', 'Y', 'Y', 'Y', 'N', 'N',
569  $ 1, 1, 1, a, 1, a,
570  $ 1, a, 1, a, 1, a,
571  $ a, 1, a, 1, a, 1, a,
572  $ -1, w, lw, rw, lw, iw, info )
573  CALL chkxer( 'ZUNCSD', infot, nout, lerr, ok )
574  nt = nt + 8
575 *
576 * Test error exits for the GQR path.
577 *
578  ELSE IF( lsamen( 3, path, 'GQR' ) ) THEN
579 *
580 * ZGGQRF
581 *
582  srnamt = 'ZGGQRF'
583  infot = 1
584  CALL zggqrf( -1, 0, 0, a, 1, alpha, b, 1, beta, w, lw, info )
585  CALL chkxer( 'ZGGQRF', infot, nout, lerr, ok )
586  infot = 2
587  CALL zggqrf( 0, -1, 0, a, 1, alpha, b, 1, beta, w, lw, info )
588  CALL chkxer( 'ZGGQRF', infot, nout, lerr, ok )
589  infot = 3
590  CALL zggqrf( 0, 0, -1, a, 1, alpha, b, 1, beta, w, lw, info )
591  CALL chkxer( 'ZGGQRF', infot, nout, lerr, ok )
592  infot = 5
593  CALL zggqrf( 0, 0, 0, a, 0, alpha, b, 1, beta, w, lw, info )
594  CALL chkxer( 'ZGGQRF', infot, nout, lerr, ok )
595  infot = 8
596  CALL zggqrf( 0, 0, 0, a, 1, alpha, b, 0, beta, w, lw, info )
597  CALL chkxer( 'ZGGQRF', infot, nout, lerr, ok )
598  infot = 11
599  CALL zggqrf( 1, 1, 2, a, 1, alpha, b, 1, beta, w, 1, info )
600  CALL chkxer( 'ZGGQRF', infot, nout, lerr, ok )
601  nt = nt + 6
602 *
603 * ZGGRQF
604 *
605  srnamt = 'ZGGRQF'
606  infot = 1
607  CALL zggrqf( -1, 0, 0, a, 1, alpha, b, 1, beta, w, lw, info )
608  CALL chkxer( 'ZGGRQF', infot, nout, lerr, ok )
609  infot = 2
610  CALL zggrqf( 0, -1, 0, a, 1, alpha, b, 1, beta, w, lw, info )
611  CALL chkxer( 'ZGGRQF', infot, nout, lerr, ok )
612  infot = 3
613  CALL zggrqf( 0, 0, -1, a, 1, alpha, b, 1, beta, w, lw, info )
614  CALL chkxer( 'ZGGRQF', infot, nout, lerr, ok )
615  infot = 5
616  CALL zggrqf( 0, 0, 0, a, 0, alpha, b, 1, beta, w, lw, info )
617  CALL chkxer( 'ZGGRQF', infot, nout, lerr, ok )
618  infot = 8
619  CALL zggrqf( 0, 0, 0, a, 1, alpha, b, 0, beta, w, lw, info )
620  CALL chkxer( 'ZGGRQF', infot, nout, lerr, ok )
621  infot = 11
622  CALL zggrqf( 1, 1, 2, a, 1, alpha, b, 1, beta, w, 1, info )
623  CALL chkxer( 'ZGGRQF', infot, nout, lerr, ok )
624  nt = nt + 6
625 *
626 * Test error exits for the ZGS, ZGV, ZGX, and ZXV paths.
627 *
628  ELSE IF( lsamen( 3, path, 'ZGS' ) .OR.
629  $ lsamen( 3, path, 'ZGV' ) .OR.
630  $ lsamen( 3, path, 'ZGX' ) .OR. lsamen( 3, path, 'ZXV' ) )
631  $ THEN
632 *
633 * ZGGES
634 *
635  srnamt = 'ZGGES '
636  infot = 1
637  CALL zgges( '/', 'N', 'S', zlctes, 1, a, 1, b, 1, sdim, alpha,
638  $ beta, q, 1, u, 1, w, 1, rw, bw, info )
639  CALL chkxer( 'ZGGES ', infot, nout, lerr, ok )
640  infot = 2
641  CALL zgges( 'N', '/', 'S', zlctes, 1, a, 1, b, 1, sdim, alpha,
642  $ beta, q, 1, u, 1, w, 1, rw, bw, info )
643  CALL chkxer( 'ZGGES ', infot, nout, lerr, ok )
644  infot = 3
645  CALL zgges( 'N', 'V', '/', zlctes, 1, a, 1, b, 1, sdim, alpha,
646  $ beta, q, 1, u, 1, w, 1, rw, bw, info )
647  CALL chkxer( 'ZGGES ', infot, nout, lerr, ok )
648  infot = 5
649  CALL zgges( 'N', 'V', 'S', zlctes, -1, a, 1, b, 1, sdim, alpha,
650  $ beta, q, 1, u, 1, w, 1, rw, bw, info )
651  CALL chkxer( 'ZGGES ', infot, nout, lerr, ok )
652  infot = 7
653  CALL zgges( 'N', 'V', 'S', zlctes, 1, a, 0, b, 1, sdim, alpha,
654  $ beta, q, 1, u, 1, w, 1, rw, bw, info )
655  CALL chkxer( 'ZGGES ', infot, nout, lerr, ok )
656  infot = 9
657  CALL zgges( 'N', 'V', 'S', zlctes, 1, a, 1, b, 0, sdim, alpha,
658  $ beta, q, 1, u, 1, w, 1, rw, bw, info )
659  CALL chkxer( 'ZGGES ', infot, nout, lerr, ok )
660  infot = 14
661  CALL zgges( 'N', 'V', 'S', zlctes, 1, a, 1, b, 1, sdim, alpha,
662  $ beta, q, 0, u, 1, w, 1, rw, bw, info )
663  CALL chkxer( 'ZGGES ', infot, nout, lerr, ok )
664  infot = 14
665  CALL zgges( 'V', 'V', 'S', zlctes, 2, a, 2, b, 2, sdim, alpha,
666  $ beta, q, 1, u, 2, w, 1, rw, bw, info )
667  CALL chkxer( 'ZGGES ', infot, nout, lerr, ok )
668  infot = 16
669  CALL zgges( 'N', 'V', 'S', zlctes, 1, a, 1, b, 1, sdim, alpha,
670  $ beta, q, 1, u, 0, w, 1, rw, bw, info )
671  CALL chkxer( 'ZGGES ', infot, nout, lerr, ok )
672  infot = 16
673  CALL zgges( 'V', 'V', 'S', zlctes, 2, a, 2, b, 2, sdim, alpha,
674  $ beta, q, 2, u, 1, w, 1, rw, bw, info )
675  CALL chkxer( 'ZGGES ', infot, nout, lerr, ok )
676  infot = 18
677  CALL zgges( 'V', 'V', 'S', zlctes, 2, a, 2, b, 2, sdim, alpha,
678  $ beta, q, 2, u, 2, w, 1, rw, bw, info )
679  CALL chkxer( 'ZGGES ', infot, nout, lerr, ok )
680  nt = nt + 11
681 *
682 * ZGGESX
683 *
684  srnamt = 'ZGGESX'
685  infot = 1
686  CALL zggesx( '/', 'N', 'S', zlctsx, 'N', 1, a, 1, b, 1, sdim,
687  $ alpha, beta, q, 1, u, 1, rce, rcv, w, 1, rw, iw,
688  $ 1, bw, info )
689  CALL chkxer( 'ZGGESX', infot, nout, lerr, ok )
690  infot = 2
691  CALL zggesx( 'N', '/', 'S', zlctsx, 'N', 1, a, 1, b, 1, sdim,
692  $ alpha, beta, q, 1, u, 1, rce, rcv, w, 1, rw, iw,
693  $ 1, bw, info )
694  CALL chkxer( 'ZGGESX', infot, nout, lerr, ok )
695  infot = 3
696  CALL zggesx( 'V', 'V', '/', zlctsx, 'N', 1, a, 1, b, 1, sdim,
697  $ alpha, beta, q, 1, u, 1, rce, rcv, w, 1, rw, iw,
698  $ 1, bw, info )
699  CALL chkxer( 'ZGGESX', infot, nout, lerr, ok )
700  infot = 5
701  CALL zggesx( 'V', 'V', 'S', zlctsx, '/', 1, a, 1, b, 1, sdim,
702  $ alpha, beta, q, 1, u, 1, rce, rcv, w, 1, rw, iw,
703  $ 1, bw, info )
704  CALL chkxer( 'ZGGESX', infot, nout, lerr, ok )
705  infot = 6
706  CALL zggesx( 'V', 'V', 'S', zlctsx, 'B', -1, a, 1, b, 1, sdim,
707  $ alpha, beta, q, 1, u, 1, rce, rcv, w, 1, rw, iw,
708  $ 1, bw, info )
709  CALL chkxer( 'ZGGESX', infot, nout, lerr, ok )
710  infot = 8
711  CALL zggesx( 'V', 'V', 'S', zlctsx, 'B', 1, a, 0, b, 1, sdim,
712  $ alpha, beta, q, 1, u, 1, rce, rcv, w, 1, rw, iw,
713  $ 1, bw, info )
714  CALL chkxer( 'ZGGESX', infot, nout, lerr, ok )
715  infot = 10
716  CALL zggesx( 'V', 'V', 'S', zlctsx, 'B', 1, a, 1, b, 0, sdim,
717  $ alpha, beta, q, 1, u, 1, rce, rcv, w, 1, rw, iw,
718  $ 1, bw, info )
719  CALL chkxer( 'ZGGESX', infot, nout, lerr, ok )
720  infot = 15
721  CALL zggesx( 'V', 'V', 'S', zlctsx, 'B', 1, a, 1, b, 1, sdim,
722  $ alpha, beta, q, 0, u, 1, rce, rcv, w, 1, rw, iw,
723  $ 1, bw, info )
724  CALL chkxer( 'ZGGESX', infot, nout, lerr, ok )
725  infot = 15
726  CALL zggesx( 'V', 'V', 'S', zlctsx, 'B', 2, a, 2, b, 2, sdim,
727  $ alpha, beta, q, 1, u, 1, rce, rcv, w, 1, rw, iw,
728  $ 1, bw, info )
729  CALL chkxer( 'ZGGESX', infot, nout, lerr, ok )
730  infot = 17
731  CALL zggesx( 'V', 'V', 'S', zlctsx, 'B', 1, a, 1, b, 1, sdim,
732  $ alpha, beta, q, 1, u, 0, rce, rcv, w, 1, rw, iw,
733  $ 1, bw, info )
734  CALL chkxer( 'ZGGESX', infot, nout, lerr, ok )
735  infot = 17
736  CALL zggesx( 'V', 'V', 'S', zlctsx, 'B', 2, a, 2, b, 2, sdim,
737  $ alpha, beta, q, 2, u, 1, rce, rcv, w, 1, rw, iw,
738  $ 1, bw, info )
739  CALL chkxer( 'ZGGESX', infot, nout, lerr, ok )
740  infot = 21
741  CALL zggesx( 'V', 'V', 'S', zlctsx, 'B', 2, a, 2, b, 2, sdim,
742  $ alpha, beta, q, 2, u, 2, rce, rcv, w, 1, rw, iw,
743  $ 1, bw, info )
744  CALL chkxer( 'ZGGESX', infot, nout, lerr, ok )
745  infot = 24
746  CALL zggesx( 'V', 'V', 'S', zlctsx, 'V', 1, a, 1, b, 1, sdim,
747  $ alpha, beta, q, 1, u, 1, rce, rcv, w, 32, rw, iw,
748  $ 0, bw, info )
749  CALL chkxer( 'ZGGESX', infot, nout, lerr, ok )
750  nt = nt + 13
751 *
752 * ZGGEV
753 *
754  srnamt = 'ZGGEV '
755  infot = 1
756  CALL zggev( '/', 'N', 1, a, 1, b, 1, alpha, beta, q, 1, u, 1,
757  $ w, 1, rw, info )
758  CALL chkxer( 'ZGGEV ', infot, nout, lerr, ok )
759  infot = 2
760  CALL zggev( 'N', '/', 1, a, 1, b, 1, alpha, beta, q, 1, u, 1,
761  $ w, 1, rw, info )
762  CALL chkxer( 'ZGGEV ', infot, nout, lerr, ok )
763  infot = 3
764  CALL zggev( 'V', 'V', -1, a, 1, b, 1, alpha, beta, q, 1, u, 1,
765  $ w, 1, rw, info )
766  CALL chkxer( 'ZGGEV ', infot, nout, lerr, ok )
767  infot = 5
768  CALL zggev( 'V', 'V', 1, a, 0, b, 1, alpha, beta, q, 1, u, 1,
769  $ w, 1, rw, info )
770  CALL chkxer( 'ZGGEV ', infot, nout, lerr, ok )
771  infot = 7
772  CALL zggev( 'V', 'V', 1, a, 1, b, 0, alpha, beta, q, 1, u, 1,
773  $ w, 1, rw, info )
774  CALL chkxer( 'ZGGEV ', infot, nout, lerr, ok )
775  infot = 11
776  CALL zggev( 'N', 'V', 1, a, 1, b, 1, alpha, beta, q, 0, u, 1,
777  $ w, 1, rw, info )
778  CALL chkxer( 'ZGGEV ', infot, nout, lerr, ok )
779  infot = 11
780  CALL zggev( 'V', 'V', 2, a, 2, b, 2, alpha, beta, q, 1, u, 2,
781  $ w, 1, rw, info )
782  CALL chkxer( 'ZGGEV ', infot, nout, lerr, ok )
783  infot = 13
784  CALL zggev( 'V', 'N', 2, a, 2, b, 2, alpha, beta, q, 2, u, 0,
785  $ w, 1, rw, info )
786  CALL chkxer( 'ZGGEV ', infot, nout, lerr, ok )
787  infot = 13
788  CALL zggev( 'V', 'V', 2, a, 2, b, 2, alpha, beta, q, 2, u, 1,
789  $ w, 1, rw, info )
790  CALL chkxer( 'ZGGEV ', infot, nout, lerr, ok )
791  infot = 15
792  CALL zggev( 'V', 'V', 1, a, 1, b, 1, alpha, beta, q, 1, u, 1,
793  $ w, 1, rw, info )
794  CALL chkxer( 'ZGGEV ', infot, nout, lerr, ok )
795  nt = nt + 10
796 *
797 * ZGGEVX
798 *
799  srnamt = 'ZGGEVX'
800  infot = 1
801  CALL zggevx( '/', 'N', 'N', 'N', 1, a, 1, b, 1, alpha, beta, q,
802  $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
803  $ w, 1, rw, iw, bw, info )
804  CALL chkxer( 'ZGGEVX', infot, nout, lerr, ok )
805  infot = 2
806  CALL zggevx( 'N', '/', 'N', 'N', 1, a, 1, b, 1, alpha, beta, q,
807  $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
808  $ w, 1, rw, iw, bw, info )
809  CALL chkxer( 'ZGGEVX', infot, nout, lerr, ok )
810  infot = 3
811  CALL zggevx( 'N', 'N', '/', 'N', 1, a, 1, b, 1, alpha, beta, q,
812  $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
813  $ w, 1, rw, iw, bw, info )
814  CALL chkxer( 'ZGGEVX', infot, nout, lerr, ok )
815  infot = 4
816  CALL zggevx( 'N', 'N', 'N', '/', 1, a, 1, b, 1, alpha, beta, q,
817  $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
818  $ w, 1, rw, iw, bw, info )
819  CALL chkxer( 'ZGGEVX', infot, nout, lerr, ok )
820  infot = 5
821  CALL zggevx( 'N', 'N', 'N', 'N', -1, a, 1, b, 1, alpha, beta,
822  $ q, 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce,
823  $ rcv, w, 1, rw, iw, bw, info )
824  CALL chkxer( 'ZGGEVX', infot, nout, lerr, ok )
825  infot = 7
826  CALL zggevx( 'N', 'N', 'N', 'N', 1, a, 0, b, 1, alpha, beta, q,
827  $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
828  $ w, 1, rw, iw, bw, info )
829  CALL chkxer( 'ZGGEVX', infot, nout, lerr, ok )
830  infot = 9
831  CALL zggevx( 'N', 'N', 'N', 'N', 1, a, 1, b, 0, alpha, beta, q,
832  $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
833  $ w, 1, rw, iw, bw, info )
834  CALL chkxer( 'ZGGEVX', infot, nout, lerr, ok )
835  infot = 13
836  CALL zggevx( 'N', 'N', 'N', 'N', 1, a, 1, b, 1, alpha, beta, q,
837  $ 0, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
838  $ w, 1, rw, iw, bw, info )
839  CALL chkxer( 'ZGGEVX', infot, nout, lerr, ok )
840  infot = 13
841  CALL zggevx( 'N', 'V', 'N', 'N', 2, a, 2, b, 2, alpha, beta, q,
842  $ 1, u, 2, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
843  $ w, 1, rw, iw, bw, info )
844  CALL chkxer( 'ZGGEVX', infot, nout, lerr, ok )
845  infot = 15
846  CALL zggevx( 'N', 'N', 'N', 'N', 1, a, 1, b, 1, alpha, beta, q,
847  $ 1, u, 0, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
848  $ w, 1, rw, iw, bw, info )
849  CALL chkxer( 'ZGGEVX', infot, nout, lerr, ok )
850  infot = 15
851  CALL zggevx( 'N', 'N', 'V', 'N', 2, a, 2, b, 2, alpha, beta, q,
852  $ 2, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
853  $ w, 1, rw, iw, bw, info )
854  CALL chkxer( 'ZGGEVX', infot, nout, lerr, ok )
855  infot = 25
856  CALL zggevx( 'N', 'N', 'V', 'N', 2, a, 2, b, 2, alpha, beta, q,
857  $ 2, u, 2, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
858  $ w, 0, rw, iw, bw, info )
859  CALL chkxer( 'ZGGEVX', infot, nout, lerr, ok )
860  nt = nt + 12
861 *
862 * ZTGEXC
863 *
864  srnamt = 'ZTGEXC'
865  infot = 3
866  CALL ztgexc( .true., .true., -1, a, 1, b, 1, q, 1, z, 1, ifst,
867  $ ilst, info )
868  CALL chkxer( 'ZTGEXC', infot, nout, lerr, ok )
869  infot = 5
870  CALL ztgexc( .true., .true., 1, a, 0, b, 1, q, 1, z, 1, ifst,
871  $ ilst, info )
872  CALL chkxer( 'ZTGEXC', infot, nout, lerr, ok )
873  infot = 7
874  CALL ztgexc( .true., .true., 1, a, 1, b, 0, q, 1, z, 1, ifst,
875  $ ilst, info )
876  CALL chkxer( 'ZTGEXC', infot, nout, lerr, ok )
877  infot = 9
878  CALL ztgexc( .false., .true., 1, a, 1, b, 1, q, 0, z, 1, ifst,
879  $ ilst, info )
880  CALL chkxer( 'ZTGEXC', infot, nout, lerr, ok )
881  infot = 9
882  CALL ztgexc( .true., .true., 1, a, 1, b, 1, q, 0, z, 1, ifst,
883  $ ilst, info )
884  CALL chkxer( 'ZTGEXC', infot, nout, lerr, ok )
885  infot = 11
886  CALL ztgexc( .true., .false., 1, a, 1, b, 1, q, 1, z, 0, ifst,
887  $ ilst, info )
888  CALL chkxer( 'ZTGEXC', infot, nout, lerr, ok )
889  infot = 11
890  CALL ztgexc( .true., .true., 1, a, 1, b, 1, q, 1, z, 0, ifst,
891  $ ilst, info )
892  CALL chkxer( 'ZTGEXC', infot, nout, lerr, ok )
893  nt = nt + 7
894 *
895 * ZTGSEN
896 *
897  srnamt = 'ZTGSEN'
898  infot = 1
899  CALL ztgsen( -1, .true., .true., sel, 1, a, 1, b, 1, alpha,
900  $ beta, q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
901  $ info )
902  CALL chkxer( 'ZTGSEN', infot, nout, lerr, ok )
903  infot = 5
904  CALL ztgsen( 1, .true., .true., sel, -1, a, 1, b, 1, alpha,
905  $ beta, q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
906  $ info )
907  CALL chkxer( 'ZTGSEN', infot, nout, lerr, ok )
908  infot = 7
909  CALL ztgsen( 1, .true., .true., sel, 1, a, 0, b, 1, alpha,
910  $ beta, q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
911  $ info )
912  CALL chkxer( 'ZTGSEN', infot, nout, lerr, ok )
913  infot = 9
914  CALL ztgsen( 1, .true., .true., sel, 1, a, 1, b, 0, alpha,
915  $ beta, q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
916  $ info )
917  CALL chkxer( 'ZTGSEN', infot, nout, lerr, ok )
918  infot = 13
919  CALL ztgsen( 1, .true., .true., sel, 1, a, 1, b, 1, alpha,
920  $ beta, q, 0, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
921  $ info )
922  CALL chkxer( 'ZTGSEN', infot, nout, lerr, ok )
923  infot = 15
924  CALL ztgsen( 1, .true., .true., sel, 1, a, 1, b, 1, alpha,
925  $ beta, q, 1, z, 0, m, tola, tolb, rcv, w, 1, iw, 1,
926  $ info )
927  CALL chkxer( 'ZTGSEN', infot, nout, lerr, ok )
928  infot = 21
929  CALL ztgsen( 3, .true., .true., sel, 1, a, 1, b, 1, alpha,
930  $ beta, q, 1, z, 1, m, tola, tolb, rcv, w, -5, iw,
931  $ 1, info )
932  CALL chkxer( 'ZTGSEN', infot, nout, lerr, ok )
933  infot = 23
934  CALL ztgsen( 0, .true., .true., sel, 1, a, 1, b, 1, alpha,
935  $ beta, q, 1, z, 1, m, tola, tolb, rcv, w, 20, iw,
936  $ 0, info )
937  CALL chkxer( 'ZTGSEN', infot, nout, lerr, ok )
938  infot = 23
939  CALL ztgsen( 1, .true., .true., sel, 1, a, 1, b, 1, alpha,
940  $ beta, q, 1, z, 1, m, tola, tolb, rcv, w, 20, iw,
941  $ 0, info )
942  CALL chkxer( 'ZTGSEN', infot, nout, lerr, ok )
943  infot = 23
944  CALL ztgsen( 5, .true., .true., sel, 1, a, 1, b, 1, alpha,
945  $ beta, q, 1, z, 1, m, tola, tolb, rcv, w, 20, iw,
946  $ 1, info )
947  CALL chkxer( 'ZTGSEN', infot, nout, lerr, ok )
948  nt = nt + 11
949 *
950 * ZTGSNA
951 *
952  srnamt = 'ZTGSNA'
953  infot = 1
954  CALL ztgsna( '/', 'A', sel, 1, a, 1, b, 1, q, 1, u, 1, r1, r2,
955  $ 1, m, w, 1, iw, info )
956  CALL chkxer( 'ZTGSNA', infot, nout, lerr, ok )
957  infot = 2
958  CALL ztgsna( 'B', '/', sel, 1, a, 1, b, 1, q, 1, u, 1, r1, r2,
959  $ 1, m, w, 1, iw, info )
960  CALL chkxer( 'ZTGSNA', infot, nout, lerr, ok )
961  infot = 4
962  CALL ztgsna( 'B', 'A', sel, -1, a, 1, b, 1, q, 1, u, 1, r1, r2,
963  $ 1, m, w, 1, iw, info )
964  CALL chkxer( 'ZTGSNA', infot, nout, lerr, ok )
965  infot = 6
966  CALL ztgsna( 'B', 'A', sel, 1, a, 0, b, 1, q, 1, u, 1, r1, r2,
967  $ 1, m, w, 1, iw, info )
968  CALL chkxer( 'ZTGSNA', infot, nout, lerr, ok )
969  infot = 8
970  CALL ztgsna( 'B', 'A', sel, 1, a, 1, b, 0, q, 1, u, 1, r1, r2,
971  $ 1, m, w, 1, iw, info )
972  CALL chkxer( 'ZTGSNA', infot, nout, lerr, ok )
973  infot = 10
974  CALL ztgsna( 'E', 'A', sel, 1, a, 1, b, 1, q, 0, u, 1, r1, r2,
975  $ 1, m, w, 1, iw, info )
976  CALL chkxer( 'ZTGSNA', infot, nout, lerr, ok )
977  infot = 12
978  CALL ztgsna( 'E', 'A', sel, 1, a, 1, b, 1, q, 1, u, 0, r1, r2,
979  $ 1, m, w, 1, iw, info )
980  CALL chkxer( 'ZTGSNA', infot, nout, lerr, ok )
981  infot = 15
982  CALL ztgsna( 'E', 'A', sel, 1, a, 1, b, 1, q, 1, u, 1, r1, r2,
983  $ 0, m, w, 1, iw, info )
984  CALL chkxer( 'ZTGSNA', infot, nout, lerr, ok )
985  infot = 18
986  CALL ztgsna( 'E', 'A', sel, 1, a, 1, b, 1, q, 1, u, 1, r1, r2,
987  $ 1, m, w, 0, iw, info )
988  CALL chkxer( 'ZTGSNA', infot, nout, lerr, ok )
989  nt = nt + 9
990 *
991 * ZTGSYL
992 *
993  srnamt = 'ZTGSYL'
994  infot = 1
995  CALL ztgsyl( '/', 0, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
996  $ scale, dif, w, 1, iw, info )
997  CALL chkxer( 'ZTGSYL', infot, nout, lerr, ok )
998  infot = 2
999  CALL ztgsyl( 'N', -1, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
1000  $ scale, dif, w, 1, iw, info )
1001  CALL chkxer( 'ZTGSYL', infot, nout, lerr, ok )
1002  infot = 3
1003  CALL ztgsyl( 'N', 0, 0, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
1004  $ scale, dif, w, 1, iw, info )
1005  CALL chkxer( 'ZTGSYL', infot, nout, lerr, ok )
1006  infot = 4
1007  CALL ztgsyl( 'N', 0, 1, 0, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
1008  $ scale, dif, w, 1, iw, info )
1009  CALL chkxer( 'ZTGSYL', infot, nout, lerr, ok )
1010  infot = 6
1011  CALL ztgsyl( 'N', 0, 1, 1, a, 0, b, 1, q, 1, u, 1, v, 1, z, 1,
1012  $ scale, dif, w, 1, iw, info )
1013  CALL chkxer( 'ZTGSYL', infot, nout, lerr, ok )
1014  infot = 8
1015  CALL ztgsyl( 'N', 0, 1, 1, a, 1, b, 0, q, 1, u, 1, v, 1, z, 1,
1016  $ scale, dif, w, 1, iw, info )
1017  CALL chkxer( 'ZTGSYL', infot, nout, lerr, ok )
1018  infot = 10
1019  CALL ztgsyl( 'N', 0, 1, 1, a, 1, b, 1, q, 0, u, 1, v, 1, z, 1,
1020  $ scale, dif, w, 1, iw, info )
1021  CALL chkxer( 'ZTGSYL', infot, nout, lerr, ok )
1022  infot = 12
1023  CALL ztgsyl( 'N', 0, 1, 1, a, 1, b, 1, q, 1, u, 0, v, 1, z, 1,
1024  $ scale, dif, w, 1, iw, info )
1025  CALL chkxer( 'ZTGSYL', infot, nout, lerr, ok )
1026  infot = 14
1027  CALL ztgsyl( 'N', 0, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 0, z, 1,
1028  $ scale, dif, w, 1, iw, info )
1029  CALL chkxer( 'ZTGSYL', infot, nout, lerr, ok )
1030  infot = 16
1031  CALL ztgsyl( 'N', 0, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 0,
1032  $ scale, dif, w, 1, iw, info )
1033  CALL chkxer( 'ZTGSYL', infot, nout, lerr, ok )
1034  infot = 20
1035  CALL ztgsyl( 'N', 1, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
1036  $ scale, dif, w, 1, iw, info )
1037  CALL chkxer( 'ZTGSYL', infot, nout, lerr, ok )
1038  infot = 20
1039  CALL ztgsyl( 'N', 2, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
1040  $ scale, dif, w, 1, iw, info )
1041  CALL chkxer( 'ZTGSYL', infot, nout, lerr, ok )
1042  nt = nt + 12
1043  END IF
1044 *
1045 * Print a summary line.
1046 *
1047  IF( ok ) THEN
1048  WRITE( nout, fmt = 9999 )path, nt
1049  ELSE
1050  WRITE( nout, fmt = 9998 )path
1051  END IF
1052 *
1053  9999 FORMAT( 1x, a3, ' routines passed the tests of the error exits (',
1054  $ i3, ' tests done)' )
1055  9998 FORMAT( ' *** ', a3, ' routines failed the tests of the error ',
1056  $ 'exits ***' )
1057 *
1058  RETURN
1059 *
1060 * End of ZERRGG
1061 *
1062  END