sdrvgex.c
Go to the documentation of this file.
00001 /* sdrvgex.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 "memory_alloc.h"
00015 
00016 /* Common Block Declarations */
00017 
00018 struct {
00019     integer infot, nunit;
00020     logical ok, lerr;
00021 } infoc_;
00022 
00023 #define infoc_1 infoc_
00024 
00025 struct {
00026     char srnamt[32];
00027 } srnamc_;
00028 
00029 #define srnamc_1 srnamc_
00030 
00031 /* Table of constant values */
00032 
00033 static integer c__1 = 1;
00034 static integer c__2 = 2;
00035 static integer c__0 = 0;
00036 static integer c_n1 = -1;
00037 static real c_b20 = 0.f;
00038 static logical c_true = TRUE_;
00039 static integer c__6 = 6;
00040 static integer c__7 = 7;
00041 
00042 /* Subroutine */ int sdrvge_(logical *dotype, integer *nn, integer *nval, 
00043         integer *nrhs, real *thresh, logical *tsterr, integer *nmax, real *a, 
00044         real *afac, real *asav, real *b, real *bsav, real *x, real *xact, 
00045         real *s, real *work, real *rwork, integer *iwork, integer *nout)
00046 {
00047     /* Initialized data */
00048 
00049     static integer iseedy[4] = { 1988,1989,1990,1991 };
00050     static char transs[1*3] = "N" "T" "C";
00051     static char facts[1*3] = "F" "N" "E";
00052     static char equeds[1*4] = "N" "R" "C" "B";
00053 
00054     /* Format strings */
00055     static char fmt_9999[] = "(1x,a,\002, N =\002,i5,\002, type \002,i2,\002"
00056             ", test(\002,i2,\002) =\002,g12.5)";
00057     static char fmt_9997[] = "(1x,a,\002, FACT='\002,a1,\002', TRANS='\002,a"
00058             "1,\002', N=\002,i5,\002, EQUED='\002,a1,\002', type \002,i2,\002"
00059             ", test(\002,i1,\002)=\002,g12.5)";
00060     static char fmt_9998[] = "(1x,a,\002, FACT='\002,a1,\002', TRANS='\002,a"
00061             "1,\002', N=\002,i5,\002, type \002,i2,\002, test(\002,i1,\002)"
00062             "=\002,g12.5)";
00063 
00064     /* System generated locals */
00065     address a__1[2];
00066     integer i__1, i__2, i__3, i__4, i__5[2];
00067     real r__1;
00068     char ch__1[2];
00069 
00070     /* Builtin functions */
00071     /* Subroutine */ int s_copy(char *, char *, ftnlen, ftnlen);
00072     integer s_wsfe(cilist *), do_fio(integer *, char *, ftnlen), e_wsfe(void);
00073     /* Subroutine */ int s_cat(char *, char **, integer *, integer *, ftnlen);
00074 
00075     /* Local variables */
00076     extern /* Subroutine */ int sebchvxx_(real *, char *);
00077     integer i__, k, n;
00078     real *errbnds_c__, *errbnds_n__;
00079     integer k1, nb, in, kl, ku, nt, n_err_bnds__;
00080     extern doublereal sla_rpvgrw__(integer *, integer *, real *, integer *, 
00081             real *, integer *);
00082     integer lda;
00083     char fact[1];
00084     integer ioff, mode;
00085     real amax;
00086     char path[3];
00087     integer imat, info;
00088     real *berr;
00089     char dist[1];
00090     real rpvgrw_svxx__;
00091     char type__[1];
00092     integer nrun, ifact, nfail, iseed[4], nfact;
00093     extern logical lsame_(char *, char *);
00094     char equed[1];
00095     integer nbmin;
00096     real rcond, roldc;
00097     extern /* Subroutine */ int sget01_(integer *, integer *, real *, integer 
00098             *, real *, integer *, integer *, real *, real *);
00099     integer nimat;
00100     real roldi;
00101     extern doublereal sget06_(real *, real *);
00102     extern /* Subroutine */ int sget02_(char *, integer *, integer *, integer 
00103             *, real *, integer *, real *, integer *, real *, integer *, real *
00104 , real *);
00105     real anorm;
00106     integer itran;
00107     extern /* Subroutine */ int sget04_(integer *, integer *, real *, integer 
00108             *, real *, integer *, real *, real *);
00109     logical equil;
00110     real roldo;
00111     extern /* Subroutine */ int sget07_(char *, integer *, integer *, real *, 
00112             integer *, real *, integer *, real *, integer *, real *, integer *
00113 , real *, logical *, real *, real *);
00114     char trans[1];
00115     integer izero, nerrs;
00116     extern /* Subroutine */ int sgesv_(integer *, integer *, real *, integer *
00117 , integer *, real *, integer *, integer *);
00118     integer lwork;
00119     logical zerot;
00120     char xtype[1];
00121     extern /* Subroutine */ int slatb4_(char *, integer *, integer *, integer 
00122             *, char *, integer *, integer *, real *, integer *, real *, char *
00123 ), aladhd_(integer *, char *), 
00124             alaerh_(char *, char *, integer *, integer *, char *, integer *, 
00125             integer *, integer *, integer *, integer *, integer *, integer *, 
00126             integer *, integer *);
00127     logical prefac;
00128     real colcnd;
00129     extern doublereal slamch_(char *);
00130     real rcondc;
00131     extern doublereal slange_(char *, integer *, integer *, real *, integer *, 
00132              real *);
00133     logical nofact;
00134     integer iequed;
00135     extern /* Subroutine */ int slaqge_(integer *, integer *, real *, integer 
00136             *, real *, real *, real *, real *, real *, char *);
00137     real rcondi;
00138     extern /* Subroutine */ int alasvm_(char *, integer *, integer *, integer 
00139             *, integer *);
00140     real cndnum, anormi, rcondo, ainvnm;
00141     extern /* Subroutine */ int sgeequ_(integer *, integer *, real *, integer 
00142             *, real *, real *, real *, real *, real *, integer *);
00143     logical trfcon;
00144     real anormo, rowcnd;
00145     extern /* Subroutine */ int sgetrf_(integer *, integer *, real *, integer 
00146             *, integer *, integer *), sgetri_(integer *, real *, integer *, 
00147             integer *, real *, integer *, integer *), slacpy_(char *, integer 
00148             *, integer *, real *, integer *, real *, integer *), 
00149             slarhs_(char *, char *, char *, char *, integer *, integer *, 
00150             integer *, integer *, integer *, real *, integer *, real *, 
00151             integer *, real *, integer *, integer *, integer *);
00152     extern doublereal slantr_(char *, char *, char *, integer *, integer *, 
00153             real *, integer *, real *);
00154     extern /* Subroutine */ int slaset_(char *, integer *, integer *, real *, 
00155             real *, real *, integer *), slatms_(integer *, integer *, 
00156             char *, integer *, char *, real *, integer *, real *, real *, 
00157             integer *, integer *, char *, real *, integer *, real *, integer *
00158 ), xlaenv_(integer *, integer *);
00159     real result[7];
00160     extern /* Subroutine */ int sgesvx_(char *, char *, integer *, integer *, 
00161             real *, integer *, real *, integer *, integer *, char *, real *, 
00162             real *, real *, integer *, real *, integer *, real *, real *, 
00163             real *, real *, integer *, integer *);
00164     real rpvgrw;
00165     extern /* Subroutine */ int serrvx_(char *, integer *), sgesvxx_(
00166             char *, char *, integer *, integer *, real *, integer *, real *, 
00167             integer *, integer *, char *, real *, real *, real *, integer *, 
00168             real *, integer *, real *, real *, real *, integer *, real *, 
00169             real *, integer *, real *, real *, integer *, integer *);
00170 
00171     /* Fortran I/O blocks */
00172     static cilist io___55 = { 0, 0, 0, fmt_9999, 0 };
00173     static cilist io___61 = { 0, 0, 0, fmt_9997, 0 };
00174     static cilist io___62 = { 0, 0, 0, fmt_9998, 0 };
00175     static cilist io___63 = { 0, 0, 0, fmt_9997, 0 };
00176     static cilist io___64 = { 0, 0, 0, fmt_9998, 0 };
00177     static cilist io___65 = { 0, 0, 0, fmt_9997, 0 };
00178     static cilist io___66 = { 0, 0, 0, fmt_9998, 0 };
00179     static cilist io___67 = { 0, 0, 0, fmt_9997, 0 };
00180     static cilist io___68 = { 0, 0, 0, fmt_9998, 0 };
00181     static cilist io___74 = { 0, 0, 0, fmt_9997, 0 };
00182     static cilist io___75 = { 0, 0, 0, fmt_9998, 0 };
00183     static cilist io___76 = { 0, 0, 0, fmt_9997, 0 };
00184     static cilist io___77 = { 0, 0, 0, fmt_9998, 0 };
00185     static cilist io___78 = { 0, 0, 0, fmt_9997, 0 };
00186     static cilist io___79 = { 0, 0, 0, fmt_9998, 0 };
00187     static cilist io___80 = { 0, 0, 0, fmt_9997, 0 };
00188     static cilist io___81 = { 0, 0, 0, fmt_9998, 0 };
00189 
00190 
00191 
00192 /*  -- LAPACK test routine (version 3.1) -- */
00193 /*     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd.. */
00194 /*     November 2006 */
00195 
00196 /*     .. Scalar Arguments .. */
00197 /*     .. */
00198 /*     .. Array Arguments .. */
00199 /*     .. */
00200 
00201 /*  Purpose */
00202 /*  ======= */
00203 
00204 /*  SDRVGE tests the driver routines SGESV, -SVX, and -SVXX. */
00205 
00206 /*  Note that this file is used only when the XBLAS are available, */
00207 /*  otherwise sdrvge.f defines this subroutine. */
00208 
00209 /*  Arguments */
00210 /*  ========= */
00211 
00212 /*  DOTYPE  (input) LOGICAL array, dimension (NTYPES) */
00213 /*          The matrix types to be used for testing.  Matrices of type j */
00214 /*          (for 1 <= j <= NTYPES) are used for testing if DOTYPE(j) = */
00215 /*          .TRUE.; if DOTYPE(j) = .FALSE., then type j is not used. */
00216 
00217 /*  NN      (input) INTEGER */
00218 /*          The number of values of N contained in the vector NVAL. */
00219 
00220 /*  NVAL    (input) INTEGER array, dimension (NN) */
00221 /*          The values of the matrix column dimension N. */
00222 
00223 /*  NRHS    (input) INTEGER */
00224 /*          The number of right hand side vectors to be generated for */
00225 /*          each linear system. */
00226 
00227 /*  THRESH  (input) REAL */
00228 /*          The threshold value for the test ratios.  A result is */
00229 /*          included in the output file if RESULT >= THRESH.  To have */
00230 /*          every test ratio printed, use THRESH = 0. */
00231 
00232 /*  TSTERR  (input) LOGICAL */
00233 /*          Flag that indicates whether error exits are to be tested. */
00234 
00235 /*  NMAX    (input) INTEGER */
00236 /*          The maximum value permitted for N, used in dimensioning the */
00237 /*          work arrays. */
00238 
00239 /*  A       (workspace) REAL array, dimension (NMAX*NMAX) */
00240 
00241 /*  AFAC    (workspace) REAL array, dimension (NMAX*NMAX) */
00242 
00243 /*  ASAV    (workspace) REAL array, dimension (NMAX*NMAX) */
00244 
00245 /*  B       (workspace) REAL array, dimension (NMAX*NRHS) */
00246 
00247 /*  BSAV    (workspace) REAL array, dimension (NMAX*NRHS) */
00248 
00249 /*  X       (workspace) REAL array, dimension (NMAX*NRHS) */
00250 
00251 /*  XACT    (workspace) REAL array, dimension (NMAX*NRHS) */
00252 
00253 /*  S       (workspace) REAL array, dimension (2*NMAX) */
00254 
00255 /*  WORK    (workspace) REAL array, dimension */
00256 /*                      (NMAX*max(3,NRHS)) */
00257 
00258 /*  RWORK   (workspace) REAL array, dimension (2*NRHS+NMAX) */
00259 
00260 /*  IWORK   (workspace) INTEGER array, dimension (2*NMAX) */
00261 
00262 /*  NOUT    (input) INTEGER */
00263 /*          The unit number for output. */
00264 
00265 /*  ===================================================================== */
00266 
00267 /*     .. Parameters .. */
00268 /*     .. */
00269 /*     .. Local Scalars .. */
00270 /*     .. */
00271 /*     .. Local Arrays .. */
00272 /*     .. */
00273 /*     .. External Functions .. */
00274 /*     .. */
00275 /*     .. External Subroutines .. */
00276 /*     .. */
00277 /*     .. Intrinsic Functions .. */
00278 /*     .. */
00279 /*     .. Scalars in Common .. */
00280 /*     .. */
00281 /*     .. Common blocks .. */
00282 /*     .. */
00283 /*     .. Data statements .. */
00284     /* Parameter adjustments */
00285     --iwork;
00286     --rwork;
00287     --work;
00288     --s;
00289     --xact;
00290     --x;
00291     --bsav;
00292     --b;
00293     --asav;
00294     --afac;
00295     --a;
00296     --nval;
00297     --dotype;
00298 
00299     /* Function Body */
00300 /*     .. */
00301 /*     .. Executable Statements .. */
00302 
00303 /*     Initialize constants and the random number seed. */
00304 
00305     s_copy(path, "Single precision", (ftnlen)1, (ftnlen)16);
00306     s_copy(path + 1, "GE", (ftnlen)2, (ftnlen)2);
00307     nrun = 0;
00308     nfail = 0;
00309     nerrs = 0;
00310     for (i__ = 1; i__ <= 4; ++i__) {
00311         iseed[i__ - 1] = iseedy[i__ - 1];
00312 /* L10: */
00313     }
00314 
00315 /*     Test the error exits */
00316 
00317     if (*tsterr) {
00318         serrvx_(path, nout);
00319     }
00320     infoc_1.infot = 0;
00321 
00322 /*     Set the block size and minimum block size for testing. */
00323 
00324     nb = 1;
00325     nbmin = 2;
00326     xlaenv_(&c__1, &nb);
00327     xlaenv_(&c__2, &nbmin);
00328 
00329 /*     Do for each value of N in NVAL */
00330 
00331     i__1 = *nn;
00332     for (in = 1; in <= i__1; ++in) {
00333         n = nval[in];
00334         lda = max(n,1);
00335         *(unsigned char *)xtype = 'N';
00336         nimat = 11;
00337         if (n <= 0) {
00338             nimat = 1;
00339         }
00340 
00341         i__2 = nimat;
00342         for (imat = 1; imat <= i__2; ++imat) {
00343 
00344 /*           Do the tests only if DOTYPE( IMAT ) is true. */
00345 
00346             if (! dotype[imat]) {
00347                 goto L80;
00348             }
00349 
00350 /*           Skip types 5, 6, or 7 if the matrix size is too small. */
00351 
00352             zerot = imat >= 5 && imat <= 7;
00353             if (zerot && n < imat - 4) {
00354                 goto L80;
00355             }
00356 
00357 /*           Set up parameters with SLATB4 and generate a test matrix */
00358 /*           with SLATMS. */
00359 
00360             slatb4_(path, &imat, &n, &n, type__, &kl, &ku, &anorm, &mode, &
00361                     cndnum, dist);
00362             rcondc = 1.f / cndnum;
00363 
00364             s_copy(srnamc_1.srnamt, "SLATMS", (ftnlen)32, (ftnlen)6);
00365             slatms_(&n, &n, dist, iseed, type__, &rwork[1], &mode, &cndnum, &
00366                     anorm, &kl, &ku, "No packing", &a[1], &lda, &work[1], &
00367                     info);
00368 
00369 /*           Check error code from SLATMS. */
00370 
00371             if (info != 0) {
00372                 alaerh_(path, "SLATMS", &info, &c__0, " ", &n, &n, &c_n1, &
00373                         c_n1, &c_n1, &imat, &nfail, &nerrs, nout);
00374                 goto L80;
00375             }
00376 
00377 /*           For types 5-7, zero one or more columns of the matrix to */
00378 /*           test that INFO is returned correctly. */
00379 
00380             if (zerot) {
00381                 if (imat == 5) {
00382                     izero = 1;
00383                 } else if (imat == 6) {
00384                     izero = n;
00385                 } else {
00386                     izero = n / 2 + 1;
00387                 }
00388                 ioff = (izero - 1) * lda;
00389                 if (imat < 7) {
00390                     i__3 = n;
00391                     for (i__ = 1; i__ <= i__3; ++i__) {
00392                         a[ioff + i__] = 0.f;
00393 /* L20: */
00394                     }
00395                 } else {
00396                     i__3 = n - izero + 1;
00397                     slaset_("Full", &n, &i__3, &c_b20, &c_b20, &a[ioff + 1], &
00398                             lda);
00399                 }
00400             } else {
00401                 izero = 0;
00402             }
00403 
00404 /*           Save a copy of the matrix A in ASAV. */
00405 
00406             slacpy_("Full", &n, &n, &a[1], &lda, &asav[1], &lda);
00407 
00408             for (iequed = 1; iequed <= 4; ++iequed) {
00409                 *(unsigned char *)equed = *(unsigned char *)&equeds[iequed - 
00410                         1];
00411                 if (iequed == 1) {
00412                     nfact = 3;
00413                 } else {
00414                     nfact = 1;
00415                 }
00416 
00417                 i__3 = nfact;
00418                 for (ifact = 1; ifact <= i__3; ++ifact) {
00419                     *(unsigned char *)fact = *(unsigned char *)&facts[ifact - 
00420                             1];
00421                     prefac = lsame_(fact, "F");
00422                     nofact = lsame_(fact, "N");
00423                     equil = lsame_(fact, "E");
00424 
00425                     if (zerot) {
00426                         if (prefac) {
00427                             goto L60;
00428                         }
00429                         rcondo = 0.f;
00430                         rcondi = 0.f;
00431 
00432                     } else if (! nofact) {
00433 
00434 /*                    Compute the condition number for comparison with */
00435 /*                    the value returned by SGESVX (FACT = 'N' reuses */
00436 /*                    the condition number from the previous iteration */
00437 /*                    with FACT = 'F'). */
00438 
00439                         slacpy_("Full", &n, &n, &asav[1], &lda, &afac[1], &
00440                                 lda);
00441                         if (equil || iequed > 1) {
00442 
00443 /*                       Compute row and column scale factors to */
00444 /*                       equilibrate the matrix A. */
00445 
00446                             sgeequ_(&n, &n, &afac[1], &lda, &s[1], &s[n + 1], 
00447                                     &rowcnd, &colcnd, &amax, &info);
00448                             if (info == 0 && n > 0) {
00449                                 if (lsame_(equed, "R")) 
00450                                         {
00451                                     rowcnd = 0.f;
00452                                     colcnd = 1.f;
00453                                 } else if (lsame_(equed, "C")) {
00454                                     rowcnd = 1.f;
00455                                     colcnd = 0.f;
00456                                 } else if (lsame_(equed, "B")) {
00457                                     rowcnd = 0.f;
00458                                     colcnd = 0.f;
00459                                 }
00460 
00461 /*                          Equilibrate the matrix. */
00462 
00463                                 slaqge_(&n, &n, &afac[1], &lda, &s[1], &s[n + 
00464                                         1], &rowcnd, &colcnd, &amax, equed);
00465                             }
00466                         }
00467 
00468 /*                    Save the condition number of the non-equilibrated */
00469 /*                    system for use in SGET04. */
00470 
00471                         if (equil) {
00472                             roldo = rcondo;
00473                             roldi = rcondi;
00474                         }
00475 
00476 /*                    Compute the 1-norm and infinity-norm of A. */
00477 
00478                         anormo = slange_("1", &n, &n, &afac[1], &lda, &rwork[
00479                                 1]);
00480                         anormi = slange_("I", &n, &n, &afac[1], &lda, &rwork[
00481                                 1]);
00482 
00483 /*                    Factor the matrix A. */
00484 
00485                         sgetrf_(&n, &n, &afac[1], &lda, &iwork[1], &info);
00486 
00487 /*                    Form the inverse of A. */
00488 
00489                         slacpy_("Full", &n, &n, &afac[1], &lda, &a[1], &lda);
00490                         lwork = *nmax * max(3,*nrhs);
00491                         sgetri_(&n, &a[1], &lda, &iwork[1], &work[1], &lwork, 
00492                                 &info);
00493 
00494 /*                    Compute the 1-norm condition number of A. */
00495 
00496                         ainvnm = slange_("1", &n, &n, &a[1], &lda, &rwork[1]);
00497                         if (anormo <= 0.f || ainvnm <= 0.f) {
00498                             rcondo = 1.f;
00499                         } else {
00500                             rcondo = 1.f / anormo / ainvnm;
00501                         }
00502 
00503 /*                    Compute the infinity-norm condition number of A. */
00504 
00505                         ainvnm = slange_("I", &n, &n, &a[1], &lda, &rwork[1]);
00506                         if (anormi <= 0.f || ainvnm <= 0.f) {
00507                             rcondi = 1.f;
00508                         } else {
00509                             rcondi = 1.f / anormi / ainvnm;
00510                         }
00511                     }
00512 
00513                     for (itran = 1; itran <= 3; ++itran) {
00514                         for (i__ = 1; i__ <= 7; ++i__) {
00515                             result[i__ - 1] = 0.f;
00516                         }
00517 
00518 /*                    Do for each value of TRANS. */
00519 
00520                         *(unsigned char *)trans = *(unsigned char *)&transs[
00521                                 itran - 1];
00522                         if (itran == 1) {
00523                             rcondc = rcondo;
00524                         } else {
00525                             rcondc = rcondi;
00526                         }
00527 
00528 /*                    Restore the matrix A. */
00529 
00530                         slacpy_("Full", &n, &n, &asav[1], &lda, &a[1], &lda);
00531 
00532 /*                    Form an exact solution and set the right hand side. */
00533 
00534                         s_copy(srnamc_1.srnamt, "SLARHS", (ftnlen)32, (ftnlen)
00535                                 6);
00536                         slarhs_(path, xtype, "Full", trans, &n, &n, &kl, &ku, 
00537                                 nrhs, &a[1], &lda, &xact[1], &lda, &b[1], &
00538                                 lda, iseed, &info);
00539                         *(unsigned char *)xtype = 'C';
00540                         slacpy_("Full", &n, nrhs, &b[1], &lda, &bsav[1], &lda);
00541 
00542                         if (nofact && itran == 1) {
00543 
00544 /*                       --- Test SGESV  --- */
00545 
00546 /*                       Compute the LU factorization of the matrix and */
00547 /*                       solve the system. */
00548 
00549                             slacpy_("Full", &n, &n, &a[1], &lda, &afac[1], &
00550                                     lda);
00551                             slacpy_("Full", &n, nrhs, &b[1], &lda, &x[1], &
00552                                     lda);
00553 
00554                             s_copy(srnamc_1.srnamt, "SGESV ", (ftnlen)32, (
00555                                     ftnlen)6);
00556                             sgesv_(&n, nrhs, &afac[1], &lda, &iwork[1], &x[1], 
00557                                      &lda, &info);
00558 
00559 /*                       Check error code from SGESV . */
00560 
00561                             if (info != izero) {
00562                                 alaerh_(path, "SGESV ", &info, &izero, " ", &
00563                                         n, &n, &c_n1, &c_n1, nrhs, &imat, &
00564                                         nfail, &nerrs, nout);
00565                                 goto L50;
00566                             }
00567 
00568 /*                       Reconstruct matrix from factors and compute */
00569 /*                       residual. */
00570 
00571                             sget01_(&n, &n, &a[1], &lda, &afac[1], &lda, &
00572                                     iwork[1], &rwork[1], result);
00573                             nt = 1;
00574                             if (izero == 0) {
00575 
00576 /*                          Compute residual of the computed solution. */
00577 
00578                                 slacpy_("Full", &n, nrhs, &b[1], &lda, &work[
00579                                         1], &lda);
00580                                 sget02_("No transpose", &n, &n, nrhs, &a[1], &
00581                                         lda, &x[1], &lda, &work[1], &lda, &
00582                                         rwork[1], &result[1]);
00583 
00584 /*                          Check solution from generated exact solution. */
00585 
00586                                 sget04_(&n, nrhs, &x[1], &lda, &xact[1], &lda, 
00587                                          &rcondc, &result[2]);
00588                                 nt = 3;
00589                             }
00590 
00591 /*                       Print information about the tests that did not */
00592 /*                       pass the threshold. */
00593 
00594                             i__4 = nt;
00595                             for (k = 1; k <= i__4; ++k) {
00596                                 if (result[k - 1] >= *thresh) {
00597                                     if (nfail == 0 && nerrs == 0) {
00598                                         aladhd_(nout, path);
00599                                     }
00600                                     io___55.ciunit = *nout;
00601                                     s_wsfe(&io___55);
00602                                     do_fio(&c__1, "SGESV ", (ftnlen)6);
00603                                     do_fio(&c__1, (char *)&n, (ftnlen)sizeof(
00604                                             integer));
00605                                     do_fio(&c__1, (char *)&imat, (ftnlen)
00606                                             sizeof(integer));
00607                                     do_fio(&c__1, (char *)&k, (ftnlen)sizeof(
00608                                             integer));
00609                                     do_fio(&c__1, (char *)&result[k - 1], (
00610                                             ftnlen)sizeof(real));
00611                                     e_wsfe();
00612                                     ++nfail;
00613                                 }
00614 /* L30: */
00615                             }
00616                             nrun += nt;
00617                         }
00618 
00619 /*                    --- Test SGESVX --- */
00620 
00621                         if (! prefac) {
00622                             slaset_("Full", &n, &n, &c_b20, &c_b20, &afac[1], 
00623                                     &lda);
00624                         }
00625                         slaset_("Full", &n, nrhs, &c_b20, &c_b20, &x[1], &lda);
00626                         if (iequed > 1 && n > 0) {
00627 
00628 /*                       Equilibrate the matrix if FACT = 'F' and */
00629 /*                       EQUED = 'R', 'C', or 'B'. */
00630 
00631                             slaqge_(&n, &n, &a[1], &lda, &s[1], &s[n + 1], &
00632                                     rowcnd, &colcnd, &amax, equed);
00633                         }
00634 
00635 /*                    Solve the system and compute the condition number */
00636 /*                    and error bounds using SGESVX. */
00637 
00638                         s_copy(srnamc_1.srnamt, "SGESVX", (ftnlen)32, (ftnlen)
00639                                 6);
00640                         sgesvx_(fact, trans, &n, nrhs, &a[1], &lda, &afac[1], 
00641                                 &lda, &iwork[1], equed, &s[1], &s[n + 1], &b[
00642                                 1], &lda, &x[1], &lda, &rcond, &rwork[1], &
00643                                 rwork[*nrhs + 1], &work[1], &iwork[n + 1], &
00644                                 info);
00645 
00646 /*                    Check the error code from SGESVX. */
00647 
00648                         if (info == n + 1) {
00649                             goto L50;
00650                         }
00651                         if (info != izero) {
00652 /* Writing concatenation */
00653                             i__5[0] = 1, a__1[0] = fact;
00654                             i__5[1] = 1, a__1[1] = trans;
00655                             s_cat(ch__1, a__1, i__5, &c__2, (ftnlen)2);
00656                             alaerh_(path, "SGESVX", &info, &izero, ch__1, &n, 
00657                                     &n, &c_n1, &c_n1, nrhs, &imat, &nfail, &
00658                                     nerrs, nout);
00659                             goto L50;
00660                         }
00661 
00662 /*                    Compare WORK(1) from SGESVX with the computed */
00663 /*                    reciprocal pivot growth factor RPVGRW */
00664 
00665                         if (info != 0) {
00666                             rpvgrw = slantr_("M", "U", "N", &info, &info, &
00667                                     afac[1], &lda, &work[1]);
00668                             if (rpvgrw == 0.f) {
00669                                 rpvgrw = 1.f;
00670                             } else {
00671                                 rpvgrw = slange_("M", &n, &info, &a[1], &lda, 
00672                                         &work[1]) / rpvgrw;
00673                             }
00674                         } else {
00675                             rpvgrw = slantr_("M", "U", "N", &n, &n, &afac[1], 
00676                                     &lda, &work[1]);
00677                             if (rpvgrw == 0.f) {
00678                                 rpvgrw = 1.f;
00679                             } else {
00680                                 rpvgrw = slange_("M", &n, &n, &a[1], &lda, &
00681                                         work[1]) / rpvgrw;
00682                             }
00683                         }
00684                         result[6] = (r__1 = rpvgrw - work[1], dabs(r__1)) / 
00685                                 dmax(work[1],rpvgrw) / slamch_("E")
00686                                 ;
00687 
00688                         if (! prefac) {
00689 
00690 /*                       Reconstruct matrix from factors and compute */
00691 /*                       residual. */
00692 
00693                             sget01_(&n, &n, &a[1], &lda, &afac[1], &lda, &
00694                                     iwork[1], &rwork[(*nrhs << 1) + 1], 
00695                                     result);
00696                             k1 = 1;
00697                         } else {
00698                             k1 = 2;
00699                         }
00700 
00701                         if (info == 0) {
00702                             trfcon = FALSE_;
00703 
00704 /*                       Compute residual of the computed solution. */
00705 
00706                             slacpy_("Full", &n, nrhs, &bsav[1], &lda, &work[1]
00707 , &lda);
00708                             sget02_(trans, &n, &n, nrhs, &asav[1], &lda, &x[1]
00709 , &lda, &work[1], &lda, &rwork[(*nrhs << 
00710                                     1) + 1], &result[1]);
00711 
00712 /*                       Check solution from generated exact solution. */
00713 
00714                             if (nofact || prefac && lsame_(equed, "N")) {
00715                                 sget04_(&n, nrhs, &x[1], &lda, &xact[1], &lda, 
00716                                          &rcondc, &result[2]);
00717                             } else {
00718                                 if (itran == 1) {
00719                                     roldc = roldo;
00720                                 } else {
00721                                     roldc = roldi;
00722                                 }
00723                                 sget04_(&n, nrhs, &x[1], &lda, &xact[1], &lda, 
00724                                          &roldc, &result[2]);
00725                             }
00726 
00727 /*                       Check the error bounds from iterative */
00728 /*                       refinement. */
00729 
00730                             sget07_(trans, &n, nrhs, &asav[1], &lda, &b[1], &
00731                                     lda, &x[1], &lda, &xact[1], &lda, &rwork[
00732                                     1], &c_true, &rwork[*nrhs + 1], &result[3]
00733 );
00734                         } else {
00735                             trfcon = TRUE_;
00736                         }
00737 
00738 /*                    Compare RCOND from SGESVX with the computed value */
00739 /*                    in RCONDC. */
00740 
00741                         result[5] = sget06_(&rcond, &rcondc);
00742 
00743 /*                    Print information about the tests that did not pass */
00744 /*                    the threshold. */
00745 
00746                         if (! trfcon) {
00747                             for (k = k1; k <= 7; ++k) {
00748                                 if (result[k - 1] >= *thresh) {
00749                                     if (nfail == 0 && nerrs == 0) {
00750                                         aladhd_(nout, path);
00751                                     }
00752                                     if (prefac) {
00753                                         io___61.ciunit = *nout;
00754                                         s_wsfe(&io___61);
00755                                         do_fio(&c__1, "SGESVX", (ftnlen)6);
00756                                         do_fio(&c__1, fact, (ftnlen)1);
00757                                         do_fio(&c__1, trans, (ftnlen)1);
00758                                         do_fio(&c__1, (char *)&n, (ftnlen)
00759                                                 sizeof(integer));
00760                                         do_fio(&c__1, equed, (ftnlen)1);
00761                                         do_fio(&c__1, (char *)&imat, (ftnlen)
00762                                                 sizeof(integer));
00763                                         do_fio(&c__1, (char *)&k, (ftnlen)
00764                                                 sizeof(integer));
00765                                         do_fio(&c__1, (char *)&result[k - 1], 
00766                                                 (ftnlen)sizeof(real));
00767                                         e_wsfe();
00768                                     } else {
00769                                         io___62.ciunit = *nout;
00770                                         s_wsfe(&io___62);
00771                                         do_fio(&c__1, "SGESVX", (ftnlen)6);
00772                                         do_fio(&c__1, fact, (ftnlen)1);
00773                                         do_fio(&c__1, trans, (ftnlen)1);
00774                                         do_fio(&c__1, (char *)&n, (ftnlen)
00775                                                 sizeof(integer));
00776                                         do_fio(&c__1, (char *)&imat, (ftnlen)
00777                                                 sizeof(integer));
00778                                         do_fio(&c__1, (char *)&k, (ftnlen)
00779                                                 sizeof(integer));
00780                                         do_fio(&c__1, (char *)&result[k - 1], 
00781                                                 (ftnlen)sizeof(real));
00782                                         e_wsfe();
00783                                     }
00784                                     ++nfail;
00785                                 }
00786 /* L40: */
00787                             }
00788                             nrun = nrun + 7 - k1;
00789                         } else {
00790                             if (result[0] >= *thresh && ! prefac) {
00791                                 if (nfail == 0 && nerrs == 0) {
00792                                     aladhd_(nout, path);
00793                                 }
00794                                 if (prefac) {
00795                                     io___63.ciunit = *nout;
00796                                     s_wsfe(&io___63);
00797                                     do_fio(&c__1, "SGESVX", (ftnlen)6);
00798                                     do_fio(&c__1, fact, (ftnlen)1);
00799                                     do_fio(&c__1, trans, (ftnlen)1);
00800                                     do_fio(&c__1, (char *)&n, (ftnlen)sizeof(
00801                                             integer));
00802                                     do_fio(&c__1, equed, (ftnlen)1);
00803                                     do_fio(&c__1, (char *)&imat, (ftnlen)
00804                                             sizeof(integer));
00805                                     do_fio(&c__1, (char *)&c__1, (ftnlen)
00806                                             sizeof(integer));
00807                                     do_fio(&c__1, (char *)&result[0], (ftnlen)
00808                                             sizeof(real));
00809                                     e_wsfe();
00810                                 } else {
00811                                     io___64.ciunit = *nout;
00812                                     s_wsfe(&io___64);
00813                                     do_fio(&c__1, "SGESVX", (ftnlen)6);
00814                                     do_fio(&c__1, fact, (ftnlen)1);
00815                                     do_fio(&c__1, trans, (ftnlen)1);
00816                                     do_fio(&c__1, (char *)&n, (ftnlen)sizeof(
00817                                             integer));
00818                                     do_fio(&c__1, (char *)&imat, (ftnlen)
00819                                             sizeof(integer));
00820                                     do_fio(&c__1, (char *)&c__1, (ftnlen)
00821                                             sizeof(integer));
00822                                     do_fio(&c__1, (char *)&result[0], (ftnlen)
00823                                             sizeof(real));
00824                                     e_wsfe();
00825                                 }
00826                                 ++nfail;
00827                                 ++nrun;
00828                             }
00829                             if (result[5] >= *thresh) {
00830                                 if (nfail == 0 && nerrs == 0) {
00831                                     aladhd_(nout, path);
00832                                 }
00833                                 if (prefac) {
00834                                     io___65.ciunit = *nout;
00835                                     s_wsfe(&io___65);
00836                                     do_fio(&c__1, "SGESVX", (ftnlen)6);
00837                                     do_fio(&c__1, fact, (ftnlen)1);
00838                                     do_fio(&c__1, trans, (ftnlen)1);
00839                                     do_fio(&c__1, (char *)&n, (ftnlen)sizeof(
00840                                             integer));
00841                                     do_fio(&c__1, equed, (ftnlen)1);
00842                                     do_fio(&c__1, (char *)&imat, (ftnlen)
00843                                             sizeof(integer));
00844                                     do_fio(&c__1, (char *)&c__6, (ftnlen)
00845                                             sizeof(integer));
00846                                     do_fio(&c__1, (char *)&result[5], (ftnlen)
00847                                             sizeof(real));
00848                                     e_wsfe();
00849                                 } else {
00850                                     io___66.ciunit = *nout;
00851                                     s_wsfe(&io___66);
00852                                     do_fio(&c__1, "SGESVX", (ftnlen)6);
00853                                     do_fio(&c__1, fact, (ftnlen)1);
00854                                     do_fio(&c__1, trans, (ftnlen)1);
00855                                     do_fio(&c__1, (char *)&n, (ftnlen)sizeof(
00856                                             integer));
00857                                     do_fio(&c__1, (char *)&imat, (ftnlen)
00858                                             sizeof(integer));
00859                                     do_fio(&c__1, (char *)&c__6, (ftnlen)
00860                                             sizeof(integer));
00861                                     do_fio(&c__1, (char *)&result[5], (ftnlen)
00862                                             sizeof(real));
00863                                     e_wsfe();
00864                                 }
00865                                 ++nfail;
00866                                 ++nrun;
00867                             }
00868                             if (result[6] >= *thresh) {
00869                                 if (nfail == 0 && nerrs == 0) {
00870                                     aladhd_(nout, path);
00871                                 }
00872                                 if (prefac) {
00873                                     io___67.ciunit = *nout;
00874                                     s_wsfe(&io___67);
00875                                     do_fio(&c__1, "SGESVX", (ftnlen)6);
00876                                     do_fio(&c__1, fact, (ftnlen)1);
00877                                     do_fio(&c__1, trans, (ftnlen)1);
00878                                     do_fio(&c__1, (char *)&n, (ftnlen)sizeof(
00879                                             integer));
00880                                     do_fio(&c__1, equed, (ftnlen)1);
00881                                     do_fio(&c__1, (char *)&imat, (ftnlen)
00882                                             sizeof(integer));
00883                                     do_fio(&c__1, (char *)&c__7, (ftnlen)
00884                                             sizeof(integer));
00885                                     do_fio(&c__1, (char *)&result[6], (ftnlen)
00886                                             sizeof(real));
00887                                     e_wsfe();
00888                                 } else {
00889                                     io___68.ciunit = *nout;
00890                                     s_wsfe(&io___68);
00891                                     do_fio(&c__1, "SGESVX", (ftnlen)6);
00892                                     do_fio(&c__1, fact, (ftnlen)1);
00893                                     do_fio(&c__1, trans, (ftnlen)1);
00894                                     do_fio(&c__1, (char *)&n, (ftnlen)sizeof(
00895                                             integer));
00896                                     do_fio(&c__1, (char *)&imat, (ftnlen)
00897                                             sizeof(integer));
00898                                     do_fio(&c__1, (char *)&c__7, (ftnlen)
00899                                             sizeof(integer));
00900                                     do_fio(&c__1, (char *)&result[6], (ftnlen)
00901                                             sizeof(real));
00902                                     e_wsfe();
00903                                 }
00904                                 ++nfail;
00905                                 ++nrun;
00906                             }
00907 
00908                         }
00909 
00910 /*                    --- Test SGESVXX --- */
00911 
00912 /*                    Restore the matrices A and B. */
00913 
00914                         slacpy_("Full", &n, &n, &asav[1], &lda, &a[1], &lda);
00915                         slacpy_("Full", &n, nrhs, &bsav[1], &lda, &b[1], &lda);
00916                         if (! prefac) {
00917                             slaset_("Full", &n, &n, &c_b20, &c_b20, &afac[1], 
00918                                     &lda);
00919                         }
00920                         slaset_("Full", &n, nrhs, &c_b20, &c_b20, &x[1], &lda);
00921                         if (iequed > 1 && n > 0) {
00922 
00923 /*                       Equilibrate the matrix if FACT = 'F' and */
00924 /*                       EQUED = 'R', 'C', or 'B'. */
00925 
00926                             slaqge_(&n, &n, &a[1], &lda, &s[1], &s[n + 1], &
00927                                     rowcnd, &colcnd, &amax, equed);
00928                         }
00929 
00930 /*                    Solve the system and compute the condition number */
00931 /*                    and error bounds using SGESVXX. */
00932 
00933                         s_copy(srnamc_1.srnamt, "SGESVXX", (ftnlen)32, (
00934                                 ftnlen)7);
00935                         n_err_bnds__ = 3;
00936 
00937                         salloc3();
00938 
00939                         sgesvxx_(fact, trans, &n, nrhs, &a[1], &lda, &afac[1], 
00940                                  &lda, &iwork[1], equed, &s[1], &s[n + 1], &b[
00941                                 1], &lda, &x[1], &lda, &rcond, &rpvgrw_svxx__, 
00942                                  berr, &n_err_bnds__, errbnds_n__, 
00943                                 errbnds_c__, &c__0, &c_b20, &work[1], &iwork[
00944                                 n + 1], &info);
00945 
00946                         free3();
00947 
00948 /*                    Check the error code from SGESVXX. */
00949 
00950                         if (info == n + 1) {
00951                             goto L50;
00952                         }
00953                         if (info != izero) {
00954 /* Writing concatenation */
00955                             i__5[0] = 1, a__1[0] = fact;
00956                             i__5[1] = 1, a__1[1] = trans;
00957                             s_cat(ch__1, a__1, i__5, &c__2, (ftnlen)2);
00958                             alaerh_(path, "SGESVXX", &info, &izero, ch__1, &n, 
00959                                      &n, &c_n1, &c_n1, nrhs, &imat, &nfail, &
00960                                     nerrs, nout);
00961                             goto L50;
00962                         }
00963 
00964 /*                    Compare rpvgrw_svxx from SGESVXX with the computed */
00965 /*                    reciprocal pivot growth factor RPVGRW */
00966 
00967                         if (info > 0 && info < n + 1) {
00968                             rpvgrw = sla_rpvgrw__(&n, &info, &a[1], &lda, &
00969                                     afac[1], &lda);
00970                         } else {
00971                             rpvgrw = sla_rpvgrw__(&n, &n, &a[1], &lda, &afac[
00972                                     1], &lda);
00973                         }
00974                         result[6] = (r__1 = rpvgrw - rpvgrw_svxx__, dabs(r__1)
00975                                 ) / dmax(rpvgrw_svxx__,rpvgrw) / slamch_(
00976                                 "E");
00977 
00978                         if (! prefac) {
00979 
00980 /*                       Reconstruct matrix from factors and compute */
00981 /*                       residual. */
00982 
00983                             sget01_(&n, &n, &a[1], &lda, &afac[1], &lda, &
00984                                     iwork[1], &rwork[(*nrhs << 1) + 1], 
00985                                     result);
00986                             k1 = 1;
00987                         } else {
00988                             k1 = 2;
00989                         }
00990 
00991                         if (info == 0) {
00992                             trfcon = FALSE_;
00993 
00994 /*                       Compute residual of the computed solution. */
00995 
00996                             slacpy_("Full", &n, nrhs, &bsav[1], &lda, &work[1]
00997 , &lda);
00998                             sget02_(trans, &n, &n, nrhs, &asav[1], &lda, &x[1]
00999 , &lda, &work[1], &lda, &rwork[(*nrhs << 
01000                                     1) + 1], &result[1]);
01001 
01002 /*                       Check solution from generated exact solution. */
01003 
01004                             if (nofact || prefac && lsame_(equed, "N")) {
01005                                 sget04_(&n, nrhs, &x[1], &lda, &xact[1], &lda, 
01006                                          &rcondc, &result[2]);
01007                             } else {
01008                                 if (itran == 1) {
01009                                     roldc = roldo;
01010                                 } else {
01011                                     roldc = roldi;
01012                                 }
01013                                 sget04_(&n, nrhs, &x[1], &lda, &xact[1], &lda, 
01014                                          &roldc, &result[2]);
01015                             }
01016                         } else {
01017                             trfcon = TRUE_;
01018                         }
01019 
01020 /*                    Compare RCOND from SGESVXX with the computed value */
01021 /*                    in RCONDC. */
01022 
01023                         result[5] = sget06_(&rcond, &rcondc);
01024 
01025 /*                    Print information about the tests that did not pass */
01026 /*                    the threshold. */
01027 
01028                         if (! trfcon) {
01029                             for (k = k1; k <= 7; ++k) {
01030                                 if (result[k - 1] >= *thresh) {
01031                                     if (nfail == 0 && nerrs == 0) {
01032                                         aladhd_(nout, path);
01033                                     }
01034                                     if (prefac) {
01035                                         io___74.ciunit = *nout;
01036                                         s_wsfe(&io___74);
01037                                         do_fio(&c__1, "SGESVXX", (ftnlen)7);
01038                                         do_fio(&c__1, fact, (ftnlen)1);
01039                                         do_fio(&c__1, trans, (ftnlen)1);
01040                                         do_fio(&c__1, (char *)&n, (ftnlen)
01041                                                 sizeof(integer));
01042                                         do_fio(&c__1, equed, (ftnlen)1);
01043                                         do_fio(&c__1, (char *)&imat, (ftnlen)
01044                                                 sizeof(integer));
01045                                         do_fio(&c__1, (char *)&k, (ftnlen)
01046                                                 sizeof(integer));
01047                                         do_fio(&c__1, (char *)&result[k - 1], 
01048                                                 (ftnlen)sizeof(real));
01049                                         e_wsfe();
01050                                     } else {
01051                                         io___75.ciunit = *nout;
01052                                         s_wsfe(&io___75);
01053                                         do_fio(&c__1, "SGESVXX", (ftnlen)7);
01054                                         do_fio(&c__1, fact, (ftnlen)1);
01055                                         do_fio(&c__1, trans, (ftnlen)1);
01056                                         do_fio(&c__1, (char *)&n, (ftnlen)
01057                                                 sizeof(integer));
01058                                         do_fio(&c__1, (char *)&imat, (ftnlen)
01059                                                 sizeof(integer));
01060                                         do_fio(&c__1, (char *)&k, (ftnlen)
01061                                                 sizeof(integer));
01062                                         do_fio(&c__1, (char *)&result[k - 1], 
01063                                                 (ftnlen)sizeof(real));
01064                                         e_wsfe();
01065                                     }
01066                                     ++nfail;
01067                                 }
01068 /* L45: */
01069                             }
01070                             nrun = nrun + 7 - k1;
01071                         } else {
01072                             if (result[0] >= *thresh && ! prefac) {
01073                                 if (nfail == 0 && nerrs == 0) {
01074                                     aladhd_(nout, path);
01075                                 }
01076                                 if (prefac) {
01077                                     io___76.ciunit = *nout;
01078                                     s_wsfe(&io___76);
01079                                     do_fio(&c__1, "SGESVXX", (ftnlen)7);
01080                                     do_fio(&c__1, fact, (ftnlen)1);
01081                                     do_fio(&c__1, trans, (ftnlen)1);
01082                                     do_fio(&c__1, (char *)&n, (ftnlen)sizeof(
01083                                             integer));
01084                                     do_fio(&c__1, equed, (ftnlen)1);
01085                                     do_fio(&c__1, (char *)&imat, (ftnlen)
01086                                             sizeof(integer));
01087                                     do_fio(&c__1, (char *)&c__1, (ftnlen)
01088                                             sizeof(integer));
01089                                     do_fio(&c__1, (char *)&result[0], (ftnlen)
01090                                             sizeof(real));
01091                                     e_wsfe();
01092                                 } else {
01093                                     io___77.ciunit = *nout;
01094                                     s_wsfe(&io___77);
01095                                     do_fio(&c__1, "SGESVXX", (ftnlen)7);
01096                                     do_fio(&c__1, fact, (ftnlen)1);
01097                                     do_fio(&c__1, trans, (ftnlen)1);
01098                                     do_fio(&c__1, (char *)&n, (ftnlen)sizeof(
01099                                             integer));
01100                                     do_fio(&c__1, (char *)&imat, (ftnlen)
01101                                             sizeof(integer));
01102                                     do_fio(&c__1, (char *)&c__1, (ftnlen)
01103                                             sizeof(integer));
01104                                     do_fio(&c__1, (char *)&result[0], (ftnlen)
01105                                             sizeof(real));
01106                                     e_wsfe();
01107                                 }
01108                                 ++nfail;
01109                                 ++nrun;
01110                             }
01111                             if (result[5] >= *thresh) {
01112                                 if (nfail == 0 && nerrs == 0) {
01113                                     aladhd_(nout, path);
01114                                 }
01115                                 if (prefac) {
01116                                     io___78.ciunit = *nout;
01117                                     s_wsfe(&io___78);
01118                                     do_fio(&c__1, "SGESVXX", (ftnlen)7);
01119                                     do_fio(&c__1, fact, (ftnlen)1);
01120                                     do_fio(&c__1, trans, (ftnlen)1);
01121                                     do_fio(&c__1, (char *)&n, (ftnlen)sizeof(
01122                                             integer));
01123                                     do_fio(&c__1, equed, (ftnlen)1);
01124                                     do_fio(&c__1, (char *)&imat, (ftnlen)
01125                                             sizeof(integer));
01126                                     do_fio(&c__1, (char *)&c__6, (ftnlen)
01127                                             sizeof(integer));
01128                                     do_fio(&c__1, (char *)&result[5], (ftnlen)
01129                                             sizeof(real));
01130                                     e_wsfe();
01131                                 } else {
01132                                     io___79.ciunit = *nout;
01133                                     s_wsfe(&io___79);
01134                                     do_fio(&c__1, "SGESVXX", (ftnlen)7);
01135                                     do_fio(&c__1, fact, (ftnlen)1);
01136                                     do_fio(&c__1, trans, (ftnlen)1);
01137                                     do_fio(&c__1, (char *)&n, (ftnlen)sizeof(
01138                                             integer));
01139                                     do_fio(&c__1, (char *)&imat, (ftnlen)
01140                                             sizeof(integer));
01141                                     do_fio(&c__1, (char *)&c__6, (ftnlen)
01142                                             sizeof(integer));
01143                                     do_fio(&c__1, (char *)&result[5], (ftnlen)
01144                                             sizeof(real));
01145                                     e_wsfe();
01146                                 }
01147                                 ++nfail;
01148                                 ++nrun;
01149                             }
01150                             if (result[6] >= *thresh) {
01151                                 if (nfail == 0 && nerrs == 0) {
01152                                     aladhd_(nout, path);
01153                                 }
01154                                 if (prefac) {
01155                                     io___80.ciunit = *nout;
01156                                     s_wsfe(&io___80);
01157                                     do_fio(&c__1, "SGESVXX", (ftnlen)7);
01158                                     do_fio(&c__1, fact, (ftnlen)1);
01159                                     do_fio(&c__1, trans, (ftnlen)1);
01160                                     do_fio(&c__1, (char *)&n, (ftnlen)sizeof(
01161                                             integer));
01162                                     do_fio(&c__1, equed, (ftnlen)1);
01163                                     do_fio(&c__1, (char *)&imat, (ftnlen)
01164                                             sizeof(integer));
01165                                     do_fio(&c__1, (char *)&c__7, (ftnlen)
01166                                             sizeof(integer));
01167                                     do_fio(&c__1, (char *)&result[6], (ftnlen)
01168                                             sizeof(real));
01169                                     e_wsfe();
01170                                 } else {
01171                                     io___81.ciunit = *nout;
01172                                     s_wsfe(&io___81);
01173                                     do_fio(&c__1, "SGESVXX", (ftnlen)7);
01174                                     do_fio(&c__1, fact, (ftnlen)1);
01175                                     do_fio(&c__1, trans, (ftnlen)1);
01176                                     do_fio(&c__1, (char *)&n, (ftnlen)sizeof(
01177                                             integer));
01178                                     do_fio(&c__1, (char *)&imat, (ftnlen)
01179                                             sizeof(integer));
01180                                     do_fio(&c__1, (char *)&c__7, (ftnlen)
01181                                             sizeof(integer));
01182                                     do_fio(&c__1, (char *)&result[6], (ftnlen)
01183                                             sizeof(real));
01184                                     e_wsfe();
01185                                 }
01186                                 ++nfail;
01187                                 ++nrun;
01188                             }
01189 
01190                         }
01191 
01192 L50:
01193                         ;
01194                     }
01195 L60:
01196                     ;
01197                 }
01198 /* L70: */
01199             }
01200 L80:
01201             ;
01202         }
01203 /* L90: */
01204     }
01205 
01206 /*     Print a summary of the results. */
01207 
01208     alasvm_(path, nout, &nfail, &nrun, &nerrs);
01209 
01210 /*     Test Error Bounds from SGESVXX */
01211     sebchvxx_(thresh, path);
01212     return 0;
01213 
01214 /*     End of SDRVGE */
01215 
01216 } /* sdrvge_ */


swiftnav
Author(s):
autogenerated on Sat Jun 8 2019 18:56:00