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