00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "f2c.h"
00014 #include "blaswrap.h"
00015
00016
00017
00018 static doublecomplex c_b1 = {0.,0.};
00019 static doublecomplex c_b2 = {1.,0.};
00020 static integer c__0 = 0;
00021 static integer c__4 = 4;
00022 static integer c__6 = 6;
00023 static doublereal c_b39 = 1.;
00024 static integer c__1 = 1;
00025 static doublereal c_b49 = 0.;
00026 static integer c__2 = 2;
00027 static logical c_false = FALSE_;
00028 static integer c__3 = 3;
00029 static integer c__7 = 7;
00030 static integer c__5 = 5;
00031 static logical c_true = TRUE_;
00032 static integer c__22 = 22;
00033
00034 int zdrvvx_(integer *nsizes, integer *nn, integer *ntypes,
00035 logical *dotype, integer *iseed, doublereal *thresh, integer *niunit,
00036 integer *nounit, doublecomplex *a, integer *lda, doublecomplex *h__,
00037 doublecomplex *w, doublecomplex *w1, doublecomplex *vl, integer *ldvl,
00038 doublecomplex *vr, integer *ldvr, doublecomplex *lre, integer *ldlre,
00039 doublereal *rcondv, doublereal *rcndv1, doublereal *rcdvin,
00040 doublereal *rconde, doublereal *rcnde1, doublereal *rcdein,
00041 doublereal *scale, doublereal *scale1, doublereal *result,
00042 doublecomplex *work, integer *nwork, doublereal *rwork, integer *info)
00043 {
00044
00045
00046 static integer ktype[21] = { 1,2,3,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,9,9,9 };
00047 static integer kmagn[21] = { 1,1,1,1,1,1,2,3,1,1,1,1,1,1,1,1,2,3,1,2,3 };
00048 static integer kmode[21] = { 0,0,0,4,3,1,4,4,4,3,1,5,4,3,1,5,5,5,4,3,1 };
00049 static integer kconds[21] = { 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,2,0,0,0 };
00050 static char bal[1*4] = "N" "P" "S" "B";
00051
00052
00053 static char fmt_9992[] = "(\002 ZDRVVX: \002,a,\002 returned INFO=\002,i"
00054 "6,\002.\002,/9x,\002N=\002,i6,\002, JTYPE=\002,i6,\002, ISEED="
00055 "(\002,3(i5,\002,\002),i5,\002)\002)";
00056 static char fmt_9999[] = "(/1x,a3,\002 -- Complex Eigenvalue-Eigenvect"
00057 "or \002,\002Decomposition Expert Driver\002,/\002 Matrix types ("
00058 "see ZDRVVX for details): \002)";
00059 static char fmt_9998[] = "(/\002 Special Matrices:\002,/\002 1=Zero mat"
00060 "rix. \002,\002 \002,\002 5=Diagonal: geom"
00061 "etr. spaced entries.\002,/\002 2=Identity matrix. "
00062 " \002,\002 6=Diagona\002,\002l: clustered entries.\002,"
00063 "/\002 3=Transposed Jordan block. \002,\002 \002,\002 "
00064 " 7=Diagonal: large, evenly spaced.\002,/\002 \002,\0024=Diagona"
00065 "l: evenly spaced entries. \002,\002 8=Diagonal: s\002,\002ma"
00066 "ll, evenly spaced.\002)";
00067 static char fmt_9997[] = "(\002 Dense, Non-Symmetric Matrices:\002,/\002"
00068 " 9=Well-cond., ev\002,\002enly spaced eigenvals.\002,\002 14=Il"
00069 "l-cond., geomet. spaced e\002,\002igenals.\002,/\002 10=Well-con"
00070 "d., geom. spaced eigenvals. \002,\002 15=Ill-conditioned, cluste"
00071 "red e.vals.\002,/\002 11=Well-cond\002,\002itioned, clustered e."
00072 "vals. \002,\002 16=Ill-cond., random comp\002,\002lex \002,/\002"
00073 " 12=Well-cond., random complex \002,\002 \002,\002 17=Il"
00074 "l-cond., large rand. complx \002,/\002 13=Ill-condi\002,\002tion"
00075 "ed, evenly spaced. \002,\002 18=Ill-cond., small rand.\002"
00076 ",\002 complx \002)";
00077 static char fmt_9996[] = "(\002 19=Matrix with random O(1) entries. "
00078 " \002,\002 21=Matrix \002,\002with small random entries.\002,"
00079 "/\002 20=Matrix with large ran\002,\002dom entries. \002,\002 "
00080 "22=Matrix read from input file\002,/)";
00081 static char fmt_9995[] = "(\002 Tests performed with test threshold ="
00082 "\002,f8.2,//\002 1 = | A VR - VR W | / ( n |A| ulp ) \002,/\002 "
00083 "2 = | transpose(A) VL - VL W | / ( n |A| ulp ) \002,/\002 3 = | "
00084 "|VR(i)| - 1 | / ulp \002,/\002 4 = | |VL(i)| - 1 | / ulp \002,"
00085 "/\002 5 = 0 if W same no matter if VR or VL computed,\002,\002 1"
00086 "/ulp otherwise\002,/\002 6 = 0 if VR same no matter what else co"
00087 "mputed,\002,\002 1/ulp otherwise\002,/\002 7 = 0 if VL same no "
00088 "matter what else computed,\002,\002 1/ulp otherwise\002,/\002 8"
00089 " = 0 if RCONDV same no matter what else computed,\002,\002 1/ul"
00090 "p otherwise\002,/\002 9 = 0 if SCALE, ILO, IHI, ABNRM same no ma"
00091 "tter what else\002,\002 computed, 1/ulp otherwise\002,/\002 10 "
00092 "= | RCONDV - RCONDV(precomputed) | / cond(RCONDV),\002,/\002 11 "
00093 "= | RCONDE - RCONDE(precomputed) | / cond(RCONDE),\002)";
00094 static char fmt_9994[] = "(\002 BALANC='\002,a1,\002',N=\002,i4,\002,I"
00095 "WK=\002,i1,\002, seed=\002,4(i4,\002,\002),\002 type \002,i2,"
00096 "\002, test(\002,i2,\002)=\002,g10.3)";
00097 static char fmt_9993[] = "(\002 N=\002,i5,\002, input example =\002,i3"
00098 ",\002, test(\002,i2,\002)=\002,g10.3)";
00099
00100
00101 integer a_dim1, a_offset, h_dim1, h_offset, lre_dim1, lre_offset, vl_dim1,
00102 vl_offset, vr_dim1, vr_offset, i__1, i__2, i__3, i__4;
00103 doublecomplex z__1;
00104
00105
00106 int s_copy(char *, char *, ftnlen, ftnlen);
00107 double sqrt(doublereal);
00108 integer s_wsfe(cilist *), do_fio(integer *, char *, ftnlen), e_wsfe(void),
00109 s_rsle(cilist *), do_lio(integer *, integer *, char *, ftnlen),
00110 e_rsle(void);
00111
00112
00113 integer i__, j, n;
00114 doublereal wi, wr;
00115 integer iwk;
00116 doublereal ulp;
00117 integer ibal;
00118 doublereal cond;
00119 integer jcol;
00120 char path[3];
00121 integer nmax;
00122 doublereal unfl, ovfl;
00123 integer isrt;
00124 logical badnn;
00125 integer nfail, imode, iinfo;
00126 doublereal conds, anorm;
00127 extern int zget23_(logical *, integer *, char *, integer
00128 *, doublereal *, integer *, integer *, integer *, doublecomplex *,
00129 integer *, doublecomplex *, doublecomplex *, doublecomplex *,
00130 doublecomplex *, integer *, doublecomplex *, integer *,
00131 doublecomplex *, integer *, doublereal *, doublereal *,
00132 doublereal *, doublereal *, doublereal *, doublereal *,
00133 doublereal *, doublereal *, doublereal *, doublecomplex *,
00134 integer *, doublereal *, integer *);
00135 integer jsize, nerrs, itype, jtype, ntest;
00136 doublereal rtulp;
00137 extern int dlabad_(doublereal *, doublereal *);
00138 char balanc[1];
00139 extern doublereal dlamch_(char *);
00140 integer idumma[1];
00141 extern int xerbla_(char *, integer *);
00142 integer ioldsd[4];
00143 extern int dlasum_(char *, integer *, integer *, integer
00144 *), zlatme_(integer *, char *, integer *, doublecomplex *,
00145 integer *, doublereal *, doublecomplex *, char *, char *, char *,
00146 char *, doublereal *, integer *, doublereal *, integer *,
00147 integer *, doublereal *, doublecomplex *, integer *,
00148 doublecomplex *, integer *), zlaset_(char *, integer *, integer *, doublecomplex *,
00149 doublecomplex *, doublecomplex *, integer *);
00150 integer ntestf;
00151 extern int zlatmr_(integer *, integer *, char *, integer
00152 *, char *, doublecomplex *, integer *, doublereal *,
00153 doublecomplex *, char *, char *, doublecomplex *, integer *,
00154 doublereal *, doublecomplex *, integer *, doublereal *, char *,
00155 integer *, integer *, integer *, doublereal *, doublereal *, char
00156 *, doublecomplex *, integer *, integer *, integer *), zlatms_(integer *,
00157 integer *, char *, integer *, char *, doublereal *, integer *,
00158 doublereal *, doublereal *, integer *, integer *, char *,
00159 doublecomplex *, integer *, doublecomplex *, integer *);
00160 doublereal ulpinv;
00161 integer nnwork;
00162 doublereal rtulpi;
00163 integer mtypes, ntestt;
00164
00165
00166 static cilist io___32 = { 0, 0, 0, fmt_9992, 0 };
00167 static cilist io___39 = { 0, 0, 0, fmt_9999, 0 };
00168 static cilist io___40 = { 0, 0, 0, fmt_9998, 0 };
00169 static cilist io___41 = { 0, 0, 0, fmt_9997, 0 };
00170 static cilist io___42 = { 0, 0, 0, fmt_9996, 0 };
00171 static cilist io___43 = { 0, 0, 0, fmt_9995, 0 };
00172 static cilist io___44 = { 0, 0, 0, fmt_9994, 0 };
00173 static cilist io___45 = { 0, 0, 1, 0, 0 };
00174 static cilist io___48 = { 0, 0, 0, 0, 0 };
00175 static cilist io___49 = { 0, 0, 0, 0, 0 };
00176 static cilist io___52 = { 0, 0, 0, fmt_9999, 0 };
00177 static cilist io___53 = { 0, 0, 0, fmt_9998, 0 };
00178 static cilist io___54 = { 0, 0, 0, fmt_9997, 0 };
00179 static cilist io___55 = { 0, 0, 0, fmt_9996, 0 };
00180 static cilist io___56 = { 0, 0, 0, fmt_9995, 0 };
00181 static cilist io___57 = { 0, 0, 0, fmt_9993, 0 };
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376
00377
00378
00379
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402
00403
00404
00405
00406
00407
00408
00409
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441
00442
00443
00444
00445
00446
00447
00448
00449
00450
00451
00452
00453
00454
00455
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467
00468
00469
00470
00471
00472
00473
00474
00475
00476
00477
00478
00479
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501
00502
00503
00504
00505
00506
00507
00508
00509
00510
00511
00512
00513
00514
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524 --nn;
00525 --dotype;
00526 --iseed;
00527 h_dim1 = *lda;
00528 h_offset = 1 + h_dim1;
00529 h__ -= h_offset;
00530 a_dim1 = *lda;
00531 a_offset = 1 + a_dim1;
00532 a -= a_offset;
00533 --w;
00534 --w1;
00535 vl_dim1 = *ldvl;
00536 vl_offset = 1 + vl_dim1;
00537 vl -= vl_offset;
00538 vr_dim1 = *ldvr;
00539 vr_offset = 1 + vr_dim1;
00540 vr -= vr_offset;
00541 lre_dim1 = *ldlre;
00542 lre_offset = 1 + lre_dim1;
00543 lre -= lre_offset;
00544 --rcondv;
00545 --rcndv1;
00546 --rcdvin;
00547 --rconde;
00548 --rcnde1;
00549 --rcdein;
00550 --scale;
00551 --scale1;
00552 --result;
00553 --work;
00554 --rwork;
00555
00556
00557
00558
00559
00560 s_copy(path, "Zomplex precision", (ftnlen)1, (ftnlen)17);
00561 s_copy(path + 1, "VX", (ftnlen)2, (ftnlen)2);
00562
00563
00564
00565 ntestt = 0;
00566 ntestf = 0;
00567 *info = 0;
00568
00569
00570
00571 badnn = FALSE_;
00572
00573
00574
00575
00576 nmax = 7;
00577 i__1 = *nsizes;
00578 for (j = 1; j <= i__1; ++j) {
00579
00580 i__2 = nmax, i__3 = nn[j];
00581 nmax = max(i__2,i__3);
00582 if (nn[j] < 0) {
00583 badnn = TRUE_;
00584 }
00585
00586 }
00587
00588
00589
00590 if (*nsizes < 0) {
00591 *info = -1;
00592 } else if (badnn) {
00593 *info = -2;
00594 } else if (*ntypes < 0) {
00595 *info = -3;
00596 } else if (*thresh < 0.) {
00597 *info = -6;
00598 } else if (*lda < 1 || *lda < nmax) {
00599 *info = -10;
00600 } else if (*ldvl < 1 || *ldvl < nmax) {
00601 *info = -15;
00602 } else if (*ldvr < 1 || *ldvr < nmax) {
00603 *info = -17;
00604 } else if (*ldlre < 1 || *ldlre < nmax) {
00605 *info = -19;
00606 } else {
00607
00608 i__1 = nmax;
00609 if (nmax * 6 + (i__1 * i__1 << 1) > *nwork) {
00610 *info = -30;
00611 }
00612 }
00613
00614 if (*info != 0) {
00615 i__1 = -(*info);
00616 xerbla_("ZDRVVX", &i__1);
00617 return 0;
00618 }
00619
00620
00621
00622 if (*nsizes == 0 || *ntypes == 0) {
00623 goto L160;
00624 }
00625
00626
00627
00628 unfl = dlamch_("Safe minimum");
00629 ovfl = 1. / unfl;
00630 dlabad_(&unfl, &ovfl);
00631 ulp = dlamch_("Precision");
00632 ulpinv = 1. / ulp;
00633 rtulp = sqrt(ulp);
00634 rtulpi = 1. / rtulp;
00635
00636
00637
00638 nerrs = 0;
00639
00640 i__1 = *nsizes;
00641 for (jsize = 1; jsize <= i__1; ++jsize) {
00642 n = nn[jsize];
00643 if (*nsizes != 1) {
00644 mtypes = min(21,*ntypes);
00645 } else {
00646 mtypes = min(22,*ntypes);
00647 }
00648
00649 i__2 = mtypes;
00650 for (jtype = 1; jtype <= i__2; ++jtype) {
00651 if (! dotype[jtype]) {
00652 goto L140;
00653 }
00654
00655
00656
00657 for (j = 1; j <= 4; ++j) {
00658 ioldsd[j - 1] = iseed[j];
00659
00660 }
00661
00662
00663
00664
00665
00666
00667
00668
00669
00670
00671
00672
00673
00674
00675
00676
00677
00678 if (mtypes > 21) {
00679 goto L90;
00680 }
00681
00682 itype = ktype[jtype - 1];
00683 imode = kmode[jtype - 1];
00684
00685
00686
00687 switch (kmagn[jtype - 1]) {
00688 case 1: goto L30;
00689 case 2: goto L40;
00690 case 3: goto L50;
00691 }
00692
00693 L30:
00694 anorm = 1.;
00695 goto L60;
00696
00697 L40:
00698 anorm = ovfl * ulp;
00699 goto L60;
00700
00701 L50:
00702 anorm = unfl * ulpinv;
00703 goto L60;
00704
00705 L60:
00706
00707 zlaset_("Full", lda, &n, &c_b1, &c_b1, &a[a_offset], lda);
00708 iinfo = 0;
00709 cond = ulpinv;
00710
00711
00712
00713
00714
00715 if (itype == 1) {
00716 iinfo = 0;
00717
00718 } else if (itype == 2) {
00719
00720
00721
00722 i__3 = n;
00723 for (jcol = 1; jcol <= i__3; ++jcol) {
00724 i__4 = jcol + jcol * a_dim1;
00725 a[i__4].r = anorm, a[i__4].i = 0.;
00726
00727 }
00728
00729 } else if (itype == 3) {
00730
00731
00732
00733 i__3 = n;
00734 for (jcol = 1; jcol <= i__3; ++jcol) {
00735 i__4 = jcol + jcol * a_dim1;
00736 a[i__4].r = anorm, a[i__4].i = 0.;
00737 if (jcol > 1) {
00738 i__4 = jcol + (jcol - 1) * a_dim1;
00739 a[i__4].r = 1., a[i__4].i = 0.;
00740 }
00741
00742 }
00743
00744 } else if (itype == 4) {
00745
00746
00747
00748 zlatms_(&n, &n, "S", &iseed[1], "H", &rwork[1], &imode, &cond,
00749 &anorm, &c__0, &c__0, "N", &a[a_offset], lda, &work[
00750 n + 1], &iinfo);
00751
00752 } else if (itype == 5) {
00753
00754
00755
00756 zlatms_(&n, &n, "S", &iseed[1], "H", &rwork[1], &imode, &cond,
00757 &anorm, &n, &n, "N", &a[a_offset], lda, &work[n + 1],
00758 &iinfo);
00759
00760 } else if (itype == 6) {
00761
00762
00763
00764 if (kconds[jtype - 1] == 1) {
00765 conds = 1.;
00766 } else if (kconds[jtype - 1] == 2) {
00767 conds = rtulpi;
00768 } else {
00769 conds = 0.;
00770 }
00771
00772 zlatme_(&n, "D", &iseed[1], &work[1], &imode, &cond, &c_b2,
00773 " ", "T", "T", "T", &rwork[1], &c__4, &conds, &n, &n,
00774 &anorm, &a[a_offset], lda, &work[(n << 1) + 1], &
00775 iinfo);
00776
00777 } else if (itype == 7) {
00778
00779
00780
00781 zlatmr_(&n, &n, "D", &iseed[1], "S", &work[1], &c__6, &c_b39,
00782 &c_b2, "T", "N", &work[n + 1], &c__1, &c_b39, &work[(
00783 n << 1) + 1], &c__1, &c_b39, "N", idumma, &c__0, &
00784 c__0, &c_b49, &anorm, "NO", &a[a_offset], lda, idumma,
00785 &iinfo);
00786
00787 } else if (itype == 8) {
00788
00789
00790
00791 zlatmr_(&n, &n, "D", &iseed[1], "H", &work[1], &c__6, &c_b39,
00792 &c_b2, "T", "N", &work[n + 1], &c__1, &c_b39, &work[(
00793 n << 1) + 1], &c__1, &c_b39, "N", idumma, &n, &n, &
00794 c_b49, &anorm, "NO", &a[a_offset], lda, idumma, &
00795 iinfo);
00796
00797 } else if (itype == 9) {
00798
00799
00800
00801 zlatmr_(&n, &n, "D", &iseed[1], "N", &work[1], &c__6, &c_b39,
00802 &c_b2, "T", "N", &work[n + 1], &c__1, &c_b39, &work[(
00803 n << 1) + 1], &c__1, &c_b39, "N", idumma, &n, &n, &
00804 c_b49, &anorm, "NO", &a[a_offset], lda, idumma, &
00805 iinfo);
00806 if (n >= 4) {
00807 zlaset_("Full", &c__2, &n, &c_b1, &c_b1, &a[a_offset],
00808 lda);
00809 i__3 = n - 3;
00810 zlaset_("Full", &i__3, &c__1, &c_b1, &c_b1, &a[a_dim1 + 3]
00811 , lda);
00812 i__3 = n - 3;
00813 zlaset_("Full", &i__3, &c__2, &c_b1, &c_b1, &a[(n - 1) *
00814 a_dim1 + 3], lda);
00815 zlaset_("Full", &c__1, &n, &c_b1, &c_b1, &a[n + a_dim1],
00816 lda);
00817 }
00818
00819 } else if (itype == 10) {
00820
00821
00822
00823 zlatmr_(&n, &n, "D", &iseed[1], "N", &work[1], &c__6, &c_b39,
00824 &c_b2, "T", "N", &work[n + 1], &c__1, &c_b39, &work[(
00825 n << 1) + 1], &c__1, &c_b39, "N", idumma, &n, &c__0, &
00826 c_b49, &anorm, "NO", &a[a_offset], lda, idumma, &
00827 iinfo);
00828
00829 } else {
00830
00831 iinfo = 1;
00832 }
00833
00834 if (iinfo != 0) {
00835 io___32.ciunit = *nounit;
00836 s_wsfe(&io___32);
00837 do_fio(&c__1, "Generator", (ftnlen)9);
00838 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
00839 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
00840 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
00841 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer));
00842 e_wsfe();
00843 *info = abs(iinfo);
00844 return 0;
00845 }
00846
00847 L90:
00848
00849
00850
00851 for (iwk = 1; iwk <= 3; ++iwk) {
00852 if (iwk == 1) {
00853 nnwork = n << 1;
00854 } else if (iwk == 2) {
00855
00856 i__3 = n;
00857 nnwork = (n << 1) + i__3 * i__3;
00858 } else {
00859
00860 i__3 = n;
00861 nnwork = n * 6 + (i__3 * i__3 << 1);
00862 }
00863 nnwork = max(nnwork,1);
00864
00865
00866
00867 for (ibal = 1; ibal <= 4; ++ibal) {
00868 *(unsigned char *)balanc = *(unsigned char *)&bal[ibal -
00869 1];
00870
00871
00872
00873 zget23_(&c_false, &c__0, balanc, &jtype, thresh, ioldsd,
00874 nounit, &n, &a[a_offset], lda, &h__[h_offset], &w[
00875 1], &w1[1], &vl[vl_offset], ldvl, &vr[vr_offset],
00876 ldvr, &lre[lre_offset], ldlre, &rcondv[1], &
00877 rcndv1[1], &rcdvin[1], &rconde[1], &rcnde1[1], &
00878 rcdein[1], &scale[1], &scale1[1], &result[1], &
00879 work[1], &nnwork, &rwork[1], info);
00880
00881
00882
00883 ntest = 0;
00884 nfail = 0;
00885 for (j = 1; j <= 9; ++j) {
00886 if (result[j] >= 0.) {
00887 ++ntest;
00888 }
00889 if (result[j] >= *thresh) {
00890 ++nfail;
00891 }
00892
00893 }
00894
00895 if (nfail > 0) {
00896 ++ntestf;
00897 }
00898 if (ntestf == 1) {
00899 io___39.ciunit = *nounit;
00900 s_wsfe(&io___39);
00901 do_fio(&c__1, path, (ftnlen)3);
00902 e_wsfe();
00903 io___40.ciunit = *nounit;
00904 s_wsfe(&io___40);
00905 e_wsfe();
00906 io___41.ciunit = *nounit;
00907 s_wsfe(&io___41);
00908 e_wsfe();
00909 io___42.ciunit = *nounit;
00910 s_wsfe(&io___42);
00911 e_wsfe();
00912 io___43.ciunit = *nounit;
00913 s_wsfe(&io___43);
00914 do_fio(&c__1, (char *)&(*thresh), (ftnlen)sizeof(
00915 doublereal));
00916 e_wsfe();
00917 ntestf = 2;
00918 }
00919
00920 for (j = 1; j <= 9; ++j) {
00921 if (result[j] >= *thresh) {
00922 io___44.ciunit = *nounit;
00923 s_wsfe(&io___44);
00924 do_fio(&c__1, balanc, (ftnlen)1);
00925 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer))
00926 ;
00927 do_fio(&c__1, (char *)&iwk, (ftnlen)sizeof(
00928 integer));
00929 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(
00930 integer));
00931 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(
00932 integer));
00933 do_fio(&c__1, (char *)&j, (ftnlen)sizeof(integer))
00934 ;
00935 do_fio(&c__1, (char *)&result[j], (ftnlen)sizeof(
00936 doublereal));
00937 e_wsfe();
00938 }
00939
00940 }
00941
00942 nerrs += nfail;
00943 ntestt += ntest;
00944
00945
00946 }
00947
00948 }
00949 L140:
00950 ;
00951 }
00952
00953 }
00954
00955 L160:
00956
00957
00958
00959
00960
00961 jtype = 0;
00962 L170:
00963 io___45.ciunit = *niunit;
00964 i__1 = s_rsle(&io___45);
00965 if (i__1 != 0) {
00966 goto L220;
00967 }
00968 i__1 = do_lio(&c__3, &c__1, (char *)&n, (ftnlen)sizeof(integer));
00969 if (i__1 != 0) {
00970 goto L220;
00971 }
00972 i__1 = do_lio(&c__3, &c__1, (char *)&isrt, (ftnlen)sizeof(integer));
00973 if (i__1 != 0) {
00974 goto L220;
00975 }
00976 i__1 = e_rsle();
00977 if (i__1 != 0) {
00978 goto L220;
00979 }
00980
00981
00982
00983 if (n == 0) {
00984 goto L220;
00985 }
00986 ++jtype;
00987 iseed[1] = jtype;
00988 i__1 = n;
00989 for (i__ = 1; i__ <= i__1; ++i__) {
00990 io___48.ciunit = *niunit;
00991 s_rsle(&io___48);
00992 i__2 = n;
00993 for (j = 1; j <= i__2; ++j) {
00994 do_lio(&c__7, &c__1, (char *)&a[i__ + j * a_dim1], (ftnlen)sizeof(
00995 doublecomplex));
00996 }
00997 e_rsle();
00998
00999 }
01000 i__1 = n;
01001 for (i__ = 1; i__ <= i__1; ++i__) {
01002 io___49.ciunit = *niunit;
01003 s_rsle(&io___49);
01004 do_lio(&c__5, &c__1, (char *)&wr, (ftnlen)sizeof(doublereal));
01005 do_lio(&c__5, &c__1, (char *)&wi, (ftnlen)sizeof(doublereal));
01006 do_lio(&c__5, &c__1, (char *)&rcdein[i__], (ftnlen)sizeof(doublereal))
01007 ;
01008 do_lio(&c__5, &c__1, (char *)&rcdvin[i__], (ftnlen)sizeof(doublereal))
01009 ;
01010 e_rsle();
01011 i__2 = i__;
01012 z__1.r = wr, z__1.i = wi;
01013 w1[i__2].r = z__1.r, w1[i__2].i = z__1.i;
01014
01015 }
01016
01017 i__2 = n;
01018 i__1 = n * 6 + (i__2 * i__2 << 1);
01019 zget23_(&c_true, &isrt, "N", &c__22, thresh, &iseed[1], nounit, &n, &a[
01020 a_offset], lda, &h__[h_offset], &w[1], &w1[1], &vl[vl_offset],
01021 ldvl, &vr[vr_offset], ldvr, &lre[lre_offset], ldlre, &rcondv[1], &
01022 rcndv1[1], &rcdvin[1], &rconde[1], &rcnde1[1], &rcdein[1], &scale[
01023 1], &scale1[1], &result[1], &work[1], &i__1, &rwork[1], info);
01024
01025
01026
01027 ntest = 0;
01028 nfail = 0;
01029 for (j = 1; j <= 11; ++j) {
01030 if (result[j] >= 0.) {
01031 ++ntest;
01032 }
01033 if (result[j] >= *thresh) {
01034 ++nfail;
01035 }
01036
01037 }
01038
01039 if (nfail > 0) {
01040 ++ntestf;
01041 }
01042 if (ntestf == 1) {
01043 io___52.ciunit = *nounit;
01044 s_wsfe(&io___52);
01045 do_fio(&c__1, path, (ftnlen)3);
01046 e_wsfe();
01047 io___53.ciunit = *nounit;
01048 s_wsfe(&io___53);
01049 e_wsfe();
01050 io___54.ciunit = *nounit;
01051 s_wsfe(&io___54);
01052 e_wsfe();
01053 io___55.ciunit = *nounit;
01054 s_wsfe(&io___55);
01055 e_wsfe();
01056 io___56.ciunit = *nounit;
01057 s_wsfe(&io___56);
01058 do_fio(&c__1, (char *)&(*thresh), (ftnlen)sizeof(doublereal));
01059 e_wsfe();
01060 ntestf = 2;
01061 }
01062
01063 for (j = 1; j <= 11; ++j) {
01064 if (result[j] >= *thresh) {
01065 io___57.ciunit = *nounit;
01066 s_wsfe(&io___57);
01067 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
01068 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
01069 do_fio(&c__1, (char *)&j, (ftnlen)sizeof(integer));
01070 do_fio(&c__1, (char *)&result[j], (ftnlen)sizeof(doublereal));
01071 e_wsfe();
01072 }
01073
01074 }
01075
01076 nerrs += nfail;
01077 ntestt += ntest;
01078 goto L170;
01079 L220:
01080
01081
01082
01083 dlasum_(path, nounit, &nerrs, &ntestt);
01084
01085
01086
01087 return 0;
01088
01089
01090
01091 }