20 typedef long int integer;
21 typedef long int logical;
27 typedef long int flag;
28 typedef long int ftnlen;
29 typedef long int ftnint;
41 static integer ndfalt = 0;
42 static integer c__2 = 2;
43 static double c_b13 = 0.;
44 static integer c_n1 = -1;
45 static integer c__1 = 1;
46 static double c_b33 = 1.;
47 static double c_b44 = -1.;
49 int stopx_(integer* i) {
54 static integer c__3 = 3;
55 static integer c__4 = 4;
56 static double c_b4 = .33333333333333331;
57 static integer c__5 = 5;
58 static integer c__6 = 6;
60 static integer c__32767 = 32767;
61 static integer c_b8 = 16777215;
62 static integer c__16405 = 16405;
63 static integer c_b12 = 9876536;
64 static integer c__0 = 0;
65 static integer c_b18 = 4194303;
66 static integer c__9 = 9;
67 static double c_b16 = 0.;
68 static logical c_false =
false;
69 static double c_b40 = 1.;
70 static double c_b45 = -1.;
376 case 6:
return sizeof (int);
379 case 9:
return LONG_MAX;
380 case 10:
return FLT_RADIX;
381 case 11:
return FLT_MANT_DIG;
382 case 12:
return FLT_MIN_EXP;
383 case 13:
return FLT_MAX_EXP;
384 case 14:
return DBL_MANT_DIG;
385 case 15:
return DBL_MIN_EXP;
386 case 16:
return DBL_MAX_EXP;
388 fprintf(stderr,
"invalid argument: i1mach(%ld)\n", *i);
396 inline T d1mach_(
long *i) {
398 case 1:
return std::numeric_limits<T>::min();
399 case 2:
return std::numeric_limits<T>::max();
400 case 3:
return std::numeric_limits<T>::epsilon() / std::numeric_limits<T>::radix;
401 case 4:
return std::numeric_limits<T>::epsilon();
402 case 5:
return std::log10(std::numeric_limits<T>::radix);
404 std::cerr <<
"invalid argument: d1mach(%ld)\n" << *i;
411 integer i7mdcn_(integer *k) {
414 static integer mdperm[3] = {2, 4, 1};
432 ret_val =
i1mach_(&mdperm[(0 + (0 + ((*k - 1) << 2))) / 4]);
446 template<
typename doublereal>
447 doublereal dr7mdc_(integer *k) {
450 static doublereal big = 0.;
451 static doublereal eta = 0.;
452 static doublereal machep = 0.;
453 static doublereal zero = 0.;
484 big = d1mach_<doublereal>(&c__2);
485 eta = d1mach_<doublereal>(&c__1);
486 machep = d1mach_<doublereal>(&c__4);
505 ret_val = std::sqrt(eta * 256.) / 16.;
513 ret_val = std::sqrt(machep);
517 ret_val = std::sqrt(big / 256.) * 16.;
530 template<
typename doublereal>
531 int dv7dfl_(integer *alg, integer *lv, doublereal *v) {
533 doublereal d__1, d__2, d__3;
540 static doublereal machep, mepcrt, sqteps;
579 machep = dr7mdc_<doublereal>(&c__3);
581 if (machep > 1e-10) {
587 sqteps = dr7mdc_<doublereal>(&c__4);
590 mepcrt = std::pow(machep, c_b4);
603 d__1 = 1e-10, d__2 = d__3 * d__3;
604 v[32] = std::max(d__1, d__2);
612 v[34] = machep * 100.;
621 d__1 = 1e-6, d__2 = machep * 100.;
622 v[47] = std::max(d__1, d__2);
629 v[46] = dr7mdc_<doublereal>(&c__5);
639 v[42] = machep * 1e3;
647 template<
typename doublereal>
648 inline int divset_(integer *alg, integer *iv, integer *liv, integer
649 *lv, doublereal *v) {
652 static integer miniv[4] = {82, 59, 103, 103};
653 static integer minv[4] = {98, 71, 101, 85};
655 static integer mv, miv, alg1;
694 iv[21] = i7mdcn_(&c__1);
699 if (*alg < 1 || *alg > 4) {
702 miv = miniv[*alg - 1];
710 alg1 = (*alg - 1) % 2 + 1;
711 dv7dfl_(&alg1, lv, &v[1]);
784 template<
typename doublereal>
785 inline int dv7scp_(integer *p, doublereal *y, doublereal *s) {
802 for (i__ = 1; i__ <= i__1; ++i__) {
809 template<
typename doublereal>
810 inline int dv7vmp_(integer *n, doublereal *x, doublereal *y,
811 doublereal *z__, integer *k) {
832 for (i__ = 1; i__ <= i__1; ++i__) {
834 x[i__] = y[i__] / z__[i__];
840 for (i__ = 1; i__ <= i__1; ++i__) {
842 x[i__] = y[i__] * z__[i__];
849 template<
typename doublereal>
850 doublereal dv2nrm_(integer *p, doublereal *x) {
853 static doublereal sqteta = 0.;
857 doublereal ret_val, d__1;
863 static integer i__, j;
864 static doublereal r__, t, xi, scale;
891 for (i__ = 1; i__ <= i__1; ++i__) {
901 scale = (d__1 = x[i__], std::fabs(d__1));
910 sqteta = dr7mdc_<doublereal>(&c__2);
919 for (i__ = j; i__ <= i__1; ++i__) {
920 xi = (d__1 = x[i__], std::fabs(d__1));
934 t = t * r__ * r__ + 1.;
940 ret_val = scale * std::sqrt(t);
946 template<
typename doublereal>
947 inline int dv7cpy_(integer *p, doublereal *y, doublereal *x) {
965 for (i__ = 1; i__ <= i__1; ++i__) {
972 template<
typename doublereal>
973 doublereal dd7tpr_(integer *p, doublereal *x, doublereal *y) {
976 static doublereal sqteta = 0.;
980 doublereal ret_val, d__1, d__2, d__3, d__4;
1011 sqteta = dr7mdc_<doublereal>(&c__2);
1014 for (i__ = 1; i__ <= i__1; ++i__) {
1016 d__3 = (d__1 = x[i__], std::fabs(d__1)), d__4 = (d__2 = y[i__], std::fabs(d__2));
1017 t = std::max(d__3, d__4);
1024 t = x[i__] / sqteta * y[i__];
1025 if (std::fabs(t) < sqteta) {
1029 ret_val += x[i__] * y[i__];
1039 template<
typename doublereal>
1040 inline int dl7ivm_(integer *n, doublereal *x, doublereal *l,
1046 static integer i__, j, k;
1047 static doublereal t;
1067 for (k = 1; k <= i__1; ++k) {
1076 j = k * (k + 1) / 2;
1083 for (i__ = k; i__ <= i__1; ++i__) {
1085 t = dd7tpr_(&i__2, &l[j + 1], &x[1]);
1087 x[i__] = (y[i__] - t) / l[j];
1095 template<
typename doublereal>
1096 int dl7itv_(integer *n, doublereal *x, doublereal *l,
1102 static integer i__, j, i0, ii, ij;
1103 static doublereal xi;
1104 static integer im1, np1;
1123 for (i__ = 1; i__ <= i__1; ++i__) {
1128 i0 = *n * (*n + 1) / 2;
1130 for (ii = 1; ii <= i__1; ++ii) {
1132 xi = x[i__] / l[i0];
1143 for (j = 1; j <= i__2; ++j) {
1156 template<
typename doublereal>
1157 int dl7tvm_(integer *n, doublereal *x, doublereal *l,
1163 static integer i__, j, i0, ij;
1164 static doublereal yi;
1185 for (i__ = 1; i__ <= i__1; ++i__) {
1189 for (j = 1; j <= i__2; ++j) {
1202 template<
typename doublereal>
1203 int dd7dog_(doublereal *dig, integer *lv, integer *n,
1204 doublereal *nwtstp, doublereal *step, doublereal *v) {
1214 static doublereal t, t1, t2, cfact, relax, cnorm, gnorm, rlambd, ghinvg,
1215 femnsq, ctrnwt, nwtnrm;
1332 rlambd = v[8] / nwtnrm;
1350 for (i__ = 1; i__ <= i__1; ++i__) {
1352 step[i__] = -nwtstp[i__];
1359 d__1 = gnorm / v[44];
1360 cfact = d__1 * d__1;
1362 cnorm = gnorm * cfact;
1363 relax = 1. - v[43] * (1. - gnorm * cnorm / ghinvg);
1364 if (rlambd < relax) {
1370 v[5] = 1. - (rlambd - relax) / (1. - relax);
1373 v[7] = rlambd * (1. - rlambd * .5) * ghinvg;
1376 for (i__ = 1; i__ <= i__1; ++i__) {
1378 step[i__] = t * nwtstp[i__];
1392 v[5] = cnorm / v[8] + 1.;
1393 v[4] = -v[8] * gnorm;
1395 d__1 = v[44] / gnorm;
1396 v[7] = v[8] * (gnorm - v[8] * .5 * (d__1 * d__1));
1398 for (i__ = 1; i__ <= i__1; ++i__) {
1400 step[i__] = t * dig[i__];
1408 ctrnwt = cfact * relax * ghinvg / gnorm;
1413 t1 = ctrnwt - gnorm * (d__1 * d__1);
1418 t2 = v[8] * (v[8] / gnorm) - gnorm * (d__1 * d__1);
1420 femnsq = t / gnorm * t - ctrnwt - t1;
1424 t = t2 / (t1 +
sqrt(d__1 * d__1 + femnsq * t2));
1426 t1 = (t - 1.) * cfact;
1433 v[4] = t1 * (d__1 * d__1) + t2 * ghinvg;
1436 v[7] = -t1 * gnorm * ((t2 + 1.) * gnorm) - t2 * (t2 * .5 + 1.) * ghinvg -
1439 for (i__ = 1; i__ <= i__1; ++i__) {
1441 step[i__] = t1 * dig[i__] + t2 * nwtstp[i__];
1449 template<
typename doublereal>
1450 int dv2axy_(integer *p, doublereal *w, doublereal *a,
1451 doublereal *x, doublereal *y) {
1470 for (i__ = 1; i__ <= i__1; ++i__) {
1472 w[i__] = *a * x[i__] + y[i__];
1477 template<
typename doublereal>
1478 doublereal drldst_(integer *p, doublereal *d__, doublereal *x, doublereal *x0) {
1481 doublereal ret_val, d__1, d__2;
1485 static doublereal t, emax, xmax;
1508 for (i__ = 1; i__ <= i__1; ++i__) {
1509 t = (d__1 = d__[i__] * (x[i__] - x0[i__]), std::fabs(d__1));
1513 t = d__[i__] * ((d__1 = x[i__], std::fabs(d__1)) + (d__2 = x0[i__], std::fabs(
1522 ret_val = emax / xmax;
1529 template<
typename doublereal>
1530 int da7sst_(integer *iv, integer *liv, integer *lv,
1533 doublereal d__1, d__2;
1536 static integer i__, nfc;
1537 static doublereal gts, emax, xmax, rfac1, emaxs;
1538 static logical goodx;
1789 if (i__ >= 1 && i__ <= 12) {
1825 if (iv[5] != iv[32]) {
1889 if (v[10] < v[12]) {
1895 if (iv[5] == iv[32]) {
1904 if (v[12] >= v[13]) {
1907 if (iv[10] < iv[11]) {
1909 }
else if (nfc < iv[7] + iv[11] + 2) {
1911 }
else if (iv[12] != 0) {
1919 rfac1 = v[2] / v[18];
1926 v[11] = v[13] - v[10];
1934 v[11] = v[13] - v[10];
1935 if (v[11] > v[27] * v[7]) {
1945 if (v[10] < v[13]) {
1957 if (iv[10] < iv[11]) {
1970 if (v[11] > v[7] * v[26]) {
1977 if (iv[10] >= iv[11]) {
1993 emax = v[4] + v[11];
1997 d__1 = v[24], d__2 = v[4] * .5 / emax;
1998 v[16] = rfac1 * std::max(d__1, d__2);
2004 if (v[17] <= v[34]) {
2008 if (v[10] < v[13]) {
2020 if (v[11] < -v[28] * v[4]) {
2043 if (v[11] < (.5 / v[16] - 1.) * gts) {
2045 d__1 = v[23], d__2 = gts * .5 / (gts + v[11]);
2046 v[16] = std::max(d__1, d__2);
2052 if (v[3] >= 0. && (v[3] < v[2] * 2. || v[6] < v[11] * 1.2)) {
2096 if (iv[9] == 1 && v[12] < v[13]) {
2099 if (std::fabs(v[10]) < v[31]) {
2102 if (v[11] * .5 > v[7]) {
2105 emax = v[32] * std::fabs(v[13]);
2106 emaxs = v[37] * std::fabs(v[13]);
2107 if (v[7] <= emaxs && (v[2] > v[36] || v[5] == 0.)) {
2114 if ((v[6] > 0. && v[6] <= emax) || (v[6] == 0. && v[7] == 0.)) {
2117 if (v[5] == 0. && v[17] <= v[33] && goodx) {
2128 if (iv[29] > 5 && iv[29] != 12) {
2137 if (v[7] >= emaxs) {
2143 if (v[3] * .5 <= v[36]) {
2148 if (v[2] * .5 <= v[36]) {
2151 xmax = v[36] / v[2];
2152 if (xmax * (2. - xmax) * v[7] >= emaxs) {
2180 v[2] = std::fabs(v[18]);
2189 if (-v[6] <= v[37] * std::fabs(v[13])) {
2199 template<
typename doublereal>
2200 int dl7vml_(integer *n, doublereal *x, doublereal *l,
2206 static integer i__, j;
2207 static doublereal t;
2208 static integer i0, ii, ij, np1;
2228 i0 = *n * (*n + 1) / 2;
2230 for (ii = 1; ii <= i__1; ++ii) {
2235 for (j = 1; j <= i__2; ++j) {
2248 template<
typename doublereal>
2249 int dw7zbf_(doublereal *l, integer *n, doublereal *s,
2250 doublereal *w, doublereal *y, doublereal *z__) {
2259 static doublereal cs, cy, ys, shs, theta, epsrt;
2331 dl7tvm_(n, &w[1], &l[1], &s[1]);
2332 shs = dd7tpr_(n, &w[1], &w[1]);
2333 ys = dd7tpr_(n, &y[1], &s[1]);
2334 if (ys >= shs * .1) {
2337 theta = shs * .90000000000000002 / (shs - ys);
2339 cy = theta / (shs * epsrt);
2340 cs = ((theta - 1.) / epsrt + 1.) / shs;
2346 dl7ivm_(n, &z__[1], &l[1], &y[1]);
2348 for (i__ = 1; i__ <= i__1; ++i__) {
2350 z__[i__] = cy * z__[i__] - cs * w[i__];
2358 template<
typename doublereal>
2359 int dl7upd_(doublereal *beta, doublereal *gamma, doublereal *
2360 l, doublereal *lambda, doublereal *lplus, integer *n, doublereal *w,
2370 static doublereal a, b;
2371 static integer i__, j, k;
2372 static doublereal s, bj, gj;
2373 static integer ij, jj;
2374 static doublereal lj, wj, nu, zj;
2375 static integer jp1, nm1, np1;
2376 static doublereal eta, lij, ljj, theta;
2468 for (i__ = 1; i__ <= i__1; ++i__) {
2480 for (j = 1; j <= i__1; ++j) {
2482 a = nu * z__[j] - eta * wj;
2483 theta = a * wj + 1.;
2487 lj =
sqrt(d__1 * d__1 + a * s);
2493 gamma[j] = b * nu / lj;
2494 beta[j] = (a - b * eta) / lj;
2498 eta = -(eta + d__1 * d__1 / (theta - lj)) / lj;
2502 lambda[*n] = (nu * z__[*n] - eta * w[*n]) * w[*n] + 1.;
2507 jj = *n * (*n + 1) / 2;
2509 for (k = 1; k <= i__1; ++k) {
2513 lplus[jj] = lj * ljj;
2526 for (i__ = jp1; i__ <= i__2; ++i__) {
2528 lplus[ij] = lj * lij + bj * w[i__] + gj * z__[i__];
2530 z__[i__] += lij * zj;
2544 template<
typename doublereal>
2545 int dparck_(integer *alg, doublereal *d__, integer *iv,
2546 integer *liv, integer *lv, integer *n, doublereal *v) {
2549 static doublereal big = 0.;
2550 static char* cngd[] = {
"---C",
"HANG",
"ED V"};
2551 static char* dflt[] = {
"NOND",
"EFAU",
"LT V"};
2552 static integer ijmp = 33;
2553 static integer jlim[4] = {0, 24, 0, 24};
2554 static integer ndflt[4] = {32, 25, 32, 25};
2555 static integer miniv[4] = {82, 59, 103, 103};
2556 static doublereal machep = -1.;
2557 static doublereal tiny = 1.;
2558 static doublereal zero = 0.;
2559 static char* vn[] = {
"EPSL",
"ON..",
"PHMN",
"FC..",
"PHMX",
"FC..",
"DECF",
2560 "AC..",
"INCF",
"AC..",
"RDFC",
"MN..",
"RDFC",
"MX..",
"TUNE",
"R1..",
2561 "TUNE",
"R2..",
"TUNE",
"R3..",
"TUNE",
"R4..",
"TUNE",
"R5..",
"AFCT",
2562 "OL..",
"RFCT",
"OL..",
"XCTO",
"L...",
"XFTO",
"L...",
"LMAX",
"0...",
2563 "LMAX",
"S...",
"SCTO",
"L...",
"DINI",
"T...",
"DTIN",
"IT..",
"D0IN",
2564 "IT..",
"DFAC",
"....",
"DLTF",
"DC..",
"DLTF",
"DJ..",
"DELT",
"A0..",
2565 "FUZZ",
"....",
"RLIM",
"IT..",
"COSM",
"IN..",
"HUBE",
"RC..",
"RSPT",
2566 "OL..",
"SIGM",
"IN..",
"ETA0",
"....",
"BIAS",
"...."};
2567 static doublereal vm[34] = {.001, -.99, .001, .01, 1.2, .01, 1.2, 0., 0., .001,
2568 -1., 0.0, 0., 0.0, 0., 0., 0.0, 0.0, 0., -10., 0., 0., 0., 0.0, 0.0, 0.0, 1.01,
2569 1e10, 0.0, 0., 0., 0., 0.0, 0.};
2570 static doublereal vx[34] = {.9, -.001, 10., .8, 100., .8, 100., .5, .5, 1., 1., 0.0,
2571 0.0, .1, 1., 1., 0.0, 0.0, 1., 0.0, 0.0, 0.0, 1., 1., 1., 1., 1e10, 0.0, 1., 0.0,
2573 static char* varnm[] = {
"P",
"P"};
2574 static char* sh[] = {
"S",
"H"};
2577 static char fmt_10[] =
"(/\002 THE FIRST PARAMETER TO DIVSET SHOULD B"
2578 "E\002,i3,\002 RATHER THAN\002,i3)";
2579 static char fmt_40[] =
"(/\002 /// BAD\002,a1,\002 =\002,i5)";
2580 static char fmt_70[] =
"(/\002 /// \002,1a1,\002 CHANGED FROM \002,i5"
2581 ",\002 TO \002,i5)";
2582 static char fmt_90[] =
"(/\002 /// IV(1) =\002,i5,\002 SHOULD BE BETWEE"
2584 static char fmt_130[] =
"(/\002 /// \002,2a4,\002.. V(\002,i2,\002) "
2585 "=\002,d11.3,\002 SHOULD\002,\002 BE BETWEEN\002,d11.3,\002 AN"
2587 static char fmt_160[] =
"(/\002 IV(NVDFLT) =\002,i5,\002 RATHER THAN "
2589 static char fmt_180[] =
"(/\002 /// D(\002,i3,\002) =\002,d11.3,\002 SH"
2590 "OULD BE POSITIVE\002)";
2591 static char fmt_220[] =
"(/\002 NONDEFAULT VALUES....\002/\002 INIT\002,"
2592 "a1,\002..... IV(25) =\002,i3)";
2593 static char fmt_260[] =
"(/\002 \002,3a4,\002ALUES....\002/)";
2594 static char fmt_240[] =
"(\002 DTYPE..... IV(16) =\002,i3)";
2595 static char fmt_270[] =
"(1x,2a4,\002.. V(\002,i2,\002) =\002,d15.7)";
2596 static char fmt_310[] =
"(/\002 /// LIV =\002,i5,\002 MUST BE AT LEAS"
2598 static char fmt_330[] =
"(/\002 /// LV =\002,i5,\002 MUST BE AT LEAST"
2600 static char fmt_350[] =
"(/\002 /// ALG =\002,i5,\002 MUST BE 1 2, 3, OR"
2602 static char fmt_370[] =
"(/\002 /// LIV =\002,i5,\002 MUST BE AT LEAS"
2603 "T\002,i5,\002 TO COMPUTE TRUE MIN. LIV AND MIN. LV\002)";
2613 static integer i__, j, k, l, m, ii;
2614 static doublereal vk;
2615 static integer pu, iv1, alg1, miv1, miv2;
2616 static char which[4 * 3];
2620 static integer parsv1, ndfalt;
2625 static cilist io___17 = {0, 0, 0, fmt_10, 0};
2626 static cilist io___22 = {0, 0, 0, fmt_40, 0};
2627 static cilist io___25 = {0, 0, 0, fmt_70, 0};
2628 static cilist io___26 = {0, 0, 0, fmt_90, 0};
2629 static cilist io___33 = {0, 0, 0, fmt_130, 0};
2630 static cilist io___34 = {0, 0, 0, fmt_160, 0};
2631 static cilist io___35 = {0, 0, 0, fmt_180, 0};
2632 static cilist io___36 = {0, 0, 0, fmt_220, 0};
2633 static cilist io___37 = {0, 0, 0, fmt_260, 0};
2634 static cilist io___38 = {0, 0, 0, fmt_240, 0};
2635 static cilist io___40 = {0, 0, 0, fmt_260, 0};
2636 static cilist io___41 = {0, 0, 0, fmt_270, 0};
2637 static cilist io___43 = {0, 0, 0, fmt_310, 0};
2638 static cilist io___44 = {0, 0, 0, fmt_330, 0};
2639 static cilist io___45 = {0, 0, 0, fmt_350, 0};
2640 static cilist io___46 = {0, 0, 0, fmt_370, 0};
2735 if (*alg == iv[51]) {
2739 io___17.ciunit = pu;
2748 if (*alg < 1 || *alg > 4) {
2751 miv1 = miniv[*alg - 1];
2755 alg1 = (*alg - 1) % 2 + 1;
2757 divset_(alg, &iv[1], liv, lv, &v[1]);
2761 if (iv1 != 13 && iv1 != 12) {
2766 i__1 = miv1, i__2 = iv[58] - 1;
2767 miv1 = std::max(i__1, i__2);
2770 miv2 = miv1 + std::max(iv[3], 0l);
2779 iv[45] = std::max(iv[4], 0l) + iv[42] - 1;
2788 if (iv1 < 12 || iv1 > 14) {
2798 io___22.ciunit = pu;
2816 dv7dfl_(&alg1, &i__1, &v[k + 1]);
2831 io___25.ciunit = pu;
2840 if (iv1 <= 11 && iv1 >= 1) {
2864 tiny = dr7mdc_<doublereal>(&c__1);
2865 machep = dr7mdc_<doublereal>(&c__3);
2866 big = dr7mdc_<doublereal>(&c__6);
2881 vx[27] = dr7mdc_<doublereal>(&c__5);
2890 ndfalt = ndflt[alg1 - 1];
2892 for (l = 1; l <= i__1; ++l) {
2894 if (vk >= vm[i__ - 1] && vk <= vx[i__ - 1]) {
2899 io___33.ciunit = pu;
2918 if (iv[50] == ndfalt) {
2925 io___34.ciunit = pu;
2932 if ((iv[16] > 0 || v[38] > zero) && iv1 == 12) {
2936 for (i__ = 1; i__ <= i__1; ++i__) {
2937 if (d__[i__] > zero) {
2942 io___35.ciunit = pu;
2960 if (pu == 0 || iv[20] == 0) {
2963 if (iv1 != 12 || iv[25] == alg1 - 1) {
2967 io___36.ciunit = pu;
2973 if (iv[16] == iv[54]) {
2977 io___37.ciunit = pu;
2983 io___38.ciunit = pu;
2992 ndfalt = ndflt[alg1 - 1];
2994 for (ii = 1; ii <= i__1; ++ii) {
2999 io___40.ciunit = pu;
3005 io___41.ciunit = pu;
3024 dv7cpy_(&iv[50], &v[parsv1], &v[19]);
3032 io___43.ciunit = pu;
3048 io___44.ciunit = pu;
3059 io___45.ciunit = pu;
3067 io___46.ciunit = pu;
3085 template<
typename doublereal>
3086 int drmng_(doublereal *d__, doublereal *fx, doublereal *g,
3087 integer *iv, integer *liv, integer *lv, integer *n, doublereal *v,
3091 doublereal c_b33_l =
static_cast<doublereal
> (c_b33);
3092 doublereal c_b44_l =
static_cast<doublereal
> (c_b44);
3093 doublereal c_b13_l =
static_cast<doublereal
> (c_b13);
3095 static integer i__, k, l;
3096 static doublereal t;
3097 static integer w, z__, g01, x01, dg1, temp1, step1, dummy;
3117 static integer nwtst1;
3126 static integer lstgst, rstrst;
3272 divset_(&c__2, &iv[1], liv, lv, &v[1]);
3275 if (iv[1] == 12 || iv[1] == 13) {
3276 iv[4] += *n * (*n + 13) / 2;
3279 dparck_(&c__2, &d__[1], &iv[1], liv, lv, n, &v[1]);
3305 iv[43] = l + *n * (*n + 1) / 2;
3306 iv[40] = iv[43] + *n;
3307 iv[41] = iv[40] + *n;
3308 iv[48] = iv[41] + *n;
3309 iv[34] = iv[48] + *n;
3310 iv[37] = iv[34] + *n;
3311 iv[47] = iv[37] + *n;
3334 dv7scp_(n, &d__[1], &v[38]);
3343 i__1 = *n * (*n + 1) / 2;
3345 dv7scp_<doublereal>(&i__1, &v[l], &c_b13_l);
3348 for (i__ = 1; i__ <= i__1; ++i__) {
3388 dv7vmp_(n, &v[dg1], &g[1], &d__[1], &c_n1);
3389 v[1] = dv2nrm_(n, &v[dg1]);
3425 v[8] = v[16] * v[2];
3438 dv7cpy_(n, &v[x01], &x[1]);
3439 dv7cpy_(n, &v[g01], &g[1]);
3444 if (!stopx_(&dummy)) {
3453 if (v[10] >= v[13]) {
3461 if (iv[6] < iv[17]) {
3466 if (v[10] >= v[13]) {
3486 dl7ivm_(n, &v[nwtst1], &v[l], &g[1]);
3487 v[6] = dd7tpr_(n, &v[nwtst1], &v[nwtst1]) * .5;
3488 dl7itv_(n, &v[nwtst1], &v[l], &v[nwtst1]);
3489 dv7vmp_(n, &v[step1], &v[nwtst1], &d__[1], &c__1);
3490 v[3] = dv2nrm_(n, &v[step1]);
3491 dv7vmp_(n, &v[dg1], &v[dg1], &d__[1], &c_n1);
3492 dl7tvm_(n, &v[step1], &v[l], &v[dg1]);
3493 v[44] = dv2nrm_(n, &v[step1]);
3496 dd7dog_(&v[dg1], lv, n, &v[nwtst1], &v[step1], &v[1]);
3519 if (v[7] > v[11] * 1.2) {
3533 dv2axy_(n, &x[1], &c_b33_l, &v[step1], &v[x01]);
3544 v[17] = drldst_(n, &d__[1], &x[1], &v[x01]);
3545 da7sst_(&iv[1], liv, lv, &v[1]);
3557 dv7cpy_(n, &x[1], &v[x01]);
3560 dv7cpy_(n, &v[lstgst], &v[step1]);
3563 dv7cpy_(n, &v[step1], &v[lstgst]);
3565 dv2axy_(n, &x[1], &c_b33_l, &v[step1], &v[x01]);
3566 v[17] = drldst_(n, &d__[1], &x[1], &v[x01]);
3591 v[8] = v[16] * v[2];
3605 if (v[10] >= v[13]) {
3625 dl7tvm_(n, &v[temp1], &v[l], &v[step1]);
3626 dl7vml_(n, &v[temp1], &v[l], &v[temp1]);
3640 dv2axy_(n, &v[g01], &c_b44_l, &v[g01], &g[1]);
3651 dv2axy_(n, &v[temp1], &c_b44_l, &v[g01], &v[temp1]);
3652 dv7vmp_(n, &v[temp1], &v[temp1], &d__[1], &c_n1);
3656 if (dv2nrm_(n, &v[temp1]) <= v[1] * v[29]) {
3659 if (dd7tpr_(n, &g[1], &v[step1]) >= v[4] * v[30]) {
3671 dw7zbf_(&v[l], n, &v[step1], &v[w], &v[g01], &v[z__]);
3674 dl7upd_(&v[temp1], &v[step1], &v[l], &v[g01], &v[l], n, &v[w], &v[z__]);
3703 int i7shft_(integer *n, integer *k, integer *x) {
3708 static integer i__, t, k1, ii, nm1;
3729 for (i__ = *k; i__ <= i__1; ++i__) {
3731 x[i__] = x[i__ + 1];
3744 for (ii = 1; ii <= i__1; ++ii) {
3746 x[i__ + 1] = x[i__];
THE BASE THE NUMBER OF BASE A DIGITS THE LARGEST MAGNITUDE ***FLOATS HAVE FORM THE BASE ***SINGLE PRECISION THE NUMBER OF BASE B DIGITS THE SMALLEST EXPONENT E THE LARGEST EXPONENT E ***DOUBLE PRECISION THE NUMBER OF BASE B DIGITS THE SMALLEST EXPONENT E THE LARGEST EXPONENT E ****INCLUDING AUTO DOUBLE COMPILERS ***TO COMPILE ON OLDER ADD A C IN COLUMN ***ON THE NEXT LINE ***AND REMOVE THE C FROM COLUMN IN ONE OF THE SECTIONS BELOW ***CONSTANTS FOR EVEN OLDER MACHINES CAN BE OBTAINED BY ***mail netlib research bell labs com ***send old1mach from blas ***PLEASE SEND CORRECTIONS TO dmg OR ehg bell labs com ****DATA SC ****BIT INTEGER ARITHMETIC ****DATA SC ****WHICH IS APPROPRIATE FOR THE UNIVAC FOR SYSTEM ***IF YOU HAVE THE UNIVAC FTN SET IT TO ****DATA SC ****Note that some values may need changing *********long i1mach_(long *i)
Definition: port.hpp:369
const Sqrt< REAL_T, EXPR > sqrt(const ExpressionBase< REAL_T, EXPR > &exp)
Definition: Sqrt.hpp:123