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
subroutine ztgsen(IJOB, WANTQ, WANTZ, SELECT, N, A, LDA, B, LDB, ALPHA, BETA, Q, LDQ, Z, LDZ, M, PL, PR, DIF, WORK, LWORK, IWORK, LIWORK, INFO)
ZTGSEN
Definition: ztgsen.f:432
subroutine zggsvp(JOBU, JOBV, JOBQ, M, P, N, A, LDA, B, LDB, TOLA, TOLB, K, L, U, LDU, V, LDV, Q, LDQ, IWORK, RWORK, TAU, WORK, INFO)
ZGGSVP
Definition: zggsvp.f:262
subroutine ztgsna(JOB, HOWMNY, SELECT, N, A, LDA, B, LDB, VL, LDVL, VR, LDVR, S, DIF, MM, M, WORK, LWORK, IWORK, INFO)
ZTGSNA
Definition: ztgsna.f:310
subroutine zggevx(BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, B, LDB, ALPHA, BETA, VL, LDVL, VR, LDVR, ILO, IHI, LSCALE, RSCALE, ABNRM, BBNRM, RCONDE, RCONDV, WORK, LWORK, RWORK, IWORK, BWORK, INFO)
ZGGEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for GE matrices ...
Definition: zggevx.f:372
subroutine zhgeqz(JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT, ALPHA, BETA, Q, LDQ, Z, LDZ, WORK, LWORK, RWORK, INFO)
ZHGEQZ
Definition: zhgeqz.f:283
logical function zlctsx(ALPHA, BETA)
ZLCTSX
Definition: zlctsx.f:58
subroutine zggglm(N, M, P, A, LDA, B, LDB, D, X, Y, WORK, LWORK, INFO)
ZGGEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for GE matrices ...
Definition: zggglm.f:185
recursive subroutine zuncsd(JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS, SIGNS, M, P, Q, X11, LDX11, X12, LDX12, X21, LDX21, X22, LDX22, THETA, U1, LDU1, U2, LDU2, V1T, LDV1T, V2T, LDV2T, WORK, LWORK, RWORK, LRWORK, IWORK, INFO)
ZUNCSD
Definition: zuncsd.f:316
subroutine zggqrf(N, M, P, A, LDA, TAUA, B, LDB, TAUB, WORK, LWORK, INFO)
ZGGQRF
Definition: zggqrf.f:215
subroutine zerrgg(PATH, NUNIT)
ZERRGG
Definition: zerrgg.f:57
subroutine chkxer(SRNAMT, INFOT, NOUT, LERR, OK)
Definition: cblat2.f:3198
subroutine zggev(JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHA, BETA, VL, LDVL, VR, LDVR, WORK, LWORK, RWORK, INFO)
ZGGEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for GE matrices ...
Definition: zggev.f:217
subroutine zggsvd(JOBU, JOBV, JOBQ, M, N, P, K, L, A, LDA, B, LDB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, RWORK, IWORK, INFO)
ZGGSVD computes the singular value decomposition (SVD) for OTHER matrices
Definition: zggsvd.f:334
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real b(3) integer i
subroutine zgghrd(COMPQ, COMPZ, N, ILO, IHI, A, LDA, B, LDB, Q, LDQ, Z, LDZ, INFO)
ZGGHRD
Definition: zgghrd.f:204
logical function zlctes(Z, D)
ZLCTES
Definition: zlctes.f:59
logical function lsamen(N, CA, CB)
LSAMEN
Definition: lsamen.f:75
subroutine ztgexc(WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, LDZ, IFST, ILST, INFO)
ZTGEXC
Definition: ztgexc.f:200
subroutine ztgsja(JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B, LDB, TOLA, TOLB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, NCYCLE, INFO)
ZTGSJA
Definition: ztgsja.f:378
subroutine ztgsyl(TRANS, IJOB, M, N, A, LDA, B, LDB, C, LDC, D, LDD, E, LDE, F, LDF, SCALE, DIF, WORK, LWORK, IWORK, INFO)
ZTGSYL
Definition: ztgsyl.f:294
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real j
Definition: xerbla-fortran:9
subroutine ztgevc(SIDE, HOWMNY, SELECT, N, S, LDS, P, LDP, VL, LDVL, VR, LDVR, MM, M, WORK, RWORK, INFO)
ZTGEVC
Definition: ztgevc.f:219
subroutine zggesx(JOBVSL, JOBVSR, SORT, SELCTG, SENSE, N, A, LDA, B, LDB, SDIM, ALPHA, BETA, VSL, LDVSL, VSR, LDVSR, RCONDE, RCONDV, WORK, LWORK, RWORK, IWORK, LIWORK, BWORK, INFO)
ZGGESX computes the eigenvalues, the Schur form, and, optionally, the matrix of Schur vectors for GE...
Definition: zggesx.f:328
subroutine zggrqf(M, P, N, A, LDA, TAUA, B, LDB, TAUB, WORK, LWORK, INFO)
ZGGRQF
Definition: zggrqf.f:214
subroutine zgglse(M, N, P, A, LDA, B, LDB, C, D, X, WORK, LWORK, INFO)
ZGGLSE solves overdetermined or underdetermined systems for OTHER matrices
Definition: zgglse.f:180
subroutine zgges(JOBVSL, JOBVSR, SORT, SELCTG, N, A, LDA, B, LDB, SDIM, ALPHA, BETA, VSL, LDVSL, VSR, LDVSR, WORK, LWORK, RWORK, BWORK, INFO)
ZGGES computes the eigenvalues, the Schur form, and, optionally, the matrix of Schur vectors for GE ...
Definition: zgges.f:269