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