58 SUBROUTINE derrgg( PATH, NUNIT )
74 parameter ( nmax = 3, lw = 6*nmax )
75 DOUBLE PRECISION ONE, ZERO
76 parameter ( one = 1.0d+0, zero = 0.0d+0 )
80 INTEGER DUMMYK, DUMMYL, I, IFST, ILO, IHI, ILST, INFO,
81 $ j, m, ncycle, nt, sdim, lwork
82 DOUBLE PRECISION ANRM, BNRM, DIF, SCALE, TOLA, TOLB
85 LOGICAL BW( nmax ), SEL( nmax )
86 INTEGER IW( nmax ), IDUM(nmax)
87 DOUBLE PRECISION A( nmax, nmax ), B( nmax, nmax ), LS( nmax ),
88 $ q( nmax, nmax ), r1( nmax ), r2( nmax ),
89 $ r3( nmax ), rce( 2 ), rcv( 2 ), rs( nmax ),
90 $ tau( nmax ), u( nmax, nmax ), v( nmax, nmax ),
91 $ w( lw ), z( nmax, nmax )
94 LOGICAL DLCTES, DLCTSX, LSAMEN
95 EXTERNAL dlctes, dlctsx, lsamen
110 COMMON / infoc / infot, nout, ok, lerr
111 COMMON / srnamc / srnamt
116 WRITE( nout, fmt = * )
142 IF( lsamen( 2, c2,
'GG' ) )
THEN
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',
'/', 0, 1, 0, a, 1, b, 1, q, 1, z, 1, info )
152 CALL chkxer(
'DGGHRD', infot, nout, lerr, ok )
154 CALL dgghrd(
'N',
'N', -1, 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, 0, 0, a, 1, b, 1, q, 1, z, 1, info )
158 CALL chkxer(
'DGGHRD', infot, nout, lerr, ok )
160 CALL dgghrd(
'N',
'N', 0, 1, 1, a, 1, b, 1, q, 1, z, 1, info )
161 CALL chkxer(
'DGGHRD', infot, nout, lerr, ok )
163 CALL dgghrd(
'N',
'N', 2, 1, 1, a, 1, b, 2, q, 1, z, 1, info )
164 CALL chkxer(
'DGGHRD', infot, nout, lerr, ok )
166 CALL dgghrd(
'N',
'N', 2, 1, 1, a, 2, b, 1, q, 1, z, 1, info )
167 CALL chkxer(
'DGGHRD', infot, nout, lerr, ok )
169 CALL dgghrd(
'V',
'N', 2, 1, 1, a, 2, b, 2, q, 1, z, 1, info )
170 CALL chkxer(
'DGGHRD', infot, nout, lerr, ok )
172 CALL dgghrd(
'N',
'V', 2, 1, 1, a, 2, b, 2, q, 1, z, 1, info )
173 CALL chkxer(
'DGGHRD', infot, nout, lerr, ok )
180 CALL dgghd3(
'/',
'N', 0, 1, 0, a, 1, b, 1, q, 1, z, 1, w, lw,
182 CALL chkxer(
'DGGHD3', infot, nout, lerr, ok )
184 CALL dgghd3(
'N',
'/', 0, 1, 0, a, 1, b, 1, q, 1, z, 1, w, lw,
186 CALL chkxer(
'DGGHD3', infot, nout, lerr, ok )
188 CALL dgghd3(
'N',
'N', -1, 0, 0, a, 1, b, 1, q, 1, z, 1, w, lw,
190 CALL chkxer(
'DGGHD3', infot, nout, lerr, ok )
192 CALL dgghd3(
'N',
'N', 0, 0, 0, a, 1, b, 1, q, 1, z, 1, w, lw,
194 CALL chkxer(
'DGGHD3', infot, nout, lerr, ok )
196 CALL dgghd3(
'N',
'N', 0, 1, 1, a, 1, b, 1, q, 1, z, 1, w, lw,
198 CALL chkxer(
'DGGHD3', infot, nout, lerr, ok )
200 CALL dgghd3(
'N',
'N', 2, 1, 1, a, 1, b, 2, q, 1, z, 1, w, lw,
202 CALL chkxer(
'DGGHD3', infot, nout, lerr, ok )
204 CALL dgghd3(
'N',
'N', 2, 1, 1, a, 2, b, 1, q, 1, z, 1, w, lw,
206 CALL chkxer(
'DGGHD3', infot, nout, lerr, ok )
208 CALL dgghd3(
'V',
'N', 2, 1, 1, a, 2, b, 2, q, 1, z, 1, w, lw,
210 CALL chkxer(
'DGGHD3', infot, nout, lerr, ok )
212 CALL dgghd3(
'N',
'V', 2, 1, 1, a, 2, b, 2, q, 1, z, 1, w, lw,
214 CALL chkxer(
'DGGHD3', infot, nout, lerr, ok )
221 CALL dhgeqz(
'/',
'N',
'N', 0, 1, 0, a, 1, b, 1, r1, r2, r3, q,
222 $ 1, z, 1, w, lw, info )
223 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
225 CALL dhgeqz(
'E',
'/',
'N', 0, 1, 0, a, 1, b, 1, r1, r2, r3, q,
226 $ 1, z, 1, w, lw, info )
227 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
229 CALL dhgeqz(
'E',
'N',
'/', 0, 1, 0, a, 1, b, 1, r1, r2, r3, q,
230 $ 1, z, 1, w, lw, info )
231 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
233 CALL dhgeqz(
'E',
'N',
'N', -1, 0, 0, a, 1, b, 1, r1, r2, r3,
234 $ q, 1, z, 1, w, lw, info )
235 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
237 CALL dhgeqz(
'E',
'N',
'N', 0, 0, 0, a, 1, b, 1, r1, r2, r3, q,
238 $ 1, z, 1, w, lw, info )
239 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
241 CALL dhgeqz(
'E',
'N',
'N', 0, 1, 1, a, 1, b, 1, r1, r2, r3, q,
242 $ 1, z, 1, w, lw, info )
243 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
245 CALL dhgeqz(
'E',
'N',
'N', 2, 1, 1, a, 1, b, 2, r1, r2, r3, q,
246 $ 1, z, 1, w, lw, info )
247 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
249 CALL dhgeqz(
'E',
'N',
'N', 2, 1, 1, a, 2, b, 1, r1, r2, r3, q,
250 $ 1, z, 1, w, lw, info )
251 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
253 CALL dhgeqz(
'E',
'V',
'N', 2, 1, 1, a, 2, b, 2, r1, r2, r3, q,
254 $ 1, z, 1, w, lw, info )
255 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
257 CALL dhgeqz(
'E',
'N',
'V', 2, 1, 1, a, 2, b, 2, r1, r2, r3, q,
258 $ 1, z, 1, w, lw, info )
259 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
266 CALL dtgevc(
'/',
'A', sel, 0, a, 1, b, 1, q, 1, z, 1, 0, m, w,
268 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
270 CALL dtgevc(
'R',
'/', sel, 0, a, 1, b, 1, q, 1, z, 1, 0, m, w,
272 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
274 CALL dtgevc(
'R',
'A', sel, -1, a, 1, b, 1, q, 1, z, 1, 0, m,
276 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
278 CALL dtgevc(
'R',
'A', sel, 2, a, 1, b, 2, q, 1, z, 2, 0, m, w,
280 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
282 CALL dtgevc(
'R',
'A', sel, 2, a, 2, b, 1, q, 1, z, 2, 0, m, w,
284 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
286 CALL dtgevc(
'L',
'A', sel, 2, a, 2, b, 2, q, 1, z, 1, 0, m, w,
288 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
290 CALL dtgevc(
'R',
'A', sel, 2, a, 2, b, 2, q, 1, z, 1, 0, m, w,
292 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
294 CALL dtgevc(
'R',
'A', sel, 2, a, 2, b, 2, q, 1, z, 2, 1, m, w,
296 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
301 ELSE IF( lsamen( 3, path,
'GSV' ) )
THEN
307 CALL dggsvd3(
'/',
'N',
'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
308 $ 1, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
309 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
311 CALL dggsvd3(
'N',
'/',
'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
312 $ 1, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
313 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
315 CALL dggsvd3(
'N',
'N',
'/', 0, 0, 0, dummyk, dummyl, a, 1, b,
316 $ 1, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
317 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
319 CALL dggsvd3(
'N',
'N',
'N', -1, 0, 0, dummyk, dummyl, a, 1, b,
320 $ 1, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
321 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
323 CALL dggsvd3(
'N',
'N',
'N', 0, -1, 0, dummyk, dummyl, a, 1, b,
324 $ 1, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
325 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
327 CALL dggsvd3(
'N',
'N',
'N', 0, 0, -1, dummyk, dummyl, a, 1, b,
328 $ 1, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
329 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
331 CALL dggsvd3(
'N',
'N',
'N', 2, 1, 1, dummyk, dummyl, a, 1, b,
332 $ 1, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
333 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
335 CALL dggsvd3(
'N',
'N',
'N', 1, 1, 2, dummyk, dummyl, a, 1, b,
336 $ 1, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
337 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
339 CALL dggsvd3(
'U',
'N',
'N', 2, 2, 2, dummyk, dummyl, a, 2, b,
340 $ 2, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
341 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
343 CALL dggsvd3(
'N',
'V',
'N', 1, 1, 2, dummyk, dummyl, a, 1, b,
344 $ 2, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
345 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
347 CALL dggsvd3(
'N',
'N',
'Q', 1, 2, 1, dummyk, dummyl, a, 1, b,
348 $ 1, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
349 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
356 CALL dggsvp3(
'/',
'N',
'N', 0, 0, 0, a, 1, b, 1, tola, tolb,
357 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
359 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
361 CALL dggsvp3(
'N',
'/',
'N', 0, 0, 0, a, 1, b, 1, tola, tolb,
362 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
364 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
366 CALL dggsvp3(
'N',
'N',
'/', 0, 0, 0, a, 1, b, 1, tola, tolb,
367 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
369 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
371 CALL dggsvp3(
'N',
'N',
'N', -1, 0, 0, a, 1, b, 1, tola, tolb,
372 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
374 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
376 CALL dggsvp3(
'N',
'N',
'N', 0, -1, 0, a, 1, b, 1, tola, tolb,
377 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
379 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
381 CALL dggsvp3(
'N',
'N',
'N', 0, 0, -1, a, 1, b, 1, tola, tolb,
382 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
384 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
386 CALL dggsvp3(
'N',
'N',
'N', 2, 1, 1, a, 1, b, 1, tola, tolb,
387 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
389 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
391 CALL dggsvp3(
'N',
'N',
'N', 1, 2, 1, a, 1, b, 1, tola, tolb,
392 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
394 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
396 CALL dggsvp3(
'U',
'N',
'N', 2, 2, 2, a, 2, b, 2, tola, tolb,
397 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
399 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
401 CALL dggsvp3(
'N',
'V',
'N', 1, 2, 1, a, 1, b, 2, tola, tolb,
402 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
404 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
406 CALL dggsvp3(
'N',
'N',
'Q', 1, 1, 2, a, 1, b, 1, tola, tolb,
407 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
409 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
416 CALL dtgsja(
'/',
'N',
'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
417 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
419 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
421 CALL dtgsja(
'N',
'/',
'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
422 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
424 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
426 CALL dtgsja(
'N',
'N',
'/', 0, 0, 0, dummyk, dummyl, a, 1, b,
427 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
429 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
431 CALL dtgsja(
'N',
'N',
'N', -1, 0, 0, dummyk, dummyl, a, 1, b,
432 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
434 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
436 CALL dtgsja(
'N',
'N',
'N', 0, -1, 0, dummyk, dummyl, a, 1, b,
437 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
439 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
441 CALL dtgsja(
'N',
'N',
'N', 0, 0, -1, dummyk, dummyl, a, 1, b,
442 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
444 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
446 CALL dtgsja(
'N',
'N',
'N', 0, 0, 0, dummyk, dummyl, a, 0, b,
447 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
449 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
451 CALL dtgsja(
'N',
'N',
'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
452 $ 0, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
454 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
456 CALL dtgsja(
'U',
'N',
'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
457 $ 1, tola, tolb, r1, r2, u, 0, v, 1, q, 1, w,
459 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
461 CALL dtgsja(
'N',
'V',
'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
462 $ 1, tola, tolb, r1, r2, u, 1, v, 0, q, 1, w,
464 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
466 CALL dtgsja(
'N',
'N',
'Q', 0, 0, 0, dummyk, dummyl, a, 1, b,
467 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 0, w,
469 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
474 ELSE IF( lsamen( 3, path,
'GLM' ) )
THEN
480 CALL dggglm( -1, 0, 0, a, 1, b, 1, r1, r2, r3, w, lw, info )
481 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
483 CALL dggglm( 0, -1, 0, a, 1, b, 1, r1, r2, r3, w, lw, info )
484 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
486 CALL dggglm( 0, 1, 0, a, 1, b, 1, r1, r2, r3, w, lw, info )
487 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
489 CALL dggglm( 0, 0, -1, a, 1, b, 1, r1, r2, r3, w, lw, info )
490 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
492 CALL dggglm( 1, 0, 0, a, 1, b, 1, r1, r2, r3, w, lw, info )
493 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
495 CALL dggglm( 0, 0, 0, a, 0, b, 1, r1, r2, r3, w, lw, info )
496 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
498 CALL dggglm( 0, 0, 0, a, 1, b, 0, r1, r2, r3, w, lw, info )
499 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
501 CALL dggglm( 1, 1, 1, a, 1, b, 1, r1, r2, r3, w, 1, info )
502 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
507 ELSE IF( lsamen( 3, path,
'LSE' ) )
THEN
513 CALL dgglse( -1, 0, 0, a, 1, b, 1, r1, r2, r3, w, lw, info )
514 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
516 CALL dgglse( 0, -1, 0, a, 1, b, 1, r1, r2, r3, w, lw, info )
517 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
519 CALL dgglse( 0, 0, -1, a, 1, b, 1, r1, r2, r3, w, lw, info )
520 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
522 CALL dgglse( 0, 0, 1, a, 1, b, 1, r1, r2, r3, w, lw, info )
523 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
525 CALL dgglse( 0, 1, 0, a, 1, b, 1, r1, r2, r3, w, lw, info )
526 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
528 CALL dgglse( 0, 0, 0, a, 0, b, 1, r1, r2, r3, w, lw, info )
529 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
531 CALL dgglse( 0, 0, 0, a, 1, b, 0, r1, r2, r3, w, lw, info )
532 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
534 CALL dgglse( 1, 1, 1, a, 1, b, 1, r1, r2, r3, w, 1, info )
535 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
540 ELSE IF( lsamen( 3, path,
'CSD' ) )
THEN
546 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
549 $ a, 1, a, 1, a, 1, a,
550 $ 1, w, lw, iw, info )
551 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
553 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
556 $ a, 1, a, 1, a, 1, a,
557 $ 1, w, lw, iw, info )
558 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
560 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
563 $ a, 1, a, 1, a, 1, a,
564 $ 1, w, lw, iw, info )
565 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
567 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
570 $ a, 1, a, 1, a, 1, a,
571 $ 1, w, lw, iw, info )
572 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
574 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
577 $ a, -1, a, 1, a, 1, a,
578 $ 1, w, lw, iw, info )
579 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
581 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
584 $ a, 1, a, -1, a, 1, a,
585 $ 1, w, lw, iw, info )
586 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
588 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
591 $ a, 1, a, 1, a, -1, a,
592 $ 1, w, lw, iw, info )
593 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
595 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
598 $ a, 1, a, 1, a, 1, a,
599 $ -1, w, lw, iw, info )
600 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
605 ELSE IF( lsamen( 3, path,
'GQR' ) )
THEN
611 CALL dggqrf( -1, 0, 0, a, 1, r1, b, 1, r2, w, lw, info )
612 CALL chkxer(
'DGGQRF', infot, nout, lerr, ok )
614 CALL dggqrf( 0, -1, 0, a, 1, r1, b, 1, r2, w, lw, info )
615 CALL chkxer(
'DGGQRF', infot, nout, lerr, ok )
617 CALL dggqrf( 0, 0, -1, a, 1, r1, b, 1, r2, w, lw, info )
618 CALL chkxer(
'DGGQRF', infot, nout, lerr, ok )
620 CALL dggqrf( 0, 0, 0, a, 0, r1, b, 1, r2, w, lw, info )
621 CALL chkxer(
'DGGQRF', infot, nout, lerr, ok )
623 CALL dggqrf( 0, 0, 0, a, 1, r1, b, 0, r2, w, lw, info )
624 CALL chkxer(
'DGGQRF', infot, nout, lerr, ok )
626 CALL dggqrf( 1, 1, 2, a, 1, r1, b, 1, r2, w, 1, info )
627 CALL chkxer(
'DGGQRF', infot, nout, lerr, ok )
634 CALL dggrqf( -1, 0, 0, a, 1, r1, b, 1, r2, w, lw, info )
635 CALL chkxer(
'DGGRQF', infot, nout, lerr, ok )
637 CALL dggrqf( 0, -1, 0, a, 1, r1, b, 1, r2, w, lw, info )
638 CALL chkxer(
'DGGRQF', infot, nout, lerr, ok )
640 CALL dggrqf( 0, 0, -1, a, 1, r1, b, 1, r2, w, lw, info )
641 CALL chkxer(
'DGGRQF', infot, nout, lerr, ok )
643 CALL dggrqf( 0, 0, 0, a, 0, r1, b, 1, r2, w, lw, info )
644 CALL chkxer(
'DGGRQF', infot, nout, lerr, ok )
646 CALL dggrqf( 0, 0, 0, a, 1, r1, b, 0, r2, w, lw, info )
647 CALL chkxer(
'DGGRQF', infot, nout, lerr, ok )
649 CALL dggrqf( 1, 1, 2, a, 1, r1, b, 1, r2, w, 1, info )
650 CALL chkxer(
'DGGRQF', infot, nout, lerr, ok )
655 ELSE IF( lsamen( 3, path,
'DGS' ) .OR.
656 $ lsamen( 3, path,
'DGV' ) .OR.
657 $ lsamen( 3, path,
'DGX' ) .OR. lsamen( 3, path,
'DXV' ) )
664 CALL dgges(
'/',
'N',
'S', dlctes, 1, a, 1, b, 1, sdim, r1, r2,
665 $ r3, q, 1, u, 1, w, 1, bw, info )
666 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
668 CALL dgges(
'N',
'/',
'S', dlctes, 1, a, 1, b, 1, sdim, r1, r2,
669 $ r3, q, 1, u, 1, w, 1, bw, info )
670 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
672 CALL dgges(
'N',
'V',
'/', dlctes, 1, a, 1, b, 1, sdim, r1, r2,
673 $ r3, q, 1, u, 1, w, 1, bw, info )
674 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
676 CALL dgges(
'N',
'V',
'S', dlctes, -1, a, 1, b, 1, sdim, r1,
677 $ r2, r3, q, 1, u, 1, w, 1, bw, info )
678 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
680 CALL dgges(
'N',
'V',
'S', dlctes, 1, a, 0, b, 1, sdim, r1, r2,
681 $ r3, q, 1, u, 1, w, 1, bw, info )
682 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
684 CALL dgges(
'N',
'V',
'S', dlctes, 1, a, 1, b, 0, sdim, r1, r2,
685 $ r3, q, 1, u, 1, w, 1, bw, info )
686 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
688 CALL dgges(
'N',
'V',
'S', dlctes, 1, a, 1, b, 1, sdim, r1, r2,
689 $ r3, q, 0, u, 1, w, 1, bw, info )
690 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
692 CALL dgges(
'V',
'V',
'S', dlctes, 2, a, 2, b, 2, sdim, r1, r2,
693 $ r3, q, 1, u, 2, w, 1, bw, info )
694 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
696 CALL dgges(
'N',
'V',
'S', dlctes, 1, a, 1, b, 1, sdim, r1, r2,
697 $ r3, q, 1, u, 0, w, 1, bw, info )
698 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
700 CALL dgges(
'V',
'V',
'S', dlctes, 2, a, 2, b, 2, sdim, r1, r2,
701 $ r3, q, 2, u, 1, w, 1, bw, info )
702 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
704 CALL dgges(
'V',
'V',
'S', dlctes, 2, a, 2, b, 2, sdim, r1, r2,
705 $ r3, q, 2, u, 2, w, 1, bw, info )
706 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
713 CALL dgges3(
'/',
'N',
'S', dlctes, 1, a, 1, b, 1, sdim, r1,
714 $ r2, r3, q, 1, u, 1, w, 1, bw, info )
715 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
717 CALL dgges3(
'N',
'/',
'S', dlctes, 1, a, 1, b, 1, sdim, r1,
718 $ r2, r3, q, 1, u, 1, w, 1, bw, info )
719 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
721 CALL dgges3(
'N',
'V',
'/', dlctes, 1, a, 1, b, 1, sdim, r1,
722 $ r2, r3, q, 1, u, 1, w, 1, bw, info )
723 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
725 CALL dgges3(
'N',
'V',
'S', dlctes, -1, a, 1, b, 1, sdim, r1,
726 $ r2, r3, q, 1, u, 1, w, 1, bw, info )
727 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
729 CALL dgges3(
'N',
'V',
'S', dlctes, 1, a, 0, b, 1, sdim, r1,
730 $ r2, r3, q, 1, u, 1, w, 1, bw, info )
731 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
733 CALL dgges3(
'N',
'V',
'S', dlctes, 1, a, 1, b, 0, sdim, r1,
734 $ r2, r3, q, 1, u, 1, w, 1, bw, info )
735 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
737 CALL dgges3(
'N',
'V',
'S', dlctes, 1, a, 1, b, 1, sdim, r1,
738 $ r2, r3, q, 0, u, 1, w, 1, bw, info )
739 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
741 CALL dgges3(
'V',
'V',
'S', dlctes, 2, a, 2, b, 2, sdim, r1,
742 $ r2, r3, q, 1, u, 2, w, 1, bw, info )
743 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
745 CALL dgges3(
'N',
'V',
'S', dlctes, 1, a, 1, b, 1, sdim, r1,
746 $ r2, r3, q, 1, u, 0, w, 1, bw, info )
747 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
749 CALL dgges3(
'V',
'V',
'S', dlctes, 2, a, 2, b, 2, sdim, r1,
750 $ r2, r3, q, 2, u, 1, w, 1, bw, info )
751 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
753 CALL dgges3(
'V',
'V',
'S', dlctes, 2, a, 2, b, 2, sdim, r1,
754 $ r2, r3, q, 2, u, 2, w, 1, bw, info )
755 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
762 CALL dggesx(
'/',
'N',
'S', dlctsx,
'N', 1, a, 1, b, 1, sdim,
763 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
765 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
767 CALL dggesx(
'N',
'/',
'S', dlctsx,
'N', 1, a, 1, b, 1, sdim,
768 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
770 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
772 CALL dggesx(
'V',
'V',
'/', dlctsx,
'N', 1, a, 1, b, 1, sdim,
773 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
775 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
777 CALL dggesx(
'V',
'V',
'S', dlctsx,
'/', 1, a, 1, b, 1, sdim,
778 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
780 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
782 CALL dggesx(
'V',
'V',
'S', dlctsx,
'B', -1, a, 1, b, 1, sdim,
783 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
785 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
787 CALL dggesx(
'V',
'V',
'S', dlctsx,
'B', 1, a, 0, b, 1, sdim,
788 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
790 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
792 CALL dggesx(
'V',
'V',
'S', dlctsx,
'B', 1, a, 1, b, 0, sdim,
793 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
795 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
797 CALL dggesx(
'V',
'V',
'S', dlctsx,
'B', 1, a, 1, b, 1, sdim,
798 $ r1, r2, r3, q, 0, u, 1, rce, rcv, w, 1, iw, 1, bw,
800 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
802 CALL dggesx(
'V',
'V',
'S', dlctsx,
'B', 2, a, 2, b, 2, sdim,
803 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
805 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
807 CALL dggesx(
'V',
'V',
'S', dlctsx,
'B', 1, a, 1, b, 1, sdim,
808 $ r1, r2, r3, q, 1, u, 0, rce, rcv, w, 1, iw, 1, bw,
810 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
812 CALL dggesx(
'V',
'V',
'S', dlctsx,
'B', 2, a, 2, b, 2, sdim,
813 $ r1, r2, r3, q, 2, u, 1, rce, rcv, w, 1, iw, 1, bw,
815 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
817 CALL dggesx(
'V',
'V',
'S', dlctsx,
'B', 2, a, 2, b, 2, sdim,
818 $ r1, r2, r3, q, 2, u, 2, rce, rcv, w, 1, iw, 1, bw,
820 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
822 CALL dggesx(
'V',
'V',
'S', dlctsx,
'V', 1, a, 1, b, 1, sdim,
823 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 32, iw, 0,
825 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
832 CALL dggev(
'/',
'N', 1, a, 1, b, 1, r1, r2, r3, q, 1, u, 1, w,
834 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
836 CALL dggev(
'N',
'/', 1, a, 1, b, 1, r1, r2, r3, q, 1, u, 1, w,
838 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
840 CALL dggev(
'V',
'V', -1, a, 1, b, 1, r1, r2, r3, q, 1, u, 1,
842 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
844 CALL dggev(
'V',
'V', 1, a, 0, b, 1, r1, r2, r3, q, 1, u, 1, w,
846 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
848 CALL dggev(
'V',
'V', 1, a, 1, b, 0, r1, r2, r3, q, 1, u, 1, w,
850 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
852 CALL dggev(
'N',
'V', 1, a, 1, b, 1, r1, r2, r3, q, 0, u, 1, w,
854 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
856 CALL dggev(
'V',
'V', 2, a, 2, b, 2, r1, r2, r3, q, 1, u, 2, w,
858 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
860 CALL dggev(
'V',
'N', 2, a, 2, b, 2, r1, r2, r3, q, 2, u, 0, w,
862 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
864 CALL dggev(
'V',
'V', 2, a, 2, b, 2, r1, r2, r3, q, 2, u, 1, w,
866 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
868 CALL dggev(
'V',
'V', 1, a, 1, b, 1, r1, r2, r3, q, 1, u, 1, w,
870 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
877 CALL dggev3(
'/',
'N', 1, a, 1, b, 1, r1, r2, r3, q, 1, u, 1,
879 CALL chkxer(
'DGGEV3 ', infot, nout, lerr, ok )
881 CALL dggev3(
'N',
'/', 1, a, 1, b, 1, r1, r2, r3, q, 1, u, 1,
883 CALL chkxer(
'DGGEV3 ', infot, nout, lerr, ok )
885 CALL dggev3(
'V',
'V', -1, a, 1, b, 1, r1, r2, r3, q, 1, u, 1,
887 CALL chkxer(
'DGGEV3 ', infot, nout, lerr, ok )
889 CALL dggev3(
'V',
'V', 1, a, 0, b, 1, r1, r2, r3, q, 1, u, 1,
891 CALL chkxer(
'DGGEV3 ', infot, nout, lerr, ok )
893 CALL dggev3(
'V',
'V', 1, a, 1, b, 0, r1, r2, r3, q, 1, u, 1,
895 CALL chkxer(
'DGGEV3 ', infot, nout, lerr, ok )
897 CALL dggev3(
'N',
'V', 1, a, 1, b, 1, r1, r2, r3, q, 0, u, 1,
899 CALL chkxer(
'DGGEV3 ', infot, nout, lerr, ok )
901 CALL dggev3(
'V',
'V', 2, a, 2, b, 2, r1, r2, r3, q, 1, u, 2,
903 CALL chkxer(
'DGGEV3 ', infot, nout, lerr, ok )
905 CALL dggev3(
'V',
'N', 2, a, 2, b, 2, r1, r2, r3, q, 2, u, 0,
907 CALL chkxer(
'DGGEV3 ', infot, nout, lerr, ok )
909 CALL dggev3(
'V',
'V', 2, a, 2, b, 2, r1, r2, r3, q, 2, u, 1,
911 CALL chkxer(
'DGGEV3 ', infot, nout, lerr, ok )
913 CALL dggev3(
'V',
'V', 1, a, 1, b, 1, r1, r2, r3, q, 1, u, 1,
915 CALL chkxer(
'DGGEV3 ', infot, nout, lerr, ok )
922 CALL dggevx(
'/',
'N',
'N',
'N', 1, a, 1, b, 1, r1, r2, r3, q,
923 $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
924 $ w, 1, iw, bw, info )
925 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
927 CALL dggevx(
'N',
'/',
'N',
'N', 1, a, 1, b, 1, r1, r2, r3, q,
928 $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
929 $ w, 1, iw, bw, info )
930 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
932 CALL dggevx(
'N',
'N',
'/',
'N', 1, a, 1, b, 1, r1, r2, r3, q,
933 $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
934 $ w, 1, iw, bw, info )
935 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
937 CALL dggevx(
'N',
'N',
'N',
'/', 1, a, 1, b, 1, r1, r2, r3, q,
938 $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
939 $ w, 1, iw, bw, info )
940 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
942 CALL dggevx(
'N',
'N',
'N',
'N', -1, a, 1, b, 1, r1, r2, r3, q,
943 $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
944 $ w, 1, iw, bw, info )
945 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
947 CALL dggevx(
'N',
'N',
'N',
'N', 1, a, 0, b, 1, r1, r2, r3, q,
948 $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
949 $ w, 1, iw, bw, info )
950 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
952 CALL dggevx(
'N',
'N',
'N',
'N', 1, a, 1, b, 0, r1, r2, r3, q,
953 $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
954 $ w, 1, iw, bw, info )
955 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
957 CALL dggevx(
'N',
'N',
'N',
'N', 1, a, 1, b, 1, r1, r2, r3, q,
958 $ 0, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
959 $ w, 1, iw, bw, info )
960 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
962 CALL dggevx(
'N',
'V',
'N',
'N', 2, a, 2, b, 2, r1, r2, r3, q,
963 $ 1, u, 2, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
964 $ w, 1, iw, bw, info )
965 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
967 CALL dggevx(
'N',
'N',
'N',
'N', 1, a, 1, b, 1, r1, r2, r3, q,
968 $ 1, u, 0, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
969 $ w, 1, iw, bw, info )
970 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
972 CALL dggevx(
'N',
'N',
'V',
'N', 2, a, 2, b, 2, r1, r2, r3, q,
973 $ 2, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
974 $ w, 1, iw, bw, info )
975 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
977 CALL dggevx(
'N',
'N',
'V',
'N', 2, a, 2, b, 2, r1, r2, r3, q,
978 $ 2, u, 2, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
979 $ w, 1, iw, bw, info )
980 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
987 CALL dtgexc( .true., .true., -1, a, 1, b, 1, q, 1, z, 1, ifst,
989 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
991 CALL dtgexc( .true., .true., 1, a, 0, b, 1, q, 1, z, 1, ifst,
993 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
995 CALL dtgexc( .true., .true., 1, a, 1, b, 0, q, 1, z, 1, ifst,
997 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
999 CALL dtgexc( .false., .true., 1, a, 1, b, 1, q, 0, z, 1, ifst,
1000 $ ilst, w, 1, info )
1001 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
1003 CALL dtgexc( .true., .true., 1, a, 1, b, 1, q, 0, z, 1, ifst,
1004 $ ilst, w, 1, info )
1005 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
1007 CALL dtgexc( .true., .false., 1, a, 1, b, 1, q, 1, z, 0, ifst,
1008 $ ilst, w, 1, info )
1009 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
1011 CALL dtgexc( .true., .true., 1, a, 1, b, 1, q, 1, z, 0, ifst,
1012 $ ilst, w, 1, info )
1013 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
1015 CALL dtgexc( .true., .true., 1, a, 1, b, 1, q, 1, z, 1, ifst,
1016 $ ilst, w, 0, info )
1017 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
1024 CALL dtgsen( -1, .true., .true., sel, 1, a, 1, b, 1, r1, r2,
1025 $ r3, q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
1027 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1029 CALL dtgsen( 1, .true., .true., sel, -1, a, 1, b, 1, r1, r2,
1030 $ r3, q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
1032 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1034 CALL dtgsen( 1, .true., .true., sel, 1, a, 0, b, 1, r1, r2, r3,
1035 $ q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
1037 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1039 CALL dtgsen( 1, .true., .true., sel, 1, a, 1, b, 0, r1, r2, r3,
1040 $ q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
1042 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1044 CALL dtgsen( 1, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
1045 $ q, 0, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
1047 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1049 CALL dtgsen( 1, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
1050 $ q, 1, z, 0, m, tola, tolb, rcv, w, 1, iw, 1,
1052 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1054 CALL dtgsen( 0, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
1055 $ q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
1057 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1059 CALL dtgsen( 1, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
1060 $ q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
1062 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1064 CALL dtgsen( 2, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
1065 $ q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
1067 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1069 CALL dtgsen( 0, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
1070 $ q, 1, z, 1, m, tola, tolb, rcv, w, 20, iw, 0,
1072 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1074 CALL dtgsen( 1, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
1075 $ q, 1, z, 1, m, tola, tolb, rcv, w, 20, iw, 0,
1077 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1079 CALL dtgsen( 2, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
1080 $ q, 1, z, 1, m, tola, tolb, rcv, w, 20, iw, 1,
1082 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1089 CALL dtgsna(
'/',
'A', sel, 1, a, 1, b, 1, q, 1, u, 1, r1, r2,
1090 $ 1, m, w, 1, iw, info )
1091 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
1093 CALL dtgsna(
'B',
'/', sel, 1, a, 1, b, 1, q, 1, u, 1, r1, r2,
1094 $ 1, m, w, 1, iw, info )
1095 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
1097 CALL dtgsna(
'B',
'A', sel, -1, a, 1, b, 1, q, 1, u, 1, r1, r2,
1098 $ 1, m, w, 1, iw, info )
1099 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
1101 CALL dtgsna(
'B',
'A', sel, 1, a, 0, b, 1, q, 1, u, 1, r1, r2,
1102 $ 1, m, w, 1, iw, info )
1103 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
1105 CALL dtgsna(
'B',
'A', sel, 1, a, 1, b, 0, q, 1, u, 1, r1, r2,
1106 $ 1, m, w, 1, iw, info )
1107 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
1109 CALL dtgsna(
'E',
'A', sel, 1, a, 1, b, 1, q, 0, u, 1, r1, r2,
1110 $ 1, m, w, 1, iw, info )
1111 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
1113 CALL dtgsna(
'E',
'A', sel, 1, a, 1, b, 1, q, 1, u, 0, r1, r2,
1114 $ 1, m, w, 1, iw, info )
1115 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
1117 CALL dtgsna(
'E',
'A', sel, 1, a, 1, b, 1, q, 1, u, 1, r1, r2,
1118 $ 0, m, w, 1, iw, info )
1119 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
1121 CALL dtgsna(
'E',
'A', sel, 1, a, 1, b, 1, q, 1, u, 1, r1, r2,
1122 $ 1, m, w, 0, iw, info )
1123 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
1130 CALL dtgsyl(
'/', 0, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
1131 $ scale, dif, w, 1, iw, info )
1132 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1134 CALL dtgsyl(
'N', -1, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
1135 $ scale, dif, w, 1, iw, info )
1136 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1138 CALL dtgsyl(
'N', 0, 0, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
1139 $ scale, dif, w, 1, iw, info )
1140 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1142 CALL dtgsyl(
'N', 0, 1, 0, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
1143 $ scale, dif, w, 1, iw, info )
1144 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1146 CALL dtgsyl(
'N', 0, 1, 1, a, 0, b, 1, q, 1, u, 1, v, 1, z, 1,
1147 $ scale, dif, w, 1, iw, info )
1148 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1150 CALL dtgsyl(
'N', 0, 1, 1, a, 1, b, 0, q, 1, u, 1, v, 1, z, 1,
1151 $ scale, dif, w, 1, iw, info )
1152 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1154 CALL dtgsyl(
'N', 0, 1, 1, a, 1, b, 1, q, 0, u, 1, v, 1, z, 1,
1155 $ scale, dif, w, 1, iw, info )
1156 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1158 CALL dtgsyl(
'N', 0, 1, 1, a, 1, b, 1, q, 1, u, 0, v, 1, z, 1,
1159 $ scale, dif, w, 1, iw, info )
1160 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1162 CALL dtgsyl(
'N', 0, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 0, z, 1,
1163 $ scale, dif, w, 1, iw, info )
1164 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1166 CALL dtgsyl(
'N', 0, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 0,
1167 $ scale, dif, w, 1, iw, info )
1168 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1170 CALL dtgsyl(
'N', 1, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
1171 $ scale, dif, w, 1, iw, info )
1172 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1174 CALL dtgsyl(
'N', 2, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
1175 $ scale, dif, w, 1, iw, info )
1176 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1183 WRITE( nout, fmt = 9999 )path, nt
1185 WRITE( nout, fmt = 9998 )path
1188 9999
FORMAT( 1x, a3,
' routines passed the tests of the error exits (',
1189 $ i3,
' tests done)' )
1190 9998
FORMAT(
' *** ', a3,
' routines failed the tests of the error ',
subroutine dgghrd(COMPQ, COMPZ, N, ILO, IHI, A, LDA, B, LDB, Q, LDQ, Z, LDZ, INFO)
DGGHRD
subroutine dgghd3(COMPQ, COMPZ, N, ILO, IHI, A, LDA, B, LDB, Q, LDQ, Z, LDZ, WORK, LWORK, INFO)
DGGHD3
subroutine dggsvd3(JOBU, JOBV, JOBQ, M, N, P, K, L, A, LDA, B, LDB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, LWORK, IWORK, INFO)
DGGSVD3 computes the singular value decomposition (SVD) for OTHER 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 dgges3(JOBVSL, JOBVSR, SORT, SELCTG, N, A, LDA, B, LDB, SDIM, ALPHAR, ALPHAI, BETA, VSL, LDVSL, VSR, LDVSR, WORK, LWORK, BWORK, INFO)
DGGES3 computes the eigenvalues, the Schur form, and, optionally, the matrix of Schur vectors for GE...
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 dtgevc(SIDE, HOWMNY, SELECT, N, S, LDS, P, LDP, VL, LDVL, VR, LDVR, MM, M, WORK, INFO)
DTGEVC
subroutine chkxer(SRNAMT, INFOT, NOUT, LERR, OK)
subroutine dtgexc(WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, LDZ, IFST, ILST, WORK, LWORK, INFO)
DTGEXC
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 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 dgglse(M, N, P, A, LDA, B, LDB, C, D, X, WORK, LWORK, INFO)
DGGLSE solves overdetermined or underdetermined systems for OTHER matrices
subroutine dggev3(JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHAR, ALPHAI, BETA, VL, LDVL, VR, LDVR, WORK, LWORK, INFO)
DGGEV3 computes the eigenvalues and, optionally, the left and/or right eigenvectors for GE matrices ...
subroutine derrgg(PATH, NUNIT)
DERRGG
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 dggglm(N, M, P, A, LDA, B, LDB, D, X, Y, WORK, LWORK, INFO)
DGGGLM
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 dggrqf(M, P, N, A, LDA, TAUA, B, LDB, TAUB, WORK, LWORK, INFO)
DGGRQF
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
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 dtgsna(JOB, HOWMNY, SELECT, N, A, LDA, B, LDB, VL, LDVL, VR, LDVR, S, DIF, MM, M, WORK, LWORK, IWORK, INFO)
DTGSNA
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 dggqrf(N, M, P, A, LDA, TAUA, B, LDB, TAUB, WORK, LWORK, INFO)
DGGQRF
subroutine dggsvp3(JOBU, JOBV, JOBQ, M, P, N, A, LDA, B, LDB, TOLA, TOLB, K, L, U, LDU, V, LDV, Q, LDQ, IWORK, TAU, WORK, LWORK, INFO)
DGGSVP3