84 parameter( nmax = 4, lw = 5*nmax )
85 DOUBLE PRECISION ONE, ZERO
86 parameter( one = 1.0d0, zero = 0.0d0 )
90 INTEGER I, IHI, ILO, INFO, J, NS, NT, SDIM
91 DOUBLE PRECISION ABNRM
96 DOUBLE PRECISION R1( NMAX ), R2( NMAX ), RW( LW ), S( NMAX )
97 COMPLEX*16 A( NMAX, NMAX ), U( NMAX, NMAX ),
98 $ VL( NMAX, NMAX ), VR( NMAX, NMAX ),
99 $ VT( NMAX, NMAX ), W( 10*NMAX ), X( NMAX )
106 LOGICAL LSAMEN, ZSLECT
107 EXTERNAL lsamen, zslect
114 DOUBLE PRECISION SELWI( 20 ), SELWR( 20 )
119 INTEGER INFOT, NOUT, SELDIM, SELOPT
122 COMMON / infoc / infot, nout, ok, lerr
123 COMMON / srnamc / srnamt
124 COMMON / sslct / selopt, seldim, selval, selwr, selwi
129 WRITE( nout, fmt = * )
145 IF( lsamen( 2, c2,
'EV' ) )
THEN
151 CALL zgeev(
'X',
'N', 0, a, 1, x, vl, 1, vr, 1, w, 1, rw,
153 CALL chkxer(
'ZGEEV ', infot, nout, lerr, ok )
155 CALL zgeev(
'N',
'X', 0, a, 1, x, vl, 1, vr, 1, w, 1, rw,
157 CALL chkxer(
'ZGEEV ', infot, nout, lerr, ok )
159 CALL zgeev(
'N',
'N', -1, a, 1, x, vl, 1, vr, 1, w, 1, rw,
161 CALL chkxer(
'ZGEEV ', infot, nout, lerr, ok )
163 CALL zgeev(
'N',
'N', 2, a, 1, x, vl, 1, vr, 1, w, 4, rw,
165 CALL chkxer(
'ZGEEV ', infot, nout, lerr, ok )
167 CALL zgeev(
'V',
'N', 2, a, 2, x, vl, 1, vr, 1, w, 4, rw,
169 CALL chkxer(
'ZGEEV ', infot, nout, lerr, ok )
171 CALL zgeev(
'N',
'V', 2, a, 2, x, vl, 1, vr, 1, w, 4, rw,
173 CALL chkxer(
'ZGEEV ', infot, nout, lerr, ok )
175 CALL zgeev(
'V',
'V', 1, a, 1, x, vl, 1, vr, 1, w, 1, rw,
177 CALL chkxer(
'ZGEEV ', infot, nout, lerr, ok )
180 ELSE IF( lsamen( 2, c2,
'ES' ) )
THEN
186 CALL zgees(
'X',
'N', zslect, 0, a, 1, sdim, x, vl, 1, w, 1,
188 CALL chkxer(
'ZGEES ', infot, nout, lerr, ok )
190 CALL zgees(
'N',
'X', zslect, 0, a, 1, sdim, x, vl, 1, w, 1,
192 CALL chkxer(
'ZGEES ', infot, nout, lerr, ok )
194 CALL zgees(
'N',
'S', zslect, -1, a, 1, sdim, x, vl, 1, w, 1,
196 CALL chkxer(
'ZGEES ', infot, nout, lerr, ok )
198 CALL zgees(
'N',
'S', zslect, 2, a, 1, sdim, x, vl, 1, w, 4,
200 CALL chkxer(
'ZGEES ', infot, nout, lerr, ok )
202 CALL zgees(
'V',
'S', zslect, 2, a, 2, sdim, x, vl, 1, w, 4,
204 CALL chkxer(
'ZGEES ', infot, nout, lerr, ok )
206 CALL zgees(
'N',
'S', zslect, 1, a, 1, sdim, x, vl, 1, w, 1,
208 CALL chkxer(
'ZGEES ', infot, nout, lerr, ok )
211 ELSE IF( lsamen( 2, c2,
'VX' ) )
THEN
217 CALL zgeevx(
'X',
'N',
'N',
'N', 0, a, 1, x, vl, 1, vr, 1, ilo,
218 $ ihi, s, abnrm, r1, r2, w, 1, rw, info )
219 CALL chkxer(
'ZGEEVX', infot, nout, lerr, ok )
221 CALL zgeevx(
'N',
'X',
'N',
'N', 0, a, 1, x, vl, 1, vr, 1, ilo,
222 $ ihi, s, abnrm, r1, r2, w, 1, rw, info )
223 CALL chkxer(
'ZGEEVX', infot, nout, lerr, ok )
225 CALL zgeevx(
'N',
'N',
'X',
'N', 0, a, 1, x, vl, 1, vr, 1, ilo,
226 $ ihi, s, abnrm, r1, r2, w, 1, rw, info )
227 CALL chkxer(
'ZGEEVX', infot, nout, lerr, ok )
229 CALL zgeevx(
'N',
'N',
'N',
'X', 0, a, 1, x, vl, 1, vr, 1, ilo,
230 $ ihi, s, abnrm, r1, r2, w, 1, rw, info )
231 CALL chkxer(
'ZGEEVX', infot, nout, lerr, ok )
233 CALL zgeevx(
'N',
'N',
'N',
'N', -1, a, 1, x, vl, 1, vr, 1,
234 $ ilo, ihi, s, abnrm, r1, r2, w, 1, rw, info )
235 CALL chkxer(
'ZGEEVX', infot, nout, lerr, ok )
237 CALL zgeevx(
'N',
'N',
'N',
'N', 2, a, 1, x, vl, 1, vr, 1, ilo,
238 $ ihi, s, abnrm, r1, r2, w, 4, rw, info )
239 CALL chkxer(
'ZGEEVX', infot, nout, lerr, ok )
241 CALL zgeevx(
'N',
'V',
'N',
'N', 2, a, 2, x, vl, 1, vr, 1, ilo,
242 $ ihi, s, abnrm, r1, r2, w, 4, rw, info )
243 CALL chkxer(
'ZGEEVX', infot, nout, lerr, ok )
245 CALL zgeevx(
'N',
'N',
'V',
'N', 2, a, 2, x, vl, 1, vr, 1, ilo,
246 $ ihi, s, abnrm, r1, r2, w, 4, rw, info )
247 CALL chkxer(
'ZGEEVX', infot, nout, lerr, ok )
249 CALL zgeevx(
'N',
'N',
'N',
'N', 1, a, 1, x, vl, 1, vr, 1, ilo,
250 $ ihi, s, abnrm, r1, r2, w, 1, rw, info )
251 CALL chkxer(
'ZGEEVX', infot, nout, lerr, ok )
253 CALL zgeevx(
'N',
'N',
'V',
'V', 1, a, 1, x, vl, 1, vr, 1, ilo,
254 $ ihi, s, abnrm, r1, r2, w, 2, rw, info )
255 CALL chkxer(
'ZGEEVX', infot, nout, lerr, ok )
258 ELSE IF( lsamen( 2, c2,
'SX' ) )
THEN
264 CALL zgeesx(
'X',
'N', zslect,
'N', 0, a, 1, sdim, x, vl, 1,
265 $ r1( 1 ), r2( 1 ), w, 1, rw, b, info )
266 CALL chkxer(
'ZGEESX', infot, nout, lerr, ok )
268 CALL zgeesx(
'N',
'X', zslect,
'N', 0, a, 1, sdim, x, vl, 1,
269 $ r1( 1 ), r2( 1 ), w, 1, rw, b, info )
270 CALL chkxer(
'ZGEESX', infot, nout, lerr, ok )
272 CALL zgeesx(
'N',
'N', zslect,
'X', 0, a, 1, sdim, x, vl, 1,
273 $ r1( 1 ), r2( 1 ), w, 1, rw, b, info )
274 CALL chkxer(
'ZGEESX', infot, nout, lerr, ok )
276 CALL zgeesx(
'N',
'N', zslect,
'N', -1, a, 1, sdim, x, vl, 1,
277 $ r1( 1 ), r2( 1 ), w, 1, rw, b, info )
278 CALL chkxer(
'ZGEESX', infot, nout, lerr, ok )
280 CALL zgeesx(
'N',
'N', zslect,
'N', 2, a, 1, sdim, x, vl, 1,
281 $ r1( 1 ), r2( 1 ), w, 4, rw, b, info )
282 CALL chkxer(
'ZGEESX', infot, nout, lerr, ok )
284 CALL zgeesx(
'V',
'N', zslect,
'N', 2, a, 2, sdim, x, vl, 1,
285 $ r1( 1 ), r2( 1 ), w, 4, rw, b, info )
286 CALL chkxer(
'ZGEESX', infot, nout, lerr, ok )
288 CALL zgeesx(
'N',
'N', zslect,
'N', 1, a, 1, sdim, x, vl, 1,
289 $ r1( 1 ), r2( 1 ), w, 1, rw, b, info )
290 CALL chkxer(
'ZGEESX', infot, nout, lerr, ok )
293 ELSE IF( lsamen( 2, c2,
'BD' ) )
THEN
299 CALL zgesvd(
'X',
'N', 0, 0, a, 1, s, u, 1, vt, 1, w, 1, rw,
301 CALL chkxer(
'ZGESVD', infot, nout, lerr, ok )
303 CALL zgesvd(
'N',
'X', 0, 0, a, 1, s, u, 1, vt, 1, w, 1, rw,
305 CALL chkxer(
'ZGESVD', infot, nout, lerr, ok )
307 CALL zgesvd(
'O',
'O', 0, 0, a, 1, s, u, 1, vt, 1, w, 1, rw,
309 CALL chkxer(
'ZGESVD', infot, nout, lerr, ok )
311 CALL zgesvd(
'N',
'N', -1, 0, a, 1, s, u, 1, vt, 1, w, 1, rw,
313 CALL chkxer(
'ZGESVD', infot, nout, lerr, ok )
315 CALL zgesvd(
'N',
'N', 0, -1, a, 1, s, u, 1, vt, 1, w, 1, rw,
317 CALL chkxer(
'ZGESVD', infot, nout, lerr, ok )
319 CALL zgesvd(
'N',
'N', 2, 1, a, 1, s, u, 1, vt, 1, w, 5, rw,
321 CALL chkxer(
'ZGESVD', infot, nout, lerr, ok )
323 CALL zgesvd(
'A',
'N', 2, 1, a, 2, s, u, 1, vt, 1, w, 5, rw,
325 CALL chkxer(
'ZGESVD', infot, nout, lerr, ok )
327 CALL zgesvd(
'N',
'A', 1, 2, a, 1, s, u, 1, vt, 1, w, 5, rw,
329 CALL chkxer(
'ZGESVD', infot, nout, lerr, ok )
332 WRITE( nout, fmt = 9999 )srnamt( 1:len_trim( srnamt ) ),
335 WRITE( nout, fmt = 9998 )
342 CALL zgesdd(
'X', 0, 0, a, 1, s, u, 1, vt, 1, w, 1, rw, iw,
344 CALL chkxer(
'ZGESDD', infot, nout, lerr, ok )
346 CALL zgesdd(
'N', -1, 0, a, 1, s, u, 1, vt, 1, w, 1, rw, iw,
348 CALL chkxer(
'ZGESDD', infot, nout, lerr, ok )
350 CALL zgesdd(
'N', 0, -1, a, 1, s, u, 1, vt, 1, w, 1, rw, iw,
352 CALL chkxer(
'ZGESDD', infot, nout, lerr, ok )
354 CALL zgesdd(
'N', 2, 1, a, 1, s, u, 1, vt, 1, w, 5, rw, iw,
356 CALL chkxer(
'ZGESDD', infot, nout, lerr, ok )
358 CALL zgesdd(
'A', 2, 1, a, 2, s, u, 1, vt, 1, w, 5, rw, iw,
360 CALL chkxer(
'ZGESDD', infot, nout, lerr, ok )
362 CALL zgesdd(
'A', 1, 2, a, 1, s, u, 1, vt, 1, w, 5, rw, iw,
364 CALL chkxer(
'ZGESDD', infot, nout, lerr, ok )
367 WRITE( nout, fmt = 9999 )srnamt( 1:len_trim( srnamt ) ),
370 WRITE( nout, fmt = 9998 )
377 CALL zgejsv(
'X',
'U',
'V',
'R',
'N',
'N',
378 $ 0, 0, a, 1, s, u, 1, vt, 1,
379 $ w, 1, rw, 1, iw, info)
380 CALL chkxer(
'ZGEJSV', infot, nout, lerr, ok )
382 CALL zgejsv(
'G',
'X',
'V',
'R',
'N',
'N',
383 $ 0, 0, a, 1, s, u, 1, vt, 1,
384 $ w, 1, rw, 1, iw, info)
385 CALL chkxer(
'ZGEJSV', infot, nout, lerr, ok )
387 CALL zgejsv(
'G',
'U',
'X',
'R',
'N',
'N',
388 $ 0, 0, a, 1, s, u, 1, vt, 1,
389 $ w, 1, rw, 1, iw, info)
390 CALL chkxer(
'ZGEJSV', infot, nout, lerr, ok )
392 CALL zgejsv(
'G',
'U',
'V',
'X',
'N',
'N',
393 $ 0, 0, a, 1, s, u, 1, vt, 1,
394 $ w, 1, rw, 1, iw, info)
395 CALL chkxer(
'ZGEJSV', infot, nout, lerr, ok )
397 CALL zgejsv(
'G',
'U',
'V',
'R',
'X',
'N',
398 $ 0, 0, a, 1, s, u, 1, vt, 1,
399 $ w, 1, rw, 1, iw, info)
400 CALL chkxer(
'ZGEJSV', infot, nout, lerr, ok )
402 CALL zgejsv(
'G',
'U',
'V',
'R',
'N',
'X',
403 $ 0, 0, a, 1, s, u, 1, vt, 1,
404 $ w, 1, rw, 1, iw, info)
405 CALL chkxer(
'ZGEJSV', infot, nout, lerr, ok )
407 CALL zgejsv(
'G',
'U',
'V',
'R',
'N',
'N',
408 $ -1, 0, a, 1, s, u, 1, vt, 1,
409 $ w, 1, rw, 1, iw, info)
410 CALL chkxer(
'ZGEJSV', infot, nout, lerr, ok )
412 CALL zgejsv(
'G',
'U',
'V',
'R',
'N',
'N',
413 $ 0, -1, a, 1, s, u, 1, vt, 1,
414 $ w, 1, rw, 1, iw, info)
415 CALL chkxer(
'ZGEJSV', infot, nout, lerr, ok )
417 CALL zgejsv(
'G',
'U',
'V',
'R',
'N',
'N',
418 $ 2, 1, a, 1, s, u, 1, vt, 1,
419 $ w, 1, rw, 1, iw, info)
420 CALL chkxer(
'ZGEJSV', infot, nout, lerr, ok )
422 CALL zgejsv(
'G',
'U',
'V',
'R',
'N',
'N',
423 $ 2, 2, a, 2, s, u, 1, vt, 2,
424 $ w, 1, rw, 1, iw, info)
425 CALL chkxer(
'ZGEJSV', infot, nout, lerr, ok )
427 CALL zgejsv(
'G',
'U',
'V',
'R',
'N',
'N',
428 $ 2, 2, a, 2, s, u, 2, vt, 1,
429 $ w, 1, rw, 1, iw, info)
430 CALL chkxer(
'ZGEJSV', infot, nout, lerr, ok )
433 WRITE( nout, fmt = 9999 )srnamt( 1:len_trim( srnamt ) ),
436 WRITE( nout, fmt = 9998 )
443 CALL zgesvdx(
'X',
'N',
'A', 0, 0, a, 1, zero, zero,
444 $ 0, 0, ns, s, u, 1, vt, 1, w, 1, rw, iw, info )
445 CALL chkxer(
'ZGESVDX', infot, nout, lerr, ok )
447 CALL zgesvdx(
'N',
'X',
'A', 0, 0, a, 1, zero, zero,
448 $ 0, 0, ns, s, u, 1, vt, 1, w, 1, rw, iw, info )
449 CALL chkxer(
'ZGESVDX', infot, nout, lerr, ok )
451 CALL zgesvdx(
'N',
'N',
'X', 0, 0, a, 1, zero, zero,
452 $ 0, 0, ns, s, u, 1, vt, 1, w, 1, rw, iw, info )
453 CALL chkxer(
'ZGESVDX', infot, nout, lerr, ok )
455 CALL zgesvdx(
'N',
'N',
'A', -1, 0, a, 1, zero, zero,
456 $ 0, 0, ns, s, u, 1, vt, 1, w, 1, rw, iw, info )
457 CALL chkxer(
'ZGESVDX', infot, nout, lerr, ok )
459 CALL zgesvdx(
'N',
'N',
'A', 0, -1, a, 1, zero, zero,
460 $ 0, 0, ns, s, u, 1, vt, 1, w, 1, rw, iw, info )
461 CALL chkxer(
'ZGESVDX', infot, nout, lerr, ok )
463 CALL zgesvdx(
'N',
'N',
'A', 2, 1, a, 1, zero, zero,
464 $ 0, 0, ns, s, u, 1, vt, 1, w, 1, rw, iw, info )
465 CALL chkxer(
'ZGESVDX', infot, nout, lerr, ok )
467 CALL zgesvdx(
'N',
'N',
'V', 2, 1, a, 2, -one, zero,
468 $ 0, 0, ns, s, u, 1, vt, 1, w, 1, rw, iw, info )
469 CALL chkxer(
'ZGESVDX', infot, nout, lerr, ok )
471 CALL zgesvdx(
'N',
'N',
'V', 2, 1, a, 2, one, zero,
472 $ 0, 0, ns, s, u, 1, vt, 1, w, 1, rw, iw, info )
473 CALL chkxer(
'ZGESVDX', infot, nout, lerr, ok )
475 CALL zgesvdx(
'N',
'N',
'I', 2, 2, a, 2, zero, zero,
476 $ 0, 1, ns, s, u, 1, vt, 1, w, 1, rw, iw, info )
477 CALL chkxer(
'ZGESVDX', infot, nout, lerr, ok )
479 CALL zgesvdx(
'V',
'N',
'I', 2, 2, a, 2, zero, zero,
480 $ 1, 0, ns, s, u, 1, vt, 1, w, 1, rw, iw, info )
481 CALL chkxer(
'ZGESVDX', infot, nout, lerr, ok )
483 CALL zgesvdx(
'V',
'N',
'A', 2, 2, a, 2, zero, zero,
484 $ 0, 0, ns, s, u, 1, vt, 1, w, 1, rw, iw, info )
485 CALL chkxer(
'ZGESVDX', infot, nout, lerr, ok )
487 CALL zgesvdx(
'N',
'V',
'A', 2, 2, a, 2, zero, zero,
488 $ 0, 0, ns, s, u, 1, vt, 1, w, 1, rw, iw, info )
489 CALL chkxer(
'ZGESVDX', infot, nout, lerr, ok )
492 WRITE( nout, fmt = 9999 )srnamt( 1:len_trim( srnamt ) ),
495 WRITE( nout, fmt = 9998 )
502 CALL zgesvdq(
'X',
'P',
'T',
'A',
'A', 0, 0, a, 1, s, u,
503 $ 0, vt, 0, ns, iw, 1, w, 1, rw, 1, info )
504 CALL chkxer(
'ZGESVDQ', infot, nout, lerr, ok )
506 CALL zgesvdq(
'A',
'X',
'T',
'A',
'A', 0, 0, a, 1, s, u,
507 $ 0, vt, 0, ns, iw, 1, w, 1, rw, 1, info )
508 CALL chkxer(
'ZGESVDQ', infot, nout, lerr, ok )
510 CALL zgesvdq(
'A',
'P',
'X',
'A',
'A', 0, 0, a, 1, s, u,
511 $ 0, vt, 0, ns, iw, 1, w, 1, rw, 1, info )
512 CALL chkxer(
'ZGESVDQ', infot, nout, lerr, ok )
514 CALL zgesvdq(
'A',
'P',
'T',
'X',
'A', 0, 0, a, 1, s, u,
515 $ 0, vt, 0, ns, iw, 1, w, 1, rw, 1, info )
516 CALL chkxer(
'ZGESVDQ', infot, nout, lerr, ok )
518 CALL zgesvdq(
'A',
'P',
'T',
'A',
'X', 0, 0, a, 1, s, u,
519 $ 0, vt, 0, ns, iw, 1, w, 1, rw, 1, info )
520 CALL chkxer(
'ZGESVDQ', infot, nout, lerr, ok )
522 CALL zgesvdq(
'A',
'P',
'T',
'A',
'A', -1, 0, a, 1, s, u,
523 $ 0, vt, 0, ns, iw, 1, w, 1, rw, 1, info )
524 CALL chkxer(
'ZGESVDQ', infot, nout, lerr, ok )
526 CALL zgesvdq(
'A',
'P',
'T',
'A',
'A', 0, 1, a, 1, s, u,
527 $ 0, vt, 0, ns, iw, 1, w, 1, rw, 1, info )
528 CALL chkxer(
'ZGESVDQ', infot, nout, lerr, ok )
530 CALL zgesvdq(
'A',
'P',
'T',
'A',
'A', 1, 1, a, 0, s, u,
531 $ 0, vt, 0, ns, iw, 1, w, 1, rw, 1, info )
532 CALL chkxer(
'ZGESVDQ', infot, nout, lerr, ok )
534 CALL zgesvdq(
'A',
'P',
'T',
'A',
'A', 1, 1, a, 1, s, u,
535 $ -1, vt, 0, ns, iw, 1, w, 1, rw, 1, info )
536 CALL chkxer(
'ZGESVDQ', infot, nout, lerr, ok )
538 CALL zgesvdq(
'A',
'P',
'T',
'A',
'A', 1, 1, a, 1, s, u,
539 $ 1, vt, -1, ns, iw, 1, w, 1, rw, 1, info )
540 CALL chkxer(
'ZGESVDQ', infot, nout, lerr, ok )
542 CALL zgesvdq(
'A',
'P',
'T',
'A',
'A', 1, 1, a, 1, s, u,
543 $ 1, vt, 1, ns, iw, -5, w, 1, rw, 1, info )
544 CALL chkxer(
'ZGESVDQ', infot, nout, lerr, ok )
547 WRITE( nout, fmt = 9999 )srnamt( 1:len_trim( srnamt ) ),
550 WRITE( nout, fmt = 9998 )
556 IF( .NOT.lsamen( 2, c2,
'BD' ) )
THEN
558 WRITE( nout, fmt = 9999 )srnamt( 1:len_trim( srnamt ) ),
561 WRITE( nout, fmt = 9998 )
565 9999
FORMAT( 1x, a,
' passed the tests of the error exits (', i3,
567 9998
FORMAT(
' *** ', a,
' failed the tests of the error exits ***' )
subroutine chkxer(srnamt, infot, nout, lerr, ok)
subroutine zgees(jobvs, sort, select, n, a, lda, sdim, w, vs, ldvs, work, lwork, rwork, bwork, info)
ZGEES computes the eigenvalues, the Schur form, and, optionally, the matrix of Schur vectors for GE m...
subroutine zgeesx(jobvs, sort, select, sense, n, a, lda, sdim, w, vs, ldvs, rconde, rcondv, work, lwork, rwork, bwork, info)
ZGEESX computes the eigenvalues, the Schur form, and, optionally, the matrix of Schur vectors for GE ...
subroutine zgeev(jobvl, jobvr, n, a, lda, w, vl, ldvl, vr, ldvr, work, lwork, rwork, info)
ZGEEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for GE matrices
subroutine zgeevx(balanc, jobvl, jobvr, sense, n, a, lda, w, vl, ldvl, vr, ldvr, ilo, ihi, scale, abnrm, rconde, rcondv, work, lwork, rwork, info)
ZGEEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for GE matrices
subroutine zgejsv(joba, jobu, jobv, jobr, jobt, jobp, m, n, a, lda, sva, u, ldu, v, ldv, cwork, lwork, rwork, lrwork, iwork, info)
ZGEJSV
subroutine zgesdd(jobz, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork, iwork, info)
ZGESDD
subroutine zgesvd(jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork, info)
ZGESVD computes the singular value decomposition (SVD) for GE matrices
subroutine zgesvdq(joba, jobp, jobr, jobu, jobv, m, n, a, lda, s, u, ldu, v, ldv, numrank, iwork, liwork, cwork, lcwork, rwork, lrwork, info)
ZGESVDQ computes the singular value decomposition (SVD) with a QR-Preconditioned QR SVD Method for GE...
subroutine zgesvdx(jobu, jobvt, range, m, n, a, lda, vl, vu, il, iu, ns, s, u, ldu, vt, ldvt, work, lwork, rwork, iwork, info)
ZGESVDX computes the singular value decomposition (SVD) for GE matrices
subroutine zgesvj(joba, jobu, jobv, m, n, a, lda, sva, mv, v, ldv, cwork, lwork, rwork, lrwork, info)
ZGESVJ
subroutine zerred(path, nunit)
ZERRED