71 parameter( nmax = 3, lw = 6*nmax )
72 DOUBLE PRECISION ONE, ZERO
73 parameter( one = 1.0d+0, zero = 0.0d+0 )
77 INTEGER DUMMYK, DUMMYL, I, IFST, ILO, IHI, ILST, INFO,
78 $ J, M, NCYCLE, NT, SDIM, LWORK
79 DOUBLE PRECISION ANRM, BNRM, DIF, SCALE, TOLA, TOLB
82 LOGICAL BW( NMAX ), SEL( NMAX )
83 INTEGER IW( NMAX ), IDUM(NMAX)
84 DOUBLE PRECISION A( NMAX, NMAX ), B( NMAX, NMAX ), LS( NMAX ),
85 $ Q( NMAX, NMAX ), R1( NMAX ), R2( NMAX ),
86 $ R3( NMAX ), RCE( 2 ), RCV( 2 ), RS( NMAX ),
87 $ TAU( NMAX ), U( NMAX, NMAX ), V( NMAX, NMAX ),
88 $ W( LW ), Z( NMAX, NMAX )
91 LOGICAL DLCTES, DLCTSX, LSAMEN
107 COMMON / infoc / infot, nout, ok, lerr
108 COMMON / srnamc / srnamt
113 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 dgghd3(
'/',
'N', 0, 1, 0, a, 1, b, 1, q, 1, z, 1, w, lw,
179 CALL chkxer(
'DGGHD3', infot, nout, lerr, ok )
181 CALL dgghd3(
'N',
'/', 0, 1, 0, a, 1, b, 1, q, 1, z, 1, w, lw,
183 CALL chkxer(
'DGGHD3', infot, nout, lerr, ok )
185 CALL dgghd3(
'N',
'N', -1, 0, 0, a, 1, b, 1, q, 1, z, 1, w, lw,
187 CALL chkxer(
'DGGHD3', infot, nout, lerr, ok )
189 CALL dgghd3(
'N',
'N', 0, 0, 0, a, 1, b, 1, q, 1, z, 1, w, lw,
191 CALL chkxer(
'DGGHD3', infot, nout, lerr, ok )
193 CALL dgghd3(
'N',
'N', 0, 1, 1, a, 1, b, 1, q, 1, z, 1, w, lw,
195 CALL chkxer(
'DGGHD3', infot, nout, lerr, ok )
197 CALL dgghd3(
'N',
'N', 2, 1, 1, a, 1, b, 2, q, 1, z, 1, w, lw,
199 CALL chkxer(
'DGGHD3', infot, nout, lerr, ok )
201 CALL dgghd3(
'N',
'N', 2, 1, 1, a, 2, b, 1, q, 1, z, 1, w, lw,
203 CALL chkxer(
'DGGHD3', infot, nout, lerr, ok )
205 CALL dgghd3(
'V',
'N', 2, 1, 1, a, 2, b, 2, q, 1, z, 1, w, lw,
207 CALL chkxer(
'DGGHD3', infot, nout, lerr, ok )
209 CALL dgghd3(
'N',
'V', 2, 1, 1, a, 2, b, 2, q, 1, z, 1, w, lw,
211 CALL chkxer(
'DGGHD3', infot, nout, lerr, ok )
218 CALL dhgeqz(
'/',
'N',
'N', 0, 1, 0, a, 1, b, 1, r1, r2, r3, q,
219 $ 1, z, 1, w, lw, info )
220 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
222 CALL dhgeqz(
'E',
'/',
'N', 0, 1, 0, a, 1, b, 1, r1, r2, r3, q,
223 $ 1, z, 1, w, lw, info )
224 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
226 CALL dhgeqz(
'E',
'N',
'/', 0, 1, 0, a, 1, b, 1, r1, r2, r3, q,
227 $ 1, z, 1, w, lw, info )
228 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
230 CALL dhgeqz(
'E',
'N',
'N', -1, 0, 0, a, 1, b, 1, r1, r2, r3,
231 $ q, 1, z, 1, w, lw, info )
232 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
234 CALL dhgeqz(
'E',
'N',
'N', 0, 0, 0, a, 1, b, 1, r1, r2, r3, q,
235 $ 1, z, 1, w, lw, info )
236 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
238 CALL dhgeqz(
'E',
'N',
'N', 0, 1, 1, a, 1, b, 1, r1, r2, r3, q,
239 $ 1, z, 1, w, lw, info )
240 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
242 CALL dhgeqz(
'E',
'N',
'N', 2, 1, 1, a, 1, b, 2, r1, r2, r3, q,
243 $ 1, z, 1, w, lw, info )
244 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
246 CALL dhgeqz(
'E',
'N',
'N', 2, 1, 1, a, 2, b, 1, r1, r2, r3, q,
247 $ 1, z, 1, w, lw, info )
248 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
250 CALL dhgeqz(
'E',
'V',
'N', 2, 1, 1, a, 2, b, 2, r1, r2, r3, q,
251 $ 1, z, 1, w, lw, info )
252 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
254 CALL dhgeqz(
'E',
'N',
'V', 2, 1, 1, a, 2, b, 2, r1, r2, r3, q,
255 $ 1, z, 1, w, lw, info )
256 CALL chkxer(
'DHGEQZ', infot, nout, lerr, ok )
263 CALL dtgevc(
'/',
'A', sel, 0, a, 1, b, 1, q, 1, z, 1, 0, m, w,
265 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
267 CALL dtgevc(
'R',
'/', sel, 0, a, 1, b, 1, q, 1, z, 1, 0, m, w,
269 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
271 CALL dtgevc(
'R',
'A', sel, -1, a, 1, b, 1, q, 1, z, 1, 0, m,
273 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
275 CALL dtgevc(
'R',
'A', sel, 2, a, 1, b, 2, q, 1, z, 2, 0, m, w,
277 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
279 CALL dtgevc(
'R',
'A', sel, 2, a, 2, b, 1, q, 1, z, 2, 0, m, w,
281 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
283 CALL dtgevc(
'L',
'A', sel, 2, a, 2, b, 2, q, 1, z, 1, 0, m, w,
285 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
287 CALL dtgevc(
'R',
'A', sel, 2, a, 2, b, 2, q, 1, z, 1, 0, m, w,
289 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
291 CALL dtgevc(
'R',
'A', sel, 2, a, 2, b, 2, q, 1, z, 2, 1, m, w,
293 CALL chkxer(
'DTGEVC', infot, nout, lerr, ok )
298 ELSE IF(
lsamen( 3, path,
'GSV' ) )
THEN
304 CALL dggsvd3(
'/',
'N',
'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
305 $ 1, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
306 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
308 CALL dggsvd3(
'N',
'/',
'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
309 $ 1, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
310 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
312 CALL dggsvd3(
'N',
'N',
'/', 0, 0, 0, dummyk, dummyl, a, 1, b,
313 $ 1, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
314 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
316 CALL dggsvd3(
'N',
'N',
'N', -1, 0, 0, dummyk, dummyl, a, 1, b,
317 $ 1, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
318 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
320 CALL dggsvd3(
'N',
'N',
'N', 0, -1, 0, dummyk, dummyl, a, 1, b,
321 $ 1, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
322 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
324 CALL dggsvd3(
'N',
'N',
'N', 0, 0, -1, dummyk, dummyl, a, 1, b,
325 $ 1, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
326 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
328 CALL dggsvd3(
'N',
'N',
'N', 2, 1, 1, dummyk, dummyl, a, 1, b,
329 $ 1, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
330 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
332 CALL dggsvd3(
'N',
'N',
'N', 1, 1, 2, dummyk, dummyl, a, 1, b,
333 $ 1, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
334 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
336 CALL dggsvd3(
'U',
'N',
'N', 2, 2, 2, dummyk, dummyl, a, 2, b,
337 $ 2, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
338 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
340 CALL dggsvd3(
'N',
'V',
'N', 1, 1, 2, dummyk, dummyl, a, 1, b,
341 $ 2, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
342 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
344 CALL dggsvd3(
'N',
'N',
'Q', 1, 2, 1, dummyk, dummyl, a, 1, b,
345 $ 1, r1, r2, u, 1, v, 1, q, 1, w, lwork, idum, info )
346 CALL chkxer(
'DGGSVD3', infot, nout, lerr, ok )
353 CALL dggsvp3(
'/',
'N',
'N', 0, 0, 0, a, 1, b, 1, tola, tolb,
354 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
356 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
358 CALL dggsvp3(
'N',
'/',
'N', 0, 0, 0, a, 1, b, 1, tola, tolb,
359 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
361 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
363 CALL dggsvp3(
'N',
'N',
'/', 0, 0, 0, a, 1, b, 1, tola, tolb,
364 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
366 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
368 CALL dggsvp3(
'N',
'N',
'N', -1, 0, 0, a, 1, b, 1, tola, tolb,
369 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
371 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
373 CALL dggsvp3(
'N',
'N',
'N', 0, -1, 0, a, 1, b, 1, tola, tolb,
374 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
376 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
378 CALL dggsvp3(
'N',
'N',
'N', 0, 0, -1, a, 1, b, 1, tola, tolb,
379 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
381 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
383 CALL dggsvp3(
'N',
'N',
'N', 2, 1, 1, a, 1, b, 1, tola, tolb,
384 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
386 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
388 CALL dggsvp3(
'N',
'N',
'N', 1, 2, 1, a, 1, b, 1, tola, tolb,
389 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
391 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
393 CALL dggsvp3(
'U',
'N',
'N', 2, 2, 2, a, 2, b, 2, tola, tolb,
394 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
396 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
398 CALL dggsvp3(
'N',
'V',
'N', 1, 2, 1, a, 1, b, 2, tola, tolb,
399 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
401 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
403 CALL dggsvp3(
'N',
'N',
'Q', 1, 1, 2, a, 1, b, 1, tola, tolb,
404 $ dummyk, dummyl, u, 1, v, 1, q, 1, iw, tau, w,
406 CALL chkxer(
'DGGSVP3', infot, nout, lerr, ok )
413 CALL dtgsja(
'/',
'N',
'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
414 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
416 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
418 CALL dtgsja(
'N',
'/',
'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
419 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
421 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
423 CALL dtgsja(
'N',
'N',
'/', 0, 0, 0, dummyk, dummyl, a, 1, b,
424 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
426 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
428 CALL dtgsja(
'N',
'N',
'N', -1, 0, 0, dummyk, dummyl, a, 1, b,
429 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
431 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
433 CALL dtgsja(
'N',
'N',
'N', 0, -1, 0, dummyk, dummyl, a, 1, b,
434 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
436 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
438 CALL dtgsja(
'N',
'N',
'N', 0, 0, -1, dummyk, dummyl, a, 1, b,
439 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
441 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
443 CALL dtgsja(
'N',
'N',
'N', 0, 0, 0, dummyk, dummyl, a, 0, b,
444 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
446 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
448 CALL dtgsja(
'N',
'N',
'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
449 $ 0, tola, tolb, r1, r2, u, 1, v, 1, q, 1, w,
451 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
453 CALL dtgsja(
'U',
'N',
'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
454 $ 1, tola, tolb, r1, r2, u, 0, v, 1, q, 1, w,
456 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
458 CALL dtgsja(
'N',
'V',
'N', 0, 0, 0, dummyk, dummyl, a, 1, b,
459 $ 1, tola, tolb, r1, r2, u, 1, v, 0, q, 1, w,
461 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
463 CALL dtgsja(
'N',
'N',
'Q', 0, 0, 0, dummyk, dummyl, a, 1, b,
464 $ 1, tola, tolb, r1, r2, u, 1, v, 1, q, 0, w,
466 CALL chkxer(
'DTGSJA', infot, nout, lerr, ok )
471 ELSE IF(
lsamen( 3, path,
'GLM' ) )
THEN
477 CALL dggglm( -1, 0, 0, a, 1, b, 1, r1, r2, r3, w, lw, info )
478 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
480 CALL dggglm( 0, -1, 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, 0, -1, a, 1, b, 1, r1, r2, r3, w, lw, info )
487 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
489 CALL dggglm( 1, 0, 0, a, 1, b, 1, r1, r2, r3, w, lw, info )
490 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
492 CALL dggglm( 0, 0, 0, a, 0, b, 1, r1, r2, r3, w, lw, info )
493 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
495 CALL dggglm( 0, 0, 0, a, 1, b, 0, r1, r2, r3, w, lw, info )
496 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
498 CALL dggglm( 1, 1, 1, a, 1, b, 1, r1, r2, r3, w, 1, info )
499 CALL chkxer(
'DGGGLM', infot, nout, lerr, ok )
504 ELSE IF(
lsamen( 3, path,
'LSE' ) )
THEN
510 CALL dgglse( -1, 0, 0, a, 1, b, 1, r1, r2, r3, w, lw, info )
511 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
513 CALL dgglse( 0, -1, 0, a, 1, b, 1, r1, r2, r3, w, lw, info )
514 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
516 CALL dgglse( 0, 0, -1, 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, 1, 0, a, 1, b, 1, r1, r2, r3, w, lw, info )
523 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
525 CALL dgglse( 0, 0, 0, a, 0, b, 1, r1, r2, r3, w, lw, info )
526 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
528 CALL dgglse( 0, 0, 0, a, 1, b, 0, r1, r2, r3, w, lw, info )
529 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
531 CALL dgglse( 1, 1, 1, a, 1, b, 1, r1, r2, r3, w, 1, info )
532 CALL chkxer(
'DGGLSE', infot, nout, lerr, ok )
537 ELSE IF(
lsamen( 3, path,
'CSD' ) )
THEN
543 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
546 $ a, 1, a, 1, a, 1, a,
547 $ 1, w, lw, iw, info )
548 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
550 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
553 $ a, 1, a, 1, a, 1, a,
554 $ 1, w, lw, iw, info )
555 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
557 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
560 $ a, 1, a, 1, a, 1, a,
561 $ 1, w, lw, iw, info )
562 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
564 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
567 $ a, 1, a, 1, a, 1, a,
568 $ 1, w, lw, iw, info )
569 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
571 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
574 $ a, -1, a, 1, a, 1, a,
575 $ 1, w, lw, iw, info )
576 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
578 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
581 $ a, 1, a, -1, a, 1, a,
582 $ 1, w, lw, iw, info )
583 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
585 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
588 $ a, 1, a, 1, a, -1, a,
589 $ 1, w, lw, iw, info )
590 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
592 CALL dorcsd(
'Y',
'Y',
'Y',
'Y',
'N',
'N',
595 $ a, 1, a, 1, a, 1, a,
596 $ -1, w, lw, iw, info )
597 CALL chkxer(
'DORCSD', infot, nout, lerr, ok )
602 ELSE IF(
lsamen( 3, path,
'GQR' ) )
THEN
608 CALL dggqrf( -1, 0, 0, a, 1, r1, b, 1, r2, w, lw, info )
609 CALL chkxer(
'DGGQRF', infot, nout, lerr, ok )
611 CALL dggqrf( 0, -1, 0, a, 1, r1, b, 1, r2, w, lw, info )
612 CALL chkxer(
'DGGQRF', infot, nout, lerr, ok )
614 CALL dggqrf( 0, 0, -1, a, 1, r1, b, 1, r2, w, lw, info )
615 CALL chkxer(
'DGGQRF', infot, nout, lerr, ok )
617 CALL dggqrf( 0, 0, 0, a, 0, r1, b, 1, r2, w, lw, info )
618 CALL chkxer(
'DGGQRF', infot, nout, lerr, ok )
620 CALL dggqrf( 0, 0, 0, a, 1, r1, b, 0, r2, w, lw, info )
621 CALL chkxer(
'DGGQRF', infot, nout, lerr, ok )
623 CALL dggqrf( 1, 1, 2, a, 1, r1, b, 1, r2, w, 1, info )
624 CALL chkxer(
'DGGQRF', infot, nout, lerr, ok )
631 CALL dggrqf( -1, 0, 0, a, 1, r1, b, 1, r2, w, lw, info )
632 CALL chkxer(
'DGGRQF', infot, nout, lerr, ok )
634 CALL dggrqf( 0, -1, 0, a, 1, r1, b, 1, r2, w, lw, info )
635 CALL chkxer(
'DGGRQF', infot, nout, lerr, ok )
637 CALL dggrqf( 0, 0, -1, a, 1, r1, b, 1, r2, w, lw, info )
638 CALL chkxer(
'DGGRQF', infot, nout, lerr, ok )
640 CALL dggrqf( 0, 0, 0, a, 0, r1, b, 1, r2, w, lw, info )
641 CALL chkxer(
'DGGRQF', infot, nout, lerr, ok )
643 CALL dggrqf( 0, 0, 0, a, 1, r1, b, 0, r2, w, lw, info )
644 CALL chkxer(
'DGGRQF', infot, nout, lerr, ok )
646 CALL dggrqf( 1, 1, 2, a, 1, r1, b, 1, r2, w, 1, info )
647 CALL chkxer(
'DGGRQF', infot, nout, lerr, ok )
652 ELSE IF(
lsamen( 3, path,
'DGS' ) .OR.
653 $
lsamen( 3, path,
'DGV' ) .OR.
654 $
lsamen( 3, path,
'DGX' ) .OR.
lsamen( 3, path,
'DXV' ) )
661 CALL dgges(
'/',
'N',
'S',
dlctes, 1, a, 1, b, 1, sdim, r1, r2,
662 $ r3, q, 1, u, 1, w, 1, bw, info )
663 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
665 CALL dgges(
'N',
'/',
'S',
dlctes, 1, a, 1, b, 1, sdim, r1, r2,
666 $ r3, q, 1, u, 1, w, 1, bw, info )
667 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
669 CALL dgges(
'N',
'V',
'/',
dlctes, 1, a, 1, b, 1, sdim, r1, r2,
670 $ r3, q, 1, u, 1, w, 1, bw, info )
671 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
673 CALL dgges(
'N',
'V',
'S',
dlctes, -1, a, 1, b, 1, sdim, r1,
674 $ r2, r3, q, 1, u, 1, w, 1, bw, info )
675 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
677 CALL dgges(
'N',
'V',
'S',
dlctes, 1, a, 0, b, 1, sdim, r1, r2,
678 $ r3, q, 1, u, 1, w, 1, bw, info )
679 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
681 CALL dgges(
'N',
'V',
'S',
dlctes, 1, a, 1, b, 0, sdim, r1, r2,
682 $ r3, q, 1, u, 1, w, 1, bw, info )
683 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
685 CALL dgges(
'N',
'V',
'S',
dlctes, 1, a, 1, b, 1, sdim, r1, r2,
686 $ r3, q, 0, u, 1, w, 1, bw, info )
687 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
689 CALL dgges(
'V',
'V',
'S',
dlctes, 2, a, 2, b, 2, sdim, r1, r2,
690 $ r3, q, 1, u, 2, w, 1, bw, info )
691 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
693 CALL dgges(
'N',
'V',
'S',
dlctes, 1, a, 1, b, 1, sdim, r1, r2,
694 $ r3, q, 1, u, 0, w, 1, bw, info )
695 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
697 CALL dgges(
'V',
'V',
'S',
dlctes, 2, a, 2, b, 2, sdim, r1, r2,
698 $ r3, q, 2, u, 1, w, 1, bw, info )
699 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
701 CALL dgges(
'V',
'V',
'S',
dlctes, 2, a, 2, b, 2, sdim, r1, r2,
702 $ r3, q, 2, u, 2, w, 1, bw, info )
703 CALL chkxer(
'DGGES ', infot, nout, lerr, ok )
710 CALL dgges3(
'/',
'N',
'S',
dlctes, 1, a, 1, b, 1, sdim, r1,
711 $ r2, r3, q, 1, u, 1, w, 1, bw, info )
712 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
714 CALL dgges3(
'N',
'/',
'S',
dlctes, 1, a, 1, b, 1, sdim, r1,
715 $ r2, r3, q, 1, u, 1, w, 1, bw, info )
716 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
718 CALL dgges3(
'N',
'V',
'/',
dlctes, 1, a, 1, b, 1, sdim, r1,
719 $ r2, r3, q, 1, u, 1, w, 1, bw, info )
720 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
722 CALL dgges3(
'N',
'V',
'S',
dlctes, -1, a, 1, b, 1, sdim, r1,
723 $ r2, r3, q, 1, u, 1, w, 1, bw, info )
724 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
726 CALL dgges3(
'N',
'V',
'S',
dlctes, 1, a, 0, b, 1, sdim, r1,
727 $ r2, r3, q, 1, u, 1, w, 1, bw, info )
728 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
730 CALL dgges3(
'N',
'V',
'S',
dlctes, 1, a, 1, b, 0, sdim, r1,
731 $ r2, r3, q, 1, u, 1, w, 1, bw, info )
732 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
734 CALL dgges3(
'N',
'V',
'S',
dlctes, 1, a, 1, b, 1, sdim, r1,
735 $ r2, r3, q, 0, u, 1, w, 1, bw, info )
736 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
738 CALL dgges3(
'V',
'V',
'S',
dlctes, 2, a, 2, b, 2, sdim, r1,
739 $ r2, r3, q, 1, u, 2, w, 1, bw, info )
740 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
742 CALL dgges3(
'N',
'V',
'S',
dlctes, 1, a, 1, b, 1, sdim, r1,
743 $ r2, r3, q, 1, u, 0, w, 1, bw, info )
744 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
746 CALL dgges3(
'V',
'V',
'S',
dlctes, 2, a, 2, b, 2, sdim, r1,
747 $ r2, r3, q, 2, u, 1, w, 1, bw, info )
748 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
750 CALL dgges3(
'V',
'V',
'S',
dlctes, 2, a, 2, b, 2, sdim, r1,
751 $ r2, r3, q, 2, u, 2, w, 1, bw, info )
752 CALL chkxer(
'DGGES3 ', infot, nout, lerr, ok )
759 CALL dggesx(
'/',
'N',
'S',
dlctsx,
'N', 1, a, 1, b, 1, sdim,
760 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
762 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
764 CALL dggesx(
'N',
'/',
'S',
dlctsx,
'N', 1, a, 1, b, 1, sdim,
765 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
767 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
769 CALL dggesx(
'V',
'V',
'/',
dlctsx,
'N', 1, a, 1, b, 1, sdim,
770 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
772 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
774 CALL dggesx(
'V',
'V',
'S',
dlctsx,
'/', 1, a, 1, b, 1, sdim,
775 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
777 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
779 CALL dggesx(
'V',
'V',
'S',
dlctsx,
'B', -1, a, 1, b, 1, sdim,
780 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
782 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
784 CALL dggesx(
'V',
'V',
'S',
dlctsx,
'B', 1, a, 0, b, 1, sdim,
785 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
787 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
789 CALL dggesx(
'V',
'V',
'S',
dlctsx,
'B', 1, a, 1, b, 0, sdim,
790 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
792 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
794 CALL dggesx(
'V',
'V',
'S',
dlctsx,
'B', 1, a, 1, b, 1, sdim,
795 $ r1, r2, r3, q, 0, u, 1, rce, rcv, w, 1, iw, 1, bw,
797 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
799 CALL dggesx(
'V',
'V',
'S',
dlctsx,
'B', 2, a, 2, b, 2, sdim,
800 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 1, iw, 1, bw,
802 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
804 CALL dggesx(
'V',
'V',
'S',
dlctsx,
'B', 1, a, 1, b, 1, sdim,
805 $ r1, r2, r3, q, 1, u, 0, rce, rcv, w, 1, iw, 1, bw,
807 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
809 CALL dggesx(
'V',
'V',
'S',
dlctsx,
'B', 2, a, 2, b, 2, sdim,
810 $ r1, r2, r3, q, 2, u, 1, rce, rcv, w, 1, iw, 1, bw,
812 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
814 CALL dggesx(
'V',
'V',
'S',
dlctsx,
'B', 2, a, 2, b, 2, sdim,
815 $ r1, r2, r3, q, 2, u, 2, rce, rcv, w, 1, iw, 1, bw,
817 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
819 CALL dggesx(
'V',
'V',
'S',
dlctsx,
'V', 1, a, 1, b, 1, sdim,
820 $ r1, r2, r3, q, 1, u, 1, rce, rcv, w, 32, iw, 0,
822 CALL chkxer(
'DGGESX', infot, nout, lerr, ok )
829 CALL dggev(
'/',
'N', 1, a, 1, b, 1, r1, r2, r3, q, 1, u, 1, w,
831 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
833 CALL dggev(
'N',
'/', 1, a, 1, b, 1, r1, r2, r3, q, 1, u, 1, w,
835 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
837 CALL dggev(
'V',
'V', -1, a, 1, b, 1, r1, r2, r3, q, 1, u, 1,
839 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
841 CALL dggev(
'V',
'V', 1, a, 0, b, 1, r1, r2, r3, q, 1, u, 1, w,
843 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
845 CALL dggev(
'V',
'V', 1, a, 1, b, 0, r1, r2, r3, q, 1, u, 1, w,
847 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
849 CALL dggev(
'N',
'V', 1, a, 1, b, 1, r1, r2, r3, q, 0, u, 1, w,
851 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
853 CALL dggev(
'V',
'V', 2, a, 2, b, 2, r1, r2, r3, q, 1, u, 2, w,
855 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
857 CALL dggev(
'V',
'N', 2, a, 2, b, 2, r1, r2, r3, q, 2, u, 0, w,
859 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
861 CALL dggev(
'V',
'V', 2, a, 2, b, 2, r1, r2, r3, q, 2, u, 1, w,
863 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
865 CALL dggev(
'V',
'V', 1, a, 1, b, 1, r1, r2, r3, q, 1, u, 1, w,
867 CALL chkxer(
'DGGEV ', infot, nout, lerr, ok )
874 CALL dggev3(
'/',
'N', 1, a, 1, b, 1, r1, r2, r3, q, 1, u, 1,
876 CALL chkxer(
'DGGEV3 ', infot, nout, lerr, ok )
878 CALL dggev3(
'N',
'/', 1, a, 1, b, 1, r1, r2, r3, q, 1, u, 1,
880 CALL chkxer(
'DGGEV3 ', infot, nout, lerr, ok )
882 CALL dggev3(
'V',
'V', -1, a, 1, b, 1, r1, r2, r3, q, 1, u, 1,
884 CALL chkxer(
'DGGEV3 ', infot, nout, lerr, ok )
886 CALL dggev3(
'V',
'V', 1, a, 0, b, 1, r1, r2, r3, q, 1, u, 1,
888 CALL chkxer(
'DGGEV3 ', infot, nout, lerr, ok )
890 CALL dggev3(
'V',
'V', 1, a, 1, b, 0, r1, r2, r3, q, 1, u, 1,
892 CALL chkxer(
'DGGEV3 ', infot, nout, lerr, ok )
894 CALL dggev3(
'N',
'V', 1, a, 1, b, 1, r1, r2, r3, q, 0, u, 1,
896 CALL chkxer(
'DGGEV3 ', infot, nout, lerr, ok )
898 CALL dggev3(
'V',
'V', 2, a, 2, b, 2, r1, r2, r3, q, 1, u, 2,
900 CALL chkxer(
'DGGEV3 ', infot, nout, lerr, ok )
902 CALL dggev3(
'V',
'N', 2, a, 2, b, 2, r1, r2, r3, q, 2, u, 0,
904 CALL chkxer(
'DGGEV3 ', infot, nout, lerr, ok )
906 CALL dggev3(
'V',
'V', 2, a, 2, b, 2, r1, r2, r3, q, 2, u, 1,
908 CALL chkxer(
'DGGEV3 ', infot, nout, lerr, ok )
910 CALL dggev3(
'V',
'V', 1, a, 1, b, 1, r1, r2, r3, q, 1, u, 1,
912 CALL chkxer(
'DGGEV3 ', infot, nout, lerr, ok )
919 CALL dggevx(
'/',
'N',
'N',
'N', 1, a, 1, b, 1, r1, r2, r3, q,
920 $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
921 $ w, 1, iw, bw, info )
922 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
924 CALL dggevx(
'N',
'/',
'N',
'N', 1, a, 1, b, 1, r1, r2, r3, q,
925 $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
926 $ w, 1, iw, bw, info )
927 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
929 CALL dggevx(
'N',
'N',
'/',
'N', 1, a, 1, b, 1, r1, r2, r3, q,
930 $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
931 $ w, 1, iw, bw, info )
932 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
934 CALL dggevx(
'N',
'N',
'N',
'/', 1, a, 1, b, 1, r1, r2, r3, q,
935 $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
936 $ w, 1, iw, bw, info )
937 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
939 CALL dggevx(
'N',
'N',
'N',
'N', -1, a, 1, b, 1, r1, r2, r3, q,
940 $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
941 $ w, 1, iw, bw, info )
942 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
944 CALL dggevx(
'N',
'N',
'N',
'N', 1, a, 0, b, 1, r1, r2, r3, q,
945 $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
946 $ w, 1, iw, bw, info )
947 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
949 CALL dggevx(
'N',
'N',
'N',
'N', 1, a, 1, b, 0, r1, r2, r3, q,
950 $ 1, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
951 $ w, 1, iw, bw, info )
952 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
954 CALL dggevx(
'N',
'N',
'N',
'N', 1, a, 1, b, 1, r1, r2, r3, q,
955 $ 0, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
956 $ w, 1, iw, bw, info )
957 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
959 CALL dggevx(
'N',
'V',
'N',
'N', 2, a, 2, b, 2, r1, r2, r3, q,
960 $ 1, u, 2, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
961 $ w, 1, iw, bw, info )
962 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
964 CALL dggevx(
'N',
'N',
'N',
'N', 1, a, 1, b, 1, r1, r2, r3, q,
965 $ 1, u, 0, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
966 $ w, 1, iw, bw, info )
967 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
969 CALL dggevx(
'N',
'N',
'V',
'N', 2, a, 2, b, 2, r1, r2, r3, q,
970 $ 2, u, 1, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
971 $ w, 1, iw, bw, info )
972 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
974 CALL dggevx(
'N',
'N',
'V',
'N', 2, a, 2, b, 2, r1, r2, r3, q,
975 $ 2, u, 2, ilo, ihi, ls, rs, anrm, bnrm, rce, rcv,
976 $ w, 1, iw, bw, info )
977 CALL chkxer(
'DGGEVX', infot, nout, lerr, ok )
984 CALL dtgexc( .true., .true., -1, a, 1, b, 1, q, 1, z, 1, ifst,
986 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
988 CALL dtgexc( .true., .true., 1, a, 0, b, 1, q, 1, z, 1, ifst,
990 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
992 CALL dtgexc( .true., .true., 1, a, 1, b, 0, q, 1, z, 1, ifst,
994 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
996 CALL dtgexc( .false., .true., 1, a, 1, b, 1, q, 0, z, 1, ifst,
998 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
1000 CALL dtgexc( .true., .true., 1, a, 1, b, 1, q, 0, z, 1, ifst,
1001 $ ilst, w, 1, info )
1002 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
1004 CALL dtgexc( .true., .false., 1, a, 1, b, 1, q, 1, z, 0, ifst,
1005 $ ilst, w, 1, info )
1006 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
1008 CALL dtgexc( .true., .true., 1, a, 1, b, 1, q, 1, z, 0, ifst,
1009 $ ilst, w, 1, info )
1010 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
1012 CALL dtgexc( .true., .true., 1, a, 1, b, 1, q, 1, z, 1, ifst,
1013 $ ilst, w, 0, info )
1014 CALL chkxer(
'DTGEXC', infot, nout, lerr, ok )
1021 CALL dtgsen( -1, .true., .true., sel, 1, a, 1, b, 1, r1, r2,
1022 $ r3, q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
1024 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1026 CALL dtgsen( 1, .true., .true., sel, -1, a, 1, b, 1, r1, r2,
1027 $ r3, q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
1029 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1031 CALL dtgsen( 1, .true., .true., sel, 1, a, 0, b, 1, r1, r2, r3,
1032 $ q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
1034 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1036 CALL dtgsen( 1, .true., .true., sel, 1, a, 1, b, 0, r1, r2, r3,
1037 $ q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
1039 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1041 CALL dtgsen( 1, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
1042 $ q, 0, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
1044 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1046 CALL dtgsen( 1, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
1047 $ q, 1, z, 0, m, tola, tolb, rcv, w, 1, iw, 1,
1049 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1051 CALL dtgsen( 0, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
1052 $ q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
1054 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1056 CALL dtgsen( 1, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
1057 $ q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
1059 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1061 CALL dtgsen( 2, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
1062 $ q, 1, z, 1, m, tola, tolb, rcv, w, 1, iw, 1,
1064 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1066 CALL dtgsen( 0, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
1067 $ q, 1, z, 1, m, tola, tolb, rcv, w, 20, iw, 0,
1069 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1071 CALL dtgsen( 1, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
1072 $ q, 1, z, 1, m, tola, tolb, rcv, w, 20, iw, 0,
1074 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1076 CALL dtgsen( 2, .true., .true., sel, 1, a, 1, b, 1, r1, r2, r3,
1077 $ q, 1, z, 1, m, tola, tolb, rcv, w, 20, iw, 1,
1079 CALL chkxer(
'DTGSEN', infot, nout, lerr, ok )
1086 CALL dtgsna(
'/',
'A', sel, 1, a, 1, b, 1, q, 1, u, 1, r1, r2,
1087 $ 1, m, w, 1, iw, info )
1088 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
1090 CALL dtgsna(
'B',
'/', sel, 1, a, 1, b, 1, q, 1, u, 1, r1, r2,
1091 $ 1, m, w, 1, iw, info )
1092 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
1094 CALL dtgsna(
'B',
'A', sel, -1, a, 1, b, 1, q, 1, u, 1, r1, r2,
1095 $ 1, m, w, 1, iw, info )
1096 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
1098 CALL dtgsna(
'B',
'A', sel, 1, a, 0, b, 1, q, 1, u, 1, r1, r2,
1099 $ 1, m, w, 1, iw, info )
1100 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
1102 CALL dtgsna(
'B',
'A', sel, 1, a, 1, b, 0, q, 1, u, 1, r1, r2,
1103 $ 1, m, w, 1, iw, info )
1104 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
1106 CALL dtgsna(
'E',
'A', sel, 1, a, 1, b, 1, q, 0, u, 1, r1, r2,
1107 $ 1, m, w, 1, iw, info )
1108 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
1110 CALL dtgsna(
'E',
'A', sel, 1, a, 1, b, 1, q, 1, u, 0, r1, r2,
1111 $ 1, m, w, 1, iw, info )
1112 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
1114 CALL dtgsna(
'E',
'A', sel, 1, a, 1, b, 1, q, 1, u, 1, r1, r2,
1115 $ 0, m, w, 1, iw, info )
1116 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
1118 CALL dtgsna(
'E',
'A', sel, 1, a, 1, b, 1, q, 1, u, 1, r1, r2,
1119 $ 1, m, w, 0, iw, info )
1120 CALL chkxer(
'DTGSNA', infot, nout, lerr, ok )
1127 CALL dtgsyl(
'/', 0, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
1128 $ scale, dif, w, 1, iw, info )
1129 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1131 CALL dtgsyl(
'N', -1, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
1132 $ scale, dif, w, 1, iw, info )
1133 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1135 CALL dtgsyl(
'N', 0, 0, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
1136 $ scale, dif, w, 1, iw, info )
1137 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1139 CALL dtgsyl(
'N', 0, 1, 0, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
1140 $ scale, dif, w, 1, iw, info )
1141 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1143 CALL dtgsyl(
'N', 0, 1, 1, a, 0, b, 1, q, 1, u, 1, v, 1, z, 1,
1144 $ scale, dif, w, 1, iw, info )
1145 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1147 CALL dtgsyl(
'N', 0, 1, 1, a, 1, b, 0, q, 1, u, 1, v, 1, z, 1,
1148 $ scale, dif, w, 1, iw, info )
1149 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1151 CALL dtgsyl(
'N', 0, 1, 1, a, 1, b, 1, q, 0, u, 1, v, 1, z, 1,
1152 $ scale, dif, w, 1, iw, info )
1153 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1155 CALL dtgsyl(
'N', 0, 1, 1, a, 1, b, 1, q, 1, u, 0, v, 1, z, 1,
1156 $ scale, dif, w, 1, iw, info )
1157 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1159 CALL dtgsyl(
'N', 0, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 0, z, 1,
1160 $ scale, dif, w, 1, iw, info )
1161 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1163 CALL dtgsyl(
'N', 0, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 0,
1164 $ scale, dif, w, 1, iw, info )
1165 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1167 CALL dtgsyl(
'N', 1, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
1168 $ scale, dif, w, 1, iw, info )
1169 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1171 CALL dtgsyl(
'N', 2, 1, 1, a, 1, b, 1, q, 1, u, 1, v, 1, z, 1,
1172 $ scale, dif, w, 1, iw, info )
1173 CALL chkxer(
'DTGSYL', infot, nout, lerr, ok )
1180 WRITE( nout, fmt = 9999 )path, nt
1182 WRITE( nout, fmt = 9998 )path
1185 9999
FORMAT( 1x, a3,
' routines passed the tests of the error exits (',
1186 $ i3,
' tests done)' )
1187 9998
FORMAT(
' *** ', a3,
' routines failed the tests of the error ',
subroutine chkxer(SRNAMT, INFOT, NOUT, LERR, OK)
logical function lsamen(N, CA, CB)
LSAMEN
logical function dlctsx(AR, AI, BETA)
DLCTSX
logical function dlctes(ZR, ZI, D)
DLCTES
subroutine dhgeqz(JOB, COMPQ, COMPZ, N, ILO, IHI, H, LDH, T, LDT, ALPHAR, ALPHAI, BETA, Q, LDQ, Z, LDZ, WORK, LWORK, INFO)
DHGEQZ
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 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 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 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 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 m...
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 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 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 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 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
subroutine dgghd3(COMPQ, COMPZ, N, ILO, IHI, A, LDA, B, LDB, Q, LDQ, Z, LDZ, WORK, LWORK, INFO)
DGGHD3
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 dggqrf(N, M, P, A, LDA, TAUA, B, LDB, TAUB, WORK, LWORK, INFO)
DGGQRF
subroutine dggglm(N, M, P, A, LDA, B, LDB, D, X, Y, WORK, LWORK, INFO)
DGGGLM
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 dtgsyl(TRANS, IJOB, M, N, A, LDA, B, LDB, C, LDC, D, LDD, E, LDE, F, LDF, SCALE, DIF, WORK, LWORK, IWORK, INFO)
DTGSYL