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


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