57 SUBROUTINE derrgg( PATH, NUNIT )
73 parameter( nmax = 3, lw = 6*nmax )
74 DOUBLE PRECISION ONE, ZERO
75 parameter( one = 1.0d+0, zero = 0.0d+0 )
79 INTEGER DUMMYK, DUMMYL, I, IFST, ILO, IHI, ILST, INFO,
80 $ j, m, ncycle, nt, sdim
81 DOUBLE PRECISION ANRM, BNRM, DIF, SCALE, TOLA, TOLB
84 LOGICAL BW( nmax ), SEL( nmax )
86 DOUBLE PRECISION A( nmax, nmax ), B( nmax, nmax ), LS( nmax ),
87 $ q( nmax, nmax ), r1( nmax ), r2( nmax ),
88 $ r3( nmax ), rce( 2 ), rcv( 2 ), rs( nmax ),
89 $ tau( nmax ), u( nmax, nmax ), v( nmax, nmax ),
90 $ w( lw ), z( nmax, nmax )
93 LOGICAL DLCTES, DLCTSX, LSAMEN
94 EXTERNAL dlctes, dlctsx, lsamen
108 COMMON / infoc / infot, nout, ok, lerr
109 COMMON / srnamc / srnamt
114 WRITE( nout, fmt = * )
139 IF( lsamen( 2, c2,
'GG' ) )
THEN
145 CALL dgghrd(
'/',
'N', 0, 1, 0, a, 1, b, 1, q, 1, z, 1, info )
146 CALL chkxer(
'DGGHRD', infot, nout, lerr, ok )
148 CALL dgghrd(
'N',
'/', 0, 1, 0, a, 1, b, 1, q, 1, z, 1, info )
149 CALL chkxer(
'DGGHRD', infot, nout, lerr, ok )
151 CALL dgghrd(
'N',
'N', -1, 0, 0, a, 1, b, 1, q, 1, z, 1, info )
152 CALL chkxer(
'DGGHRD', infot, nout, lerr, ok )
154 CALL dgghrd(
'N',
'N', 0, 0, 0, a, 1, b, 1, q, 1, z, 1, info )
155 CALL chkxer(
'DGGHRD', infot, nout, lerr, ok )
157 CALL dgghrd(
'N',
'N', 0, 1, 1, a, 1, b, 1, q, 1, z, 1, info )
158 CALL chkxer(
'DGGHRD', infot, nout, lerr, ok )
160 CALL dgghrd(
'N',
'N', 2, 1, 1, a, 1, b, 2, q, 1, z, 1, info )
161 CALL chkxer(
'DGGHRD', infot, nout, lerr, ok )
163 CALL dgghrd(
'N',
'N', 2, 1, 1, a, 2, b, 1, q, 1, z, 1, info )
164 CALL chkxer(
'DGGHRD', infot, nout, lerr, ok )
166 CALL dgghrd(
'V',
'N', 2, 1, 1, a, 2, b, 2, q, 1, z, 1, info )
167 CALL chkxer(
'DGGHRD', infot, nout, lerr, ok )
169 CALL dgghrd(
'N',
'V', 2, 1, 1, a, 2, b, 2, q, 1, z, 1, info )
170 CALL chkxer(
'DGGHRD', infot, nout, lerr, ok )
177 CALL dhgeqz(
'/',
'N',
'N', 0, 1, 0, a, 1, b, 1, r1, r2, r3, q,
178 $ 1, z, 1, w, lw, info )
179 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
181 CALL dhgeqz(
'E',
'/',
'N', 0, 1, 0, a, 1, b, 1, r1, r2, r3, q,
182 $ 1, z, 1, w, lw, info )
183 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
185 CALL dhgeqz(
'E',
'N',
'/', 0, 1, 0, a, 1, b, 1, r1, r2, r3, q,
186 $ 1, z, 1, w, lw, info )
187 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
189 CALL dhgeqz(
'E',
'N',
'N', -1, 0, 0, a, 1, b, 1, r1, r2, r3,
190 $ q, 1, z, 1, w, lw, info )
191 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
193 CALL dhgeqz(
'E',
'N',
'N', 0, 0, 0, a, 1, b, 1, r1, r2, r3, q,
194 $ 1, z, 1, w, lw, info )
195 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
197 CALL dhgeqz(
'E',
'N',
'N', 0, 1, 1, a, 1, b, 1, r1, r2, r3, q,
198 $ 1, z, 1, w, lw, info )
199 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
201 CALL dhgeqz(
'E',
'N',
'N', 2, 1, 1, a, 1, b, 2, r1, r2, r3, q,
202 $ 1, z, 1, w, lw, info )
203 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
205 CALL dhgeqz(
'E',
'N',
'N', 2, 1, 1, a, 2, b, 1, r1, r2, r3, q,
206 $ 1, z, 1, w, lw, info )
207 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
209 CALL dhgeqz(
'E',
'V',
'N', 2, 1, 1, a, 2, b, 2, r1, r2, r3, q,
210 $ 1, z, 1, w, lw, info )
211 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
213 CALL dhgeqz(
'E',
'N',
'V', 2, 1, 1, a, 2, b, 2, r1, r2, r3, q,
214 $ 1, z, 1, w, lw, info )
215 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
222 CALL dtgevc(
'/',
'A', sel, 0, a, 1, b, 1, q, 1, z, 1, 0, m, w,
224 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
226 CALL dtgevc(
'R',
'/', sel, 0, a, 1, b, 1, q, 1, z, 1, 0, m, w,
228 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
230 CALL dtgevc(
'R',
'A', sel, -1, a, 1, b, 1, q, 1, z, 1, 0, m,
232 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
234 CALL dtgevc(
'R',
'A', sel, 2, a, 1, b, 2, q, 1, z, 2, 0, m, w,
236 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
238 CALL dtgevc(
'R',
'A', sel, 2, a, 2, b, 1, q, 1, z, 2, 0, m, w,
240 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
242 CALL dtgevc(
'L',
'A', sel, 2, a, 2, b, 2, q, 1, z, 1, 0, m, w,
244 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
246 CALL dtgevc(
'R',
'A', sel, 2, a, 2, b, 2, q, 1, z, 1, 0, m, w,
248 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
250 CALL dtgevc(
'R',
'A', sel, 2, a, 2, b, 2, q, 1, z, 2, 1, m, w,
252 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
257 ELSE IF( lsamen( 3, path,
'GSV' ) )
THEN
263 CALL dggsvd(
'/',
'N',
'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
264 $ 1, r1, r2, u, 1, v, 1, q, 1, w, iw, info )
265 CALL chkxer(
'DGGSVD', infot, nout, lerr, ok )
267 CALL dggsvd(
'N',
'/',
'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
268 $ 1, r1, r2, u, 1, v, 1, q, 1, w, iw, info )
269 CALL chkxer(
'DGGSVD', infot, nout, lerr, ok )
271 CALL dggsvd(
'N',
'N',
'/', 0, 0, 0, dummyk, dummyl, a, 1, b,
272 $ 1, r1, r2, u, 1, v, 1, q, 1, w, iw, info )
273 CALL chkxer(
'DGGSVD', infot, nout, lerr, ok )
275 CALL dggsvd(
'N',
'N',
'N', -1, 0, 0, dummyk, dummyl, a, 1, b,
276 $ 1, r1, r2, u, 1, v, 1, q, 1, w, iw, info )
277 CALL chkxer(
'DGGSVD', infot, nout, lerr, ok )
279 CALL dggsvd(
'N',
'N',
'N', 0, -1, 0, dummyk, dummyl, a, 1, b,
280 $ 1, r1, r2, u, 1, v, 1, q, 1, w, iw, info )
281 CALL chkxer(
'DGGSVD', infot, nout, lerr, ok )
283 CALL dggsvd(
'N',
'N',
'N', 0, 0, -1, dummyk, dummyl, a, 1, b,
284 $ 1, r1, r2, u, 1, v, 1, q, 1, w, iw, info )
285 CALL chkxer(
'DGGSVD', infot, nout, lerr, ok )
287 CALL dggsvd(
'N',
'N',
'N', 2, 1, 1, dummyk, dummyl, a, 1, b,
288 $ 1, r1, r2, u, 1, v, 1, q, 1, w, iw, info )
289 CALL chkxer(
'DGGSVD', infot, nout, lerr, ok )
291 CALL dggsvd(
'N',
'N',
'N', 1, 1, 2, dummyk, dummyl, a, 1, b,
292 $ 1, r1, r2, u, 1, v, 1, q, 1, w, iw, info )
293 CALL chkxer(
'DGGSVD', infot, nout, lerr, ok )
295 CALL dggsvd(
'U',
'N',
'N', 2, 2, 2, dummyk, dummyl, a, 2, b,
296 $ 2, r1, r2, u, 1, v, 1, q, 1, w, iw, info )
297 CALL chkxer(
'DGGSVD', infot, nout, lerr, ok )
299 CALL dggsvd(
'N',
'V',
'N', 1, 1, 2, dummyk, dummyl, a, 1, b,
300 $ 2, r1, r2, u, 1, v, 1, q, 1, w, iw, info )
301 CALL chkxer(
'DGGSVD', infot, nout, lerr, ok )
303 CALL dggsvd(
'N',
'N',
'Q', 1, 2, 1, dummyk, dummyl, a, 1, b,
304 $ 1, r1, r2, u, 1, v, 1, q, 1, w, iw, info )
305 CALL chkxer(
'DGGSVD', infot, nout, lerr, ok )
312 CALL dggsvp(
'/',
'N',
'N', 0, 0, 0, a, 1, b, 1, tola, tolb,
313 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
315 CALL chkxer(
'DGGSVP', infot, nout, lerr, ok )
317 CALL dggsvp(
'N',
'/',
'N', 0, 0, 0, a, 1, b, 1, tola, tolb,
318 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
320 CALL chkxer(
'DGGSVP', infot, nout, lerr, ok )
322 CALL dggsvp(
'N',
'N',
'/', 0, 0, 0, a, 1, b, 1, tola, tolb,
323 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
325 CALL chkxer(
'DGGSVP', infot, nout, lerr, ok )
327 CALL dggsvp(
'N',
'N',
'N', -1, 0, 0, a, 1, b, 1, tola, tolb,
328 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
330 CALL chkxer(
'DGGSVP', infot, nout, lerr, ok )
332 CALL dggsvp(
'N',
'N',
'N', 0, -1, 0, a, 1, b, 1, tola, tolb,
333 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
335 CALL chkxer(
'DGGSVP', infot, nout, lerr, ok )
337 CALL dggsvp(
'N',
'N',
'N', 0, 0, -1, a, 1, b, 1, tola, tolb,
338 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
340 CALL chkxer(
'DGGSVP', infot, nout, lerr, ok )
342 CALL dggsvp(
'N',
'N',
'N', 2, 1, 1, a, 1, b, 1, tola, tolb,
343 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
345 CALL chkxer(
'DGGSVP', infot, nout, lerr, ok )
347 CALL dggsvp(
'N',
'N',
'N', 1, 2, 1, a, 1, b, 1, tola, tolb,
348 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
350 CALL chkxer(
'DGGSVP', infot, nout, lerr, ok )
352 CALL dggsvp(
'U',
'N',
'N', 2, 2, 2, a, 2, b, 2, tola, tolb,
353 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
355 CALL chkxer(
'DGGSVP', infot, nout, lerr, ok )
357 CALL dggsvp(
'N',
'V',
'N', 1, 2, 1, a, 1, b, 2, tola, tolb,
358 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
360 CALL chkxer(
'DGGSVP', infot, nout, lerr, ok )
362 CALL dggsvp(
'N',
'N',
'Q', 1, 1, 2, a, 1, b, 1, tola, tolb,
363 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
365 CALL chkxer(
'DGGSVP', infot, nout, lerr, ok )
372 CALL dtgsja(
'/',
'N',
'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
373 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
375 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
377 CALL dtgsja(
'N',
'/',
'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
378 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
380 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
382 CALL dtgsja(
'N',
'N',
'/', 0, 0, 0, dummyk, dummyl, a, 1, b,
383 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
385 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
387 CALL dtgsja(
'N',
'N',
'N', -1, 0, 0, dummyk, dummyl, a, 1, b,
388 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
390 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
392 CALL dtgsja(
'N',
'N',
'N', 0, -1, 0, dummyk, dummyl, a, 1, b,
393 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
395 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
397 CALL dtgsja(
'N',
'N',
'N', 0, 0, -1, dummyk, dummyl, a, 1, b,
398 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
400 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
402 CALL dtgsja(
'N',
'N',
'N', 0, 0, 0, dummyk, dummyl, a, 0, b,
403 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
405 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
407 CALL dtgsja(
'N',
'N',
'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
408 $ 0, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
410 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
412 CALL dtgsja(
'U',
'N',
'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
413 $ 1, tola, tolb, r1, r2, u, 0, v, 1, q, 1, w,
415 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
417 CALL dtgsja(
'N',
'V',
'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
418 $ 1, tola, tolb, r1, r2, u, 1, v, 0, q, 1, w,
420 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
422 CALL dtgsja(
'N',
'N',
'Q', 0, 0, 0, dummyk, dummyl, a, 1, b,
423 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 0, w,
425 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
430 ELSE IF( lsamen( 3, path,
'GLM' ) )
THEN
436 CALL dggglm( -1, 0, 0, a, 1, b, 1, r1, r2, r3, w, lw, info )
437 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
439 CALL dggglm( 0, -1, 0, a, 1, b, 1, r1, r2, r3, w, lw, info )
440 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
442 CALL dggglm( 0, 1, 0, a, 1, b, 1, r1, r2, r3, w, lw, info )
443 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
445 CALL dggglm( 0, 0, -1, a, 1, b, 1, r1, r2, r3, w, lw, info )
446 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
448 CALL dggglm( 1, 0, 0, a, 1, b, 1, r1, r2, r3, w, lw, info )
449 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
451 CALL dggglm( 0, 0, 0, a, 0, b, 1, r1, r2, r3, w, lw, info )
452 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
454 CALL dggglm( 0, 0, 0, a, 1, b, 0, r1, r2, r3, w, lw, info )
455 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
457 CALL dggglm( 1, 1, 1, a, 1, b, 1, r1, r2, r3, w, 1, info )
458 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
463 ELSE IF( lsamen( 3, path,
'LSE' ) )
THEN
469 CALL dgglse( -1, 0, 0, a, 1, b, 1, r1, r2, r3, w, lw, info )
470 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
472 CALL dgglse( 0, -1, 0, a, 1, b, 1, r1, r2, r3, w, lw, info )
473 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
475 CALL dgglse( 0, 0, -1, a, 1, b, 1, r1, r2, r3, w, lw, info )
476 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
478 CALL dgglse( 0, 0, 1, a, 1, b, 1, r1, r2, r3, w, lw, info )
479 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
481 CALL dgglse( 0, 1, 0, a, 1, b, 1, r1, r2, r3, w, lw, info )
482 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
484 CALL dgglse( 0, 0, 0, a, 0, b, 1, r1, r2, r3, w, lw, info )
485 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
487 CALL dgglse( 0, 0, 0, a, 1, b, 0, r1, r2, r3, w, lw, info )
488 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
490 CALL dgglse( 1, 1, 1, a, 1, b, 1, r1, r2, r3, w, 1, info )
491 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
496 ELSE IF( lsamen( 3, path,
'CSD' ) )
THEN
502 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
505 $ a, 1, a, 1, a, 1, a,
506 $ 1, w, lw, iw, info )
507 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
509 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
512 $ a, 1, a, 1, a, 1, a,
513 $ 1, w, lw, iw, info )
514 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
516 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
519 $ a, 1, a, 1, a, 1, a,
520 $ 1, w, lw, iw, info )
521 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
523 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
526 $ a, 1, a, 1, a, 1, a,
527 $ 1, w, lw, iw, info )
528 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
530 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
533 $ a, -1, a, 1, a, 1, a,
534 $ 1, w, lw, iw, info )
535 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
537 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
540 $ a, 1, a, -1, a, 1, a,
541 $ 1, w, lw, iw, info )
542 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
544 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
547 $ a, 1, a, 1, a, -1, a,
548 $ 1, w, lw, iw, info )
549 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
551 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
554 $ a, 1, a, 1, a, 1, a,
555 $ -1, w, lw, iw, info )
556 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
561 ELSE IF( lsamen( 3, path,
'GQR' ) )
THEN
567 CALL dggqrf( -1, 0, 0, a, 1, r1, b, 1, r2, w, lw, info )
568 CALL chkxer(
'DGGQRF', infot, nout, lerr, ok )
570 CALL dggqrf( 0, -1, 0, a, 1, r1, b, 1, r2, w, lw, info )
571 CALL chkxer(
'DGGQRF', infot, nout, lerr, ok )
573 CALL dggqrf( 0, 0, -1, a, 1, r1, b, 1, r2, w, lw, info )
574 CALL chkxer(
'DGGQRF', infot, nout, lerr, ok )
576 CALL dggqrf( 0, 0, 0, a, 0, r1, b, 1, r2, w, lw, info )
577 CALL chkxer(
'DGGQRF', infot, nout, lerr, ok )
579 CALL dggqrf( 0, 0, 0, a, 1, r1, b, 0, r2, w, lw, info )
580 CALL chkxer(
'DGGQRF', infot, nout, lerr, ok )
582 CALL dggqrf( 1, 1, 2, a, 1, r1, b, 1, r2, w, 1, info )
583 CALL chkxer(
'DGGQRF', infot, nout, lerr, ok )
590 CALL dggrqf( -1, 0, 0, a, 1, r1, b, 1, r2, w, lw, info )
591 CALL chkxer(
'DGGRQF', infot, nout, lerr, ok )
593 CALL dggrqf( 0, -1, 0, a, 1, r1, b, 1, r2, w, lw, info )
594 CALL chkxer(
'DGGRQF', infot, nout, lerr, ok )
596 CALL dggrqf( 0, 0, -1, a, 1, r1, b, 1, r2, w, lw, info )
597 CALL chkxer(
'DGGRQF', infot, nout, lerr, ok )
599 CALL dggrqf( 0, 0, 0, a, 0, r1, b, 1, r2, w, lw, info )
600 CALL chkxer(
'DGGRQF', infot, nout, lerr, ok )
602 CALL dggrqf( 0, 0, 0, a, 1, r1, b, 0, r2, w, lw, info )
603 CALL chkxer(
'DGGRQF', infot, nout, lerr, ok )
605 CALL dggrqf( 1, 1, 2, a, 1, r1, b, 1, r2, w, 1, info )
606 CALL chkxer(
'DGGRQF', infot, nout, lerr, ok )
611 ELSE IF( lsamen( 3, path,
'DGS' ) .OR.
612 $ lsamen( 3, path,
'DGV' ) .OR.
613 $ lsamen( 3, path,
'DGX' ) .OR. lsamen( 3, path,
'DXV' ) )
620 CALL dgges(
'/',
'N',
'S', dlctes, 1, a, 1, b, 1, sdim, r1, r2,
621 $ r3, q, 1, u, 1, w, 1, bw, info )
622 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
624 CALL dgges(
'N',
'/',
'S', dlctes, 1, a, 1, b, 1, sdim, r1, r2,
625 $ r3, q, 1, u, 1, w, 1, bw, info )
626 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
628 CALL dgges(
'N',
'V',
'/', dlctes, 1, a, 1, b, 1, sdim, r1, r2,
629 $ r3, q, 1, u, 1, w, 1, bw, info )
630 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
632 CALL dgges(
'N',
'V',
'S', dlctes, -1, a, 1, b, 1, sdim, r1,
633 $ r2, r3, q, 1, u, 1, w, 1, bw, info )
634 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
636 CALL dgges(
'N',
'V',
'S', dlctes, 1, a, 0, b, 1, sdim, r1, r2,
637 $ r3, q, 1, u, 1, w, 1, bw, info )
638 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
640 CALL dgges(
'N',
'V',
'S', dlctes, 1, a, 1, b, 0, sdim, r1, r2,
641 $ r3, q, 1, u, 1, w, 1, bw, info )
642 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
644 CALL dgges(
'N',
'V',
'S', dlctes, 1, a, 1, b, 1, sdim, r1, r2,
645 $ r3, q, 0, u, 1, w, 1, bw, info )
646 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
648 CALL dgges(
'V',
'V',
'S', dlctes, 2, a, 2, b, 2, sdim, r1, r2,
649 $ r3, q, 1, u, 2, w, 1, bw, info )
650 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
652 CALL dgges(
'N',
'V',
'S', dlctes, 1, a, 1, b, 1, sdim, r1, r2,
653 $ r3, q, 1, u, 0, w, 1, bw, info )
654 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
656 CALL dgges(
'V',
'V',
'S', dlctes, 2, a, 2, b, 2, sdim, r1, r2,
657 $ r3, q, 2, u, 1, w, 1, bw, info )
658 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
660 CALL dgges(
'V',
'V',
'S', dlctes, 2, a, 2, b, 2, sdim, r1, r2,
661 $ r3, q, 2, u, 2, w, 1, bw, info )
662 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
669 CALL dggesx(
'/',
'N',
'S', dlctsx,
'N', 1, a, 1, b, 1, sdim,
670 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
672 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
674 CALL dggesx(
'N',
'/',
'S', dlctsx,
'N', 1, a, 1, b, 1, sdim,
675 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
677 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
679 CALL dggesx(
'V',
'V',
'/', dlctsx,
'N', 1, a, 1, b, 1, sdim,
680 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
682 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
684 CALL dggesx(
'V',
'V',
'S', dlctsx,
'/', 1, a, 1, b, 1, sdim,
685 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
687 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
689 CALL dggesx(
'V',
'V',
'S', dlctsx,
'B', -1, a, 1, b, 1, sdim,
690 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
692 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
694 CALL dggesx(
'V',
'V',
'S', dlctsx,
'B', 1, a, 0, b, 1, sdim,
695 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
697 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
699 CALL dggesx(
'V',
'V',
'S', dlctsx,
'B', 1, a, 1, b, 0, sdim,
700 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
702 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
704 CALL dggesx(
'V',
'V',
'S', dlctsx,
'B', 1, a, 1, b, 1, sdim,
705 $ r1, r2, r3, q, 0, u, 1, rce, rcv, w, 1, iw, 1, bw,
707 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
709 CALL dggesx(
'V',
'V',
'S', dlctsx,
'B', 2, a, 2, b, 2, sdim,
710 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
712 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
714 CALL dggesx(
'V',
'V',
'S', dlctsx,
'B', 1, a, 1, b, 1, sdim,
715 $ r1, r2, r3, q, 1, u, 0, rce, rcv, w, 1, iw, 1, bw,
717 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
719 CALL dggesx(
'V',
'V',
'S', dlctsx,
'B', 2, a, 2, b, 2, sdim,
720 $ r1, r2, r3, q, 2, u, 1, rce, rcv, w, 1, iw, 1, bw,
722 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
724 CALL dggesx(
'V',
'V',
'S', dlctsx,
'B', 2, a, 2, b, 2, sdim,
725 $ r1, r2, r3, q, 2, u, 2, rce, rcv, w, 1, iw, 1, bw,
727 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
729 CALL dggesx(
'V',
'V',
'S', dlctsx,
'V', 1, a, 1, b, 1, sdim,
730 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 32, iw, 0,
732 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
739 CALL dggev(
'/',
'N', 1, a, 1, b, 1, r1, r2, r3, q, 1, u, 1, w,
741 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
743 CALL dggev(
'N',
'/', 1, a, 1, b, 1, r1, r2, r3, q, 1, u, 1, w,
745 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
747 CALL dggev(
'V',
'V', -1, a, 1, b, 1, r1, r2, r3, q, 1, u, 1,
749 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
751 CALL dggev(
'V',
'V', 1, a, 0, b, 1, r1, r2, r3, q, 1, u, 1, w,
753 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
755 CALL dggev(
'V',
'V', 1, a, 1, b, 0, r1, r2, r3, q, 1, u, 1, w,
757 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
759 CALL dggev(
'N',
'V', 1, a, 1, b, 1, r1, r2, r3, q, 0, u, 1, w,
761 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
763 CALL dggev(
'V',
'V', 2, a, 2, b, 2, r1, r2, r3, q, 1, u, 2, w,
765 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
767 CALL dggev(
'V',
'N', 2, a, 2, b, 2, r1, r2, r3, q, 2, u, 0, w,
769 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
771 CALL dggev(
'V',
'V', 2, a, 2, b, 2, r1, r2, r3, q, 2, u, 1, w,
773 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
775 CALL dggev(
'V',
'V', 1, a, 1, b, 1, r1, r2, r3, q, 1, u, 1, w,
777 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
784 CALL dggevx(
'/',
'N',
'N',
'N', 1, a, 1, b, 1, r1, r2, r3, q,
785 $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
786 $ w, 1, iw, bw, info )
787 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
789 CALL dggevx(
'N',
'/',
'N',
'N', 1, a, 1, b, 1, r1, r2, r3, q,
790 $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
791 $ w, 1, iw, bw, info )
792 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
794 CALL dggevx(
'N',
'N',
'/',
'N', 1, a, 1, b, 1, r1, r2, r3, q,
795 $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
796 $ w, 1, iw, bw, info )
797 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
799 CALL dggevx(
'N',
'N',
'N',
'/', 1, a, 1, b, 1, r1, r2, r3, q,
800 $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
801 $ w, 1, iw, bw, info )
802 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
804 CALL dggevx(
'N',
'N',
'N',
'N', -1, a, 1, b, 1, r1, r2, r3, q,
805 $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
806 $ w, 1, iw, bw, info )
807 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
809 CALL dggevx(
'N',
'N',
'N',
'N', 1, a, 0, b, 1, r1, r2, r3, q,
810 $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
811 $ w, 1, iw, bw, info )
812 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
814 CALL dggevx(
'N',
'N',
'N',
'N', 1, a, 1, b, 0, r1, r2, r3, q,
815 $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
816 $ w, 1, iw, bw, info )
817 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
819 CALL dggevx(
'N',
'N',
'N',
'N', 1, a, 1, b, 1, r1, r2, r3, q,
820 $ 0, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
821 $ w, 1, iw, bw, info )
822 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
824 CALL dggevx(
'N',
'V',
'N',
'N', 2, a, 2, b, 2, r1, r2, r3, q,
825 $ 1, u, 2, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
826 $ w, 1, iw, bw, info )
827 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
829 CALL dggevx(
'N',
'N',
'N',
'N', 1, a, 1, b, 1, r1, r2, r3, q,
830 $ 1, u, 0, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
831 $ w, 1, iw, bw, info )
832 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
834 CALL dggevx(
'N',
'N',
'V',
'N', 2, a, 2, b, 2, r1, r2, r3, q,
835 $ 2, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
836 $ w, 1, iw, bw, info )
837 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
839 CALL dggevx(
'N',
'N',
'V',
'N', 2, a, 2, b, 2, r1, r2, r3, q,
840 $ 2, u, 2, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
841 $ w, 1, iw, bw, info )
842 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
849 CALL dtgexc( .true., .true., -1, a, 1, b, 1, q, 1, z, 1, ifst,
851 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
853 CALL dtgexc( .true., .true., 1, a, 0, b, 1, q, 1, z, 1, ifst,
855 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
857 CALL dtgexc( .true., .true., 1, a, 1, b, 0, q, 1, z, 1, ifst,
859 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
861 CALL dtgexc( .false., .true., 1, a, 1, b, 1, q, 0, z, 1, ifst,
863 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
865 CALL dtgexc( .true., .true., 1, a, 1, b, 1, q, 0, z, 1, ifst,
867 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
869 CALL dtgexc( .true., .false., 1, a, 1, b, 1, q, 1, z, 0, ifst,
871 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
873 CALL dtgexc( .true., .true., 1, a, 1, b, 1, q, 1, z, 0, ifst,
875 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
877 CALL dtgexc( .true., .true., 1, a, 1, b, 1, q, 1, z, 1, ifst,
879 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
886 CALL dtgsen( -1, .true., .true., sel, 1, a, 1, b, 1, r1, r2,
887 $ r3, q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
889 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
891 CALL dtgsen( 1, .true., .true., sel, -1, a, 1, b, 1, r1, r2,
892 $ r3, q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
894 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
896 CALL dtgsen( 1, .true., .true., sel, 1, a, 0, b, 1, r1, r2, r3,
897 $ q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
899 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
901 CALL dtgsen( 1, .true., .true., sel, 1, a, 1, b, 0, r1, r2, r3,
902 $ q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
904 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
906 CALL dtgsen( 1, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
907 $ q, 0, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
909 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
911 CALL dtgsen( 1, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
912 $ q, 1, z, 0, m, tola, tolb, rcv, w, 1, iw, 1,
914 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
916 CALL dtgsen( 0, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
917 $ q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
919 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
921 CALL dtgsen( 1, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
922 $ q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
924 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
926 CALL dtgsen( 2, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
927 $ q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
929 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
931 CALL dtgsen( 0, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
932 $ q, 1, z, 1, m, tola, tolb, rcv, w, 20, iw, 0,
934 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
936 CALL dtgsen( 1, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
937 $ q, 1, z, 1, m, tola, tolb, rcv, w, 20, iw, 0,
939 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
941 CALL dtgsen( 2, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
942 $ q, 1, z, 1, m, tola, tolb, rcv, w, 20, iw, 1,
944 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
951 CALL dtgsna(
'/',
'A', sel, 1, a, 1, b, 1, q, 1, u, 1, r1, r2,
952 $ 1, m, w, 1, iw, info )
953 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
955 CALL dtgsna(
'B',
'/', sel, 1, a, 1, b, 1, q, 1, u, 1, r1, r2,
956 $ 1, m, w, 1, iw, info )
957 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
959 CALL dtgsna(
'B',
'A', sel, -1, a, 1, b, 1, q, 1, u, 1, r1, r2,
960 $ 1, m, w, 1, iw, info )
961 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
963 CALL dtgsna(
'B',
'A', sel, 1, a, 0, b, 1, q, 1, u, 1, r1, r2,
964 $ 1, m, w, 1, iw, info )
965 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
967 CALL dtgsna(
'B',
'A', sel, 1, a, 1, b, 0, q, 1, u, 1, r1, r2,
968 $ 1, m, w, 1, iw, info )
969 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
971 CALL dtgsna(
'E',
'A', sel, 1, a, 1, b, 1, q, 0, u, 1, r1, r2,
972 $ 1, m, w, 1, iw, info )
973 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
975 CALL dtgsna(
'E',
'A', sel, 1, a, 1, b, 1, q, 1, u, 0, r1, r2,
976 $ 1, m, w, 1, iw, info )
977 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
979 CALL dtgsna(
'E',
'A', sel, 1, a, 1, b, 1, q, 1, u, 1, r1, r2,
980 $ 0, m, w, 1, iw, info )
981 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
983 CALL dtgsna(
'E',
'A', sel, 1, a, 1, b, 1, q, 1, u, 1, r1, r2,
984 $ 1, m, w, 0, iw, info )
985 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
992 CALL dtgsyl(
'/', 0, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
993 $ scale, dif, w, 1, iw, info )
994 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
996 CALL dtgsyl(
'N', -1, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
997 $ scale, dif, w, 1, iw, info )
998 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1000 CALL dtgsyl(
'N', 0, 0, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
1001 $ scale, dif, w, 1, iw, info )
1002 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1004 CALL dtgsyl(
'N', 0, 1, 0, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
1005 $ scale, dif, w, 1, iw, info )
1006 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1008 CALL dtgsyl(
'N', 0, 1, 1, a, 0, b, 1, q, 1, u, 1, v, 1, z, 1,
1009 $ scale, dif, w, 1, iw, info )
1010 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1012 CALL dtgsyl(
'N', 0, 1, 1, a, 1, b, 0, q, 1, u, 1, v, 1, z, 1,
1013 $ scale, dif, w, 1, iw, info )
1014 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1016 CALL dtgsyl(
'N', 0, 1, 1, a, 1, b, 1, q, 0, u, 1, v, 1, z, 1,
1017 $ scale, dif, w, 1, iw, info )
1018 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1020 CALL dtgsyl(
'N', 0, 1, 1, a, 1, b, 1, q, 1, u, 0, v, 1, z, 1,
1021 $ scale, dif, w, 1, iw, info )
1022 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1024 CALL dtgsyl(
'N', 0, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 0, z, 1,
1025 $ scale, dif, w, 1, iw, info )
1026 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1028 CALL dtgsyl(
'N', 0, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 0,
1029 $ scale, dif, w, 1, iw, info )
1030 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1032 CALL dtgsyl(
'N', 1, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
1033 $ scale, dif, w, 1, iw, info )
1034 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1036 CALL dtgsyl(
'N', 2, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
1037 $ scale, dif, w, 1, iw, info )
1038 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1045 WRITE( nout, fmt = 9999 )path, nt
1047 WRITE( nout, fmt = 9998 )path
1050 9999
FORMAT( 1x, a3,
' routines passed the tests of the error exits (',
1051 $ i3,
' tests done)' )
1052 9998
FORMAT(
' *** ', a3,
' routines failed the tests of the error ',
subroutine dggesx(JOBVSL, JOBVSR, SORT, SELCTG, SENSE, N, A, LDA, B, LDB, SDIM, ALPHAR, ALPHAI, BETA, VSL, LDVSL, VSR, LDVSR, RCONDE, RCONDV, WORK, LWORK, IWORK, LIWORK, BWORK, INFO)
DGGESX computes the eigenvalues, the Schur form, and, optionally, the matrix of Schur vectors for GE...
subroutine dgges(JOBVSL, JOBVSR, SORT, SELCTG, N, A, LDA, B, LDB, SDIM, ALPHAR, ALPHAI, BETA, VSL, LDVSL, VSR, LDVSR, WORK, LWORK, BWORK, INFO)
DGGES computes the eigenvalues, the Schur form, and, optionally, the matrix of Schur vectors for GE ...
subroutine dtgsna(JOB, HOWMNY, SELECT, N, A, LDA, B, LDB, VL, LDVL, VR, LDVR, S, DIF, MM, M, WORK, LWORK, IWORK, INFO)
DTGSNA
subroutine dtgsja(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)
DTGSJA
subroutine dgghrd(COMPQ, COMPZ, N, ILO, IHI, A, LDA, B, LDB, Q, LDQ, Z, LDZ, INFO)
DGGHRD
subroutine dggrqf(M, P, N, A, LDA, TAUA, B, LDB, TAUB, WORK, LWORK, INFO)
DGGRQF
recursive subroutine dorcsd(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, IWORK, INFO)
DORCSD
subroutine chkxer(SRNAMT, INFOT, NOUT, LERR, OK)
subroutine dggsvd(JOBU, JOBV, JOBQ, M, N, P, K, L, A, LDA, B, LDB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, IWORK, INFO)
DGGSVD computes the singular value decomposition (SVD) for OTHER matrices
subroutine derrgg(PATH, NUNIT)
DERRGG
subroutine dggglm(N, M, P, A, LDA, B, LDB, D, X, Y, WORK, LWORK, INFO)
DGGEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for GE matrices ...
subroutine dhgeqz(JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT, ALPHAR, ALPHAI, BETA, Q, LDQ, Z, LDZ, WORK, LWORK, INFO)
DHGEQZ
subroutine dggqrf(N, M, P, A, LDA, TAUA, B, LDB, TAUB, WORK, LWORK, INFO)
DGGQRF
subroutine dggsvp(JOBU, JOBV, JOBQ, M, P, N, A, LDA, B, LDB, TOLA, TOLB, K, L, U, LDU, V, LDV, Q, LDQ, IWORK, TAU, WORK, INFO)
DGGSVP
subroutine dtgexc(WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, LDZ, IFST, ILST, WORK, LWORK, INFO)
DTGEXC
subroutine dtgevc(SIDE, HOWMNY, SELECT, N, S, LDS, P, LDP, VL, LDVL, VR, LDVR, MM, M, WORK, INFO)
DTGEVC
subroutine dgglse(M, N, P, A, LDA, B, LDB, C, D, X, WORK, LWORK, INFO)
DGGLSE solves overdetermined or underdetermined systems for OTHER matrices
subroutine dtgsen(IJOB, WANTQ, WANTZ, SELECT, N, A, LDA, B, LDB, ALPHAR, ALPHAI, BETA, Q, LDQ, Z, LDZ, M, PL, PR, DIF, WORK, LWORK, IWORK, LIWORK, INFO)
DTGSEN
subroutine dggev(JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHAR, ALPHAI, BETA, VL, LDVL, VR, LDVR, WORK, LWORK, INFO)
DGGEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for GE matrices ...
subroutine dggevx(BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, B, LDB, ALPHAR, ALPHAI, BETA, VL, LDVL, VR, LDVR, ILO, IHI, LSCALE, RSCALE, ABNRM, BBNRM, RCONDE, RCONDV, WORK, LWORK, IWORK, BWORK, INFO)
DGGEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for GE matrices ...
subroutine dtgsyl(TRANS, IJOB, M, N, A, LDA, B, LDB, C, LDC, D, LDD, E, LDE, F, LDF, SCALE, DIF, WORK, LWORK, IWORK, INFO)
DTGSYL