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 char srnamt[32];
00020 } srnamc_;
00021
00022 #define srnamc_1 srnamc_
00023
00024
00025
00026 static integer c__2 = 2;
00027 static doublereal c_b20 = 0.;
00028 static integer c__0 = 0;
00029 static integer c__6 = 6;
00030 static doublereal c_b34 = 1.;
00031 static integer c__1 = 1;
00032 static integer c__4 = 4;
00033 static integer c__3 = 3;
00034
00035 int ddrvst_(integer *nsizes, integer *nn, integer *ntypes,
00036 logical *dotype, integer *iseed, doublereal *thresh, integer *nounit,
00037 doublereal *a, integer *lda, doublereal *d1, doublereal *d2,
00038 doublereal *d3, doublereal *d4, doublereal *eveigs, doublereal *wa1,
00039 doublereal *wa2, doublereal *wa3, doublereal *u, integer *ldu,
00040 doublereal *v, doublereal *tau, doublereal *z__, doublereal *work,
00041 integer *lwork, integer *iwork, integer *liwork, doublereal *result,
00042 integer *info)
00043 {
00044
00045
00046 static integer ktype[18] = { 1,2,4,4,4,4,4,5,5,5,5,5,8,8,8,9,9,9 };
00047 static integer kmagn[18] = { 1,1,1,1,1,2,3,1,1,1,2,3,1,2,3,1,2,3 };
00048 static integer kmode[18] = { 0,0,4,3,1,4,4,4,3,1,4,4,0,0,0,4,4,4 };
00049
00050
00051 static char fmt_9999[] = "(\002 DDRVST: \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
00055
00056 address a__1[3];
00057 integer a_dim1, a_offset, u_dim1, u_offset, v_dim1, v_offset, z_dim1,
00058 z_offset, i__1, i__2, i__3, i__4, i__5, i__6[3], i__7;
00059 doublereal d__1, d__2, d__3, d__4;
00060 char ch__1[10], ch__2[13], ch__3[11];
00061
00062
00063 double sqrt(doublereal), log(doublereal);
00064 integer pow_ii(integer *, integer *), s_wsfe(cilist *), do_fio(integer *,
00065 char *, ftnlen), e_wsfe(void);
00066 int s_copy(char *, char *, ftnlen, ftnlen), s_cat(char *,
00067 char **, integer *, integer *, ftnlen);
00068
00069
00070 integer i__, j, m, n, j1, j2, m2, m3, kd, il, iu;
00071 doublereal vl, vu;
00072 integer lgn;
00073 doublereal ulp, cond;
00074 integer jcol, ihbw, indx, nmax;
00075 doublereal unfl, ovfl;
00076 char uplo[1];
00077 integer irow;
00078 doublereal temp1, temp2, temp3;
00079 extern doublereal dsxt1_(integer *, doublereal *, integer *, doublereal *,
00080 integer *, doublereal *, doublereal *, doublereal *);
00081 integer idiag;
00082 logical badnn;
00083 integer imode, lwedc;
00084 extern int dsbev_(char *, char *, integer *, integer *,
00085 doublereal *, integer *, doublereal *, doublereal *, integer *,
00086 doublereal *, integer *);
00087 integer iinfo;
00088 doublereal aninv, anorm;
00089 integer itemp;
00090 extern int dspev_(char *, char *, integer *, doublereal *
00091 , doublereal *, doublereal *, integer *, doublereal *, integer *);
00092 integer nmats;
00093 extern int dstt21_(integer *, integer *, doublereal *,
00094 doublereal *, doublereal *, doublereal *, doublereal *, integer *,
00095 doublereal *, doublereal *);
00096 integer jsize;
00097 extern int dstev_(char *, integer *, doublereal *,
00098 doublereal *, doublereal *, integer *, doublereal *, integer *), dstt22_(integer *, integer *, integer *, doublereal *,
00099 doublereal *, doublereal *, doublereal *, doublereal *, integer *,
00100 doublereal *, integer *, doublereal *), dsyt21_(integer *, char *
00101 , integer *, integer *, doublereal *, integer *, doublereal *,
00102 doublereal *, doublereal *, integer *, doublereal *, integer *,
00103 doublereal *, doublereal *, doublereal *);
00104 integer iuplo, nerrs, itype, jtype, ntest;
00105 extern int dsyev_(char *, char *, integer *, doublereal *
00106 , integer *, doublereal *, doublereal *, integer *, integer *), dsyt22_(integer *, char *, integer *, integer *,
00107 integer *, doublereal *, integer *, doublereal *, doublereal *,
00108 doublereal *, integer *, doublereal *, integer *, doublereal *,
00109 doublereal *, doublereal *);
00110 integer iseed2[4], iseed3[4];
00111 extern int dlabad_(doublereal *, doublereal *);
00112 extern doublereal dlamch_(char *), dlarnd_(integer *, integer *);
00113 integer liwedc;
00114 extern int dsbevd_(char *, char *, integer *, integer *,
00115 doublereal *, integer *, doublereal *, doublereal *, integer *,
00116 doublereal *, integer *, integer *, integer *, integer *);
00117 integer idumma[1];
00118 extern int dlacpy_(char *, integer *, integer *,
00119 doublereal *, integer *, doublereal *, integer *);
00120 integer ioldsd[4];
00121 extern int dlafts_(char *, integer *, integer *, integer
00122 *, integer *, doublereal *, integer *, doublereal *, integer *,
00123 integer *), dlaset_(char *, integer *, integer *,
00124 doublereal *, doublereal *, doublereal *, integer *),
00125 xerbla_(char *, integer *), alasvm_(char *, integer *,
00126 integer *, integer *, integer *);
00127 doublereal abstol;
00128 extern int dlatmr_(integer *, integer *, char *, integer
00129 *, char *, doublereal *, integer *, doublereal *, doublereal *,
00130 char *, char *, doublereal *, integer *, doublereal *, doublereal
00131 *, integer *, doublereal *, char *, integer *, integer *, integer
00132 *, doublereal *, doublereal *, char *, doublereal *, integer *,
00133 integer *, integer *), dlatms_(integer *, integer *, char *, integer *, char *,
00134 doublereal *, integer *, doublereal *, doublereal *, integer *,
00135 integer *, char *, doublereal *, integer *, doublereal *, integer
00136 *), dspevd_(char *, char *, integer *,
00137 doublereal *, doublereal *, doublereal *, integer *, doublereal *,
00138 integer *, integer *, integer *, integer *),
00139 dstevd_(char *, integer *, doublereal *, doublereal *, doublereal
00140 *, integer *, doublereal *, integer *, integer *, integer *,
00141 integer *), dsbevx_(char *, char *, char *, integer *,
00142 integer *, doublereal *, integer *, doublereal *, integer *,
00143 doublereal *, doublereal *, integer *, integer *, doublereal *,
00144 integer *, doublereal *, doublereal *, integer *, doublereal *,
00145 integer *, integer *, integer *), dsyevd_(
00146 char *, char *, integer *, doublereal *, integer *, doublereal *,
00147 doublereal *, integer *, integer *, integer *, integer *), dstevr_(char *, char *, integer *, doublereal *,
00148 doublereal *, doublereal *, doublereal *, integer *, integer *,
00149 doublereal *, integer *, doublereal *, doublereal *, integer *,
00150 integer *, doublereal *, integer *, integer *, integer *, integer
00151 *), dspevx_(char *, char *, char *, integer *,
00152 doublereal *, doublereal *, doublereal *, integer *, integer *,
00153 doublereal *, integer *, doublereal *, doublereal *, integer *,
00154 doublereal *, integer *, integer *, integer *);
00155 doublereal rtunfl, rtovfl, ulpinv;
00156 extern int dstevx_(char *, char *, integer *, doublereal
00157 *, doublereal *, doublereal *, doublereal *, integer *, integer *,
00158 doublereal *, integer *, doublereal *, doublereal *, integer *,
00159 doublereal *, integer *, integer *, integer *);
00160 integer mtypes, ntestt;
00161 extern int dsyevr_(char *, char *, char *, integer *,
00162 doublereal *, integer *, doublereal *, doublereal *, integer *,
00163 integer *, doublereal *, integer *, doublereal *, doublereal *,
00164 integer *, integer *, doublereal *, integer *, integer *, integer
00165 *, integer *), dsyevx_(char *, char *,
00166 char *, integer *, doublereal *, integer *, doublereal *,
00167 doublereal *, integer *, integer *, doublereal *, integer *,
00168 doublereal *, doublereal *, integer *, doublereal *, integer *,
00169 integer *, integer *, integer *);
00170
00171
00172 static cilist io___43 = { 0, 0, 0, fmt_9999, 0 };
00173 static cilist io___48 = { 0, 0, 0, fmt_9999, 0 };
00174 static cilist io___49 = { 0, 0, 0, fmt_9999, 0 };
00175 static cilist io___53 = { 0, 0, 0, fmt_9999, 0 };
00176 static cilist io___56 = { 0, 0, 0, fmt_9999, 0 };
00177 static cilist io___57 = { 0, 0, 0, fmt_9999, 0 };
00178 static cilist io___58 = { 0, 0, 0, fmt_9999, 0 };
00179 static cilist io___59 = { 0, 0, 0, fmt_9999, 0 };
00180 static cilist io___61 = { 0, 0, 0, fmt_9999, 0 };
00181 static cilist io___62 = { 0, 0, 0, fmt_9999, 0 };
00182 static cilist io___63 = { 0, 0, 0, fmt_9999, 0 };
00183 static cilist io___64 = { 0, 0, 0, fmt_9999, 0 };
00184 static cilist io___65 = { 0, 0, 0, fmt_9999, 0 };
00185 static cilist io___66 = { 0, 0, 0, fmt_9999, 0 };
00186 static cilist io___67 = { 0, 0, 0, fmt_9999, 0 };
00187 static cilist io___68 = { 0, 0, 0, fmt_9999, 0 };
00188 static cilist io___69 = { 0, 0, 0, fmt_9999, 0 };
00189 static cilist io___72 = { 0, 0, 0, fmt_9999, 0 };
00190 static cilist io___73 = { 0, 0, 0, fmt_9999, 0 };
00191 static cilist io___74 = { 0, 0, 0, fmt_9999, 0 };
00192 static cilist io___75 = { 0, 0, 0, fmt_9999, 0 };
00193 static cilist io___76 = { 0, 0, 0, fmt_9999, 0 };
00194 static cilist io___77 = { 0, 0, 0, fmt_9999, 0 };
00195 static cilist io___78 = { 0, 0, 0, fmt_9999, 0 };
00196 static cilist io___79 = { 0, 0, 0, fmt_9999, 0 };
00197 static cilist io___81 = { 0, 0, 0, fmt_9999, 0 };
00198 static cilist io___82 = { 0, 0, 0, fmt_9999, 0 };
00199 static cilist io___83 = { 0, 0, 0, fmt_9999, 0 };
00200 static cilist io___84 = { 0, 0, 0, fmt_9999, 0 };
00201 static cilist io___85 = { 0, 0, 0, fmt_9999, 0 };
00202 static cilist io___86 = { 0, 0, 0, fmt_9999, 0 };
00203 static cilist io___87 = { 0, 0, 0, fmt_9999, 0 };
00204 static cilist io___88 = { 0, 0, 0, fmt_9999, 0 };
00205 static cilist io___90 = { 0, 0, 0, fmt_9999, 0 };
00206 static cilist io___91 = { 0, 0, 0, fmt_9999, 0 };
00207 static cilist io___92 = { 0, 0, 0, fmt_9999, 0 };
00208 static cilist io___93 = { 0, 0, 0, fmt_9999, 0 };
00209 static cilist io___94 = { 0, 0, 0, fmt_9999, 0 };
00210 static cilist io___95 = { 0, 0, 0, fmt_9999, 0 };
00211 static cilist io___96 = { 0, 0, 0, fmt_9999, 0 };
00212 static cilist io___97 = { 0, 0, 0, fmt_9999, 0 };
00213 static cilist io___98 = { 0, 0, 0, fmt_9999, 0 };
00214 static cilist io___99 = { 0, 0, 0, fmt_9999, 0 };
00215 static cilist io___100 = { 0, 0, 0, fmt_9999, 0 };
00216 static cilist io___101 = { 0, 0, 0, fmt_9999, 0 };
00217 static cilist io___102 = { 0, 0, 0, fmt_9999, 0 };
00218 static cilist io___103 = { 0, 0, 0, fmt_9999, 0 };
00219 static cilist io___104 = { 0, 0, 0, fmt_9999, 0 };
00220 static cilist io___105 = { 0, 0, 0, fmt_9999, 0 };
00221 static cilist io___106 = { 0, 0, 0, fmt_9999, 0 };
00222 static cilist io___107 = { 0, 0, 0, fmt_9999, 0 };
00223 static cilist io___108 = { 0, 0, 0, fmt_9999, 0 };
00224 static cilist io___109 = { 0, 0, 0, fmt_9999, 0 };
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
00561
00562
00563
00564
00565
00566
00567
00568
00569
00570
00571
00572
00573
00574
00575
00576
00577
00578
00579
00580
00581
00582
00583
00584
00585
00586
00587
00588
00589
00590
00591
00592
00593
00594
00595
00596
00597
00598
00599
00600
00601
00602
00603
00604
00605
00606
00607
00608
00609
00610
00611
00612
00613
00614
00615
00616
00617
00618
00619
00620
00621
00622
00623
00624
00625
00626
00627
00628
00629
00630
00631
00632
00633
00634
00635
00636
00637
00638
00639
00640
00641
00642
00643
00644
00645
00646
00647
00648
00649
00650
00651
00652
00653
00654
00655
00656
00657
00658
00659
00660 --nn;
00661 --dotype;
00662 --iseed;
00663 a_dim1 = *lda;
00664 a_offset = 1 + a_dim1;
00665 a -= a_offset;
00666 --d1;
00667 --d2;
00668 --d3;
00669 --d4;
00670 --eveigs;
00671 --wa1;
00672 --wa2;
00673 --wa3;
00674 z_dim1 = *ldu;
00675 z_offset = 1 + z_dim1;
00676 z__ -= z_offset;
00677 v_dim1 = *ldu;
00678 v_offset = 1 + v_dim1;
00679 v -= v_offset;
00680 u_dim1 = *ldu;
00681 u_offset = 1 + u_dim1;
00682 u -= u_offset;
00683 --tau;
00684 --work;
00685 --iwork;
00686 --result;
00687
00688
00689
00690
00691
00692
00693
00694 vl = 0.;
00695 vu = 0.;
00696
00697
00698
00699 ntestt = 0;
00700 *info = 0;
00701
00702 badnn = FALSE_;
00703 nmax = 1;
00704 i__1 = *nsizes;
00705 for (j = 1; j <= i__1; ++j) {
00706
00707 i__2 = nmax, i__3 = nn[j];
00708 nmax = max(i__2,i__3);
00709 if (nn[j] < 0) {
00710 badnn = TRUE_;
00711 }
00712
00713 }
00714
00715
00716
00717 if (*nsizes < 0) {
00718 *info = -1;
00719 } else if (badnn) {
00720 *info = -2;
00721 } else if (*ntypes < 0) {
00722 *info = -3;
00723 } else if (*lda < nmax) {
00724 *info = -9;
00725 } else if (*ldu < nmax) {
00726 *info = -16;
00727 } else {
00728
00729 i__1 = max(2,nmax);
00730 if (i__1 * i__1 << 1 > *lwork) {
00731 *info = -21;
00732 }
00733 }
00734
00735 if (*info != 0) {
00736 i__1 = -(*info);
00737 xerbla_("DDRVST", &i__1);
00738 return 0;
00739 }
00740
00741
00742
00743 if (*nsizes == 0 || *ntypes == 0) {
00744 return 0;
00745 }
00746
00747
00748
00749 unfl = dlamch_("Safe minimum");
00750 ovfl = dlamch_("Overflow");
00751 dlabad_(&unfl, &ovfl);
00752 ulp = dlamch_("Epsilon") * dlamch_("Base");
00753 ulpinv = 1. / ulp;
00754 rtunfl = sqrt(unfl);
00755 rtovfl = sqrt(ovfl);
00756
00757
00758
00759 for (i__ = 1; i__ <= 4; ++i__) {
00760 iseed2[i__ - 1] = iseed[i__];
00761 iseed3[i__ - 1] = iseed[i__];
00762
00763 }
00764
00765 nerrs = 0;
00766 nmats = 0;
00767
00768
00769 i__1 = *nsizes;
00770 for (jsize = 1; jsize <= i__1; ++jsize) {
00771 n = nn[jsize];
00772 if (n > 0) {
00773 lgn = (integer) (log((doublereal) n) / log(2.));
00774 if (pow_ii(&c__2, &lgn) < n) {
00775 ++lgn;
00776 }
00777 if (pow_ii(&c__2, &lgn) < n) {
00778 ++lgn;
00779 }
00780
00781 i__2 = n;
00782 lwedc = (n << 2) + 1 + (n << 1) * lgn + (i__2 * i__2 << 2);
00783
00784 liwedc = n * 5 + 3;
00785 } else {
00786 lwedc = 9;
00787
00788 liwedc = 8;
00789 }
00790 aninv = 1. / (doublereal) max(1,n);
00791
00792 if (*nsizes != 1) {
00793 mtypes = min(18,*ntypes);
00794 } else {
00795 mtypes = min(19,*ntypes);
00796 }
00797
00798 i__2 = mtypes;
00799 for (jtype = 1; jtype <= i__2; ++jtype) {
00800
00801 if (! dotype[jtype]) {
00802 goto L1730;
00803 }
00804 ++nmats;
00805 ntest = 0;
00806
00807 for (j = 1; j <= 4; ++j) {
00808 ioldsd[j - 1] = iseed[j];
00809
00810 }
00811
00812
00813
00814
00815
00816
00817
00818
00819
00820
00821
00822
00823
00824
00825
00826
00827 if (mtypes > 18) {
00828 goto L110;
00829 }
00830
00831 itype = ktype[jtype - 1];
00832 imode = kmode[jtype - 1];
00833
00834
00835
00836 switch (kmagn[jtype - 1]) {
00837 case 1: goto L40;
00838 case 2: goto L50;
00839 case 3: goto L60;
00840 }
00841
00842 L40:
00843 anorm = 1.;
00844 goto L70;
00845
00846 L50:
00847 anorm = rtovfl * ulp * aninv;
00848 goto L70;
00849
00850 L60:
00851 anorm = rtunfl * n * ulpinv;
00852 goto L70;
00853
00854 L70:
00855
00856 dlaset_("Full", lda, &n, &c_b20, &c_b20, &a[a_offset], lda);
00857 iinfo = 0;
00858 cond = ulpinv;
00859
00860
00861
00862
00863
00864 if (itype == 1) {
00865 iinfo = 0;
00866
00867 } else if (itype == 2) {
00868
00869
00870
00871 i__3 = n;
00872 for (jcol = 1; jcol <= i__3; ++jcol) {
00873 a[jcol + jcol * a_dim1] = anorm;
00874
00875 }
00876
00877 } else if (itype == 4) {
00878
00879
00880
00881 dlatms_(&n, &n, "S", &iseed[1], "S", &work[1], &imode, &cond,
00882 &anorm, &c__0, &c__0, "N", &a[a_offset], lda, &work[n
00883 + 1], &iinfo);
00884
00885 } else if (itype == 5) {
00886
00887
00888
00889 dlatms_(&n, &n, "S", &iseed[1], "S", &work[1], &imode, &cond,
00890 &anorm, &n, &n, "N", &a[a_offset], lda, &work[n + 1],
00891 &iinfo);
00892
00893 } else if (itype == 7) {
00894
00895
00896
00897 idumma[0] = 1;
00898 dlatmr_(&n, &n, "S", &iseed[1], "S", &work[1], &c__6, &c_b34,
00899 &c_b34, "T", "N", &work[n + 1], &c__1, &c_b34, &work[(
00900 n << 1) + 1], &c__1, &c_b34, "N", idumma, &c__0, &
00901 c__0, &c_b20, &anorm, "NO", &a[a_offset], lda, &iwork[
00902 1], &iinfo);
00903
00904 } else if (itype == 8) {
00905
00906
00907
00908 idumma[0] = 1;
00909 dlatmr_(&n, &n, "S", &iseed[1], "S", &work[1], &c__6, &c_b34,
00910 &c_b34, "T", "N", &work[n + 1], &c__1, &c_b34, &work[(
00911 n << 1) + 1], &c__1, &c_b34, "N", idumma, &n, &n, &
00912 c_b20, &anorm, "NO", &a[a_offset], lda, &iwork[1], &
00913 iinfo);
00914
00915 } else if (itype == 9) {
00916
00917
00918
00919 ihbw = (integer) ((n - 1) * dlarnd_(&c__1, iseed3));
00920 dlatms_(&n, &n, "S", &iseed[1], "S", &work[1], &imode, &cond,
00921 &anorm, &ihbw, &ihbw, "Z", &u[u_offset], ldu, &work[n
00922 + 1], &iinfo);
00923
00924
00925
00926 dlaset_("Full", lda, &n, &c_b20, &c_b20, &a[a_offset], lda);
00927 i__3 = ihbw;
00928 for (idiag = -ihbw; idiag <= i__3; ++idiag) {
00929 irow = ihbw - idiag + 1;
00930
00931 i__4 = 1, i__5 = idiag + 1;
00932 j1 = max(i__4,i__5);
00933
00934 i__4 = n, i__5 = n + idiag;
00935 j2 = min(i__4,i__5);
00936 i__4 = j2;
00937 for (j = j1; j <= i__4; ++j) {
00938 i__ = j - idiag;
00939 a[i__ + j * a_dim1] = u[irow + j * u_dim1];
00940
00941 }
00942
00943 }
00944 } else {
00945 iinfo = 1;
00946 }
00947
00948 if (iinfo != 0) {
00949 io___43.ciunit = *nounit;
00950 s_wsfe(&io___43);
00951 do_fio(&c__1, "Generator", (ftnlen)9);
00952 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
00953 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
00954 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
00955 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer));
00956 e_wsfe();
00957 *info = abs(iinfo);
00958 return 0;
00959 }
00960
00961 L110:
00962
00963 abstol = unfl + unfl;
00964 if (n <= 1) {
00965 il = 1;
00966 iu = n;
00967 } else {
00968 il = (n - 1) * (integer) dlarnd_(&c__1, iseed2) + 1;
00969 iu = (n - 1) * (integer) dlarnd_(&c__1, iseed2) + 1;
00970 if (il > iu) {
00971 itemp = il;
00972 il = iu;
00973 iu = itemp;
00974 }
00975 }
00976
00977
00978
00979 if (jtype <= 7) {
00980 ntest = 1;
00981 i__3 = n;
00982 for (i__ = 1; i__ <= i__3; ++i__) {
00983 d1[i__] = a[i__ + i__ * a_dim1];
00984
00985 }
00986 i__3 = n - 1;
00987 for (i__ = 1; i__ <= i__3; ++i__) {
00988 d2[i__] = a[i__ + 1 + i__ * a_dim1];
00989
00990 }
00991 s_copy(srnamc_1.srnamt, "DSTEV", (ftnlen)32, (ftnlen)5);
00992 dstev_("V", &n, &d1[1], &d2[1], &z__[z_offset], ldu, &work[1],
00993 &iinfo);
00994 if (iinfo != 0) {
00995 io___48.ciunit = *nounit;
00996 s_wsfe(&io___48);
00997 do_fio(&c__1, "DSTEV(V)", (ftnlen)8);
00998 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
00999 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
01000 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
01001 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
01002 ;
01003 e_wsfe();
01004 *info = abs(iinfo);
01005 if (iinfo < 0) {
01006 return 0;
01007 } else {
01008 result[1] = ulpinv;
01009 result[2] = ulpinv;
01010 result[3] = ulpinv;
01011 goto L180;
01012 }
01013 }
01014
01015
01016
01017 i__3 = n;
01018 for (i__ = 1; i__ <= i__3; ++i__) {
01019 d3[i__] = a[i__ + i__ * a_dim1];
01020
01021 }
01022 i__3 = n - 1;
01023 for (i__ = 1; i__ <= i__3; ++i__) {
01024 d4[i__] = a[i__ + 1 + i__ * a_dim1];
01025
01026 }
01027 dstt21_(&n, &c__0, &d3[1], &d4[1], &d1[1], &d2[1], &z__[
01028 z_offset], ldu, &work[1], &result[1]);
01029
01030 ntest = 3;
01031 i__3 = n - 1;
01032 for (i__ = 1; i__ <= i__3; ++i__) {
01033 d4[i__] = a[i__ + 1 + i__ * a_dim1];
01034
01035 }
01036 s_copy(srnamc_1.srnamt, "DSTEV", (ftnlen)32, (ftnlen)5);
01037 dstev_("N", &n, &d3[1], &d4[1], &z__[z_offset], ldu, &work[1],
01038 &iinfo);
01039 if (iinfo != 0) {
01040 io___49.ciunit = *nounit;
01041 s_wsfe(&io___49);
01042 do_fio(&c__1, "DSTEV(N)", (ftnlen)8);
01043 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
01044 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
01045 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
01046 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
01047 ;
01048 e_wsfe();
01049 *info = abs(iinfo);
01050 if (iinfo < 0) {
01051 return 0;
01052 } else {
01053 result[3] = ulpinv;
01054 goto L180;
01055 }
01056 }
01057
01058
01059
01060 temp1 = 0.;
01061 temp2 = 0.;
01062 i__3 = n;
01063 for (j = 1; j <= i__3; ++j) {
01064
01065 d__3 = temp1, d__4 = (d__1 = d1[j], abs(d__1)), d__3 =
01066 max(d__3,d__4), d__4 = (d__2 = d3[j], abs(d__2));
01067 temp1 = max(d__3,d__4);
01068
01069 d__2 = temp2, d__3 = (d__1 = d1[j] - d3[j], abs(d__1));
01070 temp2 = max(d__2,d__3);
01071
01072 }
01073
01074 d__1 = unfl, d__2 = ulp * max(temp1,temp2);
01075 result[3] = temp2 / max(d__1,d__2);
01076
01077 L180:
01078
01079 ntest = 4;
01080 i__3 = n;
01081 for (i__ = 1; i__ <= i__3; ++i__) {
01082 eveigs[i__] = d3[i__];
01083 d1[i__] = a[i__ + i__ * a_dim1];
01084
01085 }
01086 i__3 = n - 1;
01087 for (i__ = 1; i__ <= i__3; ++i__) {
01088 d2[i__] = a[i__ + 1 + i__ * a_dim1];
01089
01090 }
01091 s_copy(srnamc_1.srnamt, "DSTEVX", (ftnlen)32, (ftnlen)6);
01092 dstevx_("V", "A", &n, &d1[1], &d2[1], &vl, &vu, &il, &iu, &
01093 abstol, &m, &wa1[1], &z__[z_offset], ldu, &work[1], &
01094 iwork[1], &iwork[n * 5 + 1], &iinfo);
01095 if (iinfo != 0) {
01096 io___53.ciunit = *nounit;
01097 s_wsfe(&io___53);
01098 do_fio(&c__1, "DSTEVX(V,A)", (ftnlen)11);
01099 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
01100 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
01101 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
01102 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
01103 ;
01104 e_wsfe();
01105 *info = abs(iinfo);
01106 if (iinfo < 0) {
01107 return 0;
01108 } else {
01109 result[4] = ulpinv;
01110 result[5] = ulpinv;
01111 result[6] = ulpinv;
01112 goto L250;
01113 }
01114 }
01115 if (n > 0) {
01116
01117 d__2 = abs(wa1[1]), d__3 = (d__1 = wa1[n], abs(d__1));
01118 temp3 = max(d__2,d__3);
01119 } else {
01120 temp3 = 0.;
01121 }
01122
01123
01124
01125 i__3 = n;
01126 for (i__ = 1; i__ <= i__3; ++i__) {
01127 d3[i__] = a[i__ + i__ * a_dim1];
01128
01129 }
01130 i__3 = n - 1;
01131 for (i__ = 1; i__ <= i__3; ++i__) {
01132 d4[i__] = a[i__ + 1 + i__ * a_dim1];
01133
01134 }
01135 dstt21_(&n, &c__0, &d3[1], &d4[1], &wa1[1], &d2[1], &z__[
01136 z_offset], ldu, &work[1], &result[4]);
01137
01138 ntest = 6;
01139 i__3 = n - 1;
01140 for (i__ = 1; i__ <= i__3; ++i__) {
01141 d4[i__] = a[i__ + 1 + i__ * a_dim1];
01142
01143 }
01144 s_copy(srnamc_1.srnamt, "DSTEVX", (ftnlen)32, (ftnlen)6);
01145 dstevx_("N", "A", &n, &d3[1], &d4[1], &vl, &vu, &il, &iu, &
01146 abstol, &m2, &wa2[1], &z__[z_offset], ldu, &work[1], &
01147 iwork[1], &iwork[n * 5 + 1], &iinfo);
01148 if (iinfo != 0) {
01149 io___56.ciunit = *nounit;
01150 s_wsfe(&io___56);
01151 do_fio(&c__1, "DSTEVX(N,A)", (ftnlen)11);
01152 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
01153 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
01154 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
01155 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
01156 ;
01157 e_wsfe();
01158 *info = abs(iinfo);
01159 if (iinfo < 0) {
01160 return 0;
01161 } else {
01162 result[6] = ulpinv;
01163 goto L250;
01164 }
01165 }
01166
01167
01168
01169 temp1 = 0.;
01170 temp2 = 0.;
01171 i__3 = n;
01172 for (j = 1; j <= i__3; ++j) {
01173
01174 d__3 = temp1, d__4 = (d__1 = wa2[j], abs(d__1)), d__3 =
01175 max(d__3,d__4), d__4 = (d__2 = eveigs[j], abs(
01176 d__2));
01177 temp1 = max(d__3,d__4);
01178
01179 d__2 = temp2, d__3 = (d__1 = wa2[j] - eveigs[j], abs(d__1)
01180 );
01181 temp2 = max(d__2,d__3);
01182
01183 }
01184
01185 d__1 = unfl, d__2 = ulp * max(temp1,temp2);
01186 result[6] = temp2 / max(d__1,d__2);
01187
01188 L250:
01189
01190 ntest = 7;
01191 i__3 = n;
01192 for (i__ = 1; i__ <= i__3; ++i__) {
01193 d1[i__] = a[i__ + i__ * a_dim1];
01194
01195 }
01196 i__3 = n - 1;
01197 for (i__ = 1; i__ <= i__3; ++i__) {
01198 d2[i__] = a[i__ + 1 + i__ * a_dim1];
01199
01200 }
01201 s_copy(srnamc_1.srnamt, "DSTEVR", (ftnlen)32, (ftnlen)6);
01202 i__3 = *liwork - (n << 1);
01203 dstevr_("V", "A", &n, &d1[1], &d2[1], &vl, &vu, &il, &iu, &
01204 abstol, &m, &wa1[1], &z__[z_offset], ldu, &iwork[1], &
01205 work[1], lwork, &iwork[(n << 1) + 1], &i__3, &iinfo);
01206 if (iinfo != 0) {
01207 io___57.ciunit = *nounit;
01208 s_wsfe(&io___57);
01209 do_fio(&c__1, "DSTEVR(V,A)", (ftnlen)11);
01210 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
01211 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
01212 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
01213 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
01214 ;
01215 e_wsfe();
01216 *info = abs(iinfo);
01217 if (iinfo < 0) {
01218 return 0;
01219 } else {
01220 result[7] = ulpinv;
01221 result[8] = ulpinv;
01222 goto L320;
01223 }
01224 }
01225 if (n > 0) {
01226
01227 d__2 = abs(wa1[1]), d__3 = (d__1 = wa1[n], abs(d__1));
01228 temp3 = max(d__2,d__3);
01229 } else {
01230 temp3 = 0.;
01231 }
01232
01233
01234
01235 i__3 = n;
01236 for (i__ = 1; i__ <= i__3; ++i__) {
01237 d3[i__] = a[i__ + i__ * a_dim1];
01238
01239 }
01240 i__3 = n - 1;
01241 for (i__ = 1; i__ <= i__3; ++i__) {
01242 d4[i__] = a[i__ + 1 + i__ * a_dim1];
01243
01244 }
01245 dstt21_(&n, &c__0, &d3[1], &d4[1], &wa1[1], &d2[1], &z__[
01246 z_offset], ldu, &work[1], &result[7]);
01247
01248 ntest = 9;
01249 i__3 = n - 1;
01250 for (i__ = 1; i__ <= i__3; ++i__) {
01251 d4[i__] = a[i__ + 1 + i__ * a_dim1];
01252
01253 }
01254 s_copy(srnamc_1.srnamt, "DSTEVR", (ftnlen)32, (ftnlen)6);
01255 i__3 = *liwork - (n << 1);
01256 dstevr_("N", "A", &n, &d3[1], &d4[1], &vl, &vu, &il, &iu, &
01257 abstol, &m2, &wa2[1], &z__[z_offset], ldu, &iwork[1],
01258 &work[1], lwork, &iwork[(n << 1) + 1], &i__3, &iinfo);
01259 if (iinfo != 0) {
01260 io___58.ciunit = *nounit;
01261 s_wsfe(&io___58);
01262 do_fio(&c__1, "DSTEVR(N,A)", (ftnlen)11);
01263 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
01264 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
01265 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
01266 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
01267 ;
01268 e_wsfe();
01269 *info = abs(iinfo);
01270 if (iinfo < 0) {
01271 return 0;
01272 } else {
01273 result[9] = ulpinv;
01274 goto L320;
01275 }
01276 }
01277
01278
01279
01280 temp1 = 0.;
01281 temp2 = 0.;
01282 i__3 = n;
01283 for (j = 1; j <= i__3; ++j) {
01284
01285 d__3 = temp1, d__4 = (d__1 = wa2[j], abs(d__1)), d__3 =
01286 max(d__3,d__4), d__4 = (d__2 = eveigs[j], abs(
01287 d__2));
01288 temp1 = max(d__3,d__4);
01289
01290 d__2 = temp2, d__3 = (d__1 = wa2[j] - eveigs[j], abs(d__1)
01291 );
01292 temp2 = max(d__2,d__3);
01293
01294 }
01295
01296 d__1 = unfl, d__2 = ulp * max(temp1,temp2);
01297 result[9] = temp2 / max(d__1,d__2);
01298
01299 L320:
01300
01301
01302 ntest = 10;
01303 i__3 = n;
01304 for (i__ = 1; i__ <= i__3; ++i__) {
01305 d1[i__] = a[i__ + i__ * a_dim1];
01306
01307 }
01308 i__3 = n - 1;
01309 for (i__ = 1; i__ <= i__3; ++i__) {
01310 d2[i__] = a[i__ + 1 + i__ * a_dim1];
01311
01312 }
01313 s_copy(srnamc_1.srnamt, "DSTEVX", (ftnlen)32, (ftnlen)6);
01314 dstevx_("V", "I", &n, &d1[1], &d2[1], &vl, &vu, &il, &iu, &
01315 abstol, &m2, &wa2[1], &z__[z_offset], ldu, &work[1], &
01316 iwork[1], &iwork[n * 5 + 1], &iinfo);
01317 if (iinfo != 0) {
01318 io___59.ciunit = *nounit;
01319 s_wsfe(&io___59);
01320 do_fio(&c__1, "DSTEVX(V,I)", (ftnlen)11);
01321 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
01322 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
01323 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
01324 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
01325 ;
01326 e_wsfe();
01327 *info = abs(iinfo);
01328 if (iinfo < 0) {
01329 return 0;
01330 } else {
01331 result[10] = ulpinv;
01332 result[11] = ulpinv;
01333 result[12] = ulpinv;
01334 goto L380;
01335 }
01336 }
01337
01338
01339
01340 i__3 = n;
01341 for (i__ = 1; i__ <= i__3; ++i__) {
01342 d3[i__] = a[i__ + i__ * a_dim1];
01343
01344 }
01345 i__3 = n - 1;
01346 for (i__ = 1; i__ <= i__3; ++i__) {
01347 d4[i__] = a[i__ + 1 + i__ * a_dim1];
01348
01349 }
01350 i__3 = max(1,m2);
01351 dstt22_(&n, &m2, &c__0, &d3[1], &d4[1], &wa2[1], &d2[1], &z__[
01352 z_offset], ldu, &work[1], &i__3, &result[10]);
01353
01354
01355 ntest = 12;
01356 i__3 = n - 1;
01357 for (i__ = 1; i__ <= i__3; ++i__) {
01358 d4[i__] = a[i__ + 1 + i__ * a_dim1];
01359
01360 }
01361 s_copy(srnamc_1.srnamt, "DSTEVX", (ftnlen)32, (ftnlen)6);
01362 dstevx_("N", "I", &n, &d3[1], &d4[1], &vl, &vu, &il, &iu, &
01363 abstol, &m3, &wa3[1], &z__[z_offset], ldu, &work[1], &
01364 iwork[1], &iwork[n * 5 + 1], &iinfo);
01365 if (iinfo != 0) {
01366 io___61.ciunit = *nounit;
01367 s_wsfe(&io___61);
01368 do_fio(&c__1, "DSTEVX(N,I)", (ftnlen)11);
01369 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
01370 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
01371 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
01372 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
01373 ;
01374 e_wsfe();
01375 *info = abs(iinfo);
01376 if (iinfo < 0) {
01377 return 0;
01378 } else {
01379 result[12] = ulpinv;
01380 goto L380;
01381 }
01382 }
01383
01384
01385
01386 temp1 = dsxt1_(&c__1, &wa2[1], &m2, &wa3[1], &m3, &abstol, &
01387 ulp, &unfl);
01388 temp2 = dsxt1_(&c__1, &wa3[1], &m3, &wa2[1], &m2, &abstol, &
01389 ulp, &unfl);
01390
01391 d__1 = unfl, d__2 = ulp * temp3;
01392 result[12] = (temp1 + temp2) / max(d__1,d__2);
01393
01394 L380:
01395
01396 ntest = 12;
01397 if (n > 0) {
01398 if (il != 1) {
01399
01400 d__1 = (wa1[il] - wa1[il - 1]) * .5, d__2 = ulp * 10.
01401 * temp3, d__1 = max(d__1,d__2), d__2 = rtunfl
01402 * 10.;
01403 vl = wa1[il] - max(d__1,d__2);
01404 } else {
01405
01406 d__1 = (wa1[n] - wa1[1]) * .5, d__2 = ulp * 10. *
01407 temp3, d__1 = max(d__1,d__2), d__2 = rtunfl *
01408 10.;
01409 vl = wa1[1] - max(d__1,d__2);
01410 }
01411 if (iu != n) {
01412
01413 d__1 = (wa1[iu + 1] - wa1[iu]) * .5, d__2 = ulp * 10.
01414 * temp3, d__1 = max(d__1,d__2), d__2 = rtunfl
01415 * 10.;
01416 vu = wa1[iu] + max(d__1,d__2);
01417 } else {
01418
01419 d__1 = (wa1[n] - wa1[1]) * .5, d__2 = ulp * 10. *
01420 temp3, d__1 = max(d__1,d__2), d__2 = rtunfl *
01421 10.;
01422 vu = wa1[n] + max(d__1,d__2);
01423 }
01424 } else {
01425 vl = 0.;
01426 vu = 1.;
01427 }
01428
01429 i__3 = n;
01430 for (i__ = 1; i__ <= i__3; ++i__) {
01431 d1[i__] = a[i__ + i__ * a_dim1];
01432
01433 }
01434 i__3 = n - 1;
01435 for (i__ = 1; i__ <= i__3; ++i__) {
01436 d2[i__] = a[i__ + 1 + i__ * a_dim1];
01437
01438 }
01439 s_copy(srnamc_1.srnamt, "DSTEVX", (ftnlen)32, (ftnlen)6);
01440 dstevx_("V", "V", &n, &d1[1], &d2[1], &vl, &vu, &il, &iu, &
01441 abstol, &m2, &wa2[1], &z__[z_offset], ldu, &work[1], &
01442 iwork[1], &iwork[n * 5 + 1], &iinfo);
01443 if (iinfo != 0) {
01444 io___62.ciunit = *nounit;
01445 s_wsfe(&io___62);
01446 do_fio(&c__1, "DSTEVX(V,V)", (ftnlen)11);
01447 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
01448 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
01449 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
01450 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
01451 ;
01452 e_wsfe();
01453 *info = abs(iinfo);
01454 if (iinfo < 0) {
01455 return 0;
01456 } else {
01457 result[13] = ulpinv;
01458 result[14] = ulpinv;
01459 result[15] = ulpinv;
01460 goto L440;
01461 }
01462 }
01463
01464 if (m2 == 0 && n > 0) {
01465 result[13] = ulpinv;
01466 result[14] = ulpinv;
01467 result[15] = ulpinv;
01468 goto L440;
01469 }
01470
01471
01472
01473 i__3 = n;
01474 for (i__ = 1; i__ <= i__3; ++i__) {
01475 d3[i__] = a[i__ + i__ * a_dim1];
01476
01477 }
01478 i__3 = n - 1;
01479 for (i__ = 1; i__ <= i__3; ++i__) {
01480 d4[i__] = a[i__ + 1 + i__ * a_dim1];
01481
01482 }
01483 i__3 = max(1,m2);
01484 dstt22_(&n, &m2, &c__0, &d3[1], &d4[1], &wa2[1], &d2[1], &z__[
01485 z_offset], ldu, &work[1], &i__3, &result[13]);
01486
01487 ntest = 15;
01488 i__3 = n - 1;
01489 for (i__ = 1; i__ <= i__3; ++i__) {
01490 d4[i__] = a[i__ + 1 + i__ * a_dim1];
01491
01492 }
01493 s_copy(srnamc_1.srnamt, "DSTEVX", (ftnlen)32, (ftnlen)6);
01494 dstevx_("N", "V", &n, &d3[1], &d4[1], &vl, &vu, &il, &iu, &
01495 abstol, &m3, &wa3[1], &z__[z_offset], ldu, &work[1], &
01496 iwork[1], &iwork[n * 5 + 1], &iinfo);
01497 if (iinfo != 0) {
01498 io___63.ciunit = *nounit;
01499 s_wsfe(&io___63);
01500 do_fio(&c__1, "DSTEVX(N,V)", (ftnlen)11);
01501 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
01502 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
01503 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
01504 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
01505 ;
01506 e_wsfe();
01507 *info = abs(iinfo);
01508 if (iinfo < 0) {
01509 return 0;
01510 } else {
01511 result[15] = ulpinv;
01512 goto L440;
01513 }
01514 }
01515
01516
01517
01518 temp1 = dsxt1_(&c__1, &wa2[1], &m2, &wa3[1], &m3, &abstol, &
01519 ulp, &unfl);
01520 temp2 = dsxt1_(&c__1, &wa3[1], &m3, &wa2[1], &m2, &abstol, &
01521 ulp, &unfl);
01522
01523 d__1 = unfl, d__2 = temp3 * ulp;
01524 result[15] = (temp1 + temp2) / max(d__1,d__2);
01525
01526 L440:
01527
01528 ntest = 16;
01529 i__3 = n;
01530 for (i__ = 1; i__ <= i__3; ++i__) {
01531 d1[i__] = a[i__ + i__ * a_dim1];
01532
01533 }
01534 i__3 = n - 1;
01535 for (i__ = 1; i__ <= i__3; ++i__) {
01536 d2[i__] = a[i__ + 1 + i__ * a_dim1];
01537
01538 }
01539 s_copy(srnamc_1.srnamt, "DSTEVD", (ftnlen)32, (ftnlen)6);
01540 dstevd_("V", &n, &d1[1], &d2[1], &z__[z_offset], ldu, &work[1]
01541 , &lwedc, &iwork[1], &liwedc, &iinfo);
01542 if (iinfo != 0) {
01543 io___64.ciunit = *nounit;
01544 s_wsfe(&io___64);
01545 do_fio(&c__1, "DSTEVD(V)", (ftnlen)9);
01546 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
01547 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
01548 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
01549 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
01550 ;
01551 e_wsfe();
01552 *info = abs(iinfo);
01553 if (iinfo < 0) {
01554 return 0;
01555 } else {
01556 result[16] = ulpinv;
01557 result[17] = ulpinv;
01558 result[18] = ulpinv;
01559 goto L510;
01560 }
01561 }
01562
01563
01564
01565 i__3 = n;
01566 for (i__ = 1; i__ <= i__3; ++i__) {
01567 d3[i__] = a[i__ + i__ * a_dim1];
01568
01569 }
01570 i__3 = n - 1;
01571 for (i__ = 1; i__ <= i__3; ++i__) {
01572 d4[i__] = a[i__ + 1 + i__ * a_dim1];
01573
01574 }
01575 dstt21_(&n, &c__0, &d3[1], &d4[1], &d1[1], &d2[1], &z__[
01576 z_offset], ldu, &work[1], &result[16]);
01577
01578 ntest = 18;
01579 i__3 = n - 1;
01580 for (i__ = 1; i__ <= i__3; ++i__) {
01581 d4[i__] = a[i__ + 1 + i__ * a_dim1];
01582
01583 }
01584 s_copy(srnamc_1.srnamt, "DSTEVD", (ftnlen)32, (ftnlen)6);
01585 dstevd_("N", &n, &d3[1], &d4[1], &z__[z_offset], ldu, &work[1]
01586 , &lwedc, &iwork[1], &liwedc, &iinfo);
01587 if (iinfo != 0) {
01588 io___65.ciunit = *nounit;
01589 s_wsfe(&io___65);
01590 do_fio(&c__1, "DSTEVD(N)", (ftnlen)9);
01591 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
01592 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
01593 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
01594 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
01595 ;
01596 e_wsfe();
01597 *info = abs(iinfo);
01598 if (iinfo < 0) {
01599 return 0;
01600 } else {
01601 result[18] = ulpinv;
01602 goto L510;
01603 }
01604 }
01605
01606
01607
01608 temp1 = 0.;
01609 temp2 = 0.;
01610 i__3 = n;
01611 for (j = 1; j <= i__3; ++j) {
01612
01613 d__3 = temp1, d__4 = (d__1 = eveigs[j], abs(d__1)), d__3 =
01614 max(d__3,d__4), d__4 = (d__2 = d3[j], abs(d__2));
01615 temp1 = max(d__3,d__4);
01616
01617 d__2 = temp2, d__3 = (d__1 = eveigs[j] - d3[j], abs(d__1))
01618 ;
01619 temp2 = max(d__2,d__3);
01620
01621 }
01622
01623 d__1 = unfl, d__2 = ulp * max(temp1,temp2);
01624 result[18] = temp2 / max(d__1,d__2);
01625
01626 L510:
01627
01628 ntest = 19;
01629 i__3 = n;
01630 for (i__ = 1; i__ <= i__3; ++i__) {
01631 d1[i__] = a[i__ + i__ * a_dim1];
01632
01633 }
01634 i__3 = n - 1;
01635 for (i__ = 1; i__ <= i__3; ++i__) {
01636 d2[i__] = a[i__ + 1 + i__ * a_dim1];
01637
01638 }
01639 s_copy(srnamc_1.srnamt, "DSTEVR", (ftnlen)32, (ftnlen)6);
01640 i__3 = *liwork - (n << 1);
01641 dstevr_("V", "I", &n, &d1[1], &d2[1], &vl, &vu, &il, &iu, &
01642 abstol, &m2, &wa2[1], &z__[z_offset], ldu, &iwork[1],
01643 &work[1], lwork, &iwork[(n << 1) + 1], &i__3, &iinfo);
01644 if (iinfo != 0) {
01645 io___66.ciunit = *nounit;
01646 s_wsfe(&io___66);
01647 do_fio(&c__1, "DSTEVR(V,I)", (ftnlen)11);
01648 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
01649 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
01650 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
01651 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
01652 ;
01653 e_wsfe();
01654 *info = abs(iinfo);
01655 if (iinfo < 0) {
01656 return 0;
01657 } else {
01658 result[19] = ulpinv;
01659 result[20] = ulpinv;
01660 result[21] = ulpinv;
01661 goto L570;
01662 }
01663 }
01664
01665
01666
01667 i__3 = n;
01668 for (i__ = 1; i__ <= i__3; ++i__) {
01669 d3[i__] = a[i__ + i__ * a_dim1];
01670
01671 }
01672 i__3 = n - 1;
01673 for (i__ = 1; i__ <= i__3; ++i__) {
01674 d4[i__] = a[i__ + 1 + i__ * a_dim1];
01675
01676 }
01677 i__3 = max(1,m2);
01678 dstt22_(&n, &m2, &c__0, &d3[1], &d4[1], &wa2[1], &d2[1], &z__[
01679 z_offset], ldu, &work[1], &i__3, &result[19]);
01680
01681
01682 ntest = 21;
01683 i__3 = n - 1;
01684 for (i__ = 1; i__ <= i__3; ++i__) {
01685 d4[i__] = a[i__ + 1 + i__ * a_dim1];
01686
01687 }
01688 s_copy(srnamc_1.srnamt, "DSTEVR", (ftnlen)32, (ftnlen)6);
01689 i__3 = *liwork - (n << 1);
01690 dstevr_("N", "I", &n, &d3[1], &d4[1], &vl, &vu, &il, &iu, &
01691 abstol, &m3, &wa3[1], &z__[z_offset], ldu, &iwork[1],
01692 &work[1], lwork, &iwork[(n << 1) + 1], &i__3, &iinfo);
01693 if (iinfo != 0) {
01694 io___67.ciunit = *nounit;
01695 s_wsfe(&io___67);
01696 do_fio(&c__1, "DSTEVR(N,I)", (ftnlen)11);
01697 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
01698 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
01699 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
01700 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
01701 ;
01702 e_wsfe();
01703 *info = abs(iinfo);
01704 if (iinfo < 0) {
01705 return 0;
01706 } else {
01707 result[21] = ulpinv;
01708 goto L570;
01709 }
01710 }
01711
01712
01713
01714 temp1 = dsxt1_(&c__1, &wa2[1], &m2, &wa3[1], &m3, &abstol, &
01715 ulp, &unfl);
01716 temp2 = dsxt1_(&c__1, &wa3[1], &m3, &wa2[1], &m2, &abstol, &
01717 ulp, &unfl);
01718
01719 d__1 = unfl, d__2 = ulp * temp3;
01720 result[21] = (temp1 + temp2) / max(d__1,d__2);
01721
01722 L570:
01723
01724 ntest = 21;
01725 if (n > 0) {
01726 if (il != 1) {
01727
01728 d__1 = (wa1[il] - wa1[il - 1]) * .5, d__2 = ulp * 10.
01729 * temp3, d__1 = max(d__1,d__2), d__2 = rtunfl
01730 * 10.;
01731 vl = wa1[il] - max(d__1,d__2);
01732 } else {
01733
01734 d__1 = (wa1[n] - wa1[1]) * .5, d__2 = ulp * 10. *
01735 temp3, d__1 = max(d__1,d__2), d__2 = rtunfl *
01736 10.;
01737 vl = wa1[1] - max(d__1,d__2);
01738 }
01739 if (iu != n) {
01740
01741 d__1 = (wa1[iu + 1] - wa1[iu]) * .5, d__2 = ulp * 10.
01742 * temp3, d__1 = max(d__1,d__2), d__2 = rtunfl
01743 * 10.;
01744 vu = wa1[iu] + max(d__1,d__2);
01745 } else {
01746
01747 d__1 = (wa1[n] - wa1[1]) * .5, d__2 = ulp * 10. *
01748 temp3, d__1 = max(d__1,d__2), d__2 = rtunfl *
01749 10.;
01750 vu = wa1[n] + max(d__1,d__2);
01751 }
01752 } else {
01753 vl = 0.;
01754 vu = 1.;
01755 }
01756
01757 i__3 = n;
01758 for (i__ = 1; i__ <= i__3; ++i__) {
01759 d1[i__] = a[i__ + i__ * a_dim1];
01760
01761 }
01762 i__3 = n - 1;
01763 for (i__ = 1; i__ <= i__3; ++i__) {
01764 d2[i__] = a[i__ + 1 + i__ * a_dim1];
01765
01766 }
01767 s_copy(srnamc_1.srnamt, "DSTEVR", (ftnlen)32, (ftnlen)6);
01768 i__3 = *liwork - (n << 1);
01769 dstevr_("V", "V", &n, &d1[1], &d2[1], &vl, &vu, &il, &iu, &
01770 abstol, &m2, &wa2[1], &z__[z_offset], ldu, &iwork[1],
01771 &work[1], lwork, &iwork[(n << 1) + 1], &i__3, &iinfo);
01772 if (iinfo != 0) {
01773 io___68.ciunit = *nounit;
01774 s_wsfe(&io___68);
01775 do_fio(&c__1, "DSTEVR(V,V)", (ftnlen)11);
01776 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
01777 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
01778 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
01779 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
01780 ;
01781 e_wsfe();
01782 *info = abs(iinfo);
01783 if (iinfo < 0) {
01784 return 0;
01785 } else {
01786 result[22] = ulpinv;
01787 result[23] = ulpinv;
01788 result[24] = ulpinv;
01789 goto L630;
01790 }
01791 }
01792
01793 if (m2 == 0 && n > 0) {
01794 result[22] = ulpinv;
01795 result[23] = ulpinv;
01796 result[24] = ulpinv;
01797 goto L630;
01798 }
01799
01800
01801
01802 i__3 = n;
01803 for (i__ = 1; i__ <= i__3; ++i__) {
01804 d3[i__] = a[i__ + i__ * a_dim1];
01805
01806 }
01807 i__3 = n - 1;
01808 for (i__ = 1; i__ <= i__3; ++i__) {
01809 d4[i__] = a[i__ + 1 + i__ * a_dim1];
01810
01811 }
01812 i__3 = max(1,m2);
01813 dstt22_(&n, &m2, &c__0, &d3[1], &d4[1], &wa2[1], &d2[1], &z__[
01814 z_offset], ldu, &work[1], &i__3, &result[22]);
01815
01816 ntest = 24;
01817 i__3 = n - 1;
01818 for (i__ = 1; i__ <= i__3; ++i__) {
01819 d4[i__] = a[i__ + 1 + i__ * a_dim1];
01820
01821 }
01822 s_copy(srnamc_1.srnamt, "DSTEVR", (ftnlen)32, (ftnlen)6);
01823 i__3 = *liwork - (n << 1);
01824 dstevr_("N", "V", &n, &d3[1], &d4[1], &vl, &vu, &il, &iu, &
01825 abstol, &m3, &wa3[1], &z__[z_offset], ldu, &iwork[1],
01826 &work[1], lwork, &iwork[(n << 1) + 1], &i__3, &iinfo);
01827 if (iinfo != 0) {
01828 io___69.ciunit = *nounit;
01829 s_wsfe(&io___69);
01830 do_fio(&c__1, "DSTEVR(N,V)", (ftnlen)11);
01831 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
01832 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
01833 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
01834 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
01835 ;
01836 e_wsfe();
01837 *info = abs(iinfo);
01838 if (iinfo < 0) {
01839 return 0;
01840 } else {
01841 result[24] = ulpinv;
01842 goto L630;
01843 }
01844 }
01845
01846
01847
01848 temp1 = dsxt1_(&c__1, &wa2[1], &m2, &wa3[1], &m3, &abstol, &
01849 ulp, &unfl);
01850 temp2 = dsxt1_(&c__1, &wa3[1], &m3, &wa2[1], &m2, &abstol, &
01851 ulp, &unfl);
01852
01853 d__1 = unfl, d__2 = temp3 * ulp;
01854 result[24] = (temp1 + temp2) / max(d__1,d__2);
01855
01856 L630:
01857
01858
01859
01860 ;
01861 } else {
01862
01863 for (i__ = 1; i__ <= 24; ++i__) {
01864 result[i__] = 0.;
01865
01866 }
01867 ntest = 24;
01868 }
01869
01870
01871
01872
01873 for (iuplo = 0; iuplo <= 1; ++iuplo) {
01874 if (iuplo == 0) {
01875 *(unsigned char *)uplo = 'L';
01876 } else {
01877 *(unsigned char *)uplo = 'U';
01878 }
01879
01880
01881
01882 dlacpy_(" ", &n, &n, &a[a_offset], lda, &v[v_offset], ldu);
01883
01884 ++ntest;
01885 s_copy(srnamc_1.srnamt, "DSYEV", (ftnlen)32, (ftnlen)5);
01886 dsyev_("V", uplo, &n, &a[a_offset], ldu, &d1[1], &work[1],
01887 lwork, &iinfo);
01888 if (iinfo != 0) {
01889 io___72.ciunit = *nounit;
01890 s_wsfe(&io___72);
01891
01892 i__6[0] = 8, a__1[0] = "DSYEV(V,";
01893 i__6[1] = 1, a__1[1] = uplo;
01894 i__6[2] = 1, a__1[2] = ")";
01895 s_cat(ch__1, a__1, i__6, &c__3, (ftnlen)10);
01896 do_fio(&c__1, ch__1, (ftnlen)10);
01897 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
01898 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
01899 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
01900 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
01901 ;
01902 e_wsfe();
01903 *info = abs(iinfo);
01904 if (iinfo < 0) {
01905 return 0;
01906 } else {
01907 result[ntest] = ulpinv;
01908 result[ntest + 1] = ulpinv;
01909 result[ntest + 2] = ulpinv;
01910 goto L660;
01911 }
01912 }
01913
01914
01915
01916 dsyt21_(&c__1, uplo, &n, &c__0, &v[v_offset], ldu, &d1[1], &
01917 d2[1], &a[a_offset], ldu, &z__[z_offset], ldu, &tau[1]
01918 , &work[1], &result[ntest]);
01919
01920 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
01921
01922 ntest += 2;
01923 s_copy(srnamc_1.srnamt, "DSYEV", (ftnlen)32, (ftnlen)5);
01924 dsyev_("N", uplo, &n, &a[a_offset], ldu, &d3[1], &work[1],
01925 lwork, &iinfo);
01926 if (iinfo != 0) {
01927 io___73.ciunit = *nounit;
01928 s_wsfe(&io___73);
01929
01930 i__6[0] = 8, a__1[0] = "DSYEV(N,";
01931 i__6[1] = 1, a__1[1] = uplo;
01932 i__6[2] = 1, a__1[2] = ")";
01933 s_cat(ch__1, a__1, i__6, &c__3, (ftnlen)10);
01934 do_fio(&c__1, ch__1, (ftnlen)10);
01935 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
01936 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
01937 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
01938 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
01939 ;
01940 e_wsfe();
01941 *info = abs(iinfo);
01942 if (iinfo < 0) {
01943 return 0;
01944 } else {
01945 result[ntest] = ulpinv;
01946 goto L660;
01947 }
01948 }
01949
01950
01951
01952 temp1 = 0.;
01953 temp2 = 0.;
01954 i__3 = n;
01955 for (j = 1; j <= i__3; ++j) {
01956
01957 d__3 = temp1, d__4 = (d__1 = d1[j], abs(d__1)), d__3 =
01958 max(d__3,d__4), d__4 = (d__2 = d3[j], abs(d__2));
01959 temp1 = max(d__3,d__4);
01960
01961 d__2 = temp2, d__3 = (d__1 = d1[j] - d3[j], abs(d__1));
01962 temp2 = max(d__2,d__3);
01963
01964 }
01965
01966 d__1 = unfl, d__2 = ulp * max(temp1,temp2);
01967 result[ntest] = temp2 / max(d__1,d__2);
01968
01969 L660:
01970 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
01971
01972 ++ntest;
01973
01974 if (n > 0) {
01975
01976 d__2 = abs(d1[1]), d__3 = (d__1 = d1[n], abs(d__1));
01977 temp3 = max(d__2,d__3);
01978 if (il != 1) {
01979
01980 d__1 = (d1[il] - d1[il - 1]) * .5, d__2 = ulp * 10. *
01981 temp3, d__1 = max(d__1,d__2), d__2 = rtunfl *
01982 10.;
01983 vl = d1[il] - max(d__1,d__2);
01984 } else if (n > 0) {
01985
01986 d__1 = (d1[n] - d1[1]) * .5, d__2 = ulp * 10. * temp3,
01987 d__1 = max(d__1,d__2), d__2 = rtunfl * 10.;
01988 vl = d1[1] - max(d__1,d__2);
01989 }
01990 if (iu != n) {
01991
01992 d__1 = (d1[iu + 1] - d1[iu]) * .5, d__2 = ulp * 10. *
01993 temp3, d__1 = max(d__1,d__2), d__2 = rtunfl *
01994 10.;
01995 vu = d1[iu] + max(d__1,d__2);
01996 } else if (n > 0) {
01997
01998 d__1 = (d1[n] - d1[1]) * .5, d__2 = ulp * 10. * temp3,
01999 d__1 = max(d__1,d__2), d__2 = rtunfl * 10.;
02000 vu = d1[n] + max(d__1,d__2);
02001 }
02002 } else {
02003 temp3 = 0.;
02004 vl = 0.;
02005 vu = 1.;
02006 }
02007
02008 s_copy(srnamc_1.srnamt, "DSYEVX", (ftnlen)32, (ftnlen)6);
02009 dsyevx_("V", "A", uplo, &n, &a[a_offset], ldu, &vl, &vu, &il,
02010 &iu, &abstol, &m, &wa1[1], &z__[z_offset], ldu, &work[
02011 1], lwork, &iwork[1], &iwork[n * 5 + 1], &iinfo);
02012 if (iinfo != 0) {
02013 io___74.ciunit = *nounit;
02014 s_wsfe(&io___74);
02015
02016 i__6[0] = 11, a__1[0] = "DSYEVX(V,A,";
02017 i__6[1] = 1, a__1[1] = uplo;
02018 i__6[2] = 1, a__1[2] = ")";
02019 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
02020 do_fio(&c__1, ch__2, (ftnlen)13);
02021 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
02022 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
02023 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
02024 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
02025 ;
02026 e_wsfe();
02027 *info = abs(iinfo);
02028 if (iinfo < 0) {
02029 return 0;
02030 } else {
02031 result[ntest] = ulpinv;
02032 result[ntest + 1] = ulpinv;
02033 result[ntest + 2] = ulpinv;
02034 goto L680;
02035 }
02036 }
02037
02038
02039
02040 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
02041
02042 dsyt21_(&c__1, uplo, &n, &c__0, &a[a_offset], ldu, &d1[1], &
02043 d2[1], &z__[z_offset], ldu, &v[v_offset], ldu, &tau[1]
02044 , &work[1], &result[ntest]);
02045
02046 ntest += 2;
02047 s_copy(srnamc_1.srnamt, "DSYEVX", (ftnlen)32, (ftnlen)6);
02048 dsyevx_("N", "A", uplo, &n, &a[a_offset], ldu, &vl, &vu, &il,
02049 &iu, &abstol, &m2, &wa2[1], &z__[z_offset], ldu, &
02050 work[1], lwork, &iwork[1], &iwork[n * 5 + 1], &iinfo);
02051 if (iinfo != 0) {
02052 io___75.ciunit = *nounit;
02053 s_wsfe(&io___75);
02054
02055 i__6[0] = 11, a__1[0] = "DSYEVX(N,A,";
02056 i__6[1] = 1, a__1[1] = uplo;
02057 i__6[2] = 1, a__1[2] = ")";
02058 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
02059 do_fio(&c__1, ch__2, (ftnlen)13);
02060 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
02061 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
02062 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
02063 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
02064 ;
02065 e_wsfe();
02066 *info = abs(iinfo);
02067 if (iinfo < 0) {
02068 return 0;
02069 } else {
02070 result[ntest] = ulpinv;
02071 goto L680;
02072 }
02073 }
02074
02075
02076
02077 temp1 = 0.;
02078 temp2 = 0.;
02079 i__3 = n;
02080 for (j = 1; j <= i__3; ++j) {
02081
02082 d__3 = temp1, d__4 = (d__1 = wa1[j], abs(d__1)), d__3 =
02083 max(d__3,d__4), d__4 = (d__2 = wa2[j], abs(d__2));
02084 temp1 = max(d__3,d__4);
02085
02086 d__2 = temp2, d__3 = (d__1 = wa1[j] - wa2[j], abs(d__1));
02087 temp2 = max(d__2,d__3);
02088
02089 }
02090
02091 d__1 = unfl, d__2 = ulp * max(temp1,temp2);
02092 result[ntest] = temp2 / max(d__1,d__2);
02093
02094 L680:
02095
02096 ++ntest;
02097 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
02098 s_copy(srnamc_1.srnamt, "DSYEVX", (ftnlen)32, (ftnlen)6);
02099 dsyevx_("V", "I", uplo, &n, &a[a_offset], ldu, &vl, &vu, &il,
02100 &iu, &abstol, &m2, &wa2[1], &z__[z_offset], ldu, &
02101 work[1], lwork, &iwork[1], &iwork[n * 5 + 1], &iinfo);
02102 if (iinfo != 0) {
02103 io___76.ciunit = *nounit;
02104 s_wsfe(&io___76);
02105
02106 i__6[0] = 11, a__1[0] = "DSYEVX(V,I,";
02107 i__6[1] = 1, a__1[1] = uplo;
02108 i__6[2] = 1, a__1[2] = ")";
02109 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
02110 do_fio(&c__1, ch__2, (ftnlen)13);
02111 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
02112 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
02113 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
02114 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
02115 ;
02116 e_wsfe();
02117 *info = abs(iinfo);
02118 if (iinfo < 0) {
02119 return 0;
02120 } else {
02121 result[ntest] = ulpinv;
02122 result[ntest + 1] = ulpinv;
02123 result[ntest + 2] = ulpinv;
02124 goto L690;
02125 }
02126 }
02127
02128
02129
02130 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
02131
02132 dsyt22_(&c__1, uplo, &n, &m2, &c__0, &a[a_offset], ldu, &wa2[
02133 1], &d2[1], &z__[z_offset], ldu, &v[v_offset], ldu, &
02134 tau[1], &work[1], &result[ntest]);
02135
02136 ntest += 2;
02137 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
02138 s_copy(srnamc_1.srnamt, "DSYEVX", (ftnlen)32, (ftnlen)6);
02139 dsyevx_("N", "I", uplo, &n, &a[a_offset], ldu, &vl, &vu, &il,
02140 &iu, &abstol, &m3, &wa3[1], &z__[z_offset], ldu, &
02141 work[1], lwork, &iwork[1], &iwork[n * 5 + 1], &iinfo);
02142 if (iinfo != 0) {
02143 io___77.ciunit = *nounit;
02144 s_wsfe(&io___77);
02145
02146 i__6[0] = 11, a__1[0] = "DSYEVX(N,I,";
02147 i__6[1] = 1, a__1[1] = uplo;
02148 i__6[2] = 1, a__1[2] = ")";
02149 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
02150 do_fio(&c__1, ch__2, (ftnlen)13);
02151 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
02152 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
02153 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
02154 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
02155 ;
02156 e_wsfe();
02157 *info = abs(iinfo);
02158 if (iinfo < 0) {
02159 return 0;
02160 } else {
02161 result[ntest] = ulpinv;
02162 goto L690;
02163 }
02164 }
02165
02166
02167
02168 temp1 = dsxt1_(&c__1, &wa2[1], &m2, &wa3[1], &m3, &abstol, &
02169 ulp, &unfl);
02170 temp2 = dsxt1_(&c__1, &wa3[1], &m3, &wa2[1], &m2, &abstol, &
02171 ulp, &unfl);
02172
02173 d__1 = unfl, d__2 = ulp * temp3;
02174 result[ntest] = (temp1 + temp2) / max(d__1,d__2);
02175 L690:
02176
02177 ++ntest;
02178 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
02179 s_copy(srnamc_1.srnamt, "DSYEVX", (ftnlen)32, (ftnlen)6);
02180 dsyevx_("V", "V", uplo, &n, &a[a_offset], ldu, &vl, &vu, &il,
02181 &iu, &abstol, &m2, &wa2[1], &z__[z_offset], ldu, &
02182 work[1], lwork, &iwork[1], &iwork[n * 5 + 1], &iinfo);
02183 if (iinfo != 0) {
02184 io___78.ciunit = *nounit;
02185 s_wsfe(&io___78);
02186
02187 i__6[0] = 11, a__1[0] = "DSYEVX(V,V,";
02188 i__6[1] = 1, a__1[1] = uplo;
02189 i__6[2] = 1, a__1[2] = ")";
02190 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
02191 do_fio(&c__1, ch__2, (ftnlen)13);
02192 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
02193 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
02194 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
02195 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
02196 ;
02197 e_wsfe();
02198 *info = abs(iinfo);
02199 if (iinfo < 0) {
02200 return 0;
02201 } else {
02202 result[ntest] = ulpinv;
02203 result[ntest + 1] = ulpinv;
02204 result[ntest + 2] = ulpinv;
02205 goto L700;
02206 }
02207 }
02208
02209
02210
02211 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
02212
02213 dsyt22_(&c__1, uplo, &n, &m2, &c__0, &a[a_offset], ldu, &wa2[
02214 1], &d2[1], &z__[z_offset], ldu, &v[v_offset], ldu, &
02215 tau[1], &work[1], &result[ntest]);
02216
02217 ntest += 2;
02218 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
02219 s_copy(srnamc_1.srnamt, "DSYEVX", (ftnlen)32, (ftnlen)6);
02220 dsyevx_("N", "V", uplo, &n, &a[a_offset], ldu, &vl, &vu, &il,
02221 &iu, &abstol, &m3, &wa3[1], &z__[z_offset], ldu, &
02222 work[1], lwork, &iwork[1], &iwork[n * 5 + 1], &iinfo);
02223 if (iinfo != 0) {
02224 io___79.ciunit = *nounit;
02225 s_wsfe(&io___79);
02226
02227 i__6[0] = 11, a__1[0] = "DSYEVX(N,V,";
02228 i__6[1] = 1, a__1[1] = uplo;
02229 i__6[2] = 1, a__1[2] = ")";
02230 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
02231 do_fio(&c__1, ch__2, (ftnlen)13);
02232 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
02233 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
02234 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
02235 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
02236 ;
02237 e_wsfe();
02238 *info = abs(iinfo);
02239 if (iinfo < 0) {
02240 return 0;
02241 } else {
02242 result[ntest] = ulpinv;
02243 goto L700;
02244 }
02245 }
02246
02247 if (m3 == 0 && n > 0) {
02248 result[ntest] = ulpinv;
02249 goto L700;
02250 }
02251
02252
02253
02254 temp1 = dsxt1_(&c__1, &wa2[1], &m2, &wa3[1], &m3, &abstol, &
02255 ulp, &unfl);
02256 temp2 = dsxt1_(&c__1, &wa3[1], &m3, &wa2[1], &m2, &abstol, &
02257 ulp, &unfl);
02258 if (n > 0) {
02259
02260 d__2 = abs(wa1[1]), d__3 = (d__1 = wa1[n], abs(d__1));
02261 temp3 = max(d__2,d__3);
02262 } else {
02263 temp3 = 0.;
02264 }
02265
02266 d__1 = unfl, d__2 = temp3 * ulp;
02267 result[ntest] = (temp1 + temp2) / max(d__1,d__2);
02268
02269 L700:
02270
02271
02272
02273 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
02274
02275
02276
02277
02278 if (iuplo == 1) {
02279 indx = 1;
02280 i__3 = n;
02281 for (j = 1; j <= i__3; ++j) {
02282 i__4 = j;
02283 for (i__ = 1; i__ <= i__4; ++i__) {
02284 work[indx] = a[i__ + j * a_dim1];
02285 ++indx;
02286
02287 }
02288
02289 }
02290 } else {
02291 indx = 1;
02292 i__3 = n;
02293 for (j = 1; j <= i__3; ++j) {
02294 i__4 = n;
02295 for (i__ = j; i__ <= i__4; ++i__) {
02296 work[indx] = a[i__ + j * a_dim1];
02297 ++indx;
02298
02299 }
02300
02301 }
02302 }
02303
02304 ++ntest;
02305 s_copy(srnamc_1.srnamt, "DSPEV", (ftnlen)32, (ftnlen)5);
02306 dspev_("V", uplo, &n, &work[1], &d1[1], &z__[z_offset], ldu, &
02307 v[v_offset], &iinfo);
02308 if (iinfo != 0) {
02309 io___81.ciunit = *nounit;
02310 s_wsfe(&io___81);
02311
02312 i__6[0] = 8, a__1[0] = "DSPEV(V,";
02313 i__6[1] = 1, a__1[1] = uplo;
02314 i__6[2] = 1, a__1[2] = ")";
02315 s_cat(ch__1, a__1, i__6, &c__3, (ftnlen)10);
02316 do_fio(&c__1, ch__1, (ftnlen)10);
02317 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
02318 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
02319 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
02320 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
02321 ;
02322 e_wsfe();
02323 *info = abs(iinfo);
02324 if (iinfo < 0) {
02325 return 0;
02326 } else {
02327 result[ntest] = ulpinv;
02328 result[ntest + 1] = ulpinv;
02329 result[ntest + 2] = ulpinv;
02330 goto L800;
02331 }
02332 }
02333
02334
02335
02336 dsyt21_(&c__1, uplo, &n, &c__0, &a[a_offset], lda, &d1[1], &
02337 d2[1], &z__[z_offset], ldu, &v[v_offset], ldu, &tau[1]
02338 , &work[1], &result[ntest]);
02339
02340 if (iuplo == 1) {
02341 indx = 1;
02342 i__3 = n;
02343 for (j = 1; j <= i__3; ++j) {
02344 i__4 = j;
02345 for (i__ = 1; i__ <= i__4; ++i__) {
02346 work[indx] = a[i__ + j * a_dim1];
02347 ++indx;
02348
02349 }
02350
02351 }
02352 } else {
02353 indx = 1;
02354 i__3 = n;
02355 for (j = 1; j <= i__3; ++j) {
02356 i__4 = n;
02357 for (i__ = j; i__ <= i__4; ++i__) {
02358 work[indx] = a[i__ + j * a_dim1];
02359 ++indx;
02360
02361 }
02362
02363 }
02364 }
02365
02366 ntest += 2;
02367 s_copy(srnamc_1.srnamt, "DSPEV", (ftnlen)32, (ftnlen)5);
02368 dspev_("N", uplo, &n, &work[1], &d3[1], &z__[z_offset], ldu, &
02369 v[v_offset], &iinfo);
02370 if (iinfo != 0) {
02371 io___82.ciunit = *nounit;
02372 s_wsfe(&io___82);
02373
02374 i__6[0] = 8, a__1[0] = "DSPEV(N,";
02375 i__6[1] = 1, a__1[1] = uplo;
02376 i__6[2] = 1, a__1[2] = ")";
02377 s_cat(ch__1, a__1, i__6, &c__3, (ftnlen)10);
02378 do_fio(&c__1, ch__1, (ftnlen)10);
02379 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
02380 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
02381 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
02382 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
02383 ;
02384 e_wsfe();
02385 *info = abs(iinfo);
02386 if (iinfo < 0) {
02387 return 0;
02388 } else {
02389 result[ntest] = ulpinv;
02390 goto L800;
02391 }
02392 }
02393
02394
02395
02396 temp1 = 0.;
02397 temp2 = 0.;
02398 i__3 = n;
02399 for (j = 1; j <= i__3; ++j) {
02400
02401 d__3 = temp1, d__4 = (d__1 = d1[j], abs(d__1)), d__3 =
02402 max(d__3,d__4), d__4 = (d__2 = d3[j], abs(d__2));
02403 temp1 = max(d__3,d__4);
02404
02405 d__2 = temp2, d__3 = (d__1 = d1[j] - d3[j], abs(d__1));
02406 temp2 = max(d__2,d__3);
02407
02408 }
02409
02410 d__1 = unfl, d__2 = ulp * max(temp1,temp2);
02411 result[ntest] = temp2 / max(d__1,d__2);
02412
02413
02414
02415
02416 L800:
02417 if (iuplo == 1) {
02418 indx = 1;
02419 i__3 = n;
02420 for (j = 1; j <= i__3; ++j) {
02421 i__4 = j;
02422 for (i__ = 1; i__ <= i__4; ++i__) {
02423 work[indx] = a[i__ + j * a_dim1];
02424 ++indx;
02425
02426 }
02427
02428 }
02429 } else {
02430 indx = 1;
02431 i__3 = n;
02432 for (j = 1; j <= i__3; ++j) {
02433 i__4 = n;
02434 for (i__ = j; i__ <= i__4; ++i__) {
02435 work[indx] = a[i__ + j * a_dim1];
02436 ++indx;
02437
02438 }
02439
02440 }
02441 }
02442
02443 ++ntest;
02444
02445 if (n > 0) {
02446
02447 d__2 = abs(d1[1]), d__3 = (d__1 = d1[n], abs(d__1));
02448 temp3 = max(d__2,d__3);
02449 if (il != 1) {
02450
02451 d__1 = (d1[il] - d1[il - 1]) * .5, d__2 = ulp * 10. *
02452 temp3, d__1 = max(d__1,d__2), d__2 = rtunfl *
02453 10.;
02454 vl = d1[il] - max(d__1,d__2);
02455 } else if (n > 0) {
02456
02457 d__1 = (d1[n] - d1[1]) * .5, d__2 = ulp * 10. * temp3,
02458 d__1 = max(d__1,d__2), d__2 = rtunfl * 10.;
02459 vl = d1[1] - max(d__1,d__2);
02460 }
02461 if (iu != n) {
02462
02463 d__1 = (d1[iu + 1] - d1[iu]) * .5, d__2 = ulp * 10. *
02464 temp3, d__1 = max(d__1,d__2), d__2 = rtunfl *
02465 10.;
02466 vu = d1[iu] + max(d__1,d__2);
02467 } else if (n > 0) {
02468
02469 d__1 = (d1[n] - d1[1]) * .5, d__2 = ulp * 10. * temp3,
02470 d__1 = max(d__1,d__2), d__2 = rtunfl * 10.;
02471 vu = d1[n] + max(d__1,d__2);
02472 }
02473 } else {
02474 temp3 = 0.;
02475 vl = 0.;
02476 vu = 1.;
02477 }
02478
02479 s_copy(srnamc_1.srnamt, "DSPEVX", (ftnlen)32, (ftnlen)6);
02480 dspevx_("V", "A", uplo, &n, &work[1], &vl, &vu, &il, &iu, &
02481 abstol, &m, &wa1[1], &z__[z_offset], ldu, &v[v_offset]
02482 , &iwork[1], &iwork[n * 5 + 1], &iinfo);
02483 if (iinfo != 0) {
02484 io___83.ciunit = *nounit;
02485 s_wsfe(&io___83);
02486
02487 i__6[0] = 11, a__1[0] = "DSPEVX(V,A,";
02488 i__6[1] = 1, a__1[1] = uplo;
02489 i__6[2] = 1, a__1[2] = ")";
02490 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
02491 do_fio(&c__1, ch__2, (ftnlen)13);
02492 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
02493 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
02494 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
02495 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
02496 ;
02497 e_wsfe();
02498 *info = abs(iinfo);
02499 if (iinfo < 0) {
02500 return 0;
02501 } else {
02502 result[ntest] = ulpinv;
02503 result[ntest + 1] = ulpinv;
02504 result[ntest + 2] = ulpinv;
02505 goto L900;
02506 }
02507 }
02508
02509
02510
02511 dsyt21_(&c__1, uplo, &n, &c__0, &a[a_offset], ldu, &wa1[1], &
02512 d2[1], &z__[z_offset], ldu, &v[v_offset], ldu, &tau[1]
02513 , &work[1], &result[ntest]);
02514
02515 ntest += 2;
02516
02517 if (iuplo == 1) {
02518 indx = 1;
02519 i__3 = n;
02520 for (j = 1; j <= i__3; ++j) {
02521 i__4 = j;
02522 for (i__ = 1; i__ <= i__4; ++i__) {
02523 work[indx] = a[i__ + j * a_dim1];
02524 ++indx;
02525
02526 }
02527
02528 }
02529 } else {
02530 indx = 1;
02531 i__3 = n;
02532 for (j = 1; j <= i__3; ++j) {
02533 i__4 = n;
02534 for (i__ = j; i__ <= i__4; ++i__) {
02535 work[indx] = a[i__ + j * a_dim1];
02536 ++indx;
02537
02538 }
02539
02540 }
02541 }
02542
02543 s_copy(srnamc_1.srnamt, "DSPEVX", (ftnlen)32, (ftnlen)6);
02544 dspevx_("N", "A", uplo, &n, &work[1], &vl, &vu, &il, &iu, &
02545 abstol, &m2, &wa2[1], &z__[z_offset], ldu, &v[
02546 v_offset], &iwork[1], &iwork[n * 5 + 1], &iinfo);
02547 if (iinfo != 0) {
02548 io___84.ciunit = *nounit;
02549 s_wsfe(&io___84);
02550
02551 i__6[0] = 11, a__1[0] = "DSPEVX(N,A,";
02552 i__6[1] = 1, a__1[1] = uplo;
02553 i__6[2] = 1, a__1[2] = ")";
02554 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
02555 do_fio(&c__1, ch__2, (ftnlen)13);
02556 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
02557 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
02558 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
02559 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
02560 ;
02561 e_wsfe();
02562 *info = abs(iinfo);
02563 if (iinfo < 0) {
02564 return 0;
02565 } else {
02566 result[ntest] = ulpinv;
02567 goto L900;
02568 }
02569 }
02570
02571
02572
02573 temp1 = 0.;
02574 temp2 = 0.;
02575 i__3 = n;
02576 for (j = 1; j <= i__3; ++j) {
02577
02578 d__3 = temp1, d__4 = (d__1 = wa1[j], abs(d__1)), d__3 =
02579 max(d__3,d__4), d__4 = (d__2 = wa2[j], abs(d__2));
02580 temp1 = max(d__3,d__4);
02581
02582 d__2 = temp2, d__3 = (d__1 = wa1[j] - wa2[j], abs(d__1));
02583 temp2 = max(d__2,d__3);
02584
02585 }
02586
02587 d__1 = unfl, d__2 = ulp * max(temp1,temp2);
02588 result[ntest] = temp2 / max(d__1,d__2);
02589
02590 L900:
02591 if (iuplo == 1) {
02592 indx = 1;
02593 i__3 = n;
02594 for (j = 1; j <= i__3; ++j) {
02595 i__4 = j;
02596 for (i__ = 1; i__ <= i__4; ++i__) {
02597 work[indx] = a[i__ + j * a_dim1];
02598 ++indx;
02599
02600 }
02601
02602 }
02603 } else {
02604 indx = 1;
02605 i__3 = n;
02606 for (j = 1; j <= i__3; ++j) {
02607 i__4 = n;
02608 for (i__ = j; i__ <= i__4; ++i__) {
02609 work[indx] = a[i__ + j * a_dim1];
02610 ++indx;
02611
02612 }
02613
02614 }
02615 }
02616
02617 ++ntest;
02618
02619 s_copy(srnamc_1.srnamt, "DSPEVX", (ftnlen)32, (ftnlen)6);
02620 dspevx_("V", "I", uplo, &n, &work[1], &vl, &vu, &il, &iu, &
02621 abstol, &m2, &wa2[1], &z__[z_offset], ldu, &v[
02622 v_offset], &iwork[1], &iwork[n * 5 + 1], &iinfo);
02623 if (iinfo != 0) {
02624 io___85.ciunit = *nounit;
02625 s_wsfe(&io___85);
02626
02627 i__6[0] = 11, a__1[0] = "DSPEVX(V,I,";
02628 i__6[1] = 1, a__1[1] = uplo;
02629 i__6[2] = 1, a__1[2] = ")";
02630 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
02631 do_fio(&c__1, ch__2, (ftnlen)13);
02632 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
02633 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
02634 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
02635 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
02636 ;
02637 e_wsfe();
02638 *info = abs(iinfo);
02639 if (iinfo < 0) {
02640 return 0;
02641 } else {
02642 result[ntest] = ulpinv;
02643 result[ntest + 1] = ulpinv;
02644 result[ntest + 2] = ulpinv;
02645 goto L990;
02646 }
02647 }
02648
02649
02650
02651 dsyt22_(&c__1, uplo, &n, &m2, &c__0, &a[a_offset], ldu, &wa2[
02652 1], &d2[1], &z__[z_offset], ldu, &v[v_offset], ldu, &
02653 tau[1], &work[1], &result[ntest]);
02654
02655 ntest += 2;
02656
02657 if (iuplo == 1) {
02658 indx = 1;
02659 i__3 = n;
02660 for (j = 1; j <= i__3; ++j) {
02661 i__4 = j;
02662 for (i__ = 1; i__ <= i__4; ++i__) {
02663 work[indx] = a[i__ + j * a_dim1];
02664 ++indx;
02665
02666 }
02667
02668 }
02669 } else {
02670 indx = 1;
02671 i__3 = n;
02672 for (j = 1; j <= i__3; ++j) {
02673 i__4 = n;
02674 for (i__ = j; i__ <= i__4; ++i__) {
02675 work[indx] = a[i__ + j * a_dim1];
02676 ++indx;
02677
02678 }
02679
02680 }
02681 }
02682
02683 s_copy(srnamc_1.srnamt, "DSPEVX", (ftnlen)32, (ftnlen)6);
02684 dspevx_("N", "I", uplo, &n, &work[1], &vl, &vu, &il, &iu, &
02685 abstol, &m3, &wa3[1], &z__[z_offset], ldu, &v[
02686 v_offset], &iwork[1], &iwork[n * 5 + 1], &iinfo);
02687 if (iinfo != 0) {
02688 io___86.ciunit = *nounit;
02689 s_wsfe(&io___86);
02690
02691 i__6[0] = 11, a__1[0] = "DSPEVX(N,I,";
02692 i__6[1] = 1, a__1[1] = uplo;
02693 i__6[2] = 1, a__1[2] = ")";
02694 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
02695 do_fio(&c__1, ch__2, (ftnlen)13);
02696 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
02697 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
02698 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
02699 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
02700 ;
02701 e_wsfe();
02702 *info = abs(iinfo);
02703 if (iinfo < 0) {
02704 return 0;
02705 } else {
02706 result[ntest] = ulpinv;
02707 goto L990;
02708 }
02709 }
02710
02711 if (m3 == 0 && n > 0) {
02712 result[ntest] = ulpinv;
02713 goto L990;
02714 }
02715
02716
02717
02718 temp1 = dsxt1_(&c__1, &wa2[1], &m2, &wa3[1], &m3, &abstol, &
02719 ulp, &unfl);
02720 temp2 = dsxt1_(&c__1, &wa3[1], &m3, &wa2[1], &m2, &abstol, &
02721 ulp, &unfl);
02722 if (n > 0) {
02723
02724 d__2 = abs(wa1[1]), d__3 = (d__1 = wa1[n], abs(d__1));
02725 temp3 = max(d__2,d__3);
02726 } else {
02727 temp3 = 0.;
02728 }
02729
02730 d__1 = unfl, d__2 = temp3 * ulp;
02731 result[ntest] = (temp1 + temp2) / max(d__1,d__2);
02732
02733 L990:
02734 if (iuplo == 1) {
02735 indx = 1;
02736 i__3 = n;
02737 for (j = 1; j <= i__3; ++j) {
02738 i__4 = j;
02739 for (i__ = 1; i__ <= i__4; ++i__) {
02740 work[indx] = a[i__ + j * a_dim1];
02741 ++indx;
02742
02743 }
02744
02745 }
02746 } else {
02747 indx = 1;
02748 i__3 = n;
02749 for (j = 1; j <= i__3; ++j) {
02750 i__4 = n;
02751 for (i__ = j; i__ <= i__4; ++i__) {
02752 work[indx] = a[i__ + j * a_dim1];
02753 ++indx;
02754
02755 }
02756
02757 }
02758 }
02759
02760 ++ntest;
02761
02762 s_copy(srnamc_1.srnamt, "DSPEVX", (ftnlen)32, (ftnlen)6);
02763 dspevx_("V", "V", uplo, &n, &work[1], &vl, &vu, &il, &iu, &
02764 abstol, &m2, &wa2[1], &z__[z_offset], ldu, &v[
02765 v_offset], &iwork[1], &iwork[n * 5 + 1], &iinfo);
02766 if (iinfo != 0) {
02767 io___87.ciunit = *nounit;
02768 s_wsfe(&io___87);
02769
02770 i__6[0] = 11, a__1[0] = "DSPEVX(V,V,";
02771 i__6[1] = 1, a__1[1] = uplo;
02772 i__6[2] = 1, a__1[2] = ")";
02773 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
02774 do_fio(&c__1, ch__2, (ftnlen)13);
02775 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
02776 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
02777 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
02778 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
02779 ;
02780 e_wsfe();
02781 *info = abs(iinfo);
02782 if (iinfo < 0) {
02783 return 0;
02784 } else {
02785 result[ntest] = ulpinv;
02786 result[ntest + 1] = ulpinv;
02787 result[ntest + 2] = ulpinv;
02788 goto L1080;
02789 }
02790 }
02791
02792
02793
02794 dsyt22_(&c__1, uplo, &n, &m2, &c__0, &a[a_offset], ldu, &wa2[
02795 1], &d2[1], &z__[z_offset], ldu, &v[v_offset], ldu, &
02796 tau[1], &work[1], &result[ntest]);
02797
02798 ntest += 2;
02799
02800 if (iuplo == 1) {
02801 indx = 1;
02802 i__3 = n;
02803 for (j = 1; j <= i__3; ++j) {
02804 i__4 = j;
02805 for (i__ = 1; i__ <= i__4; ++i__) {
02806 work[indx] = a[i__ + j * a_dim1];
02807 ++indx;
02808
02809 }
02810
02811 }
02812 } else {
02813 indx = 1;
02814 i__3 = n;
02815 for (j = 1; j <= i__3; ++j) {
02816 i__4 = n;
02817 for (i__ = j; i__ <= i__4; ++i__) {
02818 work[indx] = a[i__ + j * a_dim1];
02819 ++indx;
02820
02821 }
02822
02823 }
02824 }
02825
02826 s_copy(srnamc_1.srnamt, "DSPEVX", (ftnlen)32, (ftnlen)6);
02827 dspevx_("N", "V", uplo, &n, &work[1], &vl, &vu, &il, &iu, &
02828 abstol, &m3, &wa3[1], &z__[z_offset], ldu, &v[
02829 v_offset], &iwork[1], &iwork[n * 5 + 1], &iinfo);
02830 if (iinfo != 0) {
02831 io___88.ciunit = *nounit;
02832 s_wsfe(&io___88);
02833
02834 i__6[0] = 11, a__1[0] = "DSPEVX(N,V,";
02835 i__6[1] = 1, a__1[1] = uplo;
02836 i__6[2] = 1, a__1[2] = ")";
02837 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
02838 do_fio(&c__1, ch__2, (ftnlen)13);
02839 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
02840 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
02841 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
02842 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
02843 ;
02844 e_wsfe();
02845 *info = abs(iinfo);
02846 if (iinfo < 0) {
02847 return 0;
02848 } else {
02849 result[ntest] = ulpinv;
02850 goto L1080;
02851 }
02852 }
02853
02854 if (m3 == 0 && n > 0) {
02855 result[ntest] = ulpinv;
02856 goto L1080;
02857 }
02858
02859
02860
02861 temp1 = dsxt1_(&c__1, &wa2[1], &m2, &wa3[1], &m3, &abstol, &
02862 ulp, &unfl);
02863 temp2 = dsxt1_(&c__1, &wa3[1], &m3, &wa2[1], &m2, &abstol, &
02864 ulp, &unfl);
02865 if (n > 0) {
02866
02867 d__2 = abs(wa1[1]), d__3 = (d__1 = wa1[n], abs(d__1));
02868 temp3 = max(d__2,d__3);
02869 } else {
02870 temp3 = 0.;
02871 }
02872
02873 d__1 = unfl, d__2 = temp3 * ulp;
02874 result[ntest] = (temp1 + temp2) / max(d__1,d__2);
02875
02876 L1080:
02877
02878
02879
02880 if (jtype <= 7) {
02881 kd = 1;
02882 } else if (jtype >= 8 && jtype <= 15) {
02883
02884 i__3 = n - 1;
02885 kd = max(i__3,0);
02886 } else {
02887 kd = ihbw;
02888 }
02889
02890
02891
02892
02893 if (iuplo == 1) {
02894 i__3 = n;
02895 for (j = 1; j <= i__3; ++j) {
02896
02897 i__4 = 1, i__5 = j - kd;
02898 i__7 = j;
02899 for (i__ = max(i__4,i__5); i__ <= i__7; ++i__) {
02900 v[kd + 1 + i__ - j + j * v_dim1] = a[i__ + j *
02901 a_dim1];
02902
02903 }
02904
02905 }
02906 } else {
02907 i__3 = n;
02908 for (j = 1; j <= i__3; ++j) {
02909
02910 i__4 = n, i__5 = j + kd;
02911 i__7 = min(i__4,i__5);
02912 for (i__ = j; i__ <= i__7; ++i__) {
02913 v[i__ + 1 - j + j * v_dim1] = a[i__ + j * a_dim1];
02914
02915 }
02916
02917 }
02918 }
02919
02920 ++ntest;
02921 s_copy(srnamc_1.srnamt, "DSBEV", (ftnlen)32, (ftnlen)5);
02922 dsbev_("V", uplo, &n, &kd, &v[v_offset], ldu, &d1[1], &z__[
02923 z_offset], ldu, &work[1], &iinfo);
02924 if (iinfo != 0) {
02925 io___90.ciunit = *nounit;
02926 s_wsfe(&io___90);
02927
02928 i__6[0] = 8, a__1[0] = "DSBEV(V,";
02929 i__6[1] = 1, a__1[1] = uplo;
02930 i__6[2] = 1, a__1[2] = ")";
02931 s_cat(ch__1, a__1, i__6, &c__3, (ftnlen)10);
02932 do_fio(&c__1, ch__1, (ftnlen)10);
02933 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
02934 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
02935 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
02936 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
02937 ;
02938 e_wsfe();
02939 *info = abs(iinfo);
02940 if (iinfo < 0) {
02941 return 0;
02942 } else {
02943 result[ntest] = ulpinv;
02944 result[ntest + 1] = ulpinv;
02945 result[ntest + 2] = ulpinv;
02946 goto L1180;
02947 }
02948 }
02949
02950
02951
02952 dsyt21_(&c__1, uplo, &n, &c__0, &a[a_offset], lda, &d1[1], &
02953 d2[1], &z__[z_offset], ldu, &v[v_offset], ldu, &tau[1]
02954 , &work[1], &result[ntest]);
02955
02956 if (iuplo == 1) {
02957 i__3 = n;
02958 for (j = 1; j <= i__3; ++j) {
02959
02960 i__7 = 1, i__4 = j - kd;
02961 i__5 = j;
02962 for (i__ = max(i__7,i__4); i__ <= i__5; ++i__) {
02963 v[kd + 1 + i__ - j + j * v_dim1] = a[i__ + j *
02964 a_dim1];
02965
02966 }
02967
02968 }
02969 } else {
02970 i__3 = n;
02971 for (j = 1; j <= i__3; ++j) {
02972
02973 i__7 = n, i__4 = j + kd;
02974 i__5 = min(i__7,i__4);
02975 for (i__ = j; i__ <= i__5; ++i__) {
02976 v[i__ + 1 - j + j * v_dim1] = a[i__ + j * a_dim1];
02977
02978 }
02979
02980 }
02981 }
02982
02983 ntest += 2;
02984 s_copy(srnamc_1.srnamt, "DSBEV", (ftnlen)32, (ftnlen)5);
02985 dsbev_("N", uplo, &n, &kd, &v[v_offset], ldu, &d3[1], &z__[
02986 z_offset], ldu, &work[1], &iinfo);
02987 if (iinfo != 0) {
02988 io___91.ciunit = *nounit;
02989 s_wsfe(&io___91);
02990
02991 i__6[0] = 8, a__1[0] = "DSBEV(N,";
02992 i__6[1] = 1, a__1[1] = uplo;
02993 i__6[2] = 1, a__1[2] = ")";
02994 s_cat(ch__1, a__1, i__6, &c__3, (ftnlen)10);
02995 do_fio(&c__1, ch__1, (ftnlen)10);
02996 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
02997 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
02998 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
02999 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
03000 ;
03001 e_wsfe();
03002 *info = abs(iinfo);
03003 if (iinfo < 0) {
03004 return 0;
03005 } else {
03006 result[ntest] = ulpinv;
03007 goto L1180;
03008 }
03009 }
03010
03011
03012
03013 temp1 = 0.;
03014 temp2 = 0.;
03015 i__3 = n;
03016 for (j = 1; j <= i__3; ++j) {
03017
03018 d__3 = temp1, d__4 = (d__1 = d1[j], abs(d__1)), d__3 =
03019 max(d__3,d__4), d__4 = (d__2 = d3[j], abs(d__2));
03020 temp1 = max(d__3,d__4);
03021
03022 d__2 = temp2, d__3 = (d__1 = d1[j] - d3[j], abs(d__1));
03023 temp2 = max(d__2,d__3);
03024
03025 }
03026
03027 d__1 = unfl, d__2 = ulp * max(temp1,temp2);
03028 result[ntest] = temp2 / max(d__1,d__2);
03029
03030
03031
03032
03033 L1180:
03034 if (iuplo == 1) {
03035 i__3 = n;
03036 for (j = 1; j <= i__3; ++j) {
03037
03038 i__5 = 1, i__7 = j - kd;
03039 i__4 = j;
03040 for (i__ = max(i__5,i__7); i__ <= i__4; ++i__) {
03041 v[kd + 1 + i__ - j + j * v_dim1] = a[i__ + j *
03042 a_dim1];
03043
03044 }
03045
03046 }
03047 } else {
03048 i__3 = n;
03049 for (j = 1; j <= i__3; ++j) {
03050
03051 i__5 = n, i__7 = j + kd;
03052 i__4 = min(i__5,i__7);
03053 for (i__ = j; i__ <= i__4; ++i__) {
03054 v[i__ + 1 - j + j * v_dim1] = a[i__ + j * a_dim1];
03055
03056 }
03057
03058 }
03059 }
03060
03061 ++ntest;
03062 s_copy(srnamc_1.srnamt, "DSBEVX", (ftnlen)32, (ftnlen)6);
03063 dsbevx_("V", "A", uplo, &n, &kd, &v[v_offset], ldu, &u[
03064 u_offset], ldu, &vl, &vu, &il, &iu, &abstol, &m, &wa2[
03065 1], &z__[z_offset], ldu, &work[1], &iwork[1], &iwork[
03066 n * 5 + 1], &iinfo);
03067 if (iinfo != 0) {
03068 io___92.ciunit = *nounit;
03069 s_wsfe(&io___92);
03070
03071 i__6[0] = 11, a__1[0] = "DSBEVX(V,A,";
03072 i__6[1] = 1, a__1[1] = uplo;
03073 i__6[2] = 1, a__1[2] = ")";
03074 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
03075 do_fio(&c__1, ch__2, (ftnlen)13);
03076 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
03077 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
03078 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
03079 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
03080 ;
03081 e_wsfe();
03082 *info = abs(iinfo);
03083 if (iinfo < 0) {
03084 return 0;
03085 } else {
03086 result[ntest] = ulpinv;
03087 result[ntest + 1] = ulpinv;
03088 result[ntest + 2] = ulpinv;
03089 goto L1280;
03090 }
03091 }
03092
03093
03094
03095 dsyt21_(&c__1, uplo, &n, &c__0, &a[a_offset], ldu, &wa2[1], &
03096 d2[1], &z__[z_offset], ldu, &v[v_offset], ldu, &tau[1]
03097 , &work[1], &result[ntest]);
03098
03099 ntest += 2;
03100
03101 if (iuplo == 1) {
03102 i__3 = n;
03103 for (j = 1; j <= i__3; ++j) {
03104
03105 i__4 = 1, i__5 = j - kd;
03106 i__7 = j;
03107 for (i__ = max(i__4,i__5); i__ <= i__7; ++i__) {
03108 v[kd + 1 + i__ - j + j * v_dim1] = a[i__ + j *
03109 a_dim1];
03110
03111 }
03112
03113 }
03114 } else {
03115 i__3 = n;
03116 for (j = 1; j <= i__3; ++j) {
03117
03118 i__4 = n, i__5 = j + kd;
03119 i__7 = min(i__4,i__5);
03120 for (i__ = j; i__ <= i__7; ++i__) {
03121 v[i__ + 1 - j + j * v_dim1] = a[i__ + j * a_dim1];
03122
03123 }
03124
03125 }
03126 }
03127
03128 s_copy(srnamc_1.srnamt, "DSBEVX", (ftnlen)32, (ftnlen)6);
03129 dsbevx_("N", "A", uplo, &n, &kd, &v[v_offset], ldu, &u[
03130 u_offset], ldu, &vl, &vu, &il, &iu, &abstol, &m3, &
03131 wa3[1], &z__[z_offset], ldu, &work[1], &iwork[1], &
03132 iwork[n * 5 + 1], &iinfo);
03133 if (iinfo != 0) {
03134 io___93.ciunit = *nounit;
03135 s_wsfe(&io___93);
03136
03137 i__6[0] = 11, a__1[0] = "DSBEVX(N,A,";
03138 i__6[1] = 1, a__1[1] = uplo;
03139 i__6[2] = 1, a__1[2] = ")";
03140 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
03141 do_fio(&c__1, ch__2, (ftnlen)13);
03142 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
03143 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
03144 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
03145 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
03146 ;
03147 e_wsfe();
03148 *info = abs(iinfo);
03149 if (iinfo < 0) {
03150 return 0;
03151 } else {
03152 result[ntest] = ulpinv;
03153 goto L1280;
03154 }
03155 }
03156
03157
03158
03159 temp1 = 0.;
03160 temp2 = 0.;
03161 i__3 = n;
03162 for (j = 1; j <= i__3; ++j) {
03163
03164 d__3 = temp1, d__4 = (d__1 = wa2[j], abs(d__1)), d__3 =
03165 max(d__3,d__4), d__4 = (d__2 = wa3[j], abs(d__2));
03166 temp1 = max(d__3,d__4);
03167
03168 d__2 = temp2, d__3 = (d__1 = wa2[j] - wa3[j], abs(d__1));
03169 temp2 = max(d__2,d__3);
03170
03171 }
03172
03173 d__1 = unfl, d__2 = ulp * max(temp1,temp2);
03174 result[ntest] = temp2 / max(d__1,d__2);
03175
03176 L1280:
03177 ++ntest;
03178 if (iuplo == 1) {
03179 i__3 = n;
03180 for (j = 1; j <= i__3; ++j) {
03181
03182 i__7 = 1, i__4 = j - kd;
03183 i__5 = j;
03184 for (i__ = max(i__7,i__4); i__ <= i__5; ++i__) {
03185 v[kd + 1 + i__ - j + j * v_dim1] = a[i__ + j *
03186 a_dim1];
03187
03188 }
03189
03190 }
03191 } else {
03192 i__3 = n;
03193 for (j = 1; j <= i__3; ++j) {
03194
03195 i__7 = n, i__4 = j + kd;
03196 i__5 = min(i__7,i__4);
03197 for (i__ = j; i__ <= i__5; ++i__) {
03198 v[i__ + 1 - j + j * v_dim1] = a[i__ + j * a_dim1];
03199
03200 }
03201
03202 }
03203 }
03204
03205 s_copy(srnamc_1.srnamt, "DSBEVX", (ftnlen)32, (ftnlen)6);
03206 dsbevx_("V", "I", uplo, &n, &kd, &v[v_offset], ldu, &u[
03207 u_offset], ldu, &vl, &vu, &il, &iu, &abstol, &m2, &
03208 wa2[1], &z__[z_offset], ldu, &work[1], &iwork[1], &
03209 iwork[n * 5 + 1], &iinfo);
03210 if (iinfo != 0) {
03211 io___94.ciunit = *nounit;
03212 s_wsfe(&io___94);
03213
03214 i__6[0] = 11, a__1[0] = "DSBEVX(V,I,";
03215 i__6[1] = 1, a__1[1] = uplo;
03216 i__6[2] = 1, a__1[2] = ")";
03217 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
03218 do_fio(&c__1, ch__2, (ftnlen)13);
03219 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
03220 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
03221 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
03222 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
03223 ;
03224 e_wsfe();
03225 *info = abs(iinfo);
03226 if (iinfo < 0) {
03227 return 0;
03228 } else {
03229 result[ntest] = ulpinv;
03230 result[ntest + 1] = ulpinv;
03231 result[ntest + 2] = ulpinv;
03232 goto L1370;
03233 }
03234 }
03235
03236
03237
03238 dsyt22_(&c__1, uplo, &n, &m2, &c__0, &a[a_offset], ldu, &wa2[
03239 1], &d2[1], &z__[z_offset], ldu, &v[v_offset], ldu, &
03240 tau[1], &work[1], &result[ntest]);
03241
03242 ntest += 2;
03243
03244 if (iuplo == 1) {
03245 i__3 = n;
03246 for (j = 1; j <= i__3; ++j) {
03247
03248 i__5 = 1, i__7 = j - kd;
03249 i__4 = j;
03250 for (i__ = max(i__5,i__7); i__ <= i__4; ++i__) {
03251 v[kd + 1 + i__ - j + j * v_dim1] = a[i__ + j *
03252 a_dim1];
03253
03254 }
03255
03256 }
03257 } else {
03258 i__3 = n;
03259 for (j = 1; j <= i__3; ++j) {
03260
03261 i__5 = n, i__7 = j + kd;
03262 i__4 = min(i__5,i__7);
03263 for (i__ = j; i__ <= i__4; ++i__) {
03264 v[i__ + 1 - j + j * v_dim1] = a[i__ + j * a_dim1];
03265
03266 }
03267
03268 }
03269 }
03270
03271 s_copy(srnamc_1.srnamt, "DSBEVX", (ftnlen)32, (ftnlen)6);
03272 dsbevx_("N", "I", uplo, &n, &kd, &v[v_offset], ldu, &u[
03273 u_offset], ldu, &vl, &vu, &il, &iu, &abstol, &m3, &
03274 wa3[1], &z__[z_offset], ldu, &work[1], &iwork[1], &
03275 iwork[n * 5 + 1], &iinfo);
03276 if (iinfo != 0) {
03277 io___95.ciunit = *nounit;
03278 s_wsfe(&io___95);
03279
03280 i__6[0] = 11, a__1[0] = "DSBEVX(N,I,";
03281 i__6[1] = 1, a__1[1] = uplo;
03282 i__6[2] = 1, a__1[2] = ")";
03283 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
03284 do_fio(&c__1, ch__2, (ftnlen)13);
03285 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
03286 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
03287 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
03288 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
03289 ;
03290 e_wsfe();
03291 *info = abs(iinfo);
03292 if (iinfo < 0) {
03293 return 0;
03294 } else {
03295 result[ntest] = ulpinv;
03296 goto L1370;
03297 }
03298 }
03299
03300
03301
03302 temp1 = dsxt1_(&c__1, &wa2[1], &m2, &wa3[1], &m3, &abstol, &
03303 ulp, &unfl);
03304 temp2 = dsxt1_(&c__1, &wa3[1], &m3, &wa2[1], &m2, &abstol, &
03305 ulp, &unfl);
03306 if (n > 0) {
03307
03308 d__2 = abs(wa1[1]), d__3 = (d__1 = wa1[n], abs(d__1));
03309 temp3 = max(d__2,d__3);
03310 } else {
03311 temp3 = 0.;
03312 }
03313
03314 d__1 = unfl, d__2 = temp3 * ulp;
03315 result[ntest] = (temp1 + temp2) / max(d__1,d__2);
03316
03317 L1370:
03318 ++ntest;
03319 if (iuplo == 1) {
03320 i__3 = n;
03321 for (j = 1; j <= i__3; ++j) {
03322
03323 i__4 = 1, i__5 = j - kd;
03324 i__7 = j;
03325 for (i__ = max(i__4,i__5); i__ <= i__7; ++i__) {
03326 v[kd + 1 + i__ - j + j * v_dim1] = a[i__ + j *
03327 a_dim1];
03328
03329 }
03330
03331 }
03332 } else {
03333 i__3 = n;
03334 for (j = 1; j <= i__3; ++j) {
03335
03336 i__4 = n, i__5 = j + kd;
03337 i__7 = min(i__4,i__5);
03338 for (i__ = j; i__ <= i__7; ++i__) {
03339 v[i__ + 1 - j + j * v_dim1] = a[i__ + j * a_dim1];
03340
03341 }
03342
03343 }
03344 }
03345
03346 s_copy(srnamc_1.srnamt, "DSBEVX", (ftnlen)32, (ftnlen)6);
03347 dsbevx_("V", "V", uplo, &n, &kd, &v[v_offset], ldu, &u[
03348 u_offset], ldu, &vl, &vu, &il, &iu, &abstol, &m2, &
03349 wa2[1], &z__[z_offset], ldu, &work[1], &iwork[1], &
03350 iwork[n * 5 + 1], &iinfo);
03351 if (iinfo != 0) {
03352 io___96.ciunit = *nounit;
03353 s_wsfe(&io___96);
03354
03355 i__6[0] = 11, a__1[0] = "DSBEVX(V,V,";
03356 i__6[1] = 1, a__1[1] = uplo;
03357 i__6[2] = 1, a__1[2] = ")";
03358 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
03359 do_fio(&c__1, ch__2, (ftnlen)13);
03360 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
03361 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
03362 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
03363 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
03364 ;
03365 e_wsfe();
03366 *info = abs(iinfo);
03367 if (iinfo < 0) {
03368 return 0;
03369 } else {
03370 result[ntest] = ulpinv;
03371 result[ntest + 1] = ulpinv;
03372 result[ntest + 2] = ulpinv;
03373 goto L1460;
03374 }
03375 }
03376
03377
03378
03379 dsyt22_(&c__1, uplo, &n, &m2, &c__0, &a[a_offset], ldu, &wa2[
03380 1], &d2[1], &z__[z_offset], ldu, &v[v_offset], ldu, &
03381 tau[1], &work[1], &result[ntest]);
03382
03383 ntest += 2;
03384
03385 if (iuplo == 1) {
03386 i__3 = n;
03387 for (j = 1; j <= i__3; ++j) {
03388
03389 i__7 = 1, i__4 = j - kd;
03390 i__5 = j;
03391 for (i__ = max(i__7,i__4); i__ <= i__5; ++i__) {
03392 v[kd + 1 + i__ - j + j * v_dim1] = a[i__ + j *
03393 a_dim1];
03394
03395 }
03396
03397 }
03398 } else {
03399 i__3 = n;
03400 for (j = 1; j <= i__3; ++j) {
03401
03402 i__7 = n, i__4 = j + kd;
03403 i__5 = min(i__7,i__4);
03404 for (i__ = j; i__ <= i__5; ++i__) {
03405 v[i__ + 1 - j + j * v_dim1] = a[i__ + j * a_dim1];
03406
03407 }
03408
03409 }
03410 }
03411
03412 s_copy(srnamc_1.srnamt, "DSBEVX", (ftnlen)32, (ftnlen)6);
03413 dsbevx_("N", "V", uplo, &n, &kd, &v[v_offset], ldu, &u[
03414 u_offset], ldu, &vl, &vu, &il, &iu, &abstol, &m3, &
03415 wa3[1], &z__[z_offset], ldu, &work[1], &iwork[1], &
03416 iwork[n * 5 + 1], &iinfo);
03417 if (iinfo != 0) {
03418 io___97.ciunit = *nounit;
03419 s_wsfe(&io___97);
03420
03421 i__6[0] = 11, a__1[0] = "DSBEVX(N,V,";
03422 i__6[1] = 1, a__1[1] = uplo;
03423 i__6[2] = 1, a__1[2] = ")";
03424 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
03425 do_fio(&c__1, ch__2, (ftnlen)13);
03426 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
03427 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
03428 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
03429 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
03430 ;
03431 e_wsfe();
03432 *info = abs(iinfo);
03433 if (iinfo < 0) {
03434 return 0;
03435 } else {
03436 result[ntest] = ulpinv;
03437 goto L1460;
03438 }
03439 }
03440
03441 if (m3 == 0 && n > 0) {
03442 result[ntest] = ulpinv;
03443 goto L1460;
03444 }
03445
03446
03447
03448 temp1 = dsxt1_(&c__1, &wa2[1], &m2, &wa3[1], &m3, &abstol, &
03449 ulp, &unfl);
03450 temp2 = dsxt1_(&c__1, &wa3[1], &m3, &wa2[1], &m2, &abstol, &
03451 ulp, &unfl);
03452 if (n > 0) {
03453
03454 d__2 = abs(wa1[1]), d__3 = (d__1 = wa1[n], abs(d__1));
03455 temp3 = max(d__2,d__3);
03456 } else {
03457 temp3 = 0.;
03458 }
03459
03460 d__1 = unfl, d__2 = temp3 * ulp;
03461 result[ntest] = (temp1 + temp2) / max(d__1,d__2);
03462
03463 L1460:
03464
03465
03466
03467 dlacpy_(" ", &n, &n, &a[a_offset], lda, &v[v_offset], ldu);
03468
03469 ++ntest;
03470 s_copy(srnamc_1.srnamt, "DSYEVD", (ftnlen)32, (ftnlen)6);
03471 dsyevd_("V", uplo, &n, &a[a_offset], ldu, &d1[1], &work[1], &
03472 lwedc, &iwork[1], &liwedc, &iinfo);
03473 if (iinfo != 0) {
03474 io___98.ciunit = *nounit;
03475 s_wsfe(&io___98);
03476
03477 i__6[0] = 9, a__1[0] = "DSYEVD(V,";
03478 i__6[1] = 1, a__1[1] = uplo;
03479 i__6[2] = 1, a__1[2] = ")";
03480 s_cat(ch__3, a__1, i__6, &c__3, (ftnlen)11);
03481 do_fio(&c__1, ch__3, (ftnlen)11);
03482 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
03483 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
03484 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
03485 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
03486 ;
03487 e_wsfe();
03488 *info = abs(iinfo);
03489 if (iinfo < 0) {
03490 return 0;
03491 } else {
03492 result[ntest] = ulpinv;
03493 result[ntest + 1] = ulpinv;
03494 result[ntest + 2] = ulpinv;
03495 goto L1480;
03496 }
03497 }
03498
03499
03500
03501 dsyt21_(&c__1, uplo, &n, &c__0, &v[v_offset], ldu, &d1[1], &
03502 d2[1], &a[a_offset], ldu, &z__[z_offset], ldu, &tau[1]
03503 , &work[1], &result[ntest]);
03504
03505 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
03506
03507 ntest += 2;
03508 s_copy(srnamc_1.srnamt, "DSYEVD", (ftnlen)32, (ftnlen)6);
03509 dsyevd_("N", uplo, &n, &a[a_offset], ldu, &d3[1], &work[1], &
03510 lwedc, &iwork[1], &liwedc, &iinfo);
03511 if (iinfo != 0) {
03512 io___99.ciunit = *nounit;
03513 s_wsfe(&io___99);
03514
03515 i__6[0] = 9, a__1[0] = "DSYEVD(N,";
03516 i__6[1] = 1, a__1[1] = uplo;
03517 i__6[2] = 1, a__1[2] = ")";
03518 s_cat(ch__3, a__1, i__6, &c__3, (ftnlen)11);
03519 do_fio(&c__1, ch__3, (ftnlen)11);
03520 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
03521 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
03522 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
03523 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
03524 ;
03525 e_wsfe();
03526 *info = abs(iinfo);
03527 if (iinfo < 0) {
03528 return 0;
03529 } else {
03530 result[ntest] = ulpinv;
03531 goto L1480;
03532 }
03533 }
03534
03535
03536
03537 temp1 = 0.;
03538 temp2 = 0.;
03539 i__3 = n;
03540 for (j = 1; j <= i__3; ++j) {
03541
03542 d__3 = temp1, d__4 = (d__1 = d1[j], abs(d__1)), d__3 =
03543 max(d__3,d__4), d__4 = (d__2 = d3[j], abs(d__2));
03544 temp1 = max(d__3,d__4);
03545
03546 d__2 = temp2, d__3 = (d__1 = d1[j] - d3[j], abs(d__1));
03547 temp2 = max(d__2,d__3);
03548
03549 }
03550
03551 d__1 = unfl, d__2 = ulp * max(temp1,temp2);
03552 result[ntest] = temp2 / max(d__1,d__2);
03553
03554 L1480:
03555
03556
03557
03558 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
03559
03560
03561
03562
03563 if (iuplo == 1) {
03564 indx = 1;
03565 i__3 = n;
03566 for (j = 1; j <= i__3; ++j) {
03567 i__5 = j;
03568 for (i__ = 1; i__ <= i__5; ++i__) {
03569 work[indx] = a[i__ + j * a_dim1];
03570 ++indx;
03571
03572 }
03573
03574 }
03575 } else {
03576 indx = 1;
03577 i__3 = n;
03578 for (j = 1; j <= i__3; ++j) {
03579 i__5 = n;
03580 for (i__ = j; i__ <= i__5; ++i__) {
03581 work[indx] = a[i__ + j * a_dim1];
03582 ++indx;
03583
03584 }
03585
03586 }
03587 }
03588
03589 ++ntest;
03590 s_copy(srnamc_1.srnamt, "DSPEVD", (ftnlen)32, (ftnlen)6);
03591 i__3 = lwedc - indx + 1;
03592 dspevd_("V", uplo, &n, &work[1], &d1[1], &z__[z_offset], ldu,
03593 &work[indx], &i__3, &iwork[1], &liwedc, &iinfo);
03594 if (iinfo != 0) {
03595 io___100.ciunit = *nounit;
03596 s_wsfe(&io___100);
03597
03598 i__6[0] = 9, a__1[0] = "DSPEVD(V,";
03599 i__6[1] = 1, a__1[1] = uplo;
03600 i__6[2] = 1, a__1[2] = ")";
03601 s_cat(ch__3, a__1, i__6, &c__3, (ftnlen)11);
03602 do_fio(&c__1, ch__3, (ftnlen)11);
03603 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
03604 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
03605 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
03606 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
03607 ;
03608 e_wsfe();
03609 *info = abs(iinfo);
03610 if (iinfo < 0) {
03611 return 0;
03612 } else {
03613 result[ntest] = ulpinv;
03614 result[ntest + 1] = ulpinv;
03615 result[ntest + 2] = ulpinv;
03616 goto L1580;
03617 }
03618 }
03619
03620
03621
03622 dsyt21_(&c__1, uplo, &n, &c__0, &a[a_offset], lda, &d1[1], &
03623 d2[1], &z__[z_offset], ldu, &v[v_offset], ldu, &tau[1]
03624 , &work[1], &result[ntest]);
03625
03626 if (iuplo == 1) {
03627 indx = 1;
03628 i__3 = n;
03629 for (j = 1; j <= i__3; ++j) {
03630 i__5 = j;
03631 for (i__ = 1; i__ <= i__5; ++i__) {
03632
03633 work[indx] = a[i__ + j * a_dim1];
03634 ++indx;
03635
03636 }
03637
03638 }
03639 } else {
03640 indx = 1;
03641 i__3 = n;
03642 for (j = 1; j <= i__3; ++j) {
03643 i__5 = n;
03644 for (i__ = j; i__ <= i__5; ++i__) {
03645 work[indx] = a[i__ + j * a_dim1];
03646 ++indx;
03647
03648 }
03649
03650 }
03651 }
03652
03653 ntest += 2;
03654 s_copy(srnamc_1.srnamt, "DSPEVD", (ftnlen)32, (ftnlen)6);
03655 i__3 = lwedc - indx + 1;
03656 dspevd_("N", uplo, &n, &work[1], &d3[1], &z__[z_offset], ldu,
03657 &work[indx], &i__3, &iwork[1], &liwedc, &iinfo);
03658 if (iinfo != 0) {
03659 io___101.ciunit = *nounit;
03660 s_wsfe(&io___101);
03661
03662 i__6[0] = 9, a__1[0] = "DSPEVD(N,";
03663 i__6[1] = 1, a__1[1] = uplo;
03664 i__6[2] = 1, a__1[2] = ")";
03665 s_cat(ch__3, a__1, i__6, &c__3, (ftnlen)11);
03666 do_fio(&c__1, ch__3, (ftnlen)11);
03667 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
03668 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
03669 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
03670 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
03671 ;
03672 e_wsfe();
03673 *info = abs(iinfo);
03674 if (iinfo < 0) {
03675 return 0;
03676 } else {
03677 result[ntest] = ulpinv;
03678 goto L1580;
03679 }
03680 }
03681
03682
03683
03684 temp1 = 0.;
03685 temp2 = 0.;
03686 i__3 = n;
03687 for (j = 1; j <= i__3; ++j) {
03688
03689 d__3 = temp1, d__4 = (d__1 = d1[j], abs(d__1)), d__3 =
03690 max(d__3,d__4), d__4 = (d__2 = d3[j], abs(d__2));
03691 temp1 = max(d__3,d__4);
03692
03693 d__2 = temp2, d__3 = (d__1 = d1[j] - d3[j], abs(d__1));
03694 temp2 = max(d__2,d__3);
03695
03696 }
03697
03698 d__1 = unfl, d__2 = ulp * max(temp1,temp2);
03699 result[ntest] = temp2 / max(d__1,d__2);
03700 L1580:
03701
03702
03703
03704 if (jtype <= 7) {
03705 kd = 1;
03706 } else if (jtype >= 8 && jtype <= 15) {
03707
03708 i__3 = n - 1;
03709 kd = max(i__3,0);
03710 } else {
03711 kd = ihbw;
03712 }
03713
03714
03715
03716
03717 if (iuplo == 1) {
03718 i__3 = n;
03719 for (j = 1; j <= i__3; ++j) {
03720
03721 i__5 = 1, i__7 = j - kd;
03722 i__4 = j;
03723 for (i__ = max(i__5,i__7); i__ <= i__4; ++i__) {
03724 v[kd + 1 + i__ - j + j * v_dim1] = a[i__ + j *
03725 a_dim1];
03726
03727 }
03728
03729 }
03730 } else {
03731 i__3 = n;
03732 for (j = 1; j <= i__3; ++j) {
03733
03734 i__5 = n, i__7 = j + kd;
03735 i__4 = min(i__5,i__7);
03736 for (i__ = j; i__ <= i__4; ++i__) {
03737 v[i__ + 1 - j + j * v_dim1] = a[i__ + j * a_dim1];
03738
03739 }
03740
03741 }
03742 }
03743
03744 ++ntest;
03745 s_copy(srnamc_1.srnamt, "DSBEVD", (ftnlen)32, (ftnlen)6);
03746 dsbevd_("V", uplo, &n, &kd, &v[v_offset], ldu, &d1[1], &z__[
03747 z_offset], ldu, &work[1], &lwedc, &iwork[1], &liwedc,
03748 &iinfo);
03749 if (iinfo != 0) {
03750 io___102.ciunit = *nounit;
03751 s_wsfe(&io___102);
03752
03753 i__6[0] = 9, a__1[0] = "DSBEVD(V,";
03754 i__6[1] = 1, a__1[1] = uplo;
03755 i__6[2] = 1, a__1[2] = ")";
03756 s_cat(ch__3, a__1, i__6, &c__3, (ftnlen)11);
03757 do_fio(&c__1, ch__3, (ftnlen)11);
03758 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
03759 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
03760 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
03761 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
03762 ;
03763 e_wsfe();
03764 *info = abs(iinfo);
03765 if (iinfo < 0) {
03766 return 0;
03767 } else {
03768 result[ntest] = ulpinv;
03769 result[ntest + 1] = ulpinv;
03770 result[ntest + 2] = ulpinv;
03771 goto L1680;
03772 }
03773 }
03774
03775
03776
03777 dsyt21_(&c__1, uplo, &n, &c__0, &a[a_offset], lda, &d1[1], &
03778 d2[1], &z__[z_offset], ldu, &v[v_offset], ldu, &tau[1]
03779 , &work[1], &result[ntest]);
03780
03781 if (iuplo == 1) {
03782 i__3 = n;
03783 for (j = 1; j <= i__3; ++j) {
03784
03785 i__4 = 1, i__5 = j - kd;
03786 i__7 = j;
03787 for (i__ = max(i__4,i__5); i__ <= i__7; ++i__) {
03788 v[kd + 1 + i__ - j + j * v_dim1] = a[i__ + j *
03789 a_dim1];
03790
03791 }
03792
03793 }
03794 } else {
03795 i__3 = n;
03796 for (j = 1; j <= i__3; ++j) {
03797
03798 i__4 = n, i__5 = j + kd;
03799 i__7 = min(i__4,i__5);
03800 for (i__ = j; i__ <= i__7; ++i__) {
03801 v[i__ + 1 - j + j * v_dim1] = a[i__ + j * a_dim1];
03802
03803 }
03804
03805 }
03806 }
03807
03808 ntest += 2;
03809 s_copy(srnamc_1.srnamt, "DSBEVD", (ftnlen)32, (ftnlen)6);
03810 dsbevd_("N", uplo, &n, &kd, &v[v_offset], ldu, &d3[1], &z__[
03811 z_offset], ldu, &work[1], &lwedc, &iwork[1], &liwedc,
03812 &iinfo);
03813 if (iinfo != 0) {
03814 io___103.ciunit = *nounit;
03815 s_wsfe(&io___103);
03816
03817 i__6[0] = 9, a__1[0] = "DSBEVD(N,";
03818 i__6[1] = 1, a__1[1] = uplo;
03819 i__6[2] = 1, a__1[2] = ")";
03820 s_cat(ch__3, a__1, i__6, &c__3, (ftnlen)11);
03821 do_fio(&c__1, ch__3, (ftnlen)11);
03822 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
03823 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
03824 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
03825 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
03826 ;
03827 e_wsfe();
03828 *info = abs(iinfo);
03829 if (iinfo < 0) {
03830 return 0;
03831 } else {
03832 result[ntest] = ulpinv;
03833 goto L1680;
03834 }
03835 }
03836
03837
03838
03839 temp1 = 0.;
03840 temp2 = 0.;
03841 i__3 = n;
03842 for (j = 1; j <= i__3; ++j) {
03843
03844 d__3 = temp1, d__4 = (d__1 = d1[j], abs(d__1)), d__3 =
03845 max(d__3,d__4), d__4 = (d__2 = d3[j], abs(d__2));
03846 temp1 = max(d__3,d__4);
03847
03848 d__2 = temp2, d__3 = (d__1 = d1[j] - d3[j], abs(d__1));
03849 temp2 = max(d__2,d__3);
03850
03851 }
03852
03853 d__1 = unfl, d__2 = ulp * max(temp1,temp2);
03854 result[ntest] = temp2 / max(d__1,d__2);
03855
03856 L1680:
03857
03858
03859 dlacpy_(" ", &n, &n, &a[a_offset], lda, &v[v_offset], ldu);
03860 ++ntest;
03861 s_copy(srnamc_1.srnamt, "DSYEVR", (ftnlen)32, (ftnlen)6);
03862 i__3 = *liwork - (n << 1);
03863 dsyevr_("V", "A", uplo, &n, &a[a_offset], ldu, &vl, &vu, &il,
03864 &iu, &abstol, &m, &wa1[1], &z__[z_offset], ldu, &
03865 iwork[1], &work[1], lwork, &iwork[(n << 1) + 1], &
03866 i__3, &iinfo);
03867 if (iinfo != 0) {
03868 io___104.ciunit = *nounit;
03869 s_wsfe(&io___104);
03870
03871 i__6[0] = 11, a__1[0] = "DSYEVR(V,A,";
03872 i__6[1] = 1, a__1[1] = uplo;
03873 i__6[2] = 1, a__1[2] = ")";
03874 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
03875 do_fio(&c__1, ch__2, (ftnlen)13);
03876 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
03877 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
03878 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
03879 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
03880 ;
03881 e_wsfe();
03882 *info = abs(iinfo);
03883 if (iinfo < 0) {
03884 return 0;
03885 } else {
03886 result[ntest] = ulpinv;
03887 result[ntest + 1] = ulpinv;
03888 result[ntest + 2] = ulpinv;
03889 goto L1700;
03890 }
03891 }
03892
03893
03894
03895 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
03896
03897 dsyt21_(&c__1, uplo, &n, &c__0, &a[a_offset], ldu, &wa1[1], &
03898 d2[1], &z__[z_offset], ldu, &v[v_offset], ldu, &tau[1]
03899 , &work[1], &result[ntest]);
03900
03901 ntest += 2;
03902 s_copy(srnamc_1.srnamt, "DSYEVR", (ftnlen)32, (ftnlen)6);
03903 i__3 = *liwork - (n << 1);
03904 dsyevr_("N", "A", uplo, &n, &a[a_offset], ldu, &vl, &vu, &il,
03905 &iu, &abstol, &m2, &wa2[1], &z__[z_offset], ldu, &
03906 iwork[1], &work[1], lwork, &iwork[(n << 1) + 1], &
03907 i__3, &iinfo);
03908 if (iinfo != 0) {
03909 io___105.ciunit = *nounit;
03910 s_wsfe(&io___105);
03911
03912 i__6[0] = 11, a__1[0] = "DSYEVR(N,A,";
03913 i__6[1] = 1, a__1[1] = uplo;
03914 i__6[2] = 1, a__1[2] = ")";
03915 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
03916 do_fio(&c__1, ch__2, (ftnlen)13);
03917 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
03918 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
03919 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
03920 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
03921 ;
03922 e_wsfe();
03923 *info = abs(iinfo);
03924 if (iinfo < 0) {
03925 return 0;
03926 } else {
03927 result[ntest] = ulpinv;
03928 goto L1700;
03929 }
03930 }
03931
03932
03933
03934 temp1 = 0.;
03935 temp2 = 0.;
03936 i__3 = n;
03937 for (j = 1; j <= i__3; ++j) {
03938
03939 d__3 = temp1, d__4 = (d__1 = wa1[j], abs(d__1)), d__3 =
03940 max(d__3,d__4), d__4 = (d__2 = wa2[j], abs(d__2));
03941 temp1 = max(d__3,d__4);
03942
03943 d__2 = temp2, d__3 = (d__1 = wa1[j] - wa2[j], abs(d__1));
03944 temp2 = max(d__2,d__3);
03945
03946 }
03947
03948 d__1 = unfl, d__2 = ulp * max(temp1,temp2);
03949 result[ntest] = temp2 / max(d__1,d__2);
03950
03951 L1700:
03952
03953 ++ntest;
03954 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
03955 s_copy(srnamc_1.srnamt, "DSYEVR", (ftnlen)32, (ftnlen)6);
03956 i__3 = *liwork - (n << 1);
03957 dsyevr_("V", "I", uplo, &n, &a[a_offset], ldu, &vl, &vu, &il,
03958 &iu, &abstol, &m2, &wa2[1], &z__[z_offset], ldu, &
03959 iwork[1], &work[1], lwork, &iwork[(n << 1) + 1], &
03960 i__3, &iinfo);
03961 if (iinfo != 0) {
03962 io___106.ciunit = *nounit;
03963 s_wsfe(&io___106);
03964
03965 i__6[0] = 11, a__1[0] = "DSYEVR(V,I,";
03966 i__6[1] = 1, a__1[1] = uplo;
03967 i__6[2] = 1, a__1[2] = ")";
03968 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
03969 do_fio(&c__1, ch__2, (ftnlen)13);
03970 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
03971 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
03972 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
03973 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
03974 ;
03975 e_wsfe();
03976 *info = abs(iinfo);
03977 if (iinfo < 0) {
03978 return 0;
03979 } else {
03980 result[ntest] = ulpinv;
03981 result[ntest + 1] = ulpinv;
03982 result[ntest + 2] = ulpinv;
03983 goto L1710;
03984 }
03985 }
03986
03987
03988
03989 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
03990
03991 dsyt22_(&c__1, uplo, &n, &m2, &c__0, &a[a_offset], ldu, &wa2[
03992 1], &d2[1], &z__[z_offset], ldu, &v[v_offset], ldu, &
03993 tau[1], &work[1], &result[ntest]);
03994
03995 ntest += 2;
03996 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
03997 s_copy(srnamc_1.srnamt, "DSYEVR", (ftnlen)32, (ftnlen)6);
03998 i__3 = *liwork - (n << 1);
03999 dsyevr_("N", "I", uplo, &n, &a[a_offset], ldu, &vl, &vu, &il,
04000 &iu, &abstol, &m3, &wa3[1], &z__[z_offset], ldu, &
04001 iwork[1], &work[1], lwork, &iwork[(n << 1) + 1], &
04002 i__3, &iinfo);
04003 if (iinfo != 0) {
04004 io___107.ciunit = *nounit;
04005 s_wsfe(&io___107);
04006
04007 i__6[0] = 11, a__1[0] = "DSYEVR(N,I,";
04008 i__6[1] = 1, a__1[1] = uplo;
04009 i__6[2] = 1, a__1[2] = ")";
04010 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
04011 do_fio(&c__1, ch__2, (ftnlen)13);
04012 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
04013 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
04014 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
04015 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
04016 ;
04017 e_wsfe();
04018 *info = abs(iinfo);
04019 if (iinfo < 0) {
04020 return 0;
04021 } else {
04022 result[ntest] = ulpinv;
04023 goto L1710;
04024 }
04025 }
04026
04027
04028
04029 temp1 = dsxt1_(&c__1, &wa2[1], &m2, &wa3[1], &m3, &abstol, &
04030 ulp, &unfl);
04031 temp2 = dsxt1_(&c__1, &wa3[1], &m3, &wa2[1], &m2, &abstol, &
04032 ulp, &unfl);
04033
04034 d__1 = unfl, d__2 = ulp * temp3;
04035 result[ntest] = (temp1 + temp2) / max(d__1,d__2);
04036 L1710:
04037
04038 ++ntest;
04039 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
04040 s_copy(srnamc_1.srnamt, "DSYEVR", (ftnlen)32, (ftnlen)6);
04041 i__3 = *liwork - (n << 1);
04042 dsyevr_("V", "V", uplo, &n, &a[a_offset], ldu, &vl, &vu, &il,
04043 &iu, &abstol, &m2, &wa2[1], &z__[z_offset], ldu, &
04044 iwork[1], &work[1], lwork, &iwork[(n << 1) + 1], &
04045 i__3, &iinfo);
04046 if (iinfo != 0) {
04047 io___108.ciunit = *nounit;
04048 s_wsfe(&io___108);
04049
04050 i__6[0] = 11, a__1[0] = "DSYEVR(V,V,";
04051 i__6[1] = 1, a__1[1] = uplo;
04052 i__6[2] = 1, a__1[2] = ")";
04053 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
04054 do_fio(&c__1, ch__2, (ftnlen)13);
04055 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
04056 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
04057 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
04058 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
04059 ;
04060 e_wsfe();
04061 *info = abs(iinfo);
04062 if (iinfo < 0) {
04063 return 0;
04064 } else {
04065 result[ntest] = ulpinv;
04066 result[ntest + 1] = ulpinv;
04067 result[ntest + 2] = ulpinv;
04068 goto L700;
04069 }
04070 }
04071
04072
04073
04074 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
04075
04076 dsyt22_(&c__1, uplo, &n, &m2, &c__0, &a[a_offset], ldu, &wa2[
04077 1], &d2[1], &z__[z_offset], ldu, &v[v_offset], ldu, &
04078 tau[1], &work[1], &result[ntest]);
04079
04080 ntest += 2;
04081 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
04082 s_copy(srnamc_1.srnamt, "DSYEVR", (ftnlen)32, (ftnlen)6);
04083 i__3 = *liwork - (n << 1);
04084 dsyevr_("N", "V", uplo, &n, &a[a_offset], ldu, &vl, &vu, &il,
04085 &iu, &abstol, &m3, &wa3[1], &z__[z_offset], ldu, &
04086 iwork[1], &work[1], lwork, &iwork[(n << 1) + 1], &
04087 i__3, &iinfo);
04088 if (iinfo != 0) {
04089 io___109.ciunit = *nounit;
04090 s_wsfe(&io___109);
04091
04092 i__6[0] = 11, a__1[0] = "DSYEVR(N,V,";
04093 i__6[1] = 1, a__1[1] = uplo;
04094 i__6[2] = 1, a__1[2] = ")";
04095 s_cat(ch__2, a__1, i__6, &c__3, (ftnlen)13);
04096 do_fio(&c__1, ch__2, (ftnlen)13);
04097 do_fio(&c__1, (char *)&iinfo, (ftnlen)sizeof(integer));
04098 do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
04099 do_fio(&c__1, (char *)&jtype, (ftnlen)sizeof(integer));
04100 do_fio(&c__4, (char *)&ioldsd[0], (ftnlen)sizeof(integer))
04101 ;
04102 e_wsfe();
04103 *info = abs(iinfo);
04104 if (iinfo < 0) {
04105 return 0;
04106 } else {
04107 result[ntest] = ulpinv;
04108 goto L700;
04109 }
04110 }
04111
04112 if (m3 == 0 && n > 0) {
04113 result[ntest] = ulpinv;
04114 goto L700;
04115 }
04116
04117
04118
04119 temp1 = dsxt1_(&c__1, &wa2[1], &m2, &wa3[1], &m3, &abstol, &
04120 ulp, &unfl);
04121 temp2 = dsxt1_(&c__1, &wa3[1], &m3, &wa2[1], &m2, &abstol, &
04122 ulp, &unfl);
04123 if (n > 0) {
04124
04125 d__2 = abs(wa1[1]), d__3 = (d__1 = wa1[n], abs(d__1));
04126 temp3 = max(d__2,d__3);
04127 } else {
04128 temp3 = 0.;
04129 }
04130
04131 d__1 = unfl, d__2 = temp3 * ulp;
04132 result[ntest] = (temp1 + temp2) / max(d__1,d__2);
04133
04134 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
04135
04136
04137 }
04138
04139
04140
04141 ntestt += ntest;
04142
04143 dlafts_("DST", &n, &n, &jtype, &ntest, &result[1], ioldsd, thresh,
04144 nounit, &nerrs);
04145
04146 L1730:
04147 ;
04148 }
04149
04150 }
04151
04152
04153
04154 alasvm_("DST", nounit, &nerrs, &ntestt, &c__0);
04155
04156
04157 return 0;
04158
04159
04160
04161 }