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
459template <
class T,
class D>
461 : q(fq), x_old(0), n_old(-1) {
463 mcerr <<
"ERROR in PointCoorMesh<T,D>::PointCoorMesh<T,D>:\n"
468#ifndef TLINE_REDUCE_TO_RAW_ARR
472 xmax = (*amesh)[q - 1];
474 amesh = &((*famesh)[0]);
480 mcerr <<
"ERROR in PointCoorMesh<T,D>::PointCoorMesh<T,D>:\n"
485#ifdef CHECK_POINT_MESH
487 for (n = 0; n < q - 1; n++) {
488#ifndef TLINE_REDUCE_TO_RAW_ARR
489 if ((*amesh)[n] >= (*amesh)[n + 1])
491 if (amesh[n] >= amesh[n + 1])
494 mcerr <<
"ERROR in PointCoorMesh<T,D>::PointCoorMesh<T,D>:\n"
495 <<
"amesh[n] >= amesh[n+1]\n";
496#ifndef TLINE_REDUCE_TO_RAW_ARR
507template <
class T,
class D>
510 for (n = 0; n < q - 1; n++) {
511#ifndef TLINE_REDUCE_TO_RAW_ARR
512 if ((*amesh)[n] >= (*amesh)[n + 1])
514 if (amesh[n] >= amesh[n + 1])
517 mcerr <<
"ERROR in PointCoorMesh<T,D>::check(void):\n"
518 <<
"amesh[n] >= amesh[n+1]\n";
519#ifndef TLINE_REDUCE_TO_RAW_ARR
529template <
class T,
class D>
531 if (x < xmin || x >= xmax) {
535#ifndef TLINE_REDUCE_TO_RAW_ARR
536 if (n_old >= 0 && x_old <= x) {
537 n1 = t_find_interval_end<T, D>(x, q, *amesh, n_old);
539 n1 = t_find_interval<T, D>(x, q, *amesh);
543 if (n_old >= 0 && x_old <= x) {
544 n1 = t_find_interval_end<T, T*>(x, q, amesh, n_old);
546 n1 = t_find_interval<T, T*>(x, q, amesh);
552 mcerr <<
"ERROR in PointCoorMesh<T,D>::get_interval:\n"
563template <
class T,
class D>
566 if (x < xmin || x >= xmax) {
573#ifndef TLINE_REDUCE_TO_RAW_ARR
574 if (n_old >= 0 && x_old <= x) {
575 n1 = t_find_interval_end<T, D>(x, q, *amesh, n_old);
577 n1 = t_find_interval<T, D>(x, q, *amesh);
581 if (n_old >= 0 && x_old <= x) {
582 n1 = t_find_interval_end<T, T*>(x, q, amesh, n_old);
584 n1 = t_find_interval<T, T*>(x, q, amesh);
589#ifndef TLINE_REDUCE_TO_RAW_ARR
596 if (n1 < 0 || n1 >= q || n2 < 0 || n2 >= q || b1 < xmin || b1 > xmax ||
597 b2 < xmin || b2 > xmax) {
598 mcerr <<
"ERROR in PointCoorMesh<T,D>::get_interval:\n"
599 <<
"n1 < 0 || n1 >= q || n2 < 0 || n2 >= q || b1 < xmin || b1 > xmax "
600 "|| b2 < xmin || b2 > xmax\n";
610template <
class T,
class D>
620#ifndef TLINE_REDUCE_TO_RAW_ARR
625 }
else if (x >= xmax) {
629#ifndef TLINE_REDUCE_TO_RAW_ARR
630 b1 = (*amesh)[q - 2];
636#ifndef TLINE_REDUCE_TO_RAW_ARR
637 if (n_old >= 0 && x_old <= x) {
638 n1 = t_find_interval_end<T, D>(x, q, *amesh, n_old);
640 n1 = t_find_interval<T, D>(x, q, *amesh);
644 if (n_old >= 0 && x_old <= x) {
645 n1 = t_find_interval_end<T, T*>(x, q, amesh, n_old);
647 n1 = t_find_interval<T, T*>(x, q, amesh);
652#ifndef TLINE_REDUCE_TO_RAW_ARR
659 if (n1 < 0 || n1 >= q || n2 < 0 || n2 >= q || b1 < xmin || b1 > xmax ||
660 b2 < xmin || b2 > xmax) {
661 mcerr <<
"ERROR in PointCoorMesh<T,D>::get_interval:\n"
662 <<
"n1 < 0 || n1 >= q || n2 < 0 || n2 >= q || b1 < xmin || b1 > "
663 "xmax || b2 < xmin || b2 > xmax\n";
674template <
class T,
class D>
676 Ifile <<
"PointCoorMesh<T,D>:\n";
678 Ifile <<
"Type of T is (in internal notations) " <<
typeid(T).name() <<
'\n';
679 Ifile <<
"Type of D is (in internal notations) " <<
typeid(D).name() <<
'\n';
682#ifndef TLINE_REDUCE_TO_RAW_ARR
684 Ifile <<
"(*amesh)=" << (*amesh)[0] <<
'\n';
686 Ifile <<
"amesh:" <<
'\n';
689 for (n = 0; n < q; n++) {
699template <
class T,
class D>
895template <
class T,
class D,
class M>
897 T x1, T x2,
int xpower)
899 mfunname(
"double t_integ_step_ar(...)");
903 long qi = mesh.get_qi();
906 double xmin = mesh.get_xmin();
907 double xmax = mesh.get_xmax();
908 if (x2 <= xmin)
return 0;
909 if (x1 >= xmax)
return 0;
910 if (x1 == x2)
return 0;
911 long istart, iafterend;
920 i_ret = mesh.get_interval(x1, n1, b1, n2, b2);
927 s = (x2 - x1) * y[n1];
929 s = 0.5 * (x2 * x2 - x1 * x1) * y[n1];
934 s += (b2 - x1) * y[n1];
936 s += 0.5 * (b2 * b2 - x1 * x1) * y[n1];
948 i_ret = mesh.get_interval(x2, n1, b1, n2, b2);
954 s += (x2 - b1) * y[n1];
956 s += 0.5 * (x2 * x2 - b1 * b1) * y[n1];
964 mesh.get_scoor(istart, b);
966 for (i = istart; i < iafterend; i++) {
968 mesh.get_scoor(i + 1, b);
972 for (i = istart; i < iafterend; i++) {
974 mesh.get_scoor(i + 1, b);
975 s += 0.5 * (b * b - a * a) * y[i];
987template <
class T,
class D,
class M>
990 T (*fun)(
long np, T xp1, T xp2, T yp, T xmin, T xmax,
995 mfunname(
"double t_integ_step_ar(...)");
998 long qi = mesh.get_qi();
1001 double xmin = mesh.get_xmin();
1002 double xmax = mesh.get_xmax();
1003 if (x2 <= xmin)
return 0;
1004 if (x1 >= xmax)
return 0;
1005 if (x1 == x2)
return 0;
1006 long istart, iafterend;
1015 i_ret = mesh.get_interval(x1, n1, b1, n2, b2);
1023 s = fun(n1, b1, b2, y[n1], xmin, xmax, x1, x2);
1026 s = fun(n1, b1, b2, y[n1], xmin, xmax, x1, x2);
1037 i_ret = mesh.get_interval(x2, n1, b1, n2, b2);
1042 s += fun(n1, b1, b2, y[n1], xmin, xmax, b1, x2);
1049 mesh.get_scoor(istart, b);
1050 for (i = istart; i < iafterend; i++) {
1052 mesh.get_scoor(i + 1, b);
1053 s += fun(i, a, b, y[i], xmin, xmax, a, b);
1248template <
class T,
class D,
class M>
1251 T integ,
int* s_err)
1253 mfunname(
"double t_find_x_for_already_integ_step_ar(...)");
1258 long qi = mesh.get_qi();
1261 double xmin = mesh.get_xmin();
1262 double xmax = mesh.get_xmax();
1263 if (integ == 0.0)
return xmin;
1264 if (integ > y[qi - 1]) {
1268 if (integ == y[qi - 1])
return xmax;
1272 mesh.get_scoor(0, xp1);
1273 mesh.get_scoor(1, xp2);
1274 return xp1 + (xp2 - xp1) * integ / y[0];
1280 while (nr - nl > 1) {
1290 mesh.get_scoor(nl + 1, xl);
1291 mesh.get_scoor(nr + 1, xr);
1296 T a = (xr - xl) / (y[nr] - y[nl]);
1297 T ret = xl + a * (integ - y[nl]);
1312template <
class T,
class D,
class M>
1314 const M& mesh,
const D& y,
1315 T integ,
int* s_err)
1317 mfunname(
"double t_find_entire_x_for_already_integ_step_ar(...)");
1323 long qi = mesh.get_qi();
1326 long xmin = mesh.get_xmin();
1327 long xmax = mesh.get_xmax();
1328 if (integ == 0)
return xmin;
1329 if (integ > y[qi - 1]) {
1333 if (integ == y[qi - 1])
return xmax;
1336 mesh.get_scoor(0, xp1);
1343 while (nr - nl > 1) {
1354 mesh.get_scoor(nr, x);
1365template <
class T,
class D,
class M>
1369 mfunname(
"double t_hispre_step_ar(...)");
1372 long qi = mesh.get_qi();
1379 mesh.get_scoor(n, xp2);
1380 for (n = 0; n < qi; n++) {
1382 mesh.get_scoor(n + 1, xp2);
1385 "n=" << n <<
" xp1=" << xp1 <<
" xp2=" << xp2 <<
'\n',
1387 s = s + y[n] * step;
1394 for (n = 0; n < qi; n++) {
1402template <
class T,
class D,
class M>
1404 mfunname(
"double t_hisran_step_ar(...)");
1406 long qi = mesh.get_qi();
1407 long s_same =
apeq_mant(integ_y[qi - 1], 1.0, 1.0e-12);
1408 check_econd11a(s_same, != 1.0,
"integ_y[qi-1]=" << integ_y[qi - 1] <<
'\n',
1433template <
class T,
class D,
class M>
1435 mfunname(
"double t_opposite_hisran_step_ar(...)");
1438 long qi = mesh.get_qi();
1439 long s_same =
apeq_mant(integ_y[qi - 1], 1.0, 1.0e-12);
1440 check_econd11a(s_same, != 1.0,
"integ_y[qi-1]=" << integ_y[qi - 1] <<
'\n',
1448 mesh.get_interval_extrap(x, n1, b1, n2, b2);
1455 y1 = integ_y[n1 - 1];
1456 y2 = integ_y[n2 - 1];
1458 T res = y1 + ((y2 - y1) / (b2 - b1)) * (x - b1);
1464template <
class T,
class D,
class M>
1466 mfunname(
"double t_entire_hisran_step_ar(...)");
1469 long qi = mesh.get_qi();
1470 long s_same =
apeq_mant(integ_y[qi - 1], 1.0, 1.0e-12);
1471 check_econd11a(s_same, != 1.0,
"integ_y[qi-1]=" << integ_y[qi - 1] <<
'\n',
1480 check_econd11a(s_err, != 0,
"mesh=" << mesh <<
" integ_y=" << integ_y
1481 <<
" rannum=" << rannum <<
'\n',
1494template <
class T,
class D,
class M>
1496 T x1, T x2,
int& s_err) {
1497 mfunname(
"double t_mean_step_ar(...)");
1505 return xinteg / integ;
1510 mfunname(
"double t_value_straight_2point(...)");
1513 T a = (y2 - y1) / (x2 - x1);
1521 T adx1 = (dx1 > 0) ? dx1 : -dx1;
1527 T adx2 = (dx2 > 0) ? dx2 : -dx2;
1538 if (s_ban_neg == 1 && res < 0.0) res = 0.0;
1548 mfunname(
"double t_integ_straight_2point(...)");
1551 T a = (y2 - y1) / (x2 - x1);
1553 T yl = a * (xl - x1) + b;
1554 T yr = a * (xr - x1) + b;
1555 if (s_ban_neg == 1) {
1556 if (yl <= 0.0 && yr <= 0.0)
return 0.0;
1557 if (yl < 0.0 || yr < 0.0) {
1570 res = 0.5 * a * (xr * xr - xl * xl) + (b - a * x1) * (xr - xl);
1572 res = a * (xr * xr * xr - xl * xl * xl) / 3.0 +
1573 0.5 * (b - a * x1) * (xr * xr - xl * xl);
1580template <
class T,
class D,
class M>
1583 T x,
int s_ban_neg,
int s_extrap_left, T left_bond,
1584 int s_extrap_right, T right_bond) {
1586 mfunname(
"double t_value_straight_point_ar(...)");
1587 double xmin = mesh.get_xmin();
1588 double xmax = mesh.get_xmax();
1590 if (x < left_bond)
return 0.0;
1591 if (x > right_bond)
return 0.0;
1592 if (x < xmin && s_extrap_left == 0)
return 0.0;
1593 if (x > xmax && s_extrap_right == 0)
return 0.0;
1596 mesh.get_interval_extrap(x, n1, b1, n2, b2);
1598 mesh.get_scoor(n1, x1);
1600 mesh.get_scoor(n2, x2);
1605template <
class T,
class D,
class M>
1607 const M& mesh,
const D& y,
1608 T (*funval)(T xp1, T yp1, T xp2, T yp2, T xmin,
1611 T x,
int s_extrap_left, T left_bond,
int s_extrap_right, T right_bond) {
1613 mfunname(
"double t_value_generic_point_ar(...)");
1614 double xmin = mesh.get_xmin();
1615 double xmax = mesh.get_xmax();
1617 if (x < left_bond)
return 0.0;
1618 if (x > right_bond)
return 0.0;
1619 if (x < xmin && s_extrap_left == 0)
return 0.0;
1620 if (x > xmax && s_extrap_right == 0)
return 0.0;
1623 mesh.get_interval_extrap(x, n1, b1, n2, b2);
1625 mesh.get_scoor(n1, x1);
1627 mesh.get_scoor(n2, x2);
1628 return funval(x1, y[n1], x2, y[n2], left_bond, right_bond, x);
1639 mfunname(
"double t_value_power_2point(...)");
1646 if (x1 <= 0.0 && x2 >= 0.0) {
1647 mcerr <<
"T t_value_power_2point(...): \n";
1648 mcerr <<
"x's are of different sign, power cannot be drawn\n";
1651 T pw = log(y1 / y2) / log(x1 / x2);
1653 res = y1 *
pow(x, pw) /
pow(x1, pw);
1681 mfunname(
"double t_value_exp_2point(...)");
1689 T a = log(y1 / y2) / (x1 - x2);
1690 T c = y1 /
exp(a * x1);
1692 res = c *
exp(a * x);
1701 mfunname(
"double t_integ_power_2point(...)");
1707 T pw = log(y1 / y2) / log(x1 / x2);
1709 T k = y1 *
pow(x1, -pw);
1710 T t = k / (1 + pw) * (
pow(xr, (pw + 1)) -
pow(xl, (pw + 1)));
1714template <
class T,
class D,
class M>
1719 int s_ban_neg,
int s_extrap_left, T left_bond,
1720 int s_extrap_right, T right_bond) {
1721 mfunname(
"double t_integ_straight_point_ar(...)");
1726 long qi = mesh.get_qi();
1729 double xmin = mesh.get_xmin();
1730 double xmax = mesh.get_xmax();
1731 if (x2 <= xmin && s_extrap_left == 0)
return 0.0;
1732 if (x1 >= xmax && s_extrap_right == 0)
return 0.0;
1733 if (x2 <= left_bond)
return 0.0;
1734 if (x1 >= right_bond)
return 0.0;
1736 if (x1 < left_bond) x1 = left_bond;
1737 if (x2 > right_bond) x2 = right_bond;
1738 if (x1 <= xmin && s_extrap_left == 0) x1 = xmin;
1739 if (x2 > xmax && s_extrap_left == 0) x2 = xmax;
1744 i_ret = mesh.get_interval_extrap(x1, np1, bp1, np2, bp2);
1747 mesh.get_scoor(np1, xp1);
1749 mesh.get_scoor(np2, xp2);
1753 if (i_ret == 2 || x2 <= xp2)
1755 res = t_integ_straight_2point<T>(xp1, yp1, xp2, yp2, x1, x2, xpower,
1761 res = t_integ_straight_2point<T>(xp1, yp1, xp2, yp2, x1i, x2i, xpower,
1769 mesh.get_scoor(np2, xp2);
1786 res += t_integ_straight_2point<T>(xp1, yp1, xp2, yp2, x1i, x2i, xpower,
1793 }
while (s_stop == 0);
1798template <
class T,
class D,
class M>
1801 T x1, T x2,
int s_extrap_left, T left_bond,
1802 int s_extrap_right, T right_bond,
int& s_err) {
1803 mfunname(
"double t_mean_straight_point_ar(...)");
1806 left_bond, s_extrap_right, right_bond);
1812 left_bond, s_extrap_right, right_bond);
1813 return xinteg / integ;
1822template <
class T,
class D,
class M>
1824 const M& mesh,
const D& y,
1826 T (*fun)(T xp1, T yp1, T xp2, T yp2, T xmin, T xmax, T x1, T x2), T x1,
1827 T x2,
int s_extrap_left, T left_bond,
int s_extrap_right, T right_bond) {
1828 mfunname(
"double t_integ_generic_point_ar(...)");
1833 long qi = mesh.get_qi();
1836 double xmin = mesh.get_xmin();
1837 double xmax = mesh.get_xmax();
1838 if (x2 <= xmin && s_extrap_left == 0)
return 0.0;
1839 if (x1 >= xmax && s_extrap_right == 0)
return 0.0;
1840 if (x2 <= left_bond)
return 0.0;
1841 if (x1 >= right_bond)
return 0.0;
1843 if (x1 < left_bond) x1 = left_bond;
1844 if (x2 > right_bond) x2 = right_bond;
1845 if (x1 <= xmin && s_extrap_left == 0) x1 = xmin;
1846 if (x2 > xmax && s_extrap_left == 0) x2 = xmax;
1851 i_ret = mesh.get_interval_extrap(x1, np1, bp1, np2, bp2);
1854 mesh.get_scoor(np1, xp1);
1856 mesh.get_scoor(np2, xp2);
1860 if (i_ret == 2 || x2 <= xp2)
1862 res = fun(xp1, yp1, xp2, yp2, xmin, xmax, x1, x2);
1867 res = fun(xp1, yp1, xp2, yp2, xmin, xmax, x1i, x2i);
1874 mesh.get_scoor(np2, xp2);
1891 res += fun(xp1, yp1, xp2, yp2, xmin, xmax, x1i, x2i);
1897 }
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)