sdrvpt.c
Go to the documentation of this file.
00001 /* sdrvpt.f -- translated by f2c (version 20061008).
00002    You must link the resulting object file with libf2c:
00003         on Microsoft Windows system, link with libf2c.lib;
00004         on Linux or Unix systems, link with .../path/to/libf2c.a -lm
00005         or, if you install libf2c.a in a standard place, with -lf2c -lm
00006         -- in that order, at the end of the command line, as in
00007                 cc *.o -lf2c -lm
00008         Source for libf2c is in /netlib/f2c/libf2c.zip, e.g.,
00009 
00010                 http://www.netlib.org/f2c/libf2c.zip
00011 */
00012 
00013 #include "f2c.h"
00014 #include "blaswrap.h"
00015 
00016 /* Common Block Declarations */
00017 
00018 struct {
00019     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__2 = 2;
00034 static integer c__0 = 0;
00035 static integer c_n1 = -1;
00036 static integer c__1 = 1;
00037 static real c_b23 = 1.f;
00038 static real c_b24 = 0.f;
00039 
00040 /* Subroutine */ int sdrvpt_(logical *dotype, integer *nn, integer *nval, 
00041         integer *nrhs, real *thresh, logical *tsterr, real *a, real *d__, 
00042         real *e, real *b, real *x, real *xact, real *work, real *rwork, 
00043         integer *nout)
00044 {
00045     /* Initialized data */
00046 
00047     static integer iseedy[4] = { 0,0,0,1 };
00048 
00049     /* Format strings */
00050     static char fmt_9999[] = "(1x,a,\002, N =\002,i5,\002, type \002,i2,\002"
00051             ", test \002,i2,\002, ratio = \002,g12.5)";
00052     static char fmt_9998[] = "(1x,a,\002, FACT='\002,a1,\002', N =\002,i5"
00053             ",\002, type \002,i2,\002, test \002,i2,\002, ratio = \002,g12.5)";
00054 
00055     /* System generated locals */
00056     integer i__1, i__2, i__3, i__4;
00057     real r__1, r__2, r__3;
00058 
00059     /* Builtin functions */
00060     /* Subroutine */ int s_copy(char *, char *, ftnlen, ftnlen);
00061     integer s_wsfe(cilist *), do_fio(integer *, char *, ftnlen), e_wsfe(void);
00062 
00063     /* Local variables */
00064     integer i__, j, k, n;
00065     real z__[3];
00066     integer k1, ia, in, kl, ku, ix, nt, lda;
00067     char fact[1];
00068     real cond;
00069     integer mode;
00070     real dmax__;
00071     integer imat, info;
00072     char path[3], dist[1], type__[1];
00073     integer nrun, ifact, nfail, iseed[4];
00074     real rcond;
00075     extern /* Subroutine */ int sget04_(integer *, integer *, real *, integer 
00076             *, real *, integer *, real *, real *), sscal_(integer *, real *, 
00077             real *, integer *);
00078     integer nimat;
00079     extern doublereal sget06_(real *, real *);
00080     real anorm;
00081     integer izero, nerrs;
00082     extern doublereal sasum_(integer *, real *, integer *);
00083     extern /* Subroutine */ int sptt01_(integer *, real *, real *, real *, 
00084             real *, real *, real *), sptt02_(integer *, integer *, real *, 
00085             real *, real *, integer *, real *, integer *, real *), scopy_(
00086             integer *, real *, integer *, real *, integer *), sptt05_(integer 
00087             *, integer *, real *, real *, real *, integer *, real *, integer *
00088 , real *, integer *, real *, real *, real *);
00089     logical zerot;
00090     extern /* Subroutine */ int sptsv_(integer *, integer *, real *, real *, 
00091             real *, integer *, integer *), slatb4_(char *, integer *, integer 
00092             *, integer *, char *, integer *, integer *, real *, integer *, 
00093             real *, char *), aladhd_(integer *, char *
00094 ), alaerh_(char *, char *, integer *, integer *, char *, 
00095             integer *, integer *, integer *, integer *, integer *, integer *, 
00096             integer *, integer *, integer *);
00097     real rcondc;
00098     extern integer isamax_(integer *, real *, integer *);
00099     extern /* Subroutine */ int alasvm_(char *, integer *, integer *, integer 
00100             *, integer *);
00101     real ainvnm;
00102     extern /* Subroutine */ int slacpy_(char *, integer *, integer *, real *, 
00103             integer *, real *, integer *), slaset_(char *, integer *, 
00104             integer *, real *, real *, real *, integer *), slaptm_(
00105             integer *, integer *, real *, real *, real *, real *, integer *, 
00106             real *, real *, integer *), slatms_(integer *, integer *, char *, 
00107             integer *, char *, real *, integer *, real *, real *, integer *, 
00108             integer *, char *, real *, integer *, real *, integer *);
00109     extern doublereal slanst_(char *, integer *, real *, real *);
00110     extern /* Subroutine */ int slarnv_(integer *, integer *, integer *, real 
00111             *);
00112     real result[6];
00113     extern /* Subroutine */ int spttrf_(integer *, real *, real *, integer *),
00114              serrvx_(char *, integer *), spttrs_(integer *, integer *, 
00115              real *, real *, real *, integer *, integer *), sptsvx_(char *, 
00116             integer *, integer *, real *, real *, real *, real *, real *, 
00117             integer *, real *, integer *, real *, real *, real *, real *, 
00118             integer *);
00119 
00120     /* Fortran I/O blocks */
00121     static cilist io___35 = { 0, 0, 0, fmt_9999, 0 };
00122     static cilist io___38 = { 0, 0, 0, fmt_9998, 0 };
00123 
00124 
00125 
00126 /*  -- LAPACK test routine (version 3.1) -- */
00127 /*     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd.. */
00128 /*     November 2006 */
00129 
00130 /*     .. Scalar Arguments .. */
00131 /*     .. */
00132 /*     .. Array Arguments .. */
00133 /*     .. */
00134 
00135 /*  Purpose */
00136 /*  ======= */
00137 
00138 /*  SDRVPT tests SPTSV and -SVX. */
00139 
00140 /*  Arguments */
00141 /*  ========= */
00142 
00143 /*  DOTYPE  (input) LOGICAL array, dimension (NTYPES) */
00144 /*          The matrix types to be used for testing.  Matrices of type j */
00145 /*          (for 1 <= j <= NTYPES) are used for testing if DOTYPE(j) = */
00146 /*          .TRUE.; if DOTYPE(j) = .FALSE., then type j is not used. */
00147 
00148 /*  NN      (input) INTEGER */
00149 /*          The number of values of N contained in the vector NVAL. */
00150 
00151 /*  NVAL    (input) INTEGER array, dimension (NN) */
00152 /*          The values of the matrix dimension N. */
00153 
00154 /*  NRHS    (input) INTEGER */
00155 /*          The number of right hand side vectors to be generated for */
00156 /*          each linear system. */
00157 
00158 /*  THRESH  (input) REAL */
00159 /*          The threshold value for the test ratios.  A result is */
00160 /*          included in the output file if RESULT >= THRESH.  To have */
00161 /*          every test ratio printed, use THRESH = 0. */
00162 
00163 /*  TSTERR  (input) LOGICAL */
00164 /*          Flag that indicates whether error exits are to be tested. */
00165 
00166 /*  A       (workspace) REAL array, dimension (NMAX*2) */
00167 
00168 /*  D       (workspace) REAL array, dimension (NMAX*2) */
00169 
00170 /*  E       (workspace) REAL array, dimension (NMAX*2) */
00171 
00172 /*  B       (workspace) REAL array, dimension (NMAX*NRHS) */
00173 
00174 /*  X       (workspace) REAL array, dimension (NMAX*NRHS) */
00175 
00176 /*  XACT    (workspace) REAL array, dimension (NMAX*NRHS) */
00177 
00178 /*  WORK    (workspace) REAL array, dimension */
00179 /*                      (NMAX*max(3,NRHS)) */
00180 
00181 /*  RWORK   (workspace) REAL array, dimension */
00182 /*                      (max(NMAX,2*NRHS)) */
00183 
00184 /*  NOUT    (input) INTEGER */
00185 /*          The unit number for output. */
00186 
00187 /*  ===================================================================== */
00188 
00189 /*     .. Parameters .. */
00190 /*     .. */
00191 /*     .. Local Scalars .. */
00192 /*     .. */
00193 /*     .. Local Arrays .. */
00194 /*     .. */
00195 /*     .. External Functions .. */
00196 /*     .. */
00197 /*     .. External Subroutines .. */
00198 /*     .. */
00199 /*     .. Intrinsic Functions .. */
00200 /*     .. */
00201 /*     .. Scalars in Common .. */
00202 /*     .. */
00203 /*     .. Common blocks .. */
00204 /*     .. */
00205 /*     .. Data statements .. */
00206     /* Parameter adjustments */
00207     --rwork;
00208     --work;
00209     --xact;
00210     --x;
00211     --b;
00212     --e;
00213     --d__;
00214     --a;
00215     --nval;
00216     --dotype;
00217 
00218     /* Function Body */
00219 /*     .. */
00220 /*     .. Executable Statements .. */
00221 
00222     s_copy(path, "Single precision", (ftnlen)1, (ftnlen)16);
00223     s_copy(path + 1, "PT", (ftnlen)2, (ftnlen)2);
00224     nrun = 0;
00225     nfail = 0;
00226     nerrs = 0;
00227     for (i__ = 1; i__ <= 4; ++i__) {
00228         iseed[i__ - 1] = iseedy[i__ - 1];
00229 /* L10: */
00230     }
00231 
00232 /*     Test the error exits */
00233 
00234     if (*tsterr) {
00235         serrvx_(path, nout);
00236     }
00237     infoc_1.infot = 0;
00238 
00239     i__1 = *nn;
00240     for (in = 1; in <= i__1; ++in) {
00241 
00242 /*        Do for each value of N in NVAL. */
00243 
00244         n = nval[in];
00245         lda = max(1,n);
00246         nimat = 12;
00247         if (n <= 0) {
00248             nimat = 1;
00249         }
00250 
00251         i__2 = nimat;
00252         for (imat = 1; imat <= i__2; ++imat) {
00253 
00254 /*           Do the tests only if DOTYPE( IMAT ) is true. */
00255 
00256             if (n > 0 && ! dotype[imat]) {
00257                 goto L110;
00258             }
00259 
00260 /*           Set up parameters with SLATB4. */
00261 
00262             slatb4_(path, &imat, &n, &n, type__, &kl, &ku, &anorm, &mode, &
00263                     cond, dist);
00264 
00265             zerot = imat >= 8 && imat <= 10;
00266             if (imat <= 6) {
00267 
00268 /*              Type 1-6:  generate a symmetric tridiagonal matrix of */
00269 /*              known condition number in lower triangular band storage. */
00270 
00271                 s_copy(srnamc_1.srnamt, "SLATMS", (ftnlen)32, (ftnlen)6);
00272                 slatms_(&n, &n, dist, iseed, type__, &rwork[1], &mode, &cond, 
00273                         &anorm, &kl, &ku, "B", &a[1], &c__2, &work[1], &info);
00274 
00275 /*              Check the error code from SLATMS. */
00276 
00277                 if (info != 0) {
00278                     alaerh_(path, "SLATMS", &info, &c__0, " ", &n, &n, &kl, &
00279                             ku, &c_n1, &imat, &nfail, &nerrs, nout);
00280                     goto L110;
00281                 }
00282                 izero = 0;
00283 
00284 /*              Copy the matrix to D and E. */
00285 
00286                 ia = 1;
00287                 i__3 = n - 1;
00288                 for (i__ = 1; i__ <= i__3; ++i__) {
00289                     d__[i__] = a[ia];
00290                     e[i__] = a[ia + 1];
00291                     ia += 2;
00292 /* L20: */
00293                 }
00294                 if (n > 0) {
00295                     d__[n] = a[ia];
00296                 }
00297             } else {
00298 
00299 /*              Type 7-12:  generate a diagonally dominant matrix with */
00300 /*              unknown condition number in the vectors D and E. */
00301 
00302                 if (! zerot || ! dotype[7]) {
00303 
00304 /*                 Let D and E have values from [-1,1]. */
00305 
00306                     slarnv_(&c__2, iseed, &n, &d__[1]);
00307                     i__3 = n - 1;
00308                     slarnv_(&c__2, iseed, &i__3, &e[1]);
00309 
00310 /*                 Make the tridiagonal matrix diagonally dominant. */
00311 
00312                     if (n == 1) {
00313                         d__[1] = dabs(d__[1]);
00314                     } else {
00315                         d__[1] = dabs(d__[1]) + dabs(e[1]);
00316                         d__[n] = (r__1 = d__[n], dabs(r__1)) + (r__2 = e[n - 
00317                                 1], dabs(r__2));
00318                         i__3 = n - 1;
00319                         for (i__ = 2; i__ <= i__3; ++i__) {
00320                             d__[i__] = (r__1 = d__[i__], dabs(r__1)) + (r__2 =
00321                                      e[i__], dabs(r__2)) + (r__3 = e[i__ - 1],
00322                                      dabs(r__3));
00323 /* L30: */
00324                         }
00325                     }
00326 
00327 /*                 Scale D and E so the maximum element is ANORM. */
00328 
00329                     ix = isamax_(&n, &d__[1], &c__1);
00330                     dmax__ = d__[ix];
00331                     r__1 = anorm / dmax__;
00332                     sscal_(&n, &r__1, &d__[1], &c__1);
00333                     if (n > 1) {
00334                         i__3 = n - 1;
00335                         r__1 = anorm / dmax__;
00336                         sscal_(&i__3, &r__1, &e[1], &c__1);
00337                     }
00338 
00339                 } else if (izero > 0) {
00340 
00341 /*                 Reuse the last matrix by copying back the zeroed out */
00342 /*                 elements. */
00343 
00344                     if (izero == 1) {
00345                         d__[1] = z__[1];
00346                         if (n > 1) {
00347                             e[1] = z__[2];
00348                         }
00349                     } else if (izero == n) {
00350                         e[n - 1] = z__[0];
00351                         d__[n] = z__[1];
00352                     } else {
00353                         e[izero - 1] = z__[0];
00354                         d__[izero] = z__[1];
00355                         e[izero] = z__[2];
00356                     }
00357                 }
00358 
00359 /*              For types 8-10, set one row and column of the matrix to */
00360 /*              zero. */
00361 
00362                 izero = 0;
00363                 if (imat == 8) {
00364                     izero = 1;
00365                     z__[1] = d__[1];
00366                     d__[1] = 0.f;
00367                     if (n > 1) {
00368                         z__[2] = e[1];
00369                         e[1] = 0.f;
00370                     }
00371                 } else if (imat == 9) {
00372                     izero = n;
00373                     if (n > 1) {
00374                         z__[0] = e[n - 1];
00375                         e[n - 1] = 0.f;
00376                     }
00377                     z__[1] = d__[n];
00378                     d__[n] = 0.f;
00379                 } else if (imat == 10) {
00380                     izero = (n + 1) / 2;
00381                     if (izero > 1) {
00382                         z__[0] = e[izero - 1];
00383                         z__[2] = e[izero];
00384                         e[izero - 1] = 0.f;
00385                         e[izero] = 0.f;
00386                     }
00387                     z__[1] = d__[izero];
00388                     d__[izero] = 0.f;
00389                 }
00390             }
00391 
00392 /*           Generate NRHS random solution vectors. */
00393 
00394             ix = 1;
00395             i__3 = *nrhs;
00396             for (j = 1; j <= i__3; ++j) {
00397                 slarnv_(&c__2, iseed, &n, &xact[ix]);
00398                 ix += lda;
00399 /* L40: */
00400             }
00401 
00402 /*           Set the right hand side. */
00403 
00404             slaptm_(&n, nrhs, &c_b23, &d__[1], &e[1], &xact[1], &lda, &c_b24, 
00405                     &b[1], &lda);
00406 
00407             for (ifact = 1; ifact <= 2; ++ifact) {
00408                 if (ifact == 1) {
00409                     *(unsigned char *)fact = 'F';
00410                 } else {
00411                     *(unsigned char *)fact = 'N';
00412                 }
00413 
00414 /*              Compute the condition number for comparison with */
00415 /*              the value returned by SPTSVX. */
00416 
00417                 if (zerot) {
00418                     if (ifact == 1) {
00419                         goto L100;
00420                     }
00421                     rcondc = 0.f;
00422 
00423                 } else if (ifact == 1) {
00424 
00425 /*                 Compute the 1-norm of A. */
00426 
00427                     anorm = slanst_("1", &n, &d__[1], &e[1]);
00428 
00429                     scopy_(&n, &d__[1], &c__1, &d__[n + 1], &c__1);
00430                     if (n > 1) {
00431                         i__3 = n - 1;
00432                         scopy_(&i__3, &e[1], &c__1, &e[n + 1], &c__1);
00433                     }
00434 
00435 /*                 Factor the matrix A. */
00436 
00437                     spttrf_(&n, &d__[n + 1], &e[n + 1], &info);
00438 
00439 /*                 Use SPTTRS to solve for one column at a time of */
00440 /*                 inv(A), computing the maximum column sum as we go. */
00441 
00442                     ainvnm = 0.f;
00443                     i__3 = n;
00444                     for (i__ = 1; i__ <= i__3; ++i__) {
00445                         i__4 = n;
00446                         for (j = 1; j <= i__4; ++j) {
00447                             x[j] = 0.f;
00448 /* L50: */
00449                         }
00450                         x[i__] = 1.f;
00451                         spttrs_(&n, &c__1, &d__[n + 1], &e[n + 1], &x[1], &
00452                                 lda, &info);
00453 /* Computing MAX */
00454                         r__1 = ainvnm, r__2 = sasum_(&n, &x[1], &c__1);
00455                         ainvnm = dmax(r__1,r__2);
00456 /* L60: */
00457                     }
00458 
00459 /*                 Compute the 1-norm condition number of A. */
00460 
00461                     if (anorm <= 0.f || ainvnm <= 0.f) {
00462                         rcondc = 1.f;
00463                     } else {
00464                         rcondc = 1.f / anorm / ainvnm;
00465                     }
00466                 }
00467 
00468                 if (ifact == 2) {
00469 
00470 /*                 --- Test SPTSV -- */
00471 
00472                     scopy_(&n, &d__[1], &c__1, &d__[n + 1], &c__1);
00473                     if (n > 1) {
00474                         i__3 = n - 1;
00475                         scopy_(&i__3, &e[1], &c__1, &e[n + 1], &c__1);
00476                     }
00477                     slacpy_("Full", &n, nrhs, &b[1], &lda, &x[1], &lda);
00478 
00479 /*                 Factor A as L*D*L' and solve the system A*X = B. */
00480 
00481                     s_copy(srnamc_1.srnamt, "SPTSV ", (ftnlen)32, (ftnlen)6);
00482                     sptsv_(&n, nrhs, &d__[n + 1], &e[n + 1], &x[1], &lda, &
00483                             info);
00484 
00485 /*                 Check error code from SPTSV . */
00486 
00487                     if (info != izero) {
00488                         alaerh_(path, "SPTSV ", &info, &izero, " ", &n, &n, &
00489                                 c__1, &c__1, nrhs, &imat, &nfail, &nerrs, 
00490                                 nout);
00491                     }
00492                     nt = 0;
00493                     if (izero == 0) {
00494 
00495 /*                    Check the factorization by computing the ratio */
00496 /*                       norm(L*D*L' - A) / (n * norm(A) * EPS ) */
00497 
00498                         sptt01_(&n, &d__[1], &e[1], &d__[n + 1], &e[n + 1], &
00499                                 work[1], result);
00500 
00501 /*                    Compute the residual in the solution. */
00502 
00503                         slacpy_("Full", &n, nrhs, &b[1], &lda, &work[1], &lda);
00504                         sptt02_(&n, nrhs, &d__[1], &e[1], &x[1], &lda, &work[
00505                                 1], &lda, &result[1]);
00506 
00507 /*                    Check solution from generated exact solution. */
00508 
00509                         sget04_(&n, nrhs, &x[1], &lda, &xact[1], &lda, &
00510                                 rcondc, &result[2]);
00511                         nt = 3;
00512                     }
00513 
00514 /*                 Print information about the tests that did not pass */
00515 /*                 the threshold. */
00516 
00517                     i__3 = nt;
00518                     for (k = 1; k <= i__3; ++k) {
00519                         if (result[k - 1] >= *thresh) {
00520                             if (nfail == 0 && nerrs == 0) {
00521                                 aladhd_(nout, path);
00522                             }
00523                             io___35.ciunit = *nout;
00524                             s_wsfe(&io___35);
00525                             do_fio(&c__1, "SPTSV ", (ftnlen)6);
00526                             do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer))
00527                                     ;
00528                             do_fio(&c__1, (char *)&imat, (ftnlen)sizeof(
00529                                     integer));
00530                             do_fio(&c__1, (char *)&k, (ftnlen)sizeof(integer))
00531                                     ;
00532                             do_fio(&c__1, (char *)&result[k - 1], (ftnlen)
00533                                     sizeof(real));
00534                             e_wsfe();
00535                             ++nfail;
00536                         }
00537 /* L70: */
00538                     }
00539                     nrun += nt;
00540                 }
00541 
00542 /*              --- Test SPTSVX --- */
00543 
00544                 if (ifact > 1) {
00545 
00546 /*                 Initialize D( N+1:2*N ) and E( N+1:2*N ) to zero. */
00547 
00548                     i__3 = n - 1;
00549                     for (i__ = 1; i__ <= i__3; ++i__) {
00550                         d__[n + i__] = 0.f;
00551                         e[n + i__] = 0.f;
00552 /* L80: */
00553                     }
00554                     if (n > 0) {
00555                         d__[n + n] = 0.f;
00556                     }
00557                 }
00558 
00559                 slaset_("Full", &n, nrhs, &c_b24, &c_b24, &x[1], &lda);
00560 
00561 /*              Solve the system and compute the condition number and */
00562 /*              error bounds using SPTSVX. */
00563 
00564                 s_copy(srnamc_1.srnamt, "SPTSVX", (ftnlen)32, (ftnlen)6);
00565                 sptsvx_(fact, &n, nrhs, &d__[1], &e[1], &d__[n + 1], &e[n + 1]
00566 , &b[1], &lda, &x[1], &lda, &rcond, &rwork[1], &rwork[
00567                         *nrhs + 1], &work[1], &info);
00568 
00569 /*              Check the error code from SPTSVX. */
00570 
00571                 if (info != izero) {
00572                     alaerh_(path, "SPTSVX", &info, &izero, fact, &n, &n, &
00573                             c__1, &c__1, nrhs, &imat, &nfail, &nerrs, nout);
00574                 }
00575                 if (izero == 0) {
00576                     if (ifact == 2) {
00577 
00578 /*                    Check the factorization by computing the ratio */
00579 /*                       norm(L*D*L' - A) / (n * norm(A) * EPS ) */
00580 
00581                         k1 = 1;
00582                         sptt01_(&n, &d__[1], &e[1], &d__[n + 1], &e[n + 1], &
00583                                 work[1], result);
00584                     } else {
00585                         k1 = 2;
00586                     }
00587 
00588 /*                 Compute the residual in the solution. */
00589 
00590                     slacpy_("Full", &n, nrhs, &b[1], &lda, &work[1], &lda);
00591                     sptt02_(&n, nrhs, &d__[1], &e[1], &x[1], &lda, &work[1], &
00592                             lda, &result[1]);
00593 
00594 /*                 Check solution from generated exact solution. */
00595 
00596                     sget04_(&n, nrhs, &x[1], &lda, &xact[1], &lda, &rcondc, &
00597                             result[2]);
00598 
00599 /*                 Check error bounds from iterative refinement. */
00600 
00601                     sptt05_(&n, nrhs, &d__[1], &e[1], &b[1], &lda, &x[1], &
00602                             lda, &xact[1], &lda, &rwork[1], &rwork[*nrhs + 1], 
00603                              &result[3]);
00604                 } else {
00605                     k1 = 6;
00606                 }
00607 
00608 /*              Check the reciprocal of the condition number. */
00609 
00610                 result[5] = sget06_(&rcond, &rcondc);
00611 
00612 /*              Print information about the tests that did not pass */
00613 /*              the threshold. */
00614 
00615                 for (k = k1; k <= 6; ++k) {
00616                     if (result[k - 1] >= *thresh) {
00617                         if (nfail == 0 && nerrs == 0) {
00618                             aladhd_(nout, path);
00619                         }
00620                         io___38.ciunit = *nout;
00621                         s_wsfe(&io___38);
00622                         do_fio(&c__1, "SPTSVX", (ftnlen)6);
00623                         do_fio(&c__1, fact, (ftnlen)1);
00624                         do_fio(&c__1, (char *)&n, (ftnlen)sizeof(integer));
00625                         do_fio(&c__1, (char *)&imat, (ftnlen)sizeof(integer));
00626                         do_fio(&c__1, (char *)&k, (ftnlen)sizeof(integer));
00627                         do_fio(&c__1, (char *)&result[k - 1], (ftnlen)sizeof(
00628                                 real));
00629                         e_wsfe();
00630                         ++nfail;
00631                     }
00632 /* L90: */
00633                 }
00634                 nrun = nrun + 7 - k1;
00635 L100:
00636                 ;
00637             }
00638 L110:
00639             ;
00640         }
00641 /* L120: */
00642     }
00643 
00644 /*     Print a summary of the results. */
00645 
00646     alasvm_(path, nout, &nfail, &nrun, &nerrs);
00647 
00648     return 0;
00649 
00650 /*     End of SDRVPT */
00651 
00652 } /* sdrvpt_ */


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