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