Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages | Examples

camlapack/ilaenv.c

Go to the documentation of this file.
00001 /* ILAENV.F -- translated by f2c (version 19941215).
00002    You must link the resulting object file with the libraries:
00003         -lf2c -lm   (in that order)
00004 */
00005 
00006 #include "f2c.h"
00007 
00008 integer ilaenv_(ispec, name, opts, n1, n2, n3, n4, name_len, opts_len)
00009 integer *ispec;
00010 char *name, *opts;
00011 integer *n1, *n2, *n3, *n4;
00012 ftnlen name_len;
00013 ftnlen opts_len;
00014 {
00015     /* System generated locals */
00016     integer ret_val;
00017 
00018     /* Builtin functions */
00019     /* Subroutine */ int s_copy();
00020     integer s_cmp();
00021 
00022     /* Local variables */
00023     static integer i;
00024     static logical cname, sname;
00025     static integer nbmin;
00026     static char c1[1], c2[2], c3[3], c4[2];
00027     static integer ic, nb, iz, nx;
00028     static char subnam[6];
00029 
00030 
00031 /*  -- LAPACK auxiliary routine (preliminary version) -- */
00032 /*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., */
00033 /*     Courant Institute, Argonne National Lab, and Rice University */
00034 /*     February 20, 1992 */
00035 
00036 /*     .. Scalar Arguments .. */
00037 /*     .. */
00038 
00039 /*  Purpose */
00040 /*  ======= */
00041 
00042 /*  ILAENV is called from the LAPACK routines to choose problem-dependent 
00043 */
00044 /*  parameters for the local environment.  See ISPEC for a description of 
00045 */
00046 /*  the parameters. */
00047 
00048 /*  This version provides a set of parameters which should give good, */
00049 /*  but not optimal, performance on many of the currently available */
00050 /*  computers.  Users are encouraged to modify this subroutine to set */
00051 /*  the tuning parameters for their particular machine using the option */
00052 /*  and problem size information in the arguments. */
00053 
00054 /*  This routine will not function correctly if it is converted to all */
00055 /*  lower case.  Converting it to all upper case is allowed. */
00056 
00057 /*  Arguments */
00058 /*  ========= */
00059 
00060 /*  ISPEC   (input) INTEGER */
00061 /*          Specifies the parameter to be returned as the value of */
00062 /*          ILAENV. */
00063 /*          = 1: the optimal blocksize; if this value is 1, an unblocked 
00064 */
00065 /*               algorithm will give the best performance. */
00066 /*          = 2: the minimum block size for which the block routine */
00067 /*               should be used; if the usable block size is less than */
00068 /*               this value, an unblocked routine should be used. */
00069 /*          = 3: the crossover point (in a block routine, for N less */
00070 /*               than this value, an unblocked routine should be used) */
00071 /*          = 4: the number of shifts, used in the nonsymmetric */
00072 /*               eigenvalue routines */
00073 /*          = 5: the minimum column dimension for blocking to be used; */
00074 /*               rectangular blocks must have dimension at least k by m, 
00075 */
00076 /*               where k is given by ILAENV(2,...) and m by ILAENV(5,...) 
00077 */
00078 /*          = 6: the crossover point for the SVD (when reducing an m by n 
00079 */
00080 /*               matrix to bidiagonal form, if max(m,n)/min(m,n) exceeds 
00081 */
00082 /*               this value, a QR factorization is used first to reduce */
00083 /*               the matrix to a triangular form.) */
00084 /*          = 7: the number of processors */
00085 /*          = 8: the crossover point for the multishift QR and QZ methods 
00086 */
00087 /*               for nonsymmetric eigenvalue problems. */
00088 
00089 /*  NAME    (input) CHARACTER*(*) */
00090 /*          The name of the calling subroutine, in either upper case or */
00091 /*          lower case. */
00092 
00093 /*  OPTS    (input) CHARACTER*(*) */
00094 /*          The character options to the subroutine NAME, concatenated */
00095 /*          into a single character string.  For example, UPLO = 'U', */
00096 /*          TRANS = 'T', and DIAG = 'N' for a triangular routine would */
00097 /*          be specified as OPTS = 'UTN'. */
00098 
00099 /*  N1      (input) INTEGER */
00100 /*  N2      (input) INTEGER */
00101 /*  N3      (input) INTEGER */
00102 /*  N4      (input) INTEGER */
00103 /*          Problem dimensions for the subroutine NAME; these may not all 
00104 */
00105 /*          be required. */
00106 
00107 /* (ILAENV) (output) INTEGER */
00108 /*          >= 0: the value of the parameter specified by ISPEC */
00109 /*          < 0:  if ILAENV = -k, the k-th argument had an illegal value. 
00110 */
00111 
00112 /*  Further Details */
00113 /*  =============== */
00114 
00115 /*  The following conventions have been used when calling ILAENV from the 
00116 */
00117 /*  LAPACK routines: */
00118 /*  1)  OPTS is a concatenation of all of the character options to */
00119 /*      subroutine NAME, in the same order that they appear in the */
00120 /*      argument list for NAME, even if they are not used in determining 
00121 */
00122 /*      the value of the parameter specified by ISPEC. */
00123 /*  2)  The problem dimensions N1, N2, N3, N4 are specified in the order 
00124 */
00125 /*      that they appear in the argument list for NAME.  N1 is used */
00126 /*      first, N2 second, and so on, and unused problem dimensions are */
00127 /*      passed a value of -1. */
00128 /*  3)  The parameter value returned by ILAENV is checked for validity in 
00129 */
00130 /*      the calling subroutine.  For example, ILAENV is used to retrieve 
00131 */
00132 /*      the optimal blocksize for STRTRI as follows: */
00133 
00134 /*      NB = ILAENV( 1, 'STRTRI', UPLO // DIAG, N, -1, -1, -1 ) */
00135 /*      IF( NB.LE.1 ) NB = MAX( 1, N ) */
00136 
00137 /*  ===================================================================== 
00138 */
00139 
00140 /*     .. Local Scalars .. */
00141 /*     .. */
00142 /*     .. Intrinsic Functions .. */
00143 /*     .. */
00144 /*     .. Executable Statements .. */
00145 
00146     switch ((int)*ispec) {
00147         case 1:  goto L100;
00148         case 2:  goto L100;
00149         case 3:  goto L100;
00150         case 4:  goto L400;
00151         case 5:  goto L500;
00152         case 6:  goto L600;
00153         case 7:  goto L700;
00154         case 8:  goto L800;
00155     }
00156 
00157 /*     Invalid value for ISPEC */
00158 
00159     ret_val = -1;
00160     return ret_val;
00161 
00162 L100:
00163 
00164 /*     Convert NAME to upper case if the first character is lower case. */
00165 
00166     ret_val = 1;
00167     s_copy(subnam, name, 6L, name_len);
00168     ic = *(unsigned char *)subnam;
00169     iz = 'Z';
00170     if (iz == 90 || iz == 122) {
00171 
00172 /*        ASCII character set */
00173 
00174         if (ic >= 97 && ic <= 122) {
00175             *(unsigned char *)subnam = (char) (ic - 32);
00176             for (i = 2; i <= 6; ++i) {
00177                 ic = *(unsigned char *)&subnam[i - 1];
00178                 if (ic >= 97 && ic <= 122) {
00179                     *(unsigned char *)&subnam[i - 1] = (char) (ic - 32);
00180                 }
00181 /* L10: */
00182             }
00183         }
00184 
00185     } else if (iz == 233 || iz == 169) {
00186 
00187 /*        EBCDIC character set */
00188 
00189         if (ic >= 129 && ic <= 137 || ic >= 145 && ic <= 153 || ic >= 162 && 
00190                 ic <= 169) {
00191             *(unsigned char *)subnam = (char) (ic + 64);
00192             for (i = 2; i <= 6; ++i) {
00193                 ic = *(unsigned char *)&subnam[i - 1];
00194                 if (ic >= 129 && ic <= 137 || ic >= 145 && ic <= 153 || ic >= 
00195                         162 && ic <= 169) {
00196                     *(unsigned char *)&subnam[i - 1] = (char) (ic + 64);
00197                 }
00198 /* L20: */
00199             }
00200         }
00201 
00202     } else if (iz == 218 || iz == 250) {
00203 
00204 /*        Prime machines:  ASCII+128 */
00205 
00206         if (ic >= 225 && ic <= 250) {
00207             *(unsigned char *)subnam = (char) (ic - 32);
00208             for (i = 2; i <= 6; ++i) {
00209                 ic = *(unsigned char *)&subnam[i - 1];
00210                 if (ic >= 225 && ic <= 250) {
00211                     *(unsigned char *)&subnam[i - 1] = (char) (ic - 32);
00212                 }
00213 /* L30: */
00214             }
00215         }
00216     }
00217 
00218     *(unsigned char *)c1 = *(unsigned char *)subnam;
00219     sname = *(unsigned char *)c1 == 'S' || *(unsigned char *)c1 == 'D';
00220     cname = *(unsigned char *)c1 == 'C' || *(unsigned char *)c1 == 'Z';
00221     if (! (cname || sname)) {
00222         return ret_val;
00223     }
00224     s_copy(c2, subnam + 1, 2L, 2L);
00225     s_copy(c3, subnam + 3, 3L, 3L);
00226     s_copy(c4, c3 + 1, 2L, 2L);
00227 
00228     switch ((int)*ispec) {
00229         case 1:  goto L110;
00230         case 2:  goto L200;
00231         case 3:  goto L300;
00232     }
00233 
00234 L110:
00235 
00236 /*     ISPEC = 1:  block size */
00237 
00238 /*     In these examples, separate code is provided for setting NB for */
00239 /*     real and complex.  We assume that NB will take the same value in */
00240 /*     single or double precision. */
00241 
00242     nb = 1;
00243 
00244     if (s_cmp(c2, "GE", 2L, 2L) == 0) {
00245         if (s_cmp(c3, "TRF", 3L, 3L) == 0) {
00246             if (sname) {
00247                 nb = 64;
00248             } else {
00249                 nb = 64;
00250             }
00251         } else if (s_cmp(c3, "QRF", 3L, 3L) == 0 || s_cmp(c3, "RQF", 3L, 3L) 
00252                 == 0 || s_cmp(c3, "LQF", 3L, 3L) == 0 || s_cmp(c3, "QLF", 3L, 
00253                 3L) == 0) {
00254             if (sname) {
00255                 nb = 32;
00256             } else {
00257                 nb = 32;
00258             }
00259         } else if (s_cmp(c3, "HRD", 3L, 3L) == 0) {
00260             if (sname) {
00261                 nb = 32;
00262             } else {
00263                 nb = 32;
00264             }
00265         } else if (s_cmp(c3, "BRD", 3L, 3L) == 0) {
00266             if (sname) {
00267                 nb = 32;
00268             } else {
00269                 nb = 32;
00270             }
00271         } else if (s_cmp(c3, "TRI", 3L, 3L) == 0) {
00272             if (sname) {
00273                 nb = 64;
00274             } else {
00275                 nb = 64;
00276             }
00277         }
00278     } else if (s_cmp(c2, "PO", 2L, 2L) == 0) {
00279         if (s_cmp(c3, "TRF", 3L, 3L) == 0) {
00280             if (sname) {
00281                 nb = 64;
00282             } else {
00283                 nb = 64;
00284             }
00285         }
00286     } else if (s_cmp(c2, "SY", 2L, 2L) == 0) {
00287         if (s_cmp(c3, "TRF", 3L, 3L) == 0) {
00288             if (sname) {
00289                 nb = 64;
00290             } else {
00291                 nb = 64;
00292             }
00293         } else if (sname && s_cmp(c3, "TRD", 3L, 3L) == 0) {
00294             nb = 1;
00295         } else if (sname && s_cmp(c3, "GST", 3L, 3L) == 0) {
00296             nb = 64;
00297         }
00298     } else if (cname && s_cmp(c2, "HE", 2L, 2L) == 0) {
00299         if (s_cmp(c3, "TRF", 3L, 3L) == 0) {
00300             nb = 64;
00301         } else if (s_cmp(c3, "TRD", 3L, 3L) == 0) {
00302             nb = 1;
00303         } else if (s_cmp(c3, "GST", 3L, 3L) == 0) {
00304             nb = 64;
00305         }
00306     } else if (sname && s_cmp(c2, "OR", 2L, 2L) == 0) {
00307         if (*(unsigned char *)c3 == 'G') {
00308             if (s_cmp(c4, "QR", 2L, 2L) == 0 || s_cmp(c4, "RQ", 2L, 2L) == 0 
00309                     || s_cmp(c4, "LQ", 2L, 2L) == 0 || s_cmp(c4, "QL", 2L, 2L)
00310                      == 0 || s_cmp(c4, "HR", 2L, 2L) == 0 || s_cmp(c4, "TR", 
00311                     2L, 2L) == 0 || s_cmp(c4, "BR", 2L, 2L) == 0) {
00312                 nb = 32;
00313             }
00314         } else if (*(unsigned char *)c3 == 'M') {
00315             if (s_cmp(c4, "QR", 2L, 2L) == 0 || s_cmp(c4, "RQ", 2L, 2L) == 0 
00316                     || s_cmp(c4, "LQ", 2L, 2L) == 0 || s_cmp(c4, "QL", 2L, 2L)
00317                      == 0 || s_cmp(c4, "HR", 2L, 2L) == 0 || s_cmp(c4, "TR", 
00318                     2L, 2L) == 0 || s_cmp(c4, "BR", 2L, 2L) == 0) {
00319                 nb = 32;
00320             }
00321         }
00322     } else if (cname && s_cmp(c2, "UN", 2L, 2L) == 0) {
00323         if (*(unsigned char *)c3 == 'G') {
00324             if (s_cmp(c4, "QR", 2L, 2L) == 0 || s_cmp(c4, "RQ", 2L, 2L) == 0 
00325                     || s_cmp(c4, "LQ", 2L, 2L) == 0 || s_cmp(c4, "QL", 2L, 2L)
00326                      == 0 || s_cmp(c4, "HR", 2L, 2L) == 0 || s_cmp(c4, "TR", 
00327                     2L, 2L) == 0 || s_cmp(c4, "BR", 2L, 2L) == 0) {
00328                 nb = 32;
00329             }
00330         } else if (*(unsigned char *)c3 == 'M') {
00331             if (s_cmp(c4, "QR", 2L, 2L) == 0 || s_cmp(c4, "RQ", 2L, 2L) == 0 
00332                     || s_cmp(c4, "LQ", 2L, 2L) == 0 || s_cmp(c4, "QL", 2L, 2L)
00333                      == 0 || s_cmp(c4, "HR", 2L, 2L) == 0 || s_cmp(c4, "TR", 
00334                     2L, 2L) == 0 || s_cmp(c4, "BR", 2L, 2L) == 0) {
00335                 nb = 32;
00336             }
00337         }
00338     } else if (s_cmp(c2, "GB", 2L, 2L) == 0) {
00339         if (s_cmp(c3, "TRF", 3L, 3L) == 0) {
00340             if (sname) {
00341                 if (*n4 <= 64) {
00342                     nb = 1;
00343                 } else {
00344                     nb = 32;
00345                 }
00346             } else {
00347                 if (*n4 <= 64) {
00348                     nb = 1;
00349                 } else {
00350                     nb = 32;
00351                 }
00352             }
00353         }
00354     } else if (s_cmp(c2, "PB", 2L, 2L) == 0) {
00355         if (s_cmp(c3, "TRF", 3L, 3L) == 0) {
00356             if (sname) {
00357                 if (*n2 <= 64) {
00358                     nb = 1;
00359                 } else {
00360                     nb = 32;
00361                 }
00362             } else {
00363                 if (*n2 <= 64) {
00364                     nb = 1;
00365                 } else {
00366                     nb = 32;
00367                 }
00368             }
00369         }
00370     } else if (s_cmp(c2, "TR", 2L, 2L) == 0) {
00371         if (s_cmp(c3, "TRI", 3L, 3L) == 0) {
00372             if (sname) {
00373                 nb = 64;
00374             } else {
00375                 nb = 64;
00376             }
00377         }
00378     } else if (s_cmp(c2, "LA", 2L, 2L) == 0) {
00379         if (s_cmp(c3, "UUM", 3L, 3L) == 0) {
00380             if (sname) {
00381                 nb = 64;
00382             } else {
00383                 nb = 64;
00384             }
00385         }
00386     } else if (sname && s_cmp(c2, "ST", 2L, 2L) == 0) {
00387         if (s_cmp(c3, "EBZ", 3L, 3L) == 0) {
00388             nb = 1;
00389         }
00390     }
00391     ret_val = nb;
00392     return ret_val;
00393 
00394 L200:
00395 
00396 /*     ISPEC = 2:  minimum block size */
00397 
00398     nbmin = 2;
00399     if (s_cmp(c2, "GE", 2L, 2L) == 0) {
00400         if (s_cmp(c3, "QRF", 3L, 3L) == 0 || s_cmp(c3, "RQF", 3L, 3L) == 0 || 
00401                 s_cmp(c3, "LQF", 3L, 3L) == 0 || s_cmp(c3, "QLF", 3L, 3L) == 
00402                 0) {
00403             if (sname) {
00404                 nbmin = 2;
00405             } else {
00406                 nbmin = 2;
00407             }
00408         } else if (s_cmp(c3, "HRD", 3L, 3L) == 0) {
00409             if (sname) {
00410                 nbmin = 2;
00411             } else {
00412                 nbmin = 2;
00413             }
00414         } else if (s_cmp(c3, "BRD", 3L, 3L) == 0) {
00415             if (sname) {
00416                 nbmin = 2;
00417             } else {
00418                 nbmin = 2;
00419             }
00420         } else if (s_cmp(c3, "TRI", 3L, 3L) == 0) {
00421             if (sname) {
00422                 nbmin = 2;
00423             } else {
00424                 nbmin = 2;
00425             }
00426         }
00427     } else if (s_cmp(c2, "SY", 2L, 2L) == 0) {
00428         if (s_cmp(c3, "TRF", 3L, 3L) == 0) {
00429             if (sname) {
00430                 nbmin = 2;
00431             } else {
00432                 nbmin = 2;
00433             }
00434         } else if (sname && s_cmp(c3, "TRD", 3L, 3L) == 0) {
00435             nbmin = 2;
00436         }
00437     } else if (cname && s_cmp(c2, "HE", 2L, 2L) == 0) {
00438         if (s_cmp(c3, "TRD", 3L, 3L) == 0) {
00439             nbmin = 2;
00440         }
00441     } else if (sname && s_cmp(c2, "OR", 2L, 2L) == 0) {
00442         if (*(unsigned char *)c3 == 'G') {
00443             if (s_cmp(c4, "QR", 2L, 2L) == 0 || s_cmp(c4, "RQ", 2L, 2L) == 0 
00444                     || s_cmp(c4, "LQ", 2L, 2L) == 0 || s_cmp(c4, "QL", 2L, 2L)
00445                      == 0 || s_cmp(c4, "HR", 2L, 2L) == 0 || s_cmp(c4, "TR", 
00446                     2L, 2L) == 0 || s_cmp(c4, "BR", 2L, 2L) == 0) {
00447                 nbmin = 2;
00448             }
00449         } else if (*(unsigned char *)c3 == 'M') {
00450             if (s_cmp(c4, "QR", 2L, 2L) == 0 || s_cmp(c4, "RQ", 2L, 2L) == 0 
00451                     || s_cmp(c4, "LQ", 2L, 2L) == 0 || s_cmp(c4, "QL", 2L, 2L)
00452                      == 0 || s_cmp(c4, "HR", 2L, 2L) == 0 || s_cmp(c4, "TR", 
00453                     2L, 2L) == 0 || s_cmp(c4, "BR", 2L, 2L) == 0) {
00454                 nbmin = 2;
00455             }
00456         }
00457     } else if (cname && s_cmp(c2, "UN", 2L, 2L) == 0) {
00458         if (*(unsigned char *)c3 == 'G') {
00459             if (s_cmp(c4, "QR", 2L, 2L) == 0 || s_cmp(c4, "RQ", 2L, 2L) == 0 
00460                     || s_cmp(c4, "LQ", 2L, 2L) == 0 || s_cmp(c4, "QL", 2L, 2L)
00461                      == 0 || s_cmp(c4, "HR", 2L, 2L) == 0 || s_cmp(c4, "TR", 
00462                     2L, 2L) == 0 || s_cmp(c4, "BR", 2L, 2L) == 0) {
00463                 nbmin = 2;
00464             }
00465         } else if (*(unsigned char *)c3 == 'M') {
00466             if (s_cmp(c4, "QR", 2L, 2L) == 0 || s_cmp(c4, "RQ", 2L, 2L) == 0 
00467                     || s_cmp(c4, "LQ", 2L, 2L) == 0 || s_cmp(c4, "QL", 2L, 2L)
00468                      == 0 || s_cmp(c4, "HR", 2L, 2L) == 0 || s_cmp(c4, "TR", 
00469                     2L, 2L) == 0 || s_cmp(c4, "BR", 2L, 2L) == 0) {
00470                 nbmin = 2;
00471             }
00472         }
00473     }
00474     ret_val = nbmin;
00475     return ret_val;
00476 
00477 L300:
00478 
00479 /*     ISPEC = 3:  crossover point */
00480 
00481     nx = 0;
00482     if (s_cmp(c2, "GE", 2L, 2L) == 0) {
00483         if (s_cmp(c3, "QRF", 3L, 3L) == 0 || s_cmp(c3, "RQF", 3L, 3L) == 0 || 
00484                 s_cmp(c3, "LQF", 3L, 3L) == 0 || s_cmp(c3, "QLF", 3L, 3L) == 
00485                 0) {
00486             if (sname) {
00487                 nx = 128;
00488             } else {
00489                 nx = 128;
00490             }
00491         } else if (s_cmp(c3, "HRD", 3L, 3L) == 0) {
00492             if (sname) {
00493                 nx = 128;
00494             } else {
00495                 nx = 128;
00496             }
00497         } else if (s_cmp(c3, "BRD", 3L, 3L) == 0) {
00498             if (sname) {
00499                 nx = 128;
00500             } else {
00501                 nx = 128;
00502             }
00503         }
00504     } else if (s_cmp(c2, "SY", 2L, 2L) == 0) {
00505         if (sname && s_cmp(c3, "TRD", 3L, 3L) == 0) {
00506             nx = 1;
00507         }
00508     } else if (cname && s_cmp(c2, "HE", 2L, 2L) == 0) {
00509         if (s_cmp(c3, "TRD", 3L, 3L) == 0) {
00510             nx = 1;
00511         }
00512     } else if (sname && s_cmp(c2, "OR", 2L, 2L) == 0) {
00513         if (*(unsigned char *)c3 == 'G') {
00514             if (s_cmp(c4, "QR", 2L, 2L) == 0 || s_cmp(c4, "RQ", 2L, 2L) == 0 
00515                     || s_cmp(c4, "LQ", 2L, 2L) == 0 || s_cmp(c4, "QL", 2L, 2L)
00516                      == 0 || s_cmp(c4, "HR", 2L, 2L) == 0 || s_cmp(c4, "TR", 
00517                     2L, 2L) == 0 || s_cmp(c4, "BR", 2L, 2L) == 0) {
00518                 nx = 128;
00519             }
00520         }
00521     } else if (cname && s_cmp(c2, "UN", 2L, 2L) == 0) {
00522         if (*(unsigned char *)c3 == 'G') {
00523             if (s_cmp(c4, "QR", 2L, 2L) == 0 || s_cmp(c4, "RQ", 2L, 2L) == 0 
00524                     || s_cmp(c4, "LQ", 2L, 2L) == 0 || s_cmp(c4, "QL", 2L, 2L)
00525                      == 0 || s_cmp(c4, "HR", 2L, 2L) == 0 || s_cmp(c4, "TR", 
00526                     2L, 2L) == 0 || s_cmp(c4, "BR", 2L, 2L) == 0) {
00527                 nx = 128;
00528             }
00529         }
00530     }
00531     ret_val = nx;
00532     return ret_val;
00533 
00534 L400:
00535 
00536 /*     ISPEC = 4:  number of shifts (used by xHSEQR) */
00537 
00538     ret_val = 6;
00539     return ret_val;
00540 
00541 L500:
00542 
00543 /*     ISPEC = 5:  minimum column dimension (not used) */
00544 
00545     ret_val = 2;
00546     return ret_val;
00547 
00548 L600:
00549 
00550 /*     ISPEC = 6:  crossover point for SVD (used by xGELSS and xGESVD) */
00551 
00552     ret_val = (integer) ((real) min(*n1,*n2) * (float)1.6);
00553     return ret_val;
00554 
00555 L700:
00556 
00557 /*     ISPEC = 7:  number of processors (not used) */
00558 
00559     ret_val = 1;
00560     return ret_val;
00561 
00562 L800:
00563 
00564 /*     ISPEC = 8:  crossover point for multishift (used by xHSEQR) */
00565 
00566     ret_val = 50;
00567     return ret_val;
00568 
00569 /*     End of ILAENV */
00570 
00571 } /* ilaenv_ */
00572 

Generated on Wed Sep 5 12:54:21 2007 for DSACSS Operational Code by  doxygen 1.3.9.1