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 real c_b18 = 0.f;
00019 static integer c__0 = 0;
00020 static real c_b32 = 1.f;
00021 static integer c__4 = 4;
00022 static integer c__6 = 6;
00023 static integer c__1 = 1;
00024 static integer c__2 = 2;
00025 static logical c_false = FALSE_;
00026 static integer c__3 = 3;
00027 static logical c_true = TRUE_;
00028 static integer c__22 = 22;
00029
00030 int sdrvvx_(integer *nsizes, integer *nn, integer *ntypes,
00031 logical *dotype, integer *iseed, real *thresh, integer *niunit,
00032 integer *nounit, real *a, integer *lda, real *h__, real *wr, real *wi,
00033 real *wr1, real *wi1, real *vl, integer *ldvl, real *vr, integer *
00034 ldvr, real *lre, integer *ldlre, real *rcondv, real *rcndv1, real *
00035 rcdvin, real *rconde, real *rcnde1, real *rcdein, real *scale, real *
00036 scale1, real *result, real *work, integer *nwork, integer *iwork,
00037 integer *info)
00038 {
00039
00040
00041 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 };
00042 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 };
00043 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 };
00044 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 };
00045 static char bal[1*4] = "N" "P" "S" "B";
00046
00047
00048 static char fmt_9992[] = "(\002 SDRVVX: \002,a,\002 returned INFO=\002,i"
00049 "6,\002.\002,/9x,\002N=\002,i6,\002, JTYPE=\002,i6,\002, ISEED="
00050 "(\002,3(i5,\002,\002),i5,\002)\002)";
00051 static char fmt_9999[] = "(/1x,a3,\002 -- Real Eigenvalue-Eigenvector De"
00052 "composition\002,\002 Expert Driver\002,/\002 Matrix types (see S"
00053 "DRVVX for details): \002)";
00054 static char fmt_9998[] = "(/\002 Special Matrices:\002,/\002 1=Zero mat"
00055 "rix. \002,\002 \002,\002 5=Diagonal: geom"
00056 "etr. spaced entries.\002,/\002 2=Identity matrix. "
00057 " \002,\002 6=Diagona\002,\002l: clustered entries.\002,"
00058 "/\002 3=Transposed Jordan block. \002,\002 \002,\002 "
00059 " 7=Diagonal: large, evenly spaced.\002,/\002 \002,\0024=Diagona"
00060 "l: evenly spaced entries. \002,\002 8=Diagonal: s\002,\002ma"
00061 "ll, evenly spaced.\002)";
00062 static char fmt_9997[] = "(\002 Dense, Non-Symmetric Matrices:\002,/\002"
00063 " 9=Well-cond., ev\002,\002enly spaced eigenvals.\002,\002 14=Il"
00064 "l-cond., geomet. spaced e\002,\002igenals.\002,/\002 10=Well-con"
00065 "d., geom. spaced eigenvals. \002,\002 15=Ill-conditioned, cluste"
00066 "red e.vals.\002,/\002 11=Well-cond\002,\002itioned, clustered e."
00067 "vals. \002,\002 16=Ill-cond., random comp\002,\002lex \002,/\002"
00068 " 12=Well-cond., random complex \002,\002 \002,\002 17=Il"
00069 "l-cond., large rand. complx \002,/\002 13=Ill-condi\002,\002tion"
00070 "ed, evenly spaced. \002,\002 18=Ill-cond., small rand.\002"
00071 ",\002 complx \002)";
00072 static char fmt_9996[] = "(\002 19=Matrix with random O(1) entries. "
00073 " \002,\002 21=Matrix \002,\002with small random entries.\002,"
00074 "/\002 20=Matrix with large ran\002,\002dom entries. \002,\002 "
00075 "22=Matrix read from input file\002,/)";
00076 static char fmt_9995[] = "(\002 Tests performed with test threshold ="
00077 "\002,f8.2,//\002 1 = | A VR - VR W | / ( n |A| ulp ) \002,/\002 "
00078 "2 = | transpose(A) VL - VL W | / ( n |A| ulp ) \002,/\002 3 = | "
00079 "|VR(i)| - 1 | / ulp \002,/\002 4 = | |VL(i)| - 1 | / ulp \002,"
00080 "/\002 5 = 0 if W same no matter if VR or VL computed,\002,\002 1"
00081 "/ulp otherwise\002,/\002 6 = 0 if VR same no matter what else co"
00082 "mputed,\002,\002 1/ulp otherwise\002,/\002 7 = 0 if VL same no "
00083 "matter what else computed,\002,\002 1/ulp otherwise\002,/\002 8"
00084 " = 0 if RCONDV same no matter what else computed,\002,\002 1/ul"
00085 "p otherwise\002,/\002 9 = 0 if SCALE, ILO, IHI, ABNRM same no ma"
00086 "tter what else\002,\002 computed, 1/ulp otherwise\002,/\002 10 "
00087 "= | RCONDV - RCONDV(precomputed) | / cond(RCONDV),\002,/\002 11 "
00088 "= | RCONDE - RCONDE(precomputed) | / cond(RCONDE),\002)";
00089 static char fmt_9994[] = "(\002 BALANC='\002,a1,\002',N=\002,i4,\002,I"
00090 "WK=\002,i1,\002, seed=\002,4(i4,\002,\002),\002 type \002,i2,"
00091 "\002, test(\002,i2,\002)=\002,g10.3)";
00092 static char fmt_9993[] = "(\002 N=\002,i5,\002, input example =\002,i3"
00093 ",\002, test(\002,i2,\002)=\002,g10.3)";
00094
00095
00096 integer a_dim1, a_offset, h_dim1, h_offset, lre_dim1, lre_offset, vl_dim1,
00097 vl_offset, vr_dim1, vr_offset, i__1, i__2, i__3;
00098
00099
00100 int s_copy(char *, char *, ftnlen, ftnlen);
00101 double sqrt(doublereal);
00102 integer s_wsfe(cilist *), do_fio(integer *, char *, ftnlen), e_wsfe(void),
00103 s_rsle(cilist *), do_lio(integer *, integer *, char *, ftnlen),
00104 e_rsle(void);
00105
00106
00107 integer i__, j, n, iwk;
00108 real ulp;
00109 integer ibal;
00110 real cond;
00111 integer jcol;
00112 char path[3];
00113 integer nmax;
00114 real unfl, ovfl;
00115 logical badnn;
00116 integer nfail, imode, iinfo;
00117 real conds;
00118 extern int sget23_(logical *, char *, integer *, real *,
00119 integer *, integer *, integer *, real *, integer *, real *, real *
00120 , real *, real *, real *, real *, integer *, real *, integer *,
00121 real *, integer *, real *, real *, real *, real *, real *, real *,
00122 real *, real *, real *, real *, integer *, integer *, integer *);
00123 real anorm;
00124 integer jsize, nerrs, itype, jtype, ntest;
00125 real rtulp;
00126 char balanc[1];
00127 extern int slabad_(real *, real *);
00128 char adumma[1*1];
00129 extern doublereal slamch_(char *);
00130 integer idumma[1];
00131 extern int xerbla_(char *, integer *);
00132 integer ioldsd[4];
00133 extern int slatme_(integer *, char *, integer *, real *,
00134 integer *, real *, real *, char *, char *, char *, char *, real *,
00135 integer *, real *, integer *, integer *, real *, real *, integer
00136 *, real *, integer *),
00137 slaset_(char *, integer *, integer *, real *, real *, real *,
00138 integer *), slatmr_(integer *, integer *, char *, integer
00139 *, char *, real *, integer *, real *, real *, char *, char *,
00140 real *, integer *, real *, real *, integer *, real *, char *,
00141 integer *, integer *, integer *, real *, real *, char *, real *,
00142 integer *, integer *, integer *);
00143 integer ntestf;
00144 extern int slasum_(char *, integer *, integer *, integer
00145 *), slatms_(integer *, integer *, char *, integer *, char
00146 *, real *, integer *, real *, real *, integer *, integer *, char *
00147 , real *, integer *, real *, integer *);
00148 real ulpinv;
00149 integer nnwork;
00150 real rtulpi;
00151 integer mtypes, ntestt;
00152
00153
00154 static cilist io___33 = { 0, 0, 0, fmt_9992, 0 };
00155 static cilist io___40 = { 0, 0, 0, fmt_9999, 0 };
00156 static cilist io___41 = { 0, 0, 0, fmt_9998, 0 };
00157 static cilist io___42 = { 0, 0, 0, fmt_9997, 0 };
00158 static cilist io___43 = { 0, 0, 0, fmt_9996, 0 };
00159 static cilist io___44 = { 0, 0, 0, fmt_9995, 0 };
00160 static cilist io___45 = { 0, 0, 0, fmt_9994, 0 };
00161 static cilist io___46 = { 0, 0, 1, 0, 0 };
00162 static cilist io___48 = { 0, 0, 0, 0, 0 };
00163 static cilist io___49 = { 0, 0, 0, 0, 0 };
00164 static cilist io___50 = { 0, 0, 0, fmt_9999, 0 };
00165 static cilist io___51 = { 0, 0, 0, fmt_9998, 0 };
00166 static cilist io___52 = { 0, 0, 0, fmt_9997, 0 };
00167 static cilist io___53 = { 0, 0, 0, fmt_9996, 0 };
00168 static cilist io___54 = { 0, 0, 0, fmt_9995, 0 };
00169 static cilist io___55 = { 0, 0, 0, fmt_9993, 0 };
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
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
00525
00526
00527
00528
00529
00530
00531
00532
00533
00534
00535
00536
00537
00538
00539
00540
00541
00542
00543
00544
00545
00546
00547
00548
00549
00550
00551
00552
00553
00554 --nn;
00555 --dotype;
00556 --iseed;
00557 h_dim1 = *lda;
00558 h_offset = 1 + h_dim1;
00559 h__ -= h_offset;
00560 a_dim1 = *lda;
00561 a_offset = 1 + a_dim1;
00562 a -= a_offset;
00563 --wr;
00564 --wi;
00565 --wr1;
00566 --wi1;
00567 vl_dim1 = *ldvl;
00568 vl_offset = 1 + vl_dim1;
00569 vl -= vl_offset;
00570 vr_dim1 = *ldvr;
00571 vr_offset = 1 + vr_dim1;
00572 vr -= vr_offset;
00573 lre_dim1 = *ldlre;
00574 lre_offset = 1 + lre_dim1;
00575 lre -= lre_offset;
00576 --rcondv;
00577 --rcndv1;
00578 --rcdvin;
00579 --rconde;
00580 --rcnde1;
00581 --rcdein;
00582 --scale;
00583 --scale1;
00584 --result;
00585 --work;
00586 --iwork;
00587
00588
00589
00590
00591
00592 s_copy(path, "Single precision", (ftnlen)1, (ftnlen)16);
00593 s_copy(path + 1, "VX", (ftnlen)2, (ftnlen)2);
00594
00595
00596
00597 ntestt = 0;
00598 ntestf = 0;
00599 *info = 0;
00600
00601
00602
00603 badnn = FALSE_;
00604
00605
00606
00607
00608 nmax = 12;
00609 i__1 = *nsizes;
00610 for (j = 1; j <= i__1; ++j) {
00611
00612 i__2 = nmax, i__3 = nn[j];
00613 nmax = max(i__2,i__3);
00614 if (nn[j] < 0) {
00615 badnn = TRUE_;
00616 }
00617
00618 }
00619
00620
00621
00622 if (*nsizes < 0) {
00623 *info = -1;
00624 } else if (badnn) {
00625 *info = -2;
00626 } else if (*ntypes < 0) {
00627 *info = -3;
00628 } else if (*thresh < 0.f) {
00629 *info = -6;
00630 } else if (*lda < 1 || *lda < nmax) {
00631 *info = -10;
00632 } else if (*ldvl < 1 || *ldvl < nmax) {
00633 *info = -17;
00634 } else if (*ldvr < 1 || *ldvr < nmax) {
00635 *info = -19;
00636 } else if (*ldlre < 1 || *ldlre < nmax) {
00637 *info = -21;
00638 } else {
00639
00640 i__1 = nmax;
00641 if (nmax * 6 + (i__1 * i__1 << 1) > *nwork) {
00642 *info = -32;
00643 }
00644 }
00645
00646 if (*info != 0) {
00647 i__1 = -(*info);
00648 xerbla_("SDRVVX", &i__1);
00649 return 0;
00650 }
00651
00652
00653
00654 if (*nsizes == 0 || *ntypes == 0) {
00655 goto L160;
00656 }
00657
00658
00659
00660 unfl = slamch_("Safe minimum");
00661 ovfl = 1.f / unfl;
00662 slabad_(&unfl, &ovfl);
00663 ulp = slamch_("Precision");
00664 ulpinv = 1.f / ulp;
00665 rtulp = sqrt(ulp);
00666 rtulpi = 1.f / rtulp;
00667
00668
00669
00670 nerrs = 0;
00671
00672 i__1 = *nsizes;
00673 for (jsize = 1; jsize <= i__1; ++jsize) {
00674 n = nn[jsize];
00675 if (*nsizes != 1) {
00676 mtypes = min(21,*ntypes);
00677 } else {
00678 mtypes = min(22,*ntypes);
00679 }
00680
00681 i__2 = mtypes;
00682 for (jtype = 1; jtype <= i__2; ++jtype) {
00683 if (! dotype[jtype]) {
00684 goto L140;
00685 }
00686
00687
00688
00689 for (j = 1; j <= 4; ++j) {
00690 ioldsd[j - 1] = iseed[j];
00691
00692 }
00693
00694
00695
00696
00697
00698
00699
00700
00701
00702
00703
00704
00705
00706
00707
00708
00709
00710 if (mtypes > 21) {
00711 goto L90;
00712 }
00713
00714 itype = ktype[jtype - 1];
00715 imode = kmode[jtype - 1];
00716
00717
00718
00719 switch (kmagn[jtype - 1]) {
00720 case 1: goto L30;
00721 case 2: goto L40;
00722 case 3: goto L50;
00723 }
00724
00725 L30:
00726 anorm = 1.f;
00727 goto L60;
00728
00729 L40:
00730 anorm = ovfl * ulp;
00731 goto L60;
00732
00733 L50:
00734 anorm = unfl * ulpinv;
00735 goto L60;
00736
00737 L60:
00738
00739 slaset_("Full", lda, &n, &c_b18, &c_b18, &a[a_offset], lda);
00740 iinfo = 0;
00741 cond = ulpinv;
00742
00743
00744
00745
00746
00747 if (itype == 1) {
00748 iinfo = 0;
00749
00750 } else if (itype == 2) {
00751
00752
00753
00754 i__3 = n;
00755 for (jcol = 1; jcol <= i__3; ++jcol) {
00756 a[jcol + jcol * a_dim1] = anorm;
00757
00758 }
00759
00760 } else if (itype == 3) {
00761
00762
00763
00764 i__3 = n;
00765 for (jcol = 1; jcol <= i__3; ++jcol) {
00766 a[jcol + jcol * a_dim1] = anorm;
00767 if (jcol > 1) {
00768 a[jcol + (jcol - 1) * a_dim1] = 1.f;
00769 }
00770
00771 }
00772
00773 } else if (itype == 4) {
00774
00775
00776
00777 slatms_(&n, &n, "S", &iseed[1], "S", &work[1], &imode, &cond,
00778 &anorm, &c__0, &c__0, "N", &a[a_offset], lda, &work[n
00779 + 1], &iinfo);
00780
00781 } else if (itype == 5) {
00782
00783
00784
00785 slatms_(&n, &n, "S", &iseed[1], "S", &work[1], &imode, &cond,
00786 &anorm, &n, &n, "N", &a[a_offset], lda, &work[n + 1],
00787 &iinfo);
00788
00789 } else if (itype == 6) {
00790
00791
00792
00793 if (kconds[jtype - 1] == 1) {
00794 conds = 1.f;
00795 } else if (kconds[jtype - 1] == 2) {
00796 conds = rtulpi;
00797 } else {
00798 conds = 0.f;
00799 }
00800
00801 *(unsigned char *)&adumma[0] = ' ';
00802 slatme_(&n, "S", &iseed[1], &work[1], &imode, &cond, &c_b32,
00803 adumma, "T", "T", "T", &work[n + 1], &c__4, &conds, &
00804 n, &n, &anorm, &a[a_offset], lda, &work[(n << 1) + 1],
00805 &iinfo);
00806
00807 } else if (itype == 7) {
00808
00809
00810
00811 slatmr_(&n, &n, "S", &iseed[1], "S", &work[1], &c__6, &c_b32,
00812 &c_b32, "T", "N", &work[n + 1], &c__1, &c_b32, &work[(
00813 n << 1) + 1], &c__1, &c_b32, "N", idumma, &c__0, &
00814 c__0, &c_b18, &anorm, "NO", &a[a_offset], lda, &iwork[
00815 1], &iinfo);
00816
00817 } else if (itype == 8) {
00818
00819
00820
00821 slatmr_(&n, &n, "S", &iseed[1], "S", &work[1], &c__6, &c_b32,
00822 &c_b32, "T", "N", &work[n + 1], &c__1, &c_b32, &work[(
00823 n << 1) + 1], &c__1, &c_b32, "N", idumma, &n, &n, &
00824 c_b18, &anorm, "NO", &a[a_offset], lda, &iwork[1], &
00825 iinfo);
00826
00827 } else if (itype == 9) {
00828
00829
00830
00831 slatmr_(&n, &n, "S", &iseed[1], "N", &work[1], &c__6, &c_b32,
00832 &c_b32, "T", "N", &work[n + 1], &c__1, &c_b32, &work[(
00833 n << 1) + 1], &c__1, &c_b32, "N", idumma, &n, &n, &
00834 c_b18, &anorm, "NO", &a[a_offset], lda, &iwork[1], &
00835 iinfo);
00836 if (n >= 4) {
00837 slaset_("Full", &c__2, &n, &c_b18, &c_b18, &a[a_offset],
00838 lda);
00839 i__3 = n - 3;
00840 slaset_("Full", &i__3, &c__1, &c_b18, &c_b18, &a[a_dim1 +
00841 3], lda);
00842 i__3 = n - 3;
00843 slaset_("Full", &i__3, &c__2, &c_b18, &c_b18, &a[(n - 1) *
00844 a_dim1 + 3], lda);
00845 slaset_("Full", &c__1, &n, &c_b18, &c_b18, &a[n + a_dim1],
00846 lda);
00847 }
00848
00849 } else if (itype == 10) {
00850
00851
00852
00853 slatmr_(&n, &n, "S", &iseed[1], "N", &work[1], &c__6, &c_b32,
00854 &c_b32, "T", "N", &work[n + 1], &c__1, &c_b32, &work[(
00855 n << 1) + 1], &c__1, &c_b32, "N", idumma, &n, &c__0, &
00856 c_b18, &anorm, "NO", &a[a_offset], lda, &iwork[1], &
00857 iinfo);
00858
00859 } else {
00860
00861 iinfo = 1;
00862 }
00863
00864 if (iinfo != 0) {
00865 io___33.ciunit = *nounit;
00866 s_wsfe(&io___33);
00867 do_fio(&c__1, "Generator", (ftnlen)9);
00868 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
00869 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
00870 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
00871 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer));
00872 e_wsfe();
00873 *info = abs(iinfo);
00874 return 0;
00875 }
00876
00877 L90:
00878
00879
00880
00881 for (iwk = 1; iwk <= 3; ++iwk) {
00882 if (iwk == 1) {
00883 nnwork = n * 3;
00884 } else if (iwk == 2) {
00885
00886 i__3 = n;
00887 nnwork = n * 6 + i__3 * i__3;
00888 } else {
00889
00890 i__3 = n;
00891 nnwork = n * 6 + (i__3 * i__3 << 1);
00892 }
00893 nnwork = max(nnwork,1);
00894
00895
00896
00897 for (ibal = 1; ibal <= 4; ++ibal) {
00898 *(unsigned char *)balanc = *(unsigned char *)&bal[ibal -
00899 1];
00900
00901
00902
00903 sget23_(&c_false, balanc, &jtype, thresh, ioldsd, nounit,
00904 &n, &a[a_offset], lda, &h__[h_offset], &wr[1], &
00905 wi[1], &wr1[1], &wi1[1], &vl[vl_offset], ldvl, &
00906 vr[vr_offset], ldvr, &lre[lre_offset], ldlre, &
00907 rcondv[1], &rcndv1[1], &rcdvin[1], &rconde[1], &
00908 rcnde1[1], &rcdein[1], &scale[1], &scale1[1], &
00909 result[1], &work[1], &nnwork, &iwork[1], info);
00910
00911
00912
00913 ntest = 0;
00914 nfail = 0;
00915 for (j = 1; j <= 9; ++j) {
00916 if (result[j] >= 0.f) {
00917 ++ntest;
00918 }
00919 if (result[j] >= *thresh) {
00920 ++nfail;
00921 }
00922
00923 }
00924
00925 if (nfail > 0) {
00926 ++ntestf;
00927 }
00928 if (ntestf == 1) {
00929 io___40.ciunit = *nounit;
00930 s_wsfe(&io___40);
00931 do_fio(&c__1, path, (ftnlen)3);
00932 e_wsfe();
00933 io___41.ciunit = *nounit;
00934 s_wsfe(&io___41);
00935 e_wsfe();
00936 io___42.ciunit = *nounit;
00937 s_wsfe(&io___42);
00938 e_wsfe();
00939 io___43.ciunit = *nounit;
00940 s_wsfe(&io___43);
00941 e_wsfe();
00942 io___44.ciunit = *nounit;
00943 s_wsfe(&io___44);
00944 do_fio(&c__1, (char *)&(*thresh), (ftnlen)sizeof(real)
00945 );
00946 e_wsfe();
00947 ntestf = 2;
00948 }
00949
00950 for (j = 1; j <= 9; ++j) {
00951 if (result[j] >= *thresh) {
00952 io___45.ciunit = *nounit;
00953 s_wsfe(&io___45);
00954 do_fio(&c__1, balanc, (ftnlen)1);
00955 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer))
00956 ;
00957 do_fio(&c__1, (char *)&iwk, (ftnlen)sizeof(
00958 integer));
00959 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(
00960 integer));
00961 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(
00962 integer));
00963 do_fio(&c__1, (char *)&j, (ftnlen)sizeof(integer))
00964 ;
00965 do_fio(&c__1, (char *)&result[j], (ftnlen)sizeof(
00966 real));
00967 e_wsfe();
00968 }
00969
00970 }
00971
00972 nerrs += nfail;
00973 ntestt += ntest;
00974
00975
00976 }
00977
00978 }
00979 L140:
00980 ;
00981 }
00982
00983 }
00984
00985 L160:
00986
00987
00988
00989
00990
00991 jtype = 0;
00992 L170:
00993 io___46.ciunit = *niunit;
00994 i__1 = s_rsle(&io___46);
00995 if (i__1 != 0) {
00996 goto L220;
00997 }
00998 i__1 = do_lio(&c__3, &c__1, (char *)&n, (ftnlen)sizeof(integer));
00999 if (i__1 != 0) {
01000 goto L220;
01001 }
01002 i__1 = e_rsle();
01003 if (i__1 != 0) {
01004 goto L220;
01005 }
01006
01007
01008
01009 if (n == 0) {
01010 goto L220;
01011 }
01012 ++jtype;
01013 iseed[1] = jtype;
01014 i__1 = n;
01015 for (i__ = 1; i__ <= i__1; ++i__) {
01016 io___48.ciunit = *niunit;
01017 s_rsle(&io___48);
01018 i__2 = n;
01019 for (j = 1; j <= i__2; ++j) {
01020 do_lio(&c__4, &c__1, (char *)&a[i__ + j * a_dim1], (ftnlen)sizeof(
01021 real));
01022 }
01023 e_rsle();
01024
01025 }
01026 i__1 = n;
01027 for (i__ = 1; i__ <= i__1; ++i__) {
01028 io___49.ciunit = *niunit;
01029 s_rsle(&io___49);
01030 do_lio(&c__4, &c__1, (char *)&wr1[i__], (ftnlen)sizeof(real));
01031 do_lio(&c__4, &c__1, (char *)&wi1[i__], (ftnlen)sizeof(real));
01032 do_lio(&c__4, &c__1, (char *)&rcdein[i__], (ftnlen)sizeof(real));
01033 do_lio(&c__4, &c__1, (char *)&rcdvin[i__], (ftnlen)sizeof(real));
01034 e_rsle();
01035
01036 }
01037
01038 i__2 = n;
01039 i__1 = n * 6 + (i__2 * i__2 << 1);
01040 sget23_(&c_true, "N", &c__22, thresh, &iseed[1], nounit, &n, &a[a_offset],
01041 lda, &h__[h_offset], &wr[1], &wi[1], &wr1[1], &wi1[1], &vl[
01042 vl_offset], ldvl, &vr[vr_offset], ldvr, &lre[lre_offset], ldlre, &
01043 rcondv[1], &rcndv1[1], &rcdvin[1], &rconde[1], &rcnde1[1], &
01044 rcdein[1], &scale[1], &scale1[1], &result[1], &work[1], &i__1, &
01045 iwork[1], info);
01046
01047
01048
01049 ntest = 0;
01050 nfail = 0;
01051 for (j = 1; j <= 11; ++j) {
01052 if (result[j] >= 0.f) {
01053 ++ntest;
01054 }
01055 if (result[j] >= *thresh) {
01056 ++nfail;
01057 }
01058
01059 }
01060
01061 if (nfail > 0) {
01062 ++ntestf;
01063 }
01064 if (ntestf == 1) {
01065 io___50.ciunit = *nounit;
01066 s_wsfe(&io___50);
01067 do_fio(&c__1, path, (ftnlen)3);
01068 e_wsfe();
01069 io___51.ciunit = *nounit;
01070 s_wsfe(&io___51);
01071 e_wsfe();
01072 io___52.ciunit = *nounit;
01073 s_wsfe(&io___52);
01074 e_wsfe();
01075 io___53.ciunit = *nounit;
01076 s_wsfe(&io___53);
01077 e_wsfe();
01078 io___54.ciunit = *nounit;
01079 s_wsfe(&io___54);
01080 do_fio(&c__1, (char *)&(*thresh), (ftnlen)sizeof(real));
01081 e_wsfe();
01082 ntestf = 2;
01083 }
01084
01085 for (j = 1; j <= 11; ++j) {
01086 if (result[j] >= *thresh) {
01087 io___55.ciunit = *nounit;
01088 s_wsfe(&io___55);
01089 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
01090 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
01091 do_fio(&c__1, (char *)&j, (ftnlen)sizeof(integer));
01092 do_fio(&c__1, (char *)&result[j], (ftnlen)sizeof(real));
01093 e_wsfe();
01094 }
01095
01096 }
01097
01098 nerrs += nfail;
01099 ntestt += ntest;
01100 goto L170;
01101 L220:
01102
01103
01104
01105 slasum_(path, nounit, &nerrs, &ntestt);
01106
01107
01108
01109 return 0;
01110
01111
01112
01113 }