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