00001
00002
00003
00004
00005
00006 #include "f2c.h"
00007 #include "cblasimpexp.h"
00008
00009 integer __IMPEXP__ ilaenv_(ispec, name, opts, n1, n2, n3, n4, name_len, opts_len)
00010 integer *ispec;
00011 char *name, *opts;
00012 integer *n1, *n2, *n3, *n4;
00013 ftnlen name_len;
00014 ftnlen opts_len;
00015 {
00016
00017 integer ret_val;
00018
00019
00020 int s_copy();
00021 integer s_cmp();
00022
00023
00024 static integer i;
00025 static logical cname, sname;
00026 static integer nbmin;
00027 static char c1[1], c2[2], c3[3], c4[2];
00028 static integer ic, nb, iz, nx;
00029 static char subnam[6];
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147 switch ((int)*ispec) {
00148 case 1: goto L100;
00149 case 2: goto L100;
00150 case 3: goto L100;
00151 case 4: goto L400;
00152 case 5: goto L500;
00153 case 6: goto L600;
00154 case 7: goto L700;
00155 case 8: goto L800;
00156 }
00157
00158
00159
00160 ret_val = -1;
00161 return ret_val;
00162
00163 L100:
00164
00165
00166
00167 ret_val = 1;
00168 s_copy(subnam, name, 6L, name_len);
00169 ic = *(unsigned char *)subnam;
00170 iz = 'Z';
00171 if (iz == 90 || iz == 122) {
00172
00173
00174
00175 if (ic >= 97 && ic <= 122) {
00176 *(unsigned char *)subnam = (char) (ic - 32);
00177 for (i = 2; i <= 6; ++i) {
00178 ic = *(unsigned char *)&subnam[i - 1];
00179 if (ic >= 97 && ic <= 122) {
00180 *(unsigned char *)&subnam[i - 1] = (char) (ic - 32);
00181 }
00182
00183 }
00184 }
00185
00186 } else if (iz == 233 || iz == 169) {
00187
00188
00189
00190 if (ic >= 129 && ic <= 137 || ic >= 145 && ic <= 153 || ic >= 162 &&
00191 ic <= 169) {
00192 *(unsigned char *)subnam = (char) (ic + 64);
00193 for (i = 2; i <= 6; ++i) {
00194 ic = *(unsigned char *)&subnam[i - 1];
00195 if (ic >= 129 && ic <= 137 || ic >= 145 && ic <= 153 || ic >=
00196 162 && ic <= 169) {
00197 *(unsigned char *)&subnam[i - 1] = (char) (ic + 64);
00198 }
00199
00200 }
00201 }
00202
00203 } else if (iz == 218 || iz == 250) {
00204
00205
00206
00207 if (ic >= 225 && ic <= 250) {
00208 *(unsigned char *)subnam = (char) (ic - 32);
00209 for (i = 2; i <= 6; ++i) {
00210 ic = *(unsigned char *)&subnam[i - 1];
00211 if (ic >= 225 && ic <= 250) {
00212 *(unsigned char *)&subnam[i - 1] = (char) (ic - 32);
00213 }
00214
00215 }
00216 }
00217 }
00218
00219 *(unsigned char *)c1 = *(unsigned char *)subnam;
00220 sname = *(unsigned char *)c1 == 'S' || *(unsigned char *)c1 == 'D';
00221 cname = *(unsigned char *)c1 == 'C' || *(unsigned char *)c1 == 'Z';
00222 if (! (cname || sname)) {
00223 return ret_val;
00224 }
00225 s_copy(c2, subnam + 1, 2L, 2L);
00226 s_copy(c3, subnam + 3, 3L, 3L);
00227 s_copy(c4, c3 + 1, 2L, 2L);
00228
00229 switch ((int)*ispec) {
00230 case 1: goto L110;
00231 case 2: goto L200;
00232 case 3: goto L300;
00233 }
00234
00235 L110:
00236
00237
00238
00239
00240
00241
00242
00243 nb = 1;
00244
00245 if (s_cmp(c2, "GE", 2L, 2L) == 0) {
00246 if (s_cmp(c3, "TRF", 3L, 3L) == 0) {
00247 if (sname) {
00248 nb = 64;
00249 } else {
00250 nb = 64;
00251 }
00252 } else if (s_cmp(c3, "QRF", 3L, 3L) == 0 || s_cmp(c3, "RQF", 3L, 3L)
00253 == 0 || s_cmp(c3, "LQF", 3L, 3L) == 0 || s_cmp(c3, "QLF", 3L,
00254 3L) == 0) {
00255 if (sname) {
00256 nb = 32;
00257 } else {
00258 nb = 32;
00259 }
00260 } else if (s_cmp(c3, "HRD", 3L, 3L) == 0) {
00261 if (sname) {
00262 nb = 32;
00263 } else {
00264 nb = 32;
00265 }
00266 } else if (s_cmp(c3, "BRD", 3L, 3L) == 0) {
00267 if (sname) {
00268 nb = 32;
00269 } else {
00270 nb = 32;
00271 }
00272 } else if (s_cmp(c3, "TRI", 3L, 3L) == 0) {
00273 if (sname) {
00274 nb = 64;
00275 } else {
00276 nb = 64;
00277 }
00278 }
00279 } else if (s_cmp(c2, "PO", 2L, 2L) == 0) {
00280 if (s_cmp(c3, "TRF", 3L, 3L) == 0) {
00281 if (sname) {
00282 nb = 64;
00283 } else {
00284 nb = 64;
00285 }
00286 }
00287 } else if (s_cmp(c2, "SY", 2L, 2L) == 0) {
00288 if (s_cmp(c3, "TRF", 3L, 3L) == 0) {
00289 if (sname) {
00290 nb = 64;
00291 } else {
00292 nb = 64;
00293 }
00294 } else if (sname && s_cmp(c3, "TRD", 3L, 3L) == 0) {
00295 nb = 1;
00296 } else if (sname && s_cmp(c3, "GST", 3L, 3L) == 0) {
00297 nb = 64;
00298 }
00299 } else if (cname && s_cmp(c2, "HE", 2L, 2L) == 0) {
00300 if (s_cmp(c3, "TRF", 3L, 3L) == 0) {
00301 nb = 64;
00302 } else if (s_cmp(c3, "TRD", 3L, 3L) == 0) {
00303 nb = 1;
00304 } else if (s_cmp(c3, "GST", 3L, 3L) == 0) {
00305 nb = 64;
00306 }
00307 } else if (sname && s_cmp(c2, "OR", 2L, 2L) == 0) {
00308 if (*(unsigned char *)c3 == 'G') {
00309 if (s_cmp(c4, "QR", 2L, 2L) == 0 || s_cmp(c4, "RQ", 2L, 2L) == 0
00310 || s_cmp(c4, "LQ", 2L, 2L) == 0 || s_cmp(c4, "QL", 2L, 2L)
00311 == 0 || s_cmp(c4, "HR", 2L, 2L) == 0 || s_cmp(c4, "TR",
00312 2L, 2L) == 0 || s_cmp(c4, "BR", 2L, 2L) == 0) {
00313 nb = 32;
00314 }
00315 } else if (*(unsigned char *)c3 == 'M') {
00316 if (s_cmp(c4, "QR", 2L, 2L) == 0 || s_cmp(c4, "RQ", 2L, 2L) == 0
00317 || s_cmp(c4, "LQ", 2L, 2L) == 0 || s_cmp(c4, "QL", 2L, 2L)
00318 == 0 || s_cmp(c4, "HR", 2L, 2L) == 0 || s_cmp(c4, "TR",
00319 2L, 2L) == 0 || s_cmp(c4, "BR", 2L, 2L) == 0) {
00320 nb = 32;
00321 }
00322 }
00323 } else if (cname && s_cmp(c2, "UN", 2L, 2L) == 0) {
00324 if (*(unsigned char *)c3 == 'G') {
00325 if (s_cmp(c4, "QR", 2L, 2L) == 0 || s_cmp(c4, "RQ", 2L, 2L) == 0
00326 || s_cmp(c4, "LQ", 2L, 2L) == 0 || s_cmp(c4, "QL", 2L, 2L)
00327 == 0 || s_cmp(c4, "HR", 2L, 2L) == 0 || s_cmp(c4, "TR",
00328 2L, 2L) == 0 || s_cmp(c4, "BR", 2L, 2L) == 0) {
00329 nb = 32;
00330 }
00331 } else if (*(unsigned char *)c3 == 'M') {
00332 if (s_cmp(c4, "QR", 2L, 2L) == 0 || s_cmp(c4, "RQ", 2L, 2L) == 0
00333 || s_cmp(c4, "LQ", 2L, 2L) == 0 || s_cmp(c4, "QL", 2L, 2L)
00334 == 0 || s_cmp(c4, "HR", 2L, 2L) == 0 || s_cmp(c4, "TR",
00335 2L, 2L) == 0 || s_cmp(c4, "BR", 2L, 2L) == 0) {
00336 nb = 32;
00337 }
00338 }
00339 } else if (s_cmp(c2, "GB", 2L, 2L) == 0) {
00340 if (s_cmp(c3, "TRF", 3L, 3L) == 0) {
00341 if (sname) {
00342 if (*n4 <= 64) {
00343 nb = 1;
00344 } else {
00345 nb = 32;
00346 }
00347 } else {
00348 if (*n4 <= 64) {
00349 nb = 1;
00350 } else {
00351 nb = 32;
00352 }
00353 }
00354 }
00355 } else if (s_cmp(c2, "PB", 2L, 2L) == 0) {
00356 if (s_cmp(c3, "TRF", 3L, 3L) == 0) {
00357 if (sname) {
00358 if (*n2 <= 64) {
00359 nb = 1;
00360 } else {
00361 nb = 32;
00362 }
00363 } else {
00364 if (*n2 <= 64) {
00365 nb = 1;
00366 } else {
00367 nb = 32;
00368 }
00369 }
00370 }
00371 } else if (s_cmp(c2, "TR", 2L, 2L) == 0) {
00372 if (s_cmp(c3, "TRI", 3L, 3L) == 0) {
00373 if (sname) {
00374 nb = 64;
00375 } else {
00376 nb = 64;
00377 }
00378 }
00379 } else if (s_cmp(c2, "LA", 2L, 2L) == 0) {
00380 if (s_cmp(c3, "UUM", 3L, 3L) == 0) {
00381 if (sname) {
00382 nb = 64;
00383 } else {
00384 nb = 64;
00385 }
00386 }
00387 } else if (sname && s_cmp(c2, "ST", 2L, 2L) == 0) {
00388 if (s_cmp(c3, "EBZ", 3L, 3L) == 0) {
00389 nb = 1;
00390 }
00391 }
00392 ret_val = nb;
00393 return ret_val;
00394
00395 L200:
00396
00397
00398
00399 nbmin = 2;
00400 if (s_cmp(c2, "GE", 2L, 2L) == 0) {
00401 if (s_cmp(c3, "QRF", 3L, 3L) == 0 || s_cmp(c3, "RQF", 3L, 3L) == 0 ||
00402 s_cmp(c3, "LQF", 3L, 3L) == 0 || s_cmp(c3, "QLF", 3L, 3L) ==
00403 0) {
00404 if (sname) {
00405 nbmin = 2;
00406 } else {
00407 nbmin = 2;
00408 }
00409 } else if (s_cmp(c3, "HRD", 3L, 3L) == 0) {
00410 if (sname) {
00411 nbmin = 2;
00412 } else {
00413 nbmin = 2;
00414 }
00415 } else if (s_cmp(c3, "BRD", 3L, 3L) == 0) {
00416 if (sname) {
00417 nbmin = 2;
00418 } else {
00419 nbmin = 2;
00420 }
00421 } else if (s_cmp(c3, "TRI", 3L, 3L) == 0) {
00422 if (sname) {
00423 nbmin = 2;
00424 } else {
00425 nbmin = 2;
00426 }
00427 }
00428 } else if (s_cmp(c2, "SY", 2L, 2L) == 0) {
00429 if (s_cmp(c3, "TRF", 3L, 3L) == 0) {
00430 if (sname) {
00431 nbmin = 2;
00432 } else {
00433 nbmin = 2;
00434 }
00435 } else if (sname && s_cmp(c3, "TRD", 3L, 3L) == 0) {
00436 nbmin = 2;
00437 }
00438 } else if (cname && s_cmp(c2, "HE", 2L, 2L) == 0) {
00439 if (s_cmp(c3, "TRD", 3L, 3L) == 0) {
00440 nbmin = 2;
00441 }
00442 } else if (sname && s_cmp(c2, "OR", 2L, 2L) == 0) {
00443 if (*(unsigned char *)c3 == 'G') {
00444 if (s_cmp(c4, "QR", 2L, 2L) == 0 || s_cmp(c4, "RQ", 2L, 2L) == 0
00445 || s_cmp(c4, "LQ", 2L, 2L) == 0 || s_cmp(c4, "QL", 2L, 2L)
00446 == 0 || s_cmp(c4, "HR", 2L, 2L) == 0 || s_cmp(c4, "TR",
00447 2L, 2L) == 0 || s_cmp(c4, "BR", 2L, 2L) == 0) {
00448 nbmin = 2;
00449 }
00450 } else if (*(unsigned char *)c3 == 'M') {
00451 if (s_cmp(c4, "QR", 2L, 2L) == 0 || s_cmp(c4, "RQ", 2L, 2L) == 0
00452 || s_cmp(c4, "LQ", 2L, 2L) == 0 || s_cmp(c4, "QL", 2L, 2L)
00453 == 0 || s_cmp(c4, "HR", 2L, 2L) == 0 || s_cmp(c4, "TR",
00454 2L, 2L) == 0 || s_cmp(c4, "BR", 2L, 2L) == 0) {
00455 nbmin = 2;
00456 }
00457 }
00458 } else if (cname && s_cmp(c2, "UN", 2L, 2L) == 0) {
00459 if (*(unsigned char *)c3 == 'G') {
00460 if (s_cmp(c4, "QR", 2L, 2L) == 0 || s_cmp(c4, "RQ", 2L, 2L) == 0
00461 || s_cmp(c4, "LQ", 2L, 2L) == 0 || s_cmp(c4, "QL", 2L, 2L)
00462 == 0 || s_cmp(c4, "HR", 2L, 2L) == 0 || s_cmp(c4, "TR",
00463 2L, 2L) == 0 || s_cmp(c4, "BR", 2L, 2L) == 0) {
00464 nbmin = 2;
00465 }
00466 } else if (*(unsigned char *)c3 == 'M') {
00467 if (s_cmp(c4, "QR", 2L, 2L) == 0 || s_cmp(c4, "RQ", 2L, 2L) == 0
00468 || s_cmp(c4, "LQ", 2L, 2L) == 0 || s_cmp(c4, "QL", 2L, 2L)
00469 == 0 || s_cmp(c4, "HR", 2L, 2L) == 0 || s_cmp(c4, "TR",
00470 2L, 2L) == 0 || s_cmp(c4, "BR", 2L, 2L) == 0) {
00471 nbmin = 2;
00472 }
00473 }
00474 }
00475 ret_val = nbmin;
00476 return ret_val;
00477
00478 L300:
00479
00480
00481
00482 nx = 0;
00483 if (s_cmp(c2, "GE", 2L, 2L) == 0) {
00484 if (s_cmp(c3, "QRF", 3L, 3L) == 0 || s_cmp(c3, "RQF", 3L, 3L) == 0 ||
00485 s_cmp(c3, "LQF", 3L, 3L) == 0 || s_cmp(c3, "QLF", 3L, 3L) ==
00486 0) {
00487 if (sname) {
00488 nx = 128;
00489 } else {
00490 nx = 128;
00491 }
00492 } else if (s_cmp(c3, "HRD", 3L, 3L) == 0) {
00493 if (sname) {
00494 nx = 128;
00495 } else {
00496 nx = 128;
00497 }
00498 } else if (s_cmp(c3, "BRD", 3L, 3L) == 0) {
00499 if (sname) {
00500 nx = 128;
00501 } else {
00502 nx = 128;
00503 }
00504 }
00505 } else if (s_cmp(c2, "SY", 2L, 2L) == 0) {
00506 if (sname && s_cmp(c3, "TRD", 3L, 3L) == 0) {
00507 nx = 1;
00508 }
00509 } else if (cname && s_cmp(c2, "HE", 2L, 2L) == 0) {
00510 if (s_cmp(c3, "TRD", 3L, 3L) == 0) {
00511 nx = 1;
00512 }
00513 } else if (sname && s_cmp(c2, "OR", 2L, 2L) == 0) {
00514 if (*(unsigned char *)c3 == 'G') {
00515 if (s_cmp(c4, "QR", 2L, 2L) == 0 || s_cmp(c4, "RQ", 2L, 2L) == 0
00516 || s_cmp(c4, "LQ", 2L, 2L) == 0 || s_cmp(c4, "QL", 2L, 2L)
00517 == 0 || s_cmp(c4, "HR", 2L, 2L) == 0 || s_cmp(c4, "TR",
00518 2L, 2L) == 0 || s_cmp(c4, "BR", 2L, 2L) == 0) {
00519 nx = 128;
00520 }
00521 }
00522 } else if (cname && s_cmp(c2, "UN", 2L, 2L) == 0) {
00523 if (*(unsigned char *)c3 == 'G') {
00524 if (s_cmp(c4, "QR", 2L, 2L) == 0 || s_cmp(c4, "RQ", 2L, 2L) == 0
00525 || s_cmp(c4, "LQ", 2L, 2L) == 0 || s_cmp(c4, "QL", 2L, 2L)
00526 == 0 || s_cmp(c4, "HR", 2L, 2L) == 0 || s_cmp(c4, "TR",
00527 2L, 2L) == 0 || s_cmp(c4, "BR", 2L, 2L) == 0) {
00528 nx = 128;
00529 }
00530 }
00531 }
00532 ret_val = nx;
00533 return ret_val;
00534
00535 L400:
00536
00537
00538
00539 ret_val = 6;
00540 return ret_val;
00541
00542 L500:
00543
00544
00545
00546 ret_val = 2;
00547 return ret_val;
00548
00549 L600:
00550
00551
00552
00553 ret_val = (integer) ((real) min(*n1,*n2) * (float)1.6);
00554 return ret_val;
00555
00556 L700:
00557
00558
00559
00560 ret_val = 1;
00561 return ret_val;
00562
00563 L800:
00564
00565
00566
00567 ret_val = 50;
00568 return ret_val;
00569
00570
00571
00572 }
00573