ddrvst.c
Go to the documentation of this file.
00001 /* ddrvst.f -- translated by f2c (version 20061008).
00002    You must link the resulting object file with libf2c:
00003         on Microsoft Windows system, link with libf2c.lib;
00004         on Linux or Unix systems, link with .../path/to/libf2c.a -lm
00005         or, if you install libf2c.a in a standard place, with -lf2c -lm
00006         -- in that order, at the end of the command line, as in
00007                 cc *.o -lf2c -lm
00008         Source for libf2c is in /netlib/f2c/libf2c.zip, e.g.,
00009 
00010                 http://www.netlib.org/f2c/libf2c.zip
00011 */
00012 
00013 #include "f2c.h"
00014 #include "blaswrap.h"
00015 
00016 /* Common Block Declarations */
00017 
00018 struct {
00019     char srnamt[32];
00020 } srnamc_;
00021 
00022 #define srnamc_1 srnamc_
00023 
00024 /* Table of constant values */
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 /* Subroutine */ 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     /* Initialized data */
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     /* Format strings */
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     /* System generated locals */
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     /* Builtin functions */
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     /* Subroutine */ int s_copy(char *, char *, ftnlen, ftnlen), s_cat(char *,
00067              char **, integer *, integer *, ftnlen);
00068 
00069     /* Local variables */
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 /* Subroutine */ 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 /* Subroutine */ int dspev_(char *, char *, integer *, doublereal *
00091 , doublereal *, doublereal *, integer *, doublereal *, integer *);
00092     integer nmats;
00093     extern /* Subroutine */ int dstt21_(integer *, integer *, doublereal *, 
00094             doublereal *, doublereal *, doublereal *, doublereal *, integer *, 
00095              doublereal *, doublereal *);
00096     integer jsize;
00097     extern /* Subroutine */ 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 /* Subroutine */ 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 /* Subroutine */ int dlabad_(doublereal *, doublereal *);
00112     extern doublereal dlamch_(char *), dlarnd_(integer *, integer *);
00113     integer liwedc;
00114     extern /* Subroutine */ int dsbevd_(char *, char *, integer *, integer *, 
00115             doublereal *, integer *, doublereal *, doublereal *, integer *, 
00116             doublereal *, integer *, integer *, integer *, integer *);
00117     integer idumma[1];
00118     extern /* Subroutine */ int dlacpy_(char *, integer *, integer *, 
00119             doublereal *, integer *, doublereal *, integer *);
00120     integer ioldsd[4];
00121     extern /* Subroutine */ 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 /* Subroutine */ 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 /* Subroutine */ 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 /* Subroutine */ 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     /* Fortran I/O blocks */
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 /*  -- LAPACK test routine (version 3.1) -- */
00229 /*     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd.. */
00230 /*     November 2006 */
00231 
00232 /*     .. Scalar Arguments .. */
00233 /*     .. */
00234 /*     .. Array Arguments .. */
00235 /*     .. */
00236 
00237 /*  Purpose */
00238 /*  ======= */
00239 
00240 /*       DDRVST  checks the symmetric eigenvalue problem drivers. */
00241 
00242 /*               DSTEV computes all eigenvalues and, optionally, */
00243 /*               eigenvectors of a real symmetric tridiagonal matrix. */
00244 
00245 /*               DSTEVX computes selected eigenvalues and, optionally, */
00246 /*               eigenvectors of a real symmetric tridiagonal matrix. */
00247 
00248 /*               DSTEVR computes selected eigenvalues and, optionally, */
00249 /*               eigenvectors of a real symmetric tridiagonal matrix */
00250 /*               using the Relatively Robust Representation where it can. */
00251 
00252 /*               DSYEV computes all eigenvalues and, optionally, */
00253 /*               eigenvectors of a real symmetric matrix. */
00254 
00255 /*               DSYEVX computes selected eigenvalues and, optionally, */
00256 /*               eigenvectors of a real symmetric matrix. */
00257 
00258 /*               DSYEVR computes selected eigenvalues and, optionally, */
00259 /*               eigenvectors of a real symmetric matrix */
00260 /*               using the Relatively Robust Representation where it can. */
00261 
00262 /*               DSPEV computes all eigenvalues and, optionally, */
00263 /*               eigenvectors of a real symmetric matrix in packed */
00264 /*               storage. */
00265 
00266 /*               DSPEVX computes selected eigenvalues and, optionally, */
00267 /*               eigenvectors of a real symmetric matrix in packed */
00268 /*               storage. */
00269 
00270 /*               DSBEV computes all eigenvalues and, optionally, */
00271 /*               eigenvectors of a real symmetric band matrix. */
00272 
00273 /*               DSBEVX computes selected eigenvalues and, optionally, */
00274 /*               eigenvectors of a real symmetric band matrix. */
00275 
00276 /*               DSYEVD computes all eigenvalues and, optionally, */
00277 /*               eigenvectors of a real symmetric matrix using */
00278 /*               a divide and conquer algorithm. */
00279 
00280 /*               DSPEVD computes all eigenvalues and, optionally, */
00281 /*               eigenvectors of a real symmetric matrix in packed */
00282 /*               storage, using a divide and conquer algorithm. */
00283 
00284 /*               DSBEVD computes all eigenvalues and, optionally, */
00285 /*               eigenvectors of a real symmetric band matrix, */
00286 /*               using a divide and conquer algorithm. */
00287 
00288 /*       When DDRVST is called, a number of matrix "sizes" ("n's") and a */
00289 /*       number of matrix "types" are specified.  For each size ("n") */
00290 /*       and each type of matrix, one matrix will be generated and used */
00291 /*       to test the appropriate drivers.  For each matrix and each */
00292 /*       driver routine called, the following tests will be performed: */
00293 
00294 /*       (1)     | A - Z D Z' | / ( |A| n ulp ) */
00295 
00296 /*       (2)     | I - Z Z' | / ( n ulp ) */
00297 
00298 /*       (3)     | D1 - D2 | / ( |D1| ulp ) */
00299 
00300 /*       where Z is the matrix of eigenvectors returned when the */
00301 /*       eigenvector option is given and D1 and D2 are the eigenvalues */
00302 /*       returned with and without the eigenvector option. */
00303 
00304 /*       The "sizes" are specified by an array NN(1:NSIZES); the value of */
00305 /*       each element NN(j) specifies one size. */
00306 /*       The "types" are specified by a logical array DOTYPE( 1:NTYPES ); */
00307 /*       if DOTYPE(j) is .TRUE., then matrix type "j" will be generated. */
00308 /*       Currently, the list of possible types is: */
00309 
00310 /*       (1)  The zero matrix. */
00311 /*       (2)  The identity matrix. */
00312 
00313 /*       (3)  A diagonal matrix with evenly spaced eigenvalues */
00314 /*            1, ..., ULP  and random signs. */
00315 /*            (ULP = (first number larger than 1) - 1 ) */
00316 /*       (4)  A diagonal matrix with geometrically spaced eigenvalues */
00317 /*            1, ..., ULP  and random signs. */
00318 /*       (5)  A diagonal matrix with "clustered" eigenvalues */
00319 /*            1, ULP, ..., ULP and random signs. */
00320 
00321 /*       (6)  Same as (4), but multiplied by SQRT( overflow threshold ) */
00322 /*       (7)  Same as (4), but multiplied by SQRT( underflow threshold ) */
00323 
00324 /*       (8)  A matrix of the form  U' D U, where U is orthogonal and */
00325 /*            D has evenly spaced entries 1, ..., ULP with random signs */
00326 /*            on the diagonal. */
00327 
00328 /*       (9)  A matrix of the form  U' D U, where U is orthogonal and */
00329 /*            D has geometrically spaced entries 1, ..., ULP with random */
00330 /*            signs on the diagonal. */
00331 
00332 /*       (10) A matrix of the form  U' D U, where U is orthogonal and */
00333 /*            D has "clustered" entries 1, ULP,..., ULP with random */
00334 /*            signs on the diagonal. */
00335 
00336 /*       (11) Same as (8), but multiplied by SQRT( overflow threshold ) */
00337 /*       (12) Same as (8), but multiplied by SQRT( underflow threshold ) */
00338 
00339 /*       (13) Symmetric matrix with random entries chosen from (-1,1). */
00340 /*       (14) Same as (13), but multiplied by SQRT( overflow threshold ) */
00341 /*       (15) Same as (13), but multiplied by SQRT( underflow threshold ) */
00342 /*       (16) A band matrix with half bandwidth randomly chosen between */
00343 /*            0 and N-1, with evenly spaced eigenvalues 1, ..., ULP */
00344 /*            with random signs. */
00345 /*       (17) Same as (16), but multiplied by SQRT( overflow threshold ) */
00346 /*       (18) Same as (16), but multiplied by SQRT( underflow threshold ) */
00347 
00348 /*  Arguments */
00349 /*  ========= */
00350 
00351 /*  NSIZES  INTEGER */
00352 /*          The number of sizes of matrices to use.  If it is zero, */
00353 /*          DDRVST does nothing.  It must be at least zero. */
00354 /*          Not modified. */
00355 
00356 /*  NN      INTEGER array, dimension (NSIZES) */
00357 /*          An array containing the sizes to be used for the matrices. */
00358 /*          Zero values will be skipped.  The values must be at least */
00359 /*          zero. */
00360 /*          Not modified. */
00361 
00362 /*  NTYPES  INTEGER */
00363 /*          The number of elements in DOTYPE.   If it is zero, DDRVST */
00364 /*          does nothing.  It must be at least zero.  If it is MAXTYP+1 */
00365 /*          and NSIZES is 1, then an additional type, MAXTYP+1 is */
00366 /*          defined, which is to use whatever matrix is in A.  This */
00367 /*          is only useful if DOTYPE(1:MAXTYP) is .FALSE. and */
00368 /*          DOTYPE(MAXTYP+1) is .TRUE. . */
00369 /*          Not modified. */
00370 
00371 /*  DOTYPE  LOGICAL array, dimension (NTYPES) */
00372 /*          If DOTYPE(j) is .TRUE., then for each size in NN a */
00373 /*          matrix of that size and of type j will be generated. */
00374 /*          If NTYPES is smaller than the maximum number of types */
00375 /*          defined (PARAMETER MAXTYP), then types NTYPES+1 through */
00376 /*          MAXTYP will not be generated.  If NTYPES is larger */
00377 /*          than MAXTYP, DOTYPE(MAXTYP+1) through DOTYPE(NTYPES) */
00378 /*          will be ignored. */
00379 /*          Not modified. */
00380 
00381 /*  ISEED   INTEGER array, dimension (4) */
00382 /*          On entry ISEED specifies the seed of the random number */
00383 /*          generator. The array elements should be between 0 and 4095; */
00384 /*          if not they will be reduced mod 4096.  Also, ISEED(4) must */
00385 /*          be odd.  The random number generator uses a linear */
00386 /*          congruential sequence limited to small integers, and so */
00387 /*          should produce machine independent random numbers. The */
00388 /*          values of ISEED are changed on exit, and can be used in the */
00389 /*          next call to DDRVST to continue the same random number */
00390 /*          sequence. */
00391 /*          Modified. */
00392 
00393 /*  THRESH  DOUBLE PRECISION */
00394 /*          A test will count as "failed" if the "error", computed as */
00395 /*          described above, exceeds THRESH.  Note that the error */
00396 /*          is scaled to be O(1), so THRESH should be a reasonably */
00397 /*          small multiple of 1, e.g., 10 or 100.  In particular, */
00398 /*          it should not depend on the precision (single vs. double) */
00399 /*          or the size of the matrix.  It must be at least zero. */
00400 /*          Not modified. */
00401 
00402 /*  NOUNIT  INTEGER */
00403 /*          The FORTRAN unit number for printing out error messages */
00404 /*          (e.g., if a routine returns IINFO not equal to 0.) */
00405 /*          Not modified. */
00406 
00407 /*  A       DOUBLE PRECISION array, dimension (LDA , max(NN)) */
00408 /*          Used to hold the matrix whose eigenvalues are to be */
00409 /*          computed.  On exit, A contains the last matrix actually */
00410 /*          used. */
00411 /*          Modified. */
00412 
00413 /*  LDA     INTEGER */
00414 /*          The leading dimension of A.  It must be at */
00415 /*          least 1 and at least max( NN ). */
00416 /*          Not modified. */
00417 
00418 /*  D1      DOUBLE PRECISION array, dimension (max(NN)) */
00419 /*          The eigenvalues of A, as computed by DSTEQR simlutaneously */
00420 /*          with Z.  On exit, the eigenvalues in D1 correspond with the */
00421 /*          matrix in A. */
00422 /*          Modified. */
00423 
00424 /*  D2      DOUBLE PRECISION array, dimension (max(NN)) */
00425 /*          The eigenvalues of A, as computed by DSTEQR if Z is not */
00426 /*          computed.  On exit, the eigenvalues in D2 correspond with */
00427 /*          the matrix in A. */
00428 /*          Modified. */
00429 
00430 /*  D3      DOUBLE PRECISION array, dimension (max(NN)) */
00431 /*          The eigenvalues of A, as computed by DSTERF.  On exit, the */
00432 /*          eigenvalues in D3 correspond with the matrix in A. */
00433 /*          Modified. */
00434 
00435 /*  D4      DOUBLE PRECISION array, dimension */
00436 
00437 /*  EVEIGS  DOUBLE PRECISION array, dimension (max(NN)) */
00438 /*          The eigenvalues as computed by DSTEV('N', ... ) */
00439 /*          (I reserve the right to change this to the output of */
00440 /*          whichever algorithm computes the most accurate eigenvalues). */
00441 
00442 /*  WA1     DOUBLE PRECISION array, dimension */
00443 
00444 /*  WA2     DOUBLE PRECISION array, dimension */
00445 
00446 /*  WA3     DOUBLE PRECISION array, dimension */
00447 
00448 /*  U       DOUBLE PRECISION array, dimension (LDU, max(NN)) */
00449 /*          The orthogonal matrix computed by DSYTRD + DORGTR. */
00450 /*          Modified. */
00451 
00452 /*  LDU     INTEGER */
00453 /*          The leading dimension of U, Z, and V.  It must be at */
00454 /*          least 1 and at least max( NN ). */
00455 /*          Not modified. */
00456 
00457 /*  V       DOUBLE PRECISION array, dimension (LDU, max(NN)) */
00458 /*          The Housholder vectors computed by DSYTRD in reducing A to */
00459 /*          tridiagonal form. */
00460 /*          Modified. */
00461 
00462 /*  TAU     DOUBLE PRECISION array, dimension (max(NN)) */
00463 /*          The Householder factors computed by DSYTRD in reducing A */
00464 /*          to tridiagonal form. */
00465 /*          Modified. */
00466 
00467 /*  Z       DOUBLE PRECISION array, dimension (LDU, max(NN)) */
00468 /*          The orthogonal matrix of eigenvectors computed by DSTEQR, */
00469 /*          DPTEQR, and DSTEIN. */
00470 /*          Modified. */
00471 
00472 /*  WORK    DOUBLE PRECISION array, dimension (LWORK) */
00473 /*          Workspace. */
00474 /*          Modified. */
00475 
00476 /*  LWORK   INTEGER */
00477 /*          The number of entries in WORK.  This must be at least */
00478 /*          1 + 4 * Nmax + 2 * Nmax * lg Nmax + 4 * Nmax**2 */
00479 /*          where Nmax = max( NN(j), 2 ) and lg = log base 2. */
00480 /*          Not modified. */
00481 
00482 /*  IWORK   INTEGER array, */
00483 /*             dimension (6 + 6*Nmax + 5 * Nmax * lg Nmax ) */
00484 /*          where Nmax = max( NN(j), 2 ) and lg = log base 2. */
00485 /*          Workspace. */
00486 /*          Modified. */
00487 
00488 /*  RESULT  DOUBLE PRECISION array, dimension (105) */
00489 /*          The values computed by the tests described above. */
00490 /*          The values are currently limited to 1/ulp, to avoid */
00491 /*          overflow. */
00492 /*          Modified. */
00493 
00494 /*  INFO    INTEGER */
00495 /*          If 0, then everything ran OK. */
00496 /*           -1: NSIZES < 0 */
00497 /*           -2: Some NN(j) < 0 */
00498 /*           -3: NTYPES < 0 */
00499 /*           -5: THRESH < 0 */
00500 /*           -9: LDA < 1 or LDA < NMAX, where NMAX is max( NN(j) ). */
00501 /*          -16: LDU < 1 or LDU < NMAX. */
00502 /*          -21: LWORK too small. */
00503 /*          If  DLATMR, DLATMS, DSYTRD, DORGTR, DSTEQR, DSTERF, */
00504 /*              or DORMTR returns an error code, the */
00505 /*              absolute value of it is returned. */
00506 /*          Modified. */
00507 
00508 /* ----------------------------------------------------------------------- */
00509 
00510 /*       Some Local Variables and Parameters: */
00511 /*       ---- ----- --------- --- ---------- */
00512 /*       ZERO, ONE       Real 0 and 1. */
00513 /*       MAXTYP          The number of types defined. */
00514 /*       NTEST           The number of tests performed, or which can */
00515 /*                       be performed so far, for the current matrix. */
00516 /*       NTESTT          The total number of tests performed so far. */
00517 /*       NMAX            Largest value in NN. */
00518 /*       NMATS           The number of matrices generated so far. */
00519 /*       NERRS           The number of tests which have exceeded THRESH */
00520 /*                       so far (computed by DLAFTS). */
00521 /*       COND, IMODE     Values to be passed to the matrix generators. */
00522 /*       ANORM           Norm of A; passed to matrix generators. */
00523 
00524 /*       OVFL, UNFL      Overflow and underflow thresholds. */
00525 /*       ULP, ULPINV     Finest relative precision and its inverse. */
00526 /*       RTOVFL, RTUNFL  Square roots of the previous 2 values. */
00527 /*               The following four arrays decode JTYPE: */
00528 /*       KTYPE(j)        The general type (1-10) for type "j". */
00529 /*       KMODE(j)        The MODE value to be passed to the matrix */
00530 /*                       generator for type "j". */
00531 /*       KMAGN(j)        The order of magnitude ( O(1), */
00532 /*                       O(overflow^(1/2) ), O(underflow^(1/2) ) */
00533 
00534 /*     The tests performed are:                 Routine tested */
00535 /*    1= | A - U S U' | / ( |A| n ulp )         DSTEV('V', ... ) */
00536 /*    2= | I - U U' | / ( n ulp )               DSTEV('V', ... ) */
00537 /*    3= |D(with Z) - D(w/o Z)| / (|D| ulp)     DSTEV('N', ... ) */
00538 /*    4= | A - U S U' | / ( |A| n ulp )         DSTEVX('V','A', ... ) */
00539 /*    5= | I - U U' | / ( n ulp )               DSTEVX('V','A', ... ) */
00540 /*    6= |D(with Z) - EVEIGS| / (|D| ulp)       DSTEVX('N','A', ... ) */
00541 /*    7= | A - U S U' | / ( |A| n ulp )         DSTEVR('V','A', ... ) */
00542 /*    8= | I - U U' | / ( n ulp )               DSTEVR('V','A', ... ) */
00543 /*    9= |D(with Z) - EVEIGS| / (|D| ulp)       DSTEVR('N','A', ... ) */
00544 /*    10= | A - U S U' | / ( |A| n ulp )        DSTEVX('V','I', ... ) */
00545 /*    11= | I - U U' | / ( n ulp )              DSTEVX('V','I', ... ) */
00546 /*    12= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSTEVX('N','I', ... ) */
00547 /*    13= | A - U S U' | / ( |A| n ulp )        DSTEVX('V','V', ... ) */
00548 /*    14= | I - U U' | / ( n ulp )              DSTEVX('V','V', ... ) */
00549 /*    15= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSTEVX('N','V', ... ) */
00550 /*    16= | A - U S U' | / ( |A| n ulp )        DSTEVD('V', ... ) */
00551 /*    17= | I - U U' | / ( n ulp )              DSTEVD('V', ... ) */
00552 /*    18= |D(with Z) - EVEIGS| / (|D| ulp)      DSTEVD('N', ... ) */
00553 /*    19= | A - U S U' | / ( |A| n ulp )        DSTEVR('V','I', ... ) */
00554 /*    20= | I - U U' | / ( n ulp )              DSTEVR('V','I', ... ) */
00555 /*    21= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSTEVR('N','I', ... ) */
00556 /*    22= | A - U S U' | / ( |A| n ulp )        DSTEVR('V','V', ... ) */
00557 /*    23= | I - U U' | / ( n ulp )              DSTEVR('V','V', ... ) */
00558 /*    24= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSTEVR('N','V', ... ) */
00559 
00560 /*    25= | A - U S U' | / ( |A| n ulp )        DSYEV('L','V', ... ) */
00561 /*    26= | I - U U' | / ( n ulp )              DSYEV('L','V', ... ) */
00562 /*    27= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSYEV('L','N', ... ) */
00563 /*    28= | A - U S U' | / ( |A| n ulp )        DSYEVX('L','V','A', ... ) */
00564 /*    29= | I - U U' | / ( n ulp )              DSYEVX('L','V','A', ... ) */
00565 /*    30= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSYEVX('L','N','A', ... ) */
00566 /*    31= | A - U S U' | / ( |A| n ulp )        DSYEVX('L','V','I', ... ) */
00567 /*    32= | I - U U' | / ( n ulp )              DSYEVX('L','V','I', ... ) */
00568 /*    33= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSYEVX('L','N','I', ... ) */
00569 /*    34= | A - U S U' | / ( |A| n ulp )        DSYEVX('L','V','V', ... ) */
00570 /*    35= | I - U U' | / ( n ulp )              DSYEVX('L','V','V', ... ) */
00571 /*    36= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSYEVX('L','N','V', ... ) */
00572 /*    37= | A - U S U' | / ( |A| n ulp )        DSPEV('L','V', ... ) */
00573 /*    38= | I - U U' | / ( n ulp )              DSPEV('L','V', ... ) */
00574 /*    39= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSPEV('L','N', ... ) */
00575 /*    40= | A - U S U' | / ( |A| n ulp )        DSPEVX('L','V','A', ... ) */
00576 /*    41= | I - U U' | / ( n ulp )              DSPEVX('L','V','A', ... ) */
00577 /*    42= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSPEVX('L','N','A', ... ) */
00578 /*    43= | A - U S U' | / ( |A| n ulp )        DSPEVX('L','V','I', ... ) */
00579 /*    44= | I - U U' | / ( n ulp )              DSPEVX('L','V','I', ... ) */
00580 /*    45= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSPEVX('L','N','I', ... ) */
00581 /*    46= | A - U S U' | / ( |A| n ulp )        DSPEVX('L','V','V', ... ) */
00582 /*    47= | I - U U' | / ( n ulp )              DSPEVX('L','V','V', ... ) */
00583 /*    48= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSPEVX('L','N','V', ... ) */
00584 /*    49= | A - U S U' | / ( |A| n ulp )        DSBEV('L','V', ... ) */
00585 /*    50= | I - U U' | / ( n ulp )              DSBEV('L','V', ... ) */
00586 /*    51= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSBEV('L','N', ... ) */
00587 /*    52= | A - U S U' | / ( |A| n ulp )        DSBEVX('L','V','A', ... ) */
00588 /*    53= | I - U U' | / ( n ulp )              DSBEVX('L','V','A', ... ) */
00589 /*    54= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSBEVX('L','N','A', ... ) */
00590 /*    55= | A - U S U' | / ( |A| n ulp )        DSBEVX('L','V','I', ... ) */
00591 /*    56= | I - U U' | / ( n ulp )              DSBEVX('L','V','I', ... ) */
00592 /*    57= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSBEVX('L','N','I', ... ) */
00593 /*    58= | A - U S U' | / ( |A| n ulp )        DSBEVX('L','V','V', ... ) */
00594 /*    59= | I - U U' | / ( n ulp )              DSBEVX('L','V','V', ... ) */
00595 /*    60= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSBEVX('L','N','V', ... ) */
00596 /*    61= | A - U S U' | / ( |A| n ulp )        DSYEVD('L','V', ... ) */
00597 /*    62= | I - U U' | / ( n ulp )              DSYEVD('L','V', ... ) */
00598 /*    63= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSYEVD('L','N', ... ) */
00599 /*    64= | A - U S U' | / ( |A| n ulp )        DSPEVD('L','V', ... ) */
00600 /*    65= | I - U U' | / ( n ulp )              DSPEVD('L','V', ... ) */
00601 /*    66= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSPEVD('L','N', ... ) */
00602 /*    67= | A - U S U' | / ( |A| n ulp )        DSBEVD('L','V', ... ) */
00603 /*    68= | I - U U' | / ( n ulp )              DSBEVD('L','V', ... ) */
00604 /*    69= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSBEVD('L','N', ... ) */
00605 /*    70= | A - U S U' | / ( |A| n ulp )        DSYEVR('L','V','A', ... ) */
00606 /*    71= | I - U U' | / ( n ulp )              DSYEVR('L','V','A', ... ) */
00607 /*    72= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSYEVR('L','N','A', ... ) */
00608 /*    73= | A - U S U' | / ( |A| n ulp )        DSYEVR('L','V','I', ... ) */
00609 /*    74= | I - U U' | / ( n ulp )              DSYEVR('L','V','I', ... ) */
00610 /*    75= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSYEVR('L','N','I', ... ) */
00611 /*    76= | A - U S U' | / ( |A| n ulp )        DSYEVR('L','V','V', ... ) */
00612 /*    77= | I - U U' | / ( n ulp )              DSYEVR('L','V','V', ... ) */
00613 /*    78= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSYEVR('L','N','V', ... ) */
00614 
00615 /*    Tests 25 through 78 are repeated (as tests 79 through 132) */
00616 /*    with UPLO='U' */
00617 
00618 /*    To be added in 1999 */
00619 
00620 /*    79= | A - U S U' | / ( |A| n ulp )        DSPEVR('L','V','A', ... ) */
00621 /*    80= | I - U U' | / ( n ulp )              DSPEVR('L','V','A', ... ) */
00622 /*    81= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSPEVR('L','N','A', ... ) */
00623 /*    82= | A - U S U' | / ( |A| n ulp )        DSPEVR('L','V','I', ... ) */
00624 /*    83= | I - U U' | / ( n ulp )              DSPEVR('L','V','I', ... ) */
00625 /*    84= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSPEVR('L','N','I', ... ) */
00626 /*    85= | A - U S U' | / ( |A| n ulp )        DSPEVR('L','V','V', ... ) */
00627 /*    86= | I - U U' | / ( n ulp )              DSPEVR('L','V','V', ... ) */
00628 /*    87= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSPEVR('L','N','V', ... ) */
00629 /*    88= | A - U S U' | / ( |A| n ulp )        DSBEVR('L','V','A', ... ) */
00630 /*    89= | I - U U' | / ( n ulp )              DSBEVR('L','V','A', ... ) */
00631 /*    90= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSBEVR('L','N','A', ... ) */
00632 /*    91= | A - U S U' | / ( |A| n ulp )        DSBEVR('L','V','I', ... ) */
00633 /*    92= | I - U U' | / ( n ulp )              DSBEVR('L','V','I', ... ) */
00634 /*    93= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSBEVR('L','N','I', ... ) */
00635 /*    94= | A - U S U' | / ( |A| n ulp )        DSBEVR('L','V','V', ... ) */
00636 /*    95= | I - U U' | / ( n ulp )              DSBEVR('L','V','V', ... ) */
00637 /*    96= |D(with Z) - D(w/o Z)| / (|D| ulp)    DSBEVR('L','N','V', ... ) */
00638 
00639 
00640 /*  ===================================================================== */
00641 
00642 /*     .. Parameters .. */
00643 /*     .. */
00644 /*     .. Local Scalars .. */
00645 /*     .. */
00646 /*     .. Local Arrays .. */
00647 /*     .. */
00648 /*     .. External Functions .. */
00649 /*     .. */
00650 /*     .. External Subroutines .. */
00651 /*     .. */
00652 /*     .. Scalars in Common .. */
00653 /*     .. */
00654 /*     .. Common blocks .. */
00655 /*     .. */
00656 /*     .. Intrinsic Functions .. */
00657 /*     .. */
00658 /*     .. Data statements .. */
00659     /* Parameter adjustments */
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     /* Function Body */
00689 /*     .. */
00690 /*     .. Executable Statements .. */
00691 
00692 /*     Keep ftrnchek happy */
00693 
00694     vl = 0.;
00695     vu = 0.;
00696 
00697 /*     1)      Check for errors */
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 /* Computing MAX */
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 /* L10: */
00713     }
00714 
00715 /*     Check for errors */
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 /* if(complicated condition) */ {
00728 /* Computing 2nd power */
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 /*     Quick return if nothing to do */
00742 
00743     if (*nsizes == 0 || *ntypes == 0) {
00744         return 0;
00745     }
00746 
00747 /*     More Important constants */
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 /*     Loop over sizes, types */
00758 
00759     for (i__ = 1; i__ <= 4; ++i__) {
00760         iseed2[i__ - 1] = iseed[i__];
00761         iseed3[i__ - 1] = iseed[i__];
00762 /* L20: */
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 /* Computing 2nd power */
00781             i__2 = n;
00782             lwedc = (n << 2) + 1 + (n << 1) * lgn + (i__2 * i__2 << 2);
00783 /*           LIWEDC = 6 + 6*N + 5*N*LGN */
00784             liwedc = n * 5 + 3;
00785         } else {
00786             lwedc = 9;
00787 /*           LIWEDC = 12 */
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 /* L30: */
00810             }
00811 
00812 /*           2)      Compute "A" */
00813 
00814 /*                   Control parameters: */
00815 
00816 /*               KMAGN  KMODE        KTYPE */
00817 /*           =1  O(1)   clustered 1  zero */
00818 /*           =2  large  clustered 2  identity */
00819 /*           =3  small  exponential  (none) */
00820 /*           =4         arithmetic   diagonal, (w/ eigenvalues) */
00821 /*           =5         random log   symmetric, w/ eigenvalues */
00822 /*           =6         random       (none) */
00823 /*           =7                      random diagonal */
00824 /*           =8                      random symmetric */
00825 /*           =9                      band symmetric, w/ eigenvalues */
00826 
00827             if (mtypes > 18) {
00828                 goto L110;
00829             }
00830 
00831             itype = ktype[jtype - 1];
00832             imode = kmode[jtype - 1];
00833 
00834 /*           Compute norm */
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 /*           Special Matrices -- Identity & Jordan block */
00861 
00862 /*                   Zero */
00863 
00864             if (itype == 1) {
00865                 iinfo = 0;
00866 
00867             } else if (itype == 2) {
00868 
00869 /*              Identity */
00870 
00871                 i__3 = n;
00872                 for (jcol = 1; jcol <= i__3; ++jcol) {
00873                     a[jcol + jcol * a_dim1] = anorm;
00874 /* L80: */
00875                 }
00876 
00877             } else if (itype == 4) {
00878 
00879 /*              Diagonal Matrix, [Eigen]values Specified */
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 /*              Symmetric, eigenvalues specified */
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 /*              Diagonal, random eigenvalues */
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 /*              Symmetric, random eigenvalues */
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 /*              Symmetric banded, eigenvalues specified */
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 /*              Store as dense matrix for most routines. */
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 /* Computing MAX */
00931                     i__4 = 1, i__5 = idiag + 1;
00932                     j1 = max(i__4,i__5);
00933 /* Computing MIN */
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 /* L90: */
00941                     }
00942 /* L100: */
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 /*           3)      If matrix is tridiagonal, call DSTEV and DSTEVX. */
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 /* L120: */
00985                 }
00986                 i__3 = n - 1;
00987                 for (i__ = 1; i__ <= i__3; ++i__) {
00988                     d2[i__] = a[i__ + 1 + i__ * a_dim1];
00989 /* L130: */
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 /*              Do tests 1 and 2. */
01016 
01017                 i__3 = n;
01018                 for (i__ = 1; i__ <= i__3; ++i__) {
01019                     d3[i__] = a[i__ + i__ * a_dim1];
01020 /* L140: */
01021                 }
01022                 i__3 = n - 1;
01023                 for (i__ = 1; i__ <= i__3; ++i__) {
01024                     d4[i__] = a[i__ + 1 + i__ * a_dim1];
01025 /* L150: */
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 /* L160: */
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 /*              Do test 3. */
01059 
01060                 temp1 = 0.;
01061                 temp2 = 0.;
01062                 i__3 = n;
01063                 for (j = 1; j <= i__3; ++j) {
01064 /* Computing MAX */
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 /* Computing MAX */
01069                     d__2 = temp2, d__3 = (d__1 = d1[j] - d3[j], abs(d__1));
01070                     temp2 = max(d__2,d__3);
01071 /* L170: */
01072                 }
01073 /* Computing MAX */
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 /* L190: */
01085                 }
01086                 i__3 = n - 1;
01087                 for (i__ = 1; i__ <= i__3; ++i__) {
01088                     d2[i__] = a[i__ + 1 + i__ * a_dim1];
01089 /* L200: */
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 /* Computing MAX */
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 /*              Do tests 4 and 5. */
01124 
01125                 i__3 = n;
01126                 for (i__ = 1; i__ <= i__3; ++i__) {
01127                     d3[i__] = a[i__ + i__ * a_dim1];
01128 /* L210: */
01129                 }
01130                 i__3 = n - 1;
01131                 for (i__ = 1; i__ <= i__3; ++i__) {
01132                     d4[i__] = a[i__ + 1 + i__ * a_dim1];
01133 /* L220: */
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 /* L230: */
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 /*              Do test 6. */
01168 
01169                 temp1 = 0.;
01170                 temp2 = 0.;
01171                 i__3 = n;
01172                 for (j = 1; j <= i__3; ++j) {
01173 /* Computing MAX */
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 /* Computing MAX */
01179                     d__2 = temp2, d__3 = (d__1 = wa2[j] - eveigs[j], abs(d__1)
01180                             );
01181                     temp2 = max(d__2,d__3);
01182 /* L240: */
01183                 }
01184 /* Computing MAX */
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 /* L260: */
01195                 }
01196                 i__3 = n - 1;
01197                 for (i__ = 1; i__ <= i__3; ++i__) {
01198                     d2[i__] = a[i__ + 1 + i__ * a_dim1];
01199 /* L270: */
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 /* Computing MAX */
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 /*              Do tests 7 and 8. */
01234 
01235                 i__3 = n;
01236                 for (i__ = 1; i__ <= i__3; ++i__) {
01237                     d3[i__] = a[i__ + i__ * a_dim1];
01238 /* L280: */
01239                 }
01240                 i__3 = n - 1;
01241                 for (i__ = 1; i__ <= i__3; ++i__) {
01242                     d4[i__] = a[i__ + 1 + i__ * a_dim1];
01243 /* L290: */
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 /* L300: */
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 /*              Do test 9. */
01279 
01280                 temp1 = 0.;
01281                 temp2 = 0.;
01282                 i__3 = n;
01283                 for (j = 1; j <= i__3; ++j) {
01284 /* Computing MAX */
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 /* Computing MAX */
01290                     d__2 = temp2, d__3 = (d__1 = wa2[j] - eveigs[j], abs(d__1)
01291                             );
01292                     temp2 = max(d__2,d__3);
01293 /* L310: */
01294                 }
01295 /* Computing MAX */
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 /* L330: */
01307                 }
01308                 i__3 = n - 1;
01309                 for (i__ = 1; i__ <= i__3; ++i__) {
01310                     d2[i__] = a[i__ + 1 + i__ * a_dim1];
01311 /* L340: */
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 /*              Do tests 10 and 11. */
01339 
01340                 i__3 = n;
01341                 for (i__ = 1; i__ <= i__3; ++i__) {
01342                     d3[i__] = a[i__ + i__ * a_dim1];
01343 /* L350: */
01344                 }
01345                 i__3 = n - 1;
01346                 for (i__ = 1; i__ <= i__3; ++i__) {
01347                     d4[i__] = a[i__ + 1 + i__ * a_dim1];
01348 /* L360: */
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 /* L370: */
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 /*              Do test 12. */
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 /* Computing MAX */
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 /* Computing MAX */
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 /* Computing MAX */
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 /* Computing MAX */
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 /* Computing MAX */
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 /* L390: */
01433                 }
01434                 i__3 = n - 1;
01435                 for (i__ = 1; i__ <= i__3; ++i__) {
01436                     d2[i__] = a[i__ + 1 + i__ * a_dim1];
01437 /* L400: */
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 /*              Do tests 13 and 14. */
01472 
01473                 i__3 = n;
01474                 for (i__ = 1; i__ <= i__3; ++i__) {
01475                     d3[i__] = a[i__ + i__ * a_dim1];
01476 /* L410: */
01477                 }
01478                 i__3 = n - 1;
01479                 for (i__ = 1; i__ <= i__3; ++i__) {
01480                     d4[i__] = a[i__ + 1 + i__ * a_dim1];
01481 /* L420: */
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 /* L430: */
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 /*              Do test 15. */
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 /* Computing MAX */
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 /* L450: */
01533                 }
01534                 i__3 = n - 1;
01535                 for (i__ = 1; i__ <= i__3; ++i__) {
01536                     d2[i__] = a[i__ + 1 + i__ * a_dim1];
01537 /* L460: */
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 /*              Do tests 16 and 17. */
01564 
01565                 i__3 = n;
01566                 for (i__ = 1; i__ <= i__3; ++i__) {
01567                     d3[i__] = a[i__ + i__ * a_dim1];
01568 /* L470: */
01569                 }
01570                 i__3 = n - 1;
01571                 for (i__ = 1; i__ <= i__3; ++i__) {
01572                     d4[i__] = a[i__ + 1 + i__ * a_dim1];
01573 /* L480: */
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 /* L490: */
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 /*              Do test 18. */
01607 
01608                 temp1 = 0.;
01609                 temp2 = 0.;
01610                 i__3 = n;
01611                 for (j = 1; j <= i__3; ++j) {
01612 /* Computing MAX */
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 /* Computing MAX */
01617                     d__2 = temp2, d__3 = (d__1 = eveigs[j] - d3[j], abs(d__1))
01618                             ;
01619                     temp2 = max(d__2,d__3);
01620 /* L500: */
01621                 }
01622 /* Computing MAX */
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 /* L520: */
01633                 }
01634                 i__3 = n - 1;
01635                 for (i__ = 1; i__ <= i__3; ++i__) {
01636                     d2[i__] = a[i__ + 1 + i__ * a_dim1];
01637 /* L530: */
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 /*              DO tests 19 and 20. */
01666 
01667                 i__3 = n;
01668                 for (i__ = 1; i__ <= i__3; ++i__) {
01669                     d3[i__] = a[i__ + i__ * a_dim1];
01670 /* L540: */
01671                 }
01672                 i__3 = n - 1;
01673                 for (i__ = 1; i__ <= i__3; ++i__) {
01674                     d4[i__] = a[i__ + 1 + i__ * a_dim1];
01675 /* L550: */
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 /* L560: */
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 /*              Do test 21. */
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 /* Computing MAX */
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 /* Computing MAX */
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 /* Computing MAX */
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 /* Computing MAX */
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 /* Computing MAX */
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 /* L580: */
01761                 }
01762                 i__3 = n - 1;
01763                 for (i__ = 1; i__ <= i__3; ++i__) {
01764                     d2[i__] = a[i__ + 1 + i__ * a_dim1];
01765 /* L590: */
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 /*              Do tests 22 and 23. */
01801 
01802                 i__3 = n;
01803                 for (i__ = 1; i__ <= i__3; ++i__) {
01804                     d3[i__] = a[i__ + i__ * a_dim1];
01805 /* L600: */
01806                 }
01807                 i__3 = n - 1;
01808                 for (i__ = 1; i__ <= i__3; ++i__) {
01809                     d4[i__] = a[i__ + 1 + i__ * a_dim1];
01810 /* L610: */
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 /* L620: */
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 /*              Do test 24. */
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 /* Computing MAX */
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 /* L640: */
01866                 }
01867                 ntest = 24;
01868             }
01869 
01870 /*           Perform remaining tests storing upper or lower triangular */
01871 /*           part of matrix. */
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 /*              4)      Call DSYEV and DSYEVX. */
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 /* Writing concatenation */
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 /*              Do tests 25 and 26 (or +54) */
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 /* Writing concatenation */
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 /*              Do test 27 (or +54) */
01951 
01952                 temp1 = 0.;
01953                 temp2 = 0.;
01954                 i__3 = n;
01955                 for (j = 1; j <= i__3; ++j) {
01956 /* Computing MAX */
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 /* Computing MAX */
01961                     d__2 = temp2, d__3 = (d__1 = d1[j] - d3[j], abs(d__1));
01962                     temp2 = max(d__2,d__3);
01963 /* L650: */
01964                 }
01965 /* Computing MAX */
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 /* Computing MAX */
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 /* Computing MAX */
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 /* Computing MAX */
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 /* Computing MAX */
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 /* Computing MAX */
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 /* Writing concatenation */
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 /*              Do tests 28 and 29 (or +54) */
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 /* Writing concatenation */
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 /*              Do test 30 (or +54) */
02076 
02077                 temp1 = 0.;
02078                 temp2 = 0.;
02079                 i__3 = n;
02080                 for (j = 1; j <= i__3; ++j) {
02081 /* Computing MAX */
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 /* Computing MAX */
02086                     d__2 = temp2, d__3 = (d__1 = wa1[j] - wa2[j], abs(d__1));
02087                     temp2 = max(d__2,d__3);
02088 /* L670: */
02089                 }
02090 /* Computing MAX */
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 /* Writing concatenation */
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 /*              Do tests 31 and 32 (or +54) */
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 /* Writing concatenation */
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 /*              Do test 33 (or +54) */
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 /* Computing MAX */
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 /* Writing concatenation */
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 /*              Do tests 34 and 35 (or +54) */
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 /* Writing concatenation */
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 /*              Do test 36 (or +54) */
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 /* Computing MAX */
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 /* Computing MAX */
02266                 d__1 = unfl, d__2 = temp3 * ulp;
02267                 result[ntest] = (temp1 + temp2) / max(d__1,d__2);
02268 
02269 L700:
02270 
02271 /*              5)      Call DSPEV and DSPEVX. */
02272 
02273                 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
02274 
02275 /*              Load array WORK with the upper or lower triangular */
02276 /*              part of the matrix in packed form. */
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 /* L710: */
02287                         }
02288 /* L720: */
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 /* L730: */
02299                         }
02300 /* L740: */
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 /* Writing concatenation */
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 /*              Do tests 37 and 38 (or +54) */
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 /* L750: */
02349                         }
02350 /* L760: */
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 /* L770: */
02361                         }
02362 /* L780: */
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 /* Writing concatenation */
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 /*              Do test 39 (or +54) */
02395 
02396                 temp1 = 0.;
02397                 temp2 = 0.;
02398                 i__3 = n;
02399                 for (j = 1; j <= i__3; ++j) {
02400 /* Computing MAX */
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 /* Computing MAX */
02405                     d__2 = temp2, d__3 = (d__1 = d1[j] - d3[j], abs(d__1));
02406                     temp2 = max(d__2,d__3);
02407 /* L790: */
02408                 }
02409 /* Computing MAX */
02410                 d__1 = unfl, d__2 = ulp * max(temp1,temp2);
02411                 result[ntest] = temp2 / max(d__1,d__2);
02412 
02413 /*              Load array WORK with the upper or lower triangular part */
02414 /*              of the matrix in packed form. */
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 /* L810: */
02426                         }
02427 /* L820: */
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 /* L830: */
02438                         }
02439 /* L840: */
02440                     }
02441                 }
02442 
02443                 ++ntest;
02444 
02445                 if (n > 0) {
02446 /* Computing MAX */
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 /* Computing MAX */
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 /* Computing MAX */
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 /* Computing MAX */
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 /* Computing MAX */
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 /* Writing concatenation */
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 /*              Do tests 40 and 41 (or +54) */
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 /* L850: */
02526                         }
02527 /* L860: */
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 /* L870: */
02538                         }
02539 /* L880: */
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 /* Writing concatenation */
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 /*              Do test 42 (or +54) */
02572 
02573                 temp1 = 0.;
02574                 temp2 = 0.;
02575                 i__3 = n;
02576                 for (j = 1; j <= i__3; ++j) {
02577 /* Computing MAX */
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 /* Computing MAX */
02582                     d__2 = temp2, d__3 = (d__1 = wa1[j] - wa2[j], abs(d__1));
02583                     temp2 = max(d__2,d__3);
02584 /* L890: */
02585                 }
02586 /* Computing MAX */
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 /* L910: */
02600                         }
02601 /* L920: */
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 /* L930: */
02612                         }
02613 /* L940: */
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 /* Writing concatenation */
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 /*              Do tests 43 and 44 (or +54) */
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 /* L950: */
02666                         }
02667 /* L960: */
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 /* L970: */
02678                         }
02679 /* L980: */
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 /* Writing concatenation */
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 /*              Do test 45 (or +54) */
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 /* Computing MAX */
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 /* Computing MAX */
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 /* L1000: */
02743                         }
02744 /* L1010: */
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 /* L1020: */
02755                         }
02756 /* L1030: */
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 /* Writing concatenation */
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 /*              Do tests 46 and 47 (or +54) */
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 /* L1040: */
02809                         }
02810 /* L1050: */
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 /* L1060: */
02821                         }
02822 /* L1070: */
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 /* Writing concatenation */
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 /*              Do test 48 (or +54) */
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 /* Computing MAX */
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 /* Computing MAX */
02873                 d__1 = unfl, d__2 = temp3 * ulp;
02874                 result[ntest] = (temp1 + temp2) / max(d__1,d__2);
02875 
02876 L1080:
02877 
02878 /*              6)      Call DSBEV and DSBEVX. */
02879 
02880                 if (jtype <= 7) {
02881                     kd = 1;
02882                 } else if (jtype >= 8 && jtype <= 15) {
02883 /* Computing MAX */
02884                     i__3 = n - 1;
02885                     kd = max(i__3,0);
02886                 } else {
02887                     kd = ihbw;
02888                 }
02889 
02890 /*              Load array V with the upper or lower triangular part */
02891 /*              of the matrix in band form. */
02892 
02893                 if (iuplo == 1) {
02894                     i__3 = n;
02895                     for (j = 1; j <= i__3; ++j) {
02896 /* Computing MAX */
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 /* L1090: */
02903                         }
02904 /* L1100: */
02905                     }
02906                 } else {
02907                     i__3 = n;
02908                     for (j = 1; j <= i__3; ++j) {
02909 /* Computing MIN */
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 /* L1110: */
02915                         }
02916 /* L1120: */
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 /* Writing concatenation */
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 /*              Do tests 49 and 50 (or ... ) */
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 /* Computing MAX */
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 /* L1130: */
02966                         }
02967 /* L1140: */
02968                     }
02969                 } else {
02970                     i__3 = n;
02971                     for (j = 1; j <= i__3; ++j) {
02972 /* Computing MIN */
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 /* L1150: */
02978                         }
02979 /* L1160: */
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 /* Writing concatenation */
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 /*              Do test 51 (or +54) */
03012 
03013                 temp1 = 0.;
03014                 temp2 = 0.;
03015                 i__3 = n;
03016                 for (j = 1; j <= i__3; ++j) {
03017 /* Computing MAX */
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 /* Computing MAX */
03022                     d__2 = temp2, d__3 = (d__1 = d1[j] - d3[j], abs(d__1));
03023                     temp2 = max(d__2,d__3);
03024 /* L1170: */
03025                 }
03026 /* Computing MAX */
03027                 d__1 = unfl, d__2 = ulp * max(temp1,temp2);
03028                 result[ntest] = temp2 / max(d__1,d__2);
03029 
03030 /*              Load array V with the upper or lower triangular part */
03031 /*              of the matrix in band form. */
03032 
03033 L1180:
03034                 if (iuplo == 1) {
03035                     i__3 = n;
03036                     for (j = 1; j <= i__3; ++j) {
03037 /* Computing MAX */
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 /* L1190: */
03044                         }
03045 /* L1200: */
03046                     }
03047                 } else {
03048                     i__3 = n;
03049                     for (j = 1; j <= i__3; ++j) {
03050 /* Computing MIN */
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 /* L1210: */
03056                         }
03057 /* L1220: */
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 /* Writing concatenation */
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 /*              Do tests 52 and 53 (or +54) */
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 /* Computing MAX */
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 /* L1230: */
03111                         }
03112 /* L1240: */
03113                     }
03114                 } else {
03115                     i__3 = n;
03116                     for (j = 1; j <= i__3; ++j) {
03117 /* Computing MIN */
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 /* L1250: */
03123                         }
03124 /* L1260: */
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 /* Writing concatenation */
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 /*              Do test 54 (or +54) */
03158 
03159                 temp1 = 0.;
03160                 temp2 = 0.;
03161                 i__3 = n;
03162                 for (j = 1; j <= i__3; ++j) {
03163 /* Computing MAX */
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 /* Computing MAX */
03168                     d__2 = temp2, d__3 = (d__1 = wa2[j] - wa3[j], abs(d__1));
03169                     temp2 = max(d__2,d__3);
03170 /* L1270: */
03171                 }
03172 /* Computing MAX */
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 /* Computing MAX */
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 /* L1290: */
03188                         }
03189 /* L1300: */
03190                     }
03191                 } else {
03192                     i__3 = n;
03193                     for (j = 1; j <= i__3; ++j) {
03194 /* Computing MIN */
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 /* L1310: */
03200                         }
03201 /* L1320: */
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 /* Writing concatenation */
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 /*              Do tests 55 and 56 (or +54) */
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 /* Computing MAX */
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 /* L1330: */
03254                         }
03255 /* L1340: */
03256                     }
03257                 } else {
03258                     i__3 = n;
03259                     for (j = 1; j <= i__3; ++j) {
03260 /* Computing MIN */
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 /* L1350: */
03266                         }
03267 /* L1360: */
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 /* Writing concatenation */
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 /*              Do test 57 (or +54) */
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 /* Computing MAX */
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 /* Computing MAX */
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 /* Computing MAX */
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 /* L1380: */
03329                         }
03330 /* L1390: */
03331                     }
03332                 } else {
03333                     i__3 = n;
03334                     for (j = 1; j <= i__3; ++j) {
03335 /* Computing MIN */
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 /* L1400: */
03341                         }
03342 /* L1410: */
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 /* Writing concatenation */
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 /*              Do tests 58 and 59 (or +54) */
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 /* Computing MAX */
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 /* L1420: */
03395                         }
03396 /* L1430: */
03397                     }
03398                 } else {
03399                     i__3 = n;
03400                     for (j = 1; j <= i__3; ++j) {
03401 /* Computing MIN */
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 /* L1440: */
03407                         }
03408 /* L1450: */
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 /* Writing concatenation */
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 /*              Do test 60 (or +54) */
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 /* Computing MAX */
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 /* Computing MAX */
03460                 d__1 = unfl, d__2 = temp3 * ulp;
03461                 result[ntest] = (temp1 + temp2) / max(d__1,d__2);
03462 
03463 L1460:
03464 
03465 /*              7)      Call DSYEVD */
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 /* Writing concatenation */
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 /*              Do tests 61 and 62 (or +54) */
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 /* Writing concatenation */
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 /*              Do test 63 (or +54) */
03536 
03537                 temp1 = 0.;
03538                 temp2 = 0.;
03539                 i__3 = n;
03540                 for (j = 1; j <= i__3; ++j) {
03541 /* Computing MAX */
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 /* Computing MAX */
03546                     d__2 = temp2, d__3 = (d__1 = d1[j] - d3[j], abs(d__1));
03547                     temp2 = max(d__2,d__3);
03548 /* L1470: */
03549                 }
03550 /* Computing MAX */
03551                 d__1 = unfl, d__2 = ulp * max(temp1,temp2);
03552                 result[ntest] = temp2 / max(d__1,d__2);
03553 
03554 L1480:
03555 
03556 /*              8)      Call DSPEVD. */
03557 
03558                 dlacpy_(" ", &n, &n, &v[v_offset], ldu, &a[a_offset], lda);
03559 
03560 /*              Load array WORK with the upper or lower triangular */
03561 /*              part of the matrix in packed form. */
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 /* L1490: */
03572                         }
03573 /* L1500: */
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 /* L1510: */
03584                         }
03585 /* L1520: */
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 /* Writing concatenation */
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 /*              Do tests 64 and 65 (or +54) */
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 /* L1530: */
03636                         }
03637 /* L1540: */
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 /* L1550: */
03648                         }
03649 /* L1560: */
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 /* Writing concatenation */
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 /*              Do test 66 (or +54) */
03683 
03684                 temp1 = 0.;
03685                 temp2 = 0.;
03686                 i__3 = n;
03687                 for (j = 1; j <= i__3; ++j) {
03688 /* Computing MAX */
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 /* Computing MAX */
03693                     d__2 = temp2, d__3 = (d__1 = d1[j] - d3[j], abs(d__1));
03694                     temp2 = max(d__2,d__3);
03695 /* L1570: */
03696                 }
03697 /* Computing MAX */
03698                 d__1 = unfl, d__2 = ulp * max(temp1,temp2);
03699                 result[ntest] = temp2 / max(d__1,d__2);
03700 L1580:
03701 
03702 /*              9)      Call DSBEVD. */
03703 
03704                 if (jtype <= 7) {
03705                     kd = 1;
03706                 } else if (jtype >= 8 && jtype <= 15) {
03707 /* Computing MAX */
03708                     i__3 = n - 1;
03709                     kd = max(i__3,0);
03710                 } else {
03711                     kd = ihbw;
03712                 }
03713 
03714 /*              Load array V with the upper or lower triangular part */
03715 /*              of the matrix in band form. */
03716 
03717                 if (iuplo == 1) {
03718                     i__3 = n;
03719                     for (j = 1; j <= i__3; ++j) {
03720 /* Computing MAX */
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 /* L1590: */
03727                         }
03728 /* L1600: */
03729                     }
03730                 } else {
03731                     i__3 = n;
03732                     for (j = 1; j <= i__3; ++j) {
03733 /* Computing MIN */
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 /* L1610: */
03739                         }
03740 /* L1620: */
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 /* Writing concatenation */
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 /*              Do tests 67 and 68 (or +54) */
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 /* Computing MAX */
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 /* L1630: */
03791                         }
03792 /* L1640: */
03793                     }
03794                 } else {
03795                     i__3 = n;
03796                     for (j = 1; j <= i__3; ++j) {
03797 /* Computing MIN */
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 /* L1650: */
03803                         }
03804 /* L1660: */
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 /* Writing concatenation */
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 /*              Do test 69 (or +54) */
03838 
03839                 temp1 = 0.;
03840                 temp2 = 0.;
03841                 i__3 = n;
03842                 for (j = 1; j <= i__3; ++j) {
03843 /* Computing MAX */
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 /* Computing MAX */
03848                     d__2 = temp2, d__3 = (d__1 = d1[j] - d3[j], abs(d__1));
03849                     temp2 = max(d__2,d__3);
03850 /* L1670: */
03851                 }
03852 /* Computing MAX */
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 /* Writing concatenation */
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 /*              Do tests 70 and 71 (or ... ) */
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 /* Writing concatenation */
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 /*              Do test 72 (or ... ) */
03933 
03934                 temp1 = 0.;
03935                 temp2 = 0.;
03936                 i__3 = n;
03937                 for (j = 1; j <= i__3; ++j) {
03938 /* Computing MAX */
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 /* Computing MAX */
03943                     d__2 = temp2, d__3 = (d__1 = wa1[j] - wa2[j], abs(d__1));
03944                     temp2 = max(d__2,d__3);
03945 /* L1690: */
03946                 }
03947 /* Computing MAX */
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 /* Writing concatenation */
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 /*              Do tests 73 and 74 (or +54) */
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 /* Writing concatenation */
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 /*              Do test 75 (or +54) */
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 /* Computing MAX */
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 /* Writing concatenation */
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 /*              Do tests 76 and 77 (or +54) */
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 /* Writing concatenation */
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 /*              Do test 78 (or +54) */
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 /* Computing MAX */
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 /* Computing MAX */
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 /* L1720: */
04137             }
04138 
04139 /*           End of Loop -- Check for RESULT(j) > THRESH */
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 /* L1740: */
04150     }
04151 
04152 /*     Summary */
04153 
04154     alasvm_("DST", nounit, &nerrs, &ntestt, &c__0);
04155 
04156 
04157     return 0;
04158 
04159 /*     End of DDRVST */
04160 
04161 } /* ddrvst_ */


swiftnav
Author(s):
autogenerated on Sat Jun 8 2019 18:55:40