66 inline long get_qi(
void)
const {
return q; }
73 inline void get_scoor(
long n, T& b)
const { b = xmin + n * step; }
76 if (n < 0 || n >= q)
return 0;
91 virtual int get_interval(T x,
long& n1, T& b1,
long& n2, T& b2)
const;
101 if (n < 0 || n >= q)
return 0;
107 EqualStepCoorMesh<T>(
long fq, T fxmin, T fxmax);
108 void print(std::ostream& file)
const;
122 : q(fq), xmin(fxmin), xmax(fxmax) {
124 "template<class T> EqualStepCoorMesh<T>::EqualStepCoorMesh<T>(long "
125 "fq, T fxmin, T fxmax)");
129 step = (fxmax - fxmin) / q;
135 if (x < xmin || x >= xmax) {
139 n1 = long((x - xmin) / step);
141 mcerr <<
"ERROR in EqualStepCoorMesh<T>::get_interval:\n"
154 if (x < xmin || x >= xmax) {
161 n1 = long((x - xmin) / step);
163 b1 = xmin + step * n1;
165 if (n1 < 0 || n2 > q || b2 > xmax) {
166 mcerr <<
"ERROR in EqualStepCoorMesh<T>::get_interval:\n"
167 <<
"n1 < 0 || n2 > q || b2 > xmax\n";
187 }
else if (x >= xmax) {
194 n1 = long((x - xmin) / step);
200 b1 = xmin + step * n1;
202 if (n1 < 0 || n2 > q || b2 > xmax) {
203 mcerr <<
"ERROR in EqualStepCoorMesh<T>::get_interval_extrap:\n"
204 <<
"n1 < 0 || n2 > q || b2 > xmax\n";
216 Ifile <<
"EqualStepCoorMesh<T>:\n";
218 Ifile <<
"Type of T is (in internal notations) " <<
typeid(T).name() <<
'\n';
219 Iprint4n(file, q, xmin, xmax, step);
231 mfunname(
"istream& operator>>(istream& file, EqualStepCoorMesh<T>& f)");
276template <
class T,
class D>
280#ifndef TLINE_REDUCE_TO_RAW_ARR
281 if (q <= 1)
return -1;
282 if (x < coor[0] || x > coor[q - 1])
return -1;
283 if (x < coor[1])
return 0;
284 if (x >= coor[q - 2])
return q - 2;
287 while (n2 - n1 > 1) {
288 n3 = n1 + (n2 - n1) / 2;
297 if (q <= 1)
return -1;
298 if (x < arr[0] || x > arr[q - 1])
return -1;
299 if (x < arr[1])
return 0;
300 if (x >= arr[q - 2])
return q - 2;
303 while (n2 - n1 > 1) {
304 n3 = n1 + (n2 - n1) / 2;
321template <
class T,
class D>
324 if (n_start < 0 || n_start > q - 1) {
325 mcerr <<
" ERROR in t_find_interval_end(...):\n";
326 mcerr <<
"n_start < 0 || n_start > q-1\n";
330#ifndef TLINE_REDUCE_TO_RAW_ARR
332 if (q - n_start <= 1)
return -1;
333 if (x < coor[n_start] || x > coor[q - 1])
return -1;
334 if (x < coor[n_start + 1])
return n_start;
335 if (x >= coor[q - 2])
return q - 2;
338 while (n2 - n1 > 1) {
339 n3 = n1 + (n2 - n1) / 2;
349 if (q - n_start <= 1)
return -1;
350 if (x < arr[n_start] || x > arr[q - 1])
return -1;
351 if (x < arr[n_start + 1])
return n_start;
352 if (x >= arr[q - 2])
return q - 2;
355 while (n2 - n1 > 1) {
356 n3 = n1 + (n2 - n1) / 2;
389template <
class T,
class D>
392 inline long get_qi(
void)
const {
return q - 1; }
396#ifndef TLINE_REDUCE_TO_RAW_ARR
403 if (n < 0 || n >= q - 1)
return 0;
404#ifndef TLINE_REDUCE_TO_RAW_ARR
406 b2 = (*amesh)[n + 1];
416 int get_interval(T x,
long& n1, T& b1,
long& n2, T& b2)
const;
421 if (n < 0 || n >= q - 1)
return 0;
429 : q(0), xmin(0), xmax(0), x_old(0), n_old(-1), amesh(NULL) {
432 PointCoorMesh<T, D>(
long fq,
436 virtual ~PointCoorMesh<T, D>() {}
441 virtual void print(std::ostream& file)
const;
447#ifndef TLINE_REDUCE_TO_RAW_ARR
460template <
class T,
class D>
462 : q(fq), x_old(0), n_old(-1) {
464 mcerr <<
"ERROR in PointCoorMesh<T,D>::PointCoorMesh<T,D>:\n"
469#ifndef TLINE_REDUCE_TO_RAW_ARR
473 xmax = (*amesh)[q - 1];
475 amesh = &((*famesh)[0]);
481 mcerr <<
"ERROR in PointCoorMesh<T,D>::PointCoorMesh<T,D>:\n"
486#ifdef CHECK_POINT_MESH
488 for (n = 0; n < q - 1; n++) {
489#ifndef TLINE_REDUCE_TO_RAW_ARR
490 if ((*amesh)[n] >= (*amesh)[n + 1])
492 if (amesh[n] >= amesh[n + 1])
495 mcerr <<
"ERROR in PointCoorMesh<T,D>::PointCoorMesh<T,D>:\n"
496 <<
"amesh[n] >= amesh[n+1]\n";
497#ifndef TLINE_REDUCE_TO_RAW_ARR
508template <
class T,
class D>
511 for (n = 0; n < q - 1; n++) {
512#ifndef TLINE_REDUCE_TO_RAW_ARR
513 if ((*amesh)[n] >= (*amesh)[n + 1])
515 if (amesh[n] >= amesh[n + 1])
518 mcerr <<
"ERROR in PointCoorMesh<T,D>::check(void):\n"
519 <<
"amesh[n] >= amesh[n+1]\n";
520#ifndef TLINE_REDUCE_TO_RAW_ARR
530template <
class T,
class D>
532 if (x < xmin || x >= xmax) {
536#ifndef TLINE_REDUCE_TO_RAW_ARR
537 if (n_old >= 0 && x_old <= x) {
538 n1 = t_find_interval_end<T, D>(x, q, *amesh, n_old);
540 n1 = t_find_interval<T, D>(x, q, *amesh);
544 if (n_old >= 0 && x_old <= x) {
545 n1 = t_find_interval_end<T, T*>(x, q, amesh, n_old);
547 n1 = t_find_interval<T, T*>(x, q, amesh);
553 mcerr <<
"ERROR in PointCoorMesh<T,D>::get_interval:\n"
564template <
class T,
class D>
567 if (x < xmin || x >= xmax) {
574#ifndef TLINE_REDUCE_TO_RAW_ARR
575 if (n_old >= 0 && x_old <= x) {
576 n1 = t_find_interval_end<T, D>(x, q, *amesh, n_old);
578 n1 = t_find_interval<T, D>(x, q, *amesh);
582 if (n_old >= 0 && x_old <= x) {
583 n1 = t_find_interval_end<T, T*>(x, q, amesh, n_old);
585 n1 = t_find_interval<T, T*>(x, q, amesh);
590#ifndef TLINE_REDUCE_TO_RAW_ARR
597 if (n1 < 0 || n1 >= q || n2 < 0 || n2 >= q || b1 < xmin || b1 > xmax ||
598 b2 < xmin || b2 > xmax) {
599 mcerr <<
"ERROR in PointCoorMesh<T,D>::get_interval:\n"
600 <<
"n1 < 0 || n1 >= q || n2 < 0 || n2 >= q || b1 < xmin || b1 > xmax "
601 "|| b2 < xmin || b2 > xmax\n";
611template <
class T,
class D>
621#ifndef TLINE_REDUCE_TO_RAW_ARR
626 }
else if (x >= xmax) {
630#ifndef TLINE_REDUCE_TO_RAW_ARR
631 b1 = (*amesh)[q - 2];
637#ifndef TLINE_REDUCE_TO_RAW_ARR
638 if (n_old >= 0 && x_old <= x) {
639 n1 = t_find_interval_end<T, D>(x, q, *amesh, n_old);
641 n1 = t_find_interval<T, D>(x, q, *amesh);
645 if (n_old >= 0 && x_old <= x) {
646 n1 = t_find_interval_end<T, T*>(x, q, amesh, n_old);
648 n1 = t_find_interval<T, T*>(x, q, amesh);
653#ifndef TLINE_REDUCE_TO_RAW_ARR
660 if (n1 < 0 || n1 >= q || n2 < 0 || n2 >= q || b1 < xmin || b1 > xmax ||
661 b2 < xmin || b2 > xmax) {
662 mcerr <<
"ERROR in PointCoorMesh<T,D>::get_interval:\n"
663 <<
"n1 < 0 || n1 >= q || n2 < 0 || n2 >= q || b1 < xmin || b1 > "
664 "xmax || b2 < xmin || b2 > xmax\n";
675template <
class T,
class D>
677 Ifile <<
"PointCoorMesh<T,D>:\n";
679 Ifile <<
"Type of T is (in internal notations) " <<
typeid(T).name() <<
'\n';
680 Ifile <<
"Type of D is (in internal notations) " <<
typeid(D).name() <<
'\n';
683#ifndef TLINE_REDUCE_TO_RAW_ARR
685 Ifile <<
"(*amesh)=" << (*amesh)[0] <<
'\n';
687 Ifile <<
"amesh:" <<
'\n';
690 for (n = 0; n < q; n++) {
700template <
class T,
class D>
896template <
class T,
class D,
class M>
898 T x1, T x2,
int xpower)
900 mfunname(
"double t_integ_step_ar(...)");
904 long qi = mesh.get_qi();
907 double xmin = mesh.get_xmin();
908 double xmax = mesh.get_xmax();
909 if (x2 <= xmin)
return 0;
910 if (x1 >= xmax)
return 0;
911 if (x1 == x2)
return 0;
912 long istart, iafterend;
921 i_ret = mesh.get_interval(x1, n1, b1, n2, b2);
928 s = (x2 - x1) * y[n1];
930 s = 0.5 * (x2 * x2 - x1 * x1) * y[n1];
935 s += (b2 - x1) * y[n1];
937 s += 0.5 * (b2 * b2 - x1 * x1) * y[n1];
949 i_ret = mesh.get_interval(x2, n1, b1, n2, b2);
955 s += (x2 - b1) * y[n1];
957 s += 0.5 * (x2 * x2 - b1 * b1) * y[n1];
965 mesh.get_scoor(istart, b);
967 for (i = istart; i < iafterend; i++) {
969 mesh.get_scoor(i + 1, b);
973 for (i = istart; i < iafterend; i++) {
975 mesh.get_scoor(i + 1, b);
976 s += 0.5 * (b * b - a * a) * y[i];
988template <
class T,
class D,
class M>
991 T (*fun)(
long np, T xp1, T xp2, T yp, T xmin, T xmax,
996 mfunname(
"double t_integ_step_ar(...)");
999 long qi = mesh.get_qi();
1002 double xmin = mesh.get_xmin();
1003 double xmax = mesh.get_xmax();
1004 if (x2 <= xmin)
return 0;
1005 if (x1 >= xmax)
return 0;
1006 if (x1 == x2)
return 0;
1007 long istart, iafterend;
1016 i_ret = mesh.get_interval(x1, n1, b1, n2, b2);
1024 s = fun(n1, b1, b2, y[n1], xmin, xmax, x1, x2);
1027 s = fun(n1, b1, b2, y[n1], xmin, xmax, x1, x2);
1038 i_ret = mesh.get_interval(x2, n1, b1, n2, b2);
1043 s += fun(n1, b1, b2, y[n1], xmin, xmax, b1, x2);
1050 mesh.get_scoor(istart, b);
1051 for (i = istart; i < iafterend; i++) {
1053 mesh.get_scoor(i + 1, b);
1054 s += fun(i, a, b, y[i], xmin, xmax, a, b);
1249template <
class T,
class D,
class M>
1252 T integ,
int* s_err)
1254 mfunname(
"double t_find_x_for_already_integ_step_ar(...)");
1259 long qi = mesh.get_qi();
1262 double xmin = mesh.get_xmin();
1263 double xmax = mesh.get_xmax();
1264 if (integ == 0.0)
return xmin;
1265 if (integ > y[qi - 1]) {
1269 if (integ == y[qi - 1])
return xmax;
1273 mesh.get_scoor(0, xp1);
1274 mesh.get_scoor(1, xp2);
1275 return xp1 + (xp2 - xp1) * integ / y[0];
1281 while (nr - nl > 1) {
1291 mesh.get_scoor(nl + 1, xl);
1292 mesh.get_scoor(nr + 1, xr);
1297 T a = (xr - xl) / (y[nr] - y[nl]);
1298 T ret = xl + a * (integ - y[nl]);
1313template <
class T,
class D,
class M>
1315 const M& mesh,
const D& y,
1316 T integ,
int* s_err)
1318 mfunname(
"double t_find_entire_x_for_already_integ_step_ar(...)");
1324 long qi = mesh.get_qi();
1327 long xmin = mesh.get_xmin();
1328 long xmax = mesh.get_xmax();
1329 if (integ == 0)
return xmin;
1330 if (integ > y[qi - 1]) {
1334 if (integ == y[qi - 1])
return xmax;
1337 mesh.get_scoor(0, xp1);
1344 while (nr - nl > 1) {
1355 mesh.get_scoor(nr, x);
1366template <
class T,
class D,
class M>
1370 mfunname(
"double t_hispre_step_ar(...)");
1373 long qi = mesh.get_qi();
1380 mesh.get_scoor(n, xp2);
1381 for (n = 0; n < qi; n++) {
1383 mesh.get_scoor(n + 1, xp2);
1386 "n=" << n <<
" xp1=" << xp1 <<
" xp2=" << xp2 <<
'\n',
1388 s = s + y[n] * step;
1395 for (n = 0; n < qi; n++) {
1403template <
class T,
class D,
class M>
1405 mfunname(
"double t_hisran_step_ar(...)");
1407 long qi = mesh.get_qi();
1408 long s_same =
apeq_mant(integ_y[qi - 1], 1.0, 1.0e-12);
1409 check_econd11a(s_same, != 1.0,
"integ_y[qi-1]=" << integ_y[qi - 1] <<
'\n',
1434template <
class T,
class D,
class M>
1436 mfunname(
"double t_opposite_hisran_step_ar(...)");
1439 long qi = mesh.get_qi();
1440 long s_same =
apeq_mant(integ_y[qi - 1], 1.0, 1.0e-12);
1441 check_econd11a(s_same, != 1.0,
"integ_y[qi-1]=" << integ_y[qi - 1] <<
'\n',
1449 mesh.get_interval_extrap(x, n1, b1, n2, b2);
1456 y1 = integ_y[n1 - 1];
1457 y2 = integ_y[n2 - 1];
1459 T res = y1 + ((y2 - y1) / (b2 - b1)) * (x - b1);
1465template <
class T,
class D,
class M>
1467 mfunname(
"double t_entire_hisran_step_ar(...)");
1470 long qi = mesh.get_qi();
1471 long s_same =
apeq_mant(integ_y[qi - 1], 1.0, 1.0e-12);
1472 check_econd11a(s_same, != 1.0,
"integ_y[qi-1]=" << integ_y[qi - 1] <<
'\n',
1481 check_econd11a(s_err, != 0,
"mesh=" << mesh <<
" integ_y=" << integ_y
1482 <<
" rannum=" << rannum <<
'\n',
1495template <
class T,
class D,
class M>
1497 T x1, T x2,
int& s_err) {
1498 mfunname(
"double t_mean_step_ar(...)");
1506 return xinteg / integ;
1511 mfunname(
"double t_value_straight_2point(...)");
1514 T a = (y2 - y1) / (x2 - x1);
1522 T adx1 = (dx1 > 0) ? dx1 : -dx1;
1528 T adx2 = (dx2 > 0) ? dx2 : -dx2;
1539 if (s_ban_neg == 1 && res < 0.0) res = 0.0;
1549 mfunname(
"double t_integ_straight_2point(...)");
1552 T a = (y2 - y1) / (x2 - x1);
1554 T yl = a * (xl - x1) + b;
1555 T yr = a * (xr - x1) + b;
1556 if (s_ban_neg == 1) {
1557 if (yl <= 0.0 && yr <= 0.0)
return 0.0;
1558 if (yl < 0.0 || yr < 0.0) {
1571 res = 0.5 * a * (xr * xr - xl * xl) + (b - a * x1) * (xr - xl);
1573 res = a * (xr * xr * xr - xl * xl * xl) / 3.0 +
1574 0.5 * (b - a * x1) * (xr * xr - xl * xl);
1581template <
class T,
class D,
class M>
1584 T x,
int s_ban_neg,
int s_extrap_left, T left_bond,
1585 int s_extrap_right, T right_bond) {
1587 mfunname(
"double t_value_straight_point_ar(...)");
1588 double xmin = mesh.get_xmin();
1589 double xmax = mesh.get_xmax();
1591 if (x < left_bond)
return 0.0;
1592 if (x > right_bond)
return 0.0;
1593 if (x < xmin && s_extrap_left == 0)
return 0.0;
1594 if (x > xmax && s_extrap_right == 0)
return 0.0;
1597 mesh.get_interval_extrap(x, n1, b1, n2, b2);
1599 mesh.get_scoor(n1, x1);
1601 mesh.get_scoor(n2, x2);
1606template <
class T,
class D,
class M>
1608 const M& mesh,
const D& y,
1609 T (*funval)(T xp1, T yp1, T xp2, T yp2, T xmin,
1612 T x,
int s_extrap_left, T left_bond,
int s_extrap_right, T right_bond) {
1614 mfunname(
"double t_value_generic_point_ar(...)");
1615 double xmin = mesh.get_xmin();
1616 double xmax = mesh.get_xmax();
1618 if (x < left_bond)
return 0.0;
1619 if (x > right_bond)
return 0.0;
1620 if (x < xmin && s_extrap_left == 0)
return 0.0;
1621 if (x > xmax && s_extrap_right == 0)
return 0.0;
1624 mesh.get_interval_extrap(x, n1, b1, n2, b2);
1626 mesh.get_scoor(n1, x1);
1628 mesh.get_scoor(n2, x2);
1629 return funval(x1, y[n1], x2, y[n2], left_bond, right_bond, x);
1640 mfunname(
"double t_value_power_2point(...)");
1647 if (x1 <= 0.0 && x2 >= 0.0) {
1648 mcerr <<
"T t_value_power_2point(...): \n";
1649 mcerr <<
"x's are of different sign, power cannot be drawn\n";
1652 T pw = log(y1 / y2) / log(x1 / x2);
1654 res = y1 *
pow(x, pw) /
pow(x1, pw);
1682 mfunname(
"double t_value_exp_2point(...)");
1690 T a = log(y1 / y2) / (x1 - x2);
1691 T c = y1 /
exp(a * x1);
1693 res = c *
exp(a * x);
1702 mfunname(
"double t_integ_power_2point(...)");
1708 T pw = log(y1 / y2) / log(x1 / x2);
1710 T k = y1 *
pow(x1, -pw);
1711 T t = k / (1 + pw) * (
pow(xr, (pw + 1)) -
pow(xl, (pw + 1)));
1715template <
class T,
class D,
class M>
1720 int s_ban_neg,
int s_extrap_left, T left_bond,
1721 int s_extrap_right, T right_bond) {
1722 mfunname(
"double t_integ_straight_point_ar(...)");
1727 long qi = mesh.get_qi();
1730 double xmin = mesh.get_xmin();
1731 double xmax = mesh.get_xmax();
1732 if (x2 <= xmin && s_extrap_left == 0)
return 0.0;
1733 if (x1 >= xmax && s_extrap_right == 0)
return 0.0;
1734 if (x2 <= left_bond)
return 0.0;
1735 if (x1 >= right_bond)
return 0.0;
1737 if (x1 < left_bond) x1 = left_bond;
1738 if (x2 > right_bond) x2 = right_bond;
1739 if (x1 <= xmin && s_extrap_left == 0) x1 = xmin;
1740 if (x2 > xmax && s_extrap_left == 0) x2 = xmax;
1745 i_ret = mesh.get_interval_extrap(x1, np1, bp1, np2, bp2);
1748 mesh.get_scoor(np1, xp1);
1750 mesh.get_scoor(np2, xp2);
1754 if (i_ret == 2 || x2 <= xp2)
1756 res = t_integ_straight_2point<T>(xp1, yp1, xp2, yp2, x1, x2, xpower,
1762 res = t_integ_straight_2point<T>(xp1, yp1, xp2, yp2, x1i, x2i, xpower,
1770 mesh.get_scoor(np2, xp2);
1787 res += t_integ_straight_2point<T>(xp1, yp1, xp2, yp2, x1i, x2i, xpower,
1794 }
while (s_stop == 0);
1799template <
class T,
class D,
class M>
1802 T x1, T x2,
int s_extrap_left, T left_bond,
1803 int s_extrap_right, T right_bond,
int& s_err) {
1804 mfunname(
"double t_mean_straight_point_ar(...)");
1807 left_bond, s_extrap_right, right_bond);
1813 left_bond, s_extrap_right, right_bond);
1814 return xinteg / integ;
1823template <
class T,
class D,
class M>
1825 const M& mesh,
const D& y,
1827 T (*fun)(T xp1, T yp1, T xp2, T yp2, T xmin, T xmax, T x1, T x2), T x1,
1828 T x2,
int s_extrap_left, T left_bond,
int s_extrap_right, T right_bond) {
1829 mfunname(
"double t_integ_generic_point_ar(...)");
1834 long qi = mesh.get_qi();
1837 double xmin = mesh.get_xmin();
1838 double xmax = mesh.get_xmax();
1839 if (x2 <= xmin && s_extrap_left == 0)
return 0.0;
1840 if (x1 >= xmax && s_extrap_right == 0)
return 0.0;
1841 if (x2 <= left_bond)
return 0.0;
1842 if (x1 >= right_bond)
return 0.0;
1844 if (x1 < left_bond) x1 = left_bond;
1845 if (x2 > right_bond) x2 = right_bond;
1846 if (x1 <= xmin && s_extrap_left == 0) x1 = xmin;
1847 if (x2 > xmax && s_extrap_left == 0) x2 = xmax;
1852 i_ret = mesh.get_interval_extrap(x1, np1, bp1, np2, bp2);
1855 mesh.get_scoor(np1, xp1);
1857 mesh.get_scoor(np2, xp2);
1861 if (i_ret == 2 || x2 <= xp2)
1863 res = fun(xp1, yp1, xp2, yp2, xmin, xmax, x1, x2);
1868 res = fun(xp1, yp1, xp2, yp2, xmin, xmax, x1i, x2i);
1875 mesh.get_scoor(np2, xp2);
1892 res += fun(xp1, yp1, xp2, yp2, xmin, xmax, x1i, x2i);
1898 }
while (s_stop == 0);
#define check_econd21(a, sign1_b1_sign0, sign2_b2, stream)
#define check_econd11(a, signb, stream)
#define check_econd11a(a, signb, add, stream)
#define check_econd24(a1, sign1, b1, sign0, a2, sign2, b2, stream)
#define check_econd12(a, sign, b, stream)
void get_scoor(long n, T &b) const
void print(std::ostream &file) const
int get_step(long n, T &fstep) const
virtual int get_interval_extrap(T x, long &n1, T &b1, long &n2, T &b2) const
int get_interval(long n, T &b1, T &b2) const
Get interval. Return 1 if interval is found.
long get_qi(void) const
Get number of intervals.
virtual void print(std::ostream &file) const
int get_interval_extrap(T x, long &n1, T &b1, long &n2, T &b2) const
void get_scoor(long n, T &b) const
int get_step(long n, T &fstep) const
virtual int get_interval(long n, T &b1, T &b2) const
T t_opposite_hisran_step_ar(const M &mesh, const D &integ_y, T x)
T t_value_straight_2point(T x1, T y1, T x2, T y2, T x, int s_ban_neg)
T t_integ_power_2point(T x1, T y1, T x2, T y2, T xl, T xr)
T t_value_straight_point_ar(const M &mesh, const D &y, T x, int s_ban_neg, int s_extrap_left, T left_bond, int s_extrap_right, T right_bond)
std::istream & operator>>(std::istream &file, EqualStepCoorMesh< T > &f)
std::ostream & noindent(std::ostream &f)
int operator!=(manip_absvol_treeid &tid1, manip_absvol_treeid &tid2)
std::ostream & operator<<(std::ostream &file, const BGMesh &bgm)
long t_find_entire_x_for_already_integ_step_ar(const M &mesh, const D &y, T integ, int *s_err)
DoubleAc pow(const DoubleAc &f, double p)
T t_integ_straight_2point(T x1, T y1, T x2, T y2, T xl, T xr, int xpower, int s_ban_neg)
T t_integ_generic_point_ar(const M &mesh, const D &y, T(*fun)(T xp1, T yp1, T xp2, T yp2, T xmin, T xmax, T x1, T x2), T x1, T x2, int s_extrap_left, T left_bond, int s_extrap_right, T right_bond)
T t_find_x_for_already_integ_step_ar(const M &mesh, const D &y, T integ, int *s_err)
long t_entire_hisran_step_ar(const M &mesh, const D &integ_y, T rannum)
T t_hispre_step_ar(const M &mesh, const D &y, D &integ_y)
T t_mean_straight_point_ar(const M &mesh, const D &y, T x1, T x2, int s_extrap_left, T left_bond, int s_extrap_right, T right_bond, int &s_err)
DoubleAc exp(const DoubleAc &f)
T t_value_power_2point(T x1, T y1, T x2, T y2, T x)
int operator==(const circumf &f1, const circumf &f2)
long set_position(const std::string &word, std::istream &istrm, int s_rewind, int s_req_sep)
long t_find_interval(double x, long q, const D &coor)
T t_hisran_step_ar(const M &mesh, const D &integ_y, T rannum)
T t_mean_step_ar(const M &mesh, const D &y, T x1, T x2, int &s_err)
T t_integ_step_ar(const M &mesh, const D &y, T x1, T x2, int xpower)
T t_integ_straight_point_ar(const M &mesh, const D &y, T x1, T x2, int xpower, int s_ban_neg, int s_extrap_left, T left_bond, int s_extrap_right, T right_bond)
int apeq_mant(const T &x1, const T &x2, T prec)
T t_integ_generic_step_ar(const M &mesh, const D &y, T(*fun)(long np, T xp1, T xp2, T yp, T xmin, T xmax, T x1, T x2), T x1, T x2)
T t_value_exp_2point(T x1, T y1, T x2, T y2, T x)
T t_value_generic_point_ar(const M &mesh, const D &y, T(*funval)(T xp1, T yp1, T xp2, T yp2, T xmin, T xmax, T x), T x, int s_extrap_left, T left_bond, int s_extrap_right, T right_bond)
std::ostream & yesindent(std::ostream &f)
long t_find_interval_end(double x, long q, const D &coor, long n_start)
#define Iprint3n(file, name1, name2, name3)
#define Iprintn(file, name)
#define Iprint2n(file, name1, name2)
#define Iprint4n(file, name1, name2, name3, name4)