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: n1 < 0\n";
153 if (x < xmin || x >= xmax) {
160 n1 = long((x - xmin) / step);
162 b1 = xmin + step * n1;
164 if (n1 < 0 || n2 > q || b2 > xmax) {
165 mcerr <<
"ERROR in EqualStepCoorMesh<T>::get_interval:\n"
166 <<
"n1 < 0 || n2 > q || b2 > xmax\n";
186 }
else if (x >= xmax) {
193 n1 = long((x - xmin) / step);
199 b1 = xmin + step * n1;
201 if (n1 < 0 || n2 > q || b2 > xmax) {
202 mcerr <<
"ERROR in EqualStepCoorMesh<T>::get_interval_extrap:\n"
203 <<
"n1 < 0 || n2 > q || b2 > xmax\n";
215 Ifile <<
"EqualStepCoorMesh<T>:\n";
217 Ifile <<
"Type of T is (in internal notations) " <<
typeid(T).name() <<
'\n';
218 Iprint4n(file, q, xmin, xmax, step);
230 mfunname(
"istream& operator>>(istream& file, EqualStepCoorMesh<T>& f)");
275template <
class T,
class D>
279#ifndef TLINE_REDUCE_TO_RAW_ARR
280 if (q <= 1)
return -1;
281 if (x < coor[0] || x > coor[q - 1])
return -1;
282 if (x < coor[1])
return 0;
283 if (x >= coor[q - 2])
return q - 2;
286 while (n2 - n1 > 1) {
287 n3 = n1 + (n2 - n1) / 2;
296 if (q <= 1)
return -1;
297 if (x < arr[0] || x > arr[q - 1])
return -1;
298 if (x < arr[1])
return 0;
299 if (x >= arr[q - 2])
return q - 2;
302 while (n2 - n1 > 1) {
303 n3 = n1 + (n2 - n1) / 2;
320template <
class T,
class D>
323 if (n_start < 0 || n_start > q - 1) {
324 mcerr <<
" ERROR in t_find_interval_end(...):\n";
325 mcerr <<
"n_start < 0 || n_start > q-1\n";
329#ifndef TLINE_REDUCE_TO_RAW_ARR
331 if (q - n_start <= 1)
return -1;
332 if (x < coor[n_start] || x > coor[q - 1])
return -1;
333 if (x < coor[n_start + 1])
return n_start;
334 if (x >= coor[q - 2])
return q - 2;
337 while (n2 - n1 > 1) {
338 n3 = n1 + (n2 - n1) / 2;
348 if (q - n_start <= 1)
return -1;
349 if (x < arr[n_start] || x > arr[q - 1])
return -1;
350 if (x < arr[n_start + 1])
return n_start;
351 if (x >= arr[q - 2])
return q - 2;
354 while (n2 - n1 > 1) {
355 n3 = n1 + (n2 - n1) / 2;
388template <
class T,
class D>
391 inline long get_qi(
void)
const {
return q - 1; }
395#ifndef TLINE_REDUCE_TO_RAW_ARR
402 if (n < 0 || n >= q - 1)
return 0;
403#ifndef TLINE_REDUCE_TO_RAW_ARR
405 b2 = (*amesh)[n + 1];
415 int get_interval(T x,
long& n1, T& b1,
long& n2, T& b2)
const;
420 if (n < 0 || n >= q - 1)
return 0;
428 : q(0), xmin(0), xmax(0), x_old(0), n_old(-1), amesh(NULL) {
431 PointCoorMesh<T, D>(
long fq,
435 virtual ~PointCoorMesh<T, D>() {}
440 virtual void print(std::ostream& file)
const;
446#ifndef TLINE_REDUCE_TO_RAW_ARR
458template <
class T,
class D>
460 : q(fq), x_old(0), n_old(-1) {
462 mcerr <<
"ERROR in PointCoorMesh<T,D>::PointCoorMesh<T,D>:\n"
467#ifndef TLINE_REDUCE_TO_RAW_ARR
471 xmax = (*amesh)[q - 1];
473 amesh = &((*famesh)[0]);
479 mcerr <<
"ERROR in PointCoorMesh<T,D>::PointCoorMesh<T,D>:\n"
484#ifdef CHECK_POINT_MESH
486 for (n = 0; n < q - 1; n++) {
487#ifndef TLINE_REDUCE_TO_RAW_ARR
488 if ((*amesh)[n] >= (*amesh)[n + 1])
490 if (amesh[n] >= amesh[n + 1])
493 mcerr <<
"ERROR in PointCoorMesh<T,D>::PointCoorMesh<T,D>:\n"
494 <<
"amesh[n] >= amesh[n+1]\n";
495#ifndef TLINE_REDUCE_TO_RAW_ARR
506template <
class T,
class D>
509 for (n = 0; n < q - 1; n++) {
510#ifndef TLINE_REDUCE_TO_RAW_ARR
511 if ((*amesh)[n] >= (*amesh)[n + 1])
513 if (amesh[n] >= amesh[n + 1])
516 mcerr <<
"ERROR in PointCoorMesh<T,D>::check(void):\n"
517 <<
"amesh[n] >= amesh[n+1]\n";
518#ifndef TLINE_REDUCE_TO_RAW_ARR
528template <
class T,
class D>
530 if (x < xmin || x >= xmax) {
534#ifndef TLINE_REDUCE_TO_RAW_ARR
535 if (n_old >= 0 && x_old <= x) {
536 n1 = t_find_interval_end<T, D>(x, q, *amesh, n_old);
538 n1 = t_find_interval<T, D>(x, q, *amesh);
542 if (n_old >= 0 && x_old <= x) {
543 n1 = t_find_interval_end<T, T*>(x, q, amesh, n_old);
545 n1 = t_find_interval<T, T*>(x, q, amesh);
551 mcerr <<
"ERROR in PointCoorMesh<T,D>::get_interval:\n"
562template <
class T,
class D>
565 if (x < xmin || x >= xmax) {
572#ifndef TLINE_REDUCE_TO_RAW_ARR
573 if (n_old >= 0 && x_old <= x) {
574 n1 = t_find_interval_end<T, D>(x, q, *amesh, n_old);
576 n1 = t_find_interval<T, D>(x, q, *amesh);
580 if (n_old >= 0 && x_old <= x) {
581 n1 = t_find_interval_end<T, T*>(x, q, amesh, n_old);
583 n1 = t_find_interval<T, T*>(x, q, amesh);
588 if (n1 < 0 || n1 >= q || n2 < 0 || n2 >= q) {
589 mcerr <<
"ERROR in PointCoorMesh<T,D>::get_interval:\n"
590 <<
"n1 < 0 || n1 >= q || n2 < 0 || n2 >= q\n";
595#ifndef TLINE_REDUCE_TO_RAW_ARR
602 if (b1 < xmin || b1 > xmax || b2 < xmin || b2 > xmax) {
603 mcerr <<
"ERROR in PointCoorMesh<T,D>::get_interval:\n"
604 <<
"b1 < xmin || b1 > xmax || b2 < xmin || b2 > xmax\n";
614template <
class T,
class D>
624#ifndef TLINE_REDUCE_TO_RAW_ARR
629 }
else if (x >= xmax) {
633#ifndef TLINE_REDUCE_TO_RAW_ARR
634 b1 = (*amesh)[q - 2];
640#ifndef TLINE_REDUCE_TO_RAW_ARR
641 if (n_old >= 0 && x_old <= x) {
642 n1 = t_find_interval_end<T, D>(x, q, *amesh, n_old);
644 n1 = t_find_interval<T, D>(x, q, *amesh);
648 if (n_old >= 0 && x_old <= x) {
649 n1 = t_find_interval_end<T, T*>(x, q, amesh, n_old);
651 n1 = t_find_interval<T, T*>(x, q, amesh);
656 if (n1 < 0 || n1 >= q || n2 < 0 || n2 >= q) {
657 mcerr <<
"ERROR in PointCoorMesh<T,D>::get_interval:\n"
658 <<
"n1 < 0 || n1 >= q || n2 < 0 || n2 >= q\n";
663#ifndef TLINE_REDUCE_TO_RAW_ARR
670 if (b1 < xmin || b1 > xmax || b2 < xmin || b2 > xmax) {
671 mcerr <<
"ERROR in PointCoorMesh<T,D>::get_interval:\n"
672 <<
"b1 < xmin || b1 > xmax || b2 < xmin || b2 > xmax\n";
683template <
class T,
class D>
685 Ifile <<
"PointCoorMesh<T,D>:\n";
687 Ifile <<
"Type of T is (in internal notations) " <<
typeid(T).name() <<
'\n';
688 Ifile <<
"Type of D is (in internal notations) " <<
typeid(D).name() <<
'\n';
691#ifndef TLINE_REDUCE_TO_RAW_ARR
693 Ifile <<
"(*amesh)=" << (*amesh)[0] <<
'\n';
695 Ifile <<
"amesh:" <<
'\n';
698 for (n = 0; n < q; n++) {
708template <
class T,
class D>
904template <
class T,
class D,
class M>
906 T x1, T x2,
int xpower)
908 mfunname(
"double t_integ_step_ar(...)");
912 long qi = mesh.get_qi();
915 double xmin = mesh.get_xmin();
916 double xmax = mesh.get_xmax();
917 if (x2 <= xmin)
return 0;
918 if (x1 >= xmax)
return 0;
919 if (x1 == x2)
return 0;
920 long istart, iafterend;
929 i_ret = mesh.get_interval(x1, n1, b1, n2, b2);
936 s = (x2 - x1) * y[n1];
938 s = 0.5 * (x2 * x2 - x1 * x1) * y[n1];
943 s += (b2 - x1) * y[n1];
945 s += 0.5 * (b2 * b2 - x1 * x1) * y[n1];
957 i_ret = mesh.get_interval(x2, n1, b1, n2, b2);
963 s += (x2 - b1) * y[n1];
965 s += 0.5 * (x2 * x2 - b1 * b1) * y[n1];
973 mesh.get_scoor(istart, b);
975 for (i = istart; i < iafterend; i++) {
977 mesh.get_scoor(i + 1, b);
981 for (i = istart; i < iafterend; i++) {
983 mesh.get_scoor(i + 1, b);
984 s += 0.5 * (b * b - a * a) * y[i];
996template <
class T,
class D,
class M>
999 T (*fun)(
long np, T xp1, T xp2, T yp, T xmin, T xmax,
1004 mfunname(
"double t_integ_step_ar(...)");
1007 long qi = mesh.get_qi();
1010 double xmin = mesh.get_xmin();
1011 double xmax = mesh.get_xmax();
1012 if (x2 <= xmin)
return 0;
1013 if (x1 >= xmax)
return 0;
1014 if (x1 == x2)
return 0;
1015 long istart, iafterend;
1024 i_ret = mesh.get_interval(x1, n1, b1, n2, b2);
1032 s = fun(n1, b1, b2, y[n1], xmin, xmax, x1, x2);
1035 s = fun(n1, b1, b2, y[n1], xmin, xmax, x1, x2);
1046 i_ret = mesh.get_interval(x2, n1, b1, n2, b2);
1051 s += fun(n1, b1, b2, y[n1], xmin, xmax, b1, x2);
1058 mesh.get_scoor(istart, b);
1059 for (i = istart; i < iafterend; i++) {
1061 mesh.get_scoor(i + 1, b);
1062 s += fun(i, a, b, y[i], xmin, xmax, a, b);
1257template <
class T,
class D,
class M>
1260 T integ,
int* s_err)
1262 mfunname(
"double t_find_x_for_already_integ_step_ar(...)");
1267 long qi = mesh.get_qi();
1270 double xmin = mesh.get_xmin();
1271 double xmax = mesh.get_xmax();
1272 if (integ == 0.0)
return xmin;
1273 if (integ > y[qi - 1]) {
1277 if (integ == y[qi - 1])
return xmax;
1281 mesh.get_scoor(0, xp1);
1282 mesh.get_scoor(1, xp2);
1283 return xp1 + (xp2 - xp1) * integ / y[0];
1289 while (nr - nl > 1) {
1299 mesh.get_scoor(nl + 1, xl);
1300 mesh.get_scoor(nr + 1, xr);
1305 T a = (xr - xl) / (y[nr] - y[nl]);
1306 T ret = xl + a * (integ - y[nl]);
1321template <
class T,
class D,
class M>
1323 const M& mesh,
const D& y,
1324 T integ,
int* s_err)
1326 mfunname(
"double t_find_entire_x_for_already_integ_step_ar(...)");
1332 long qi = mesh.get_qi();
1335 long xmin = mesh.get_xmin();
1336 long xmax = mesh.get_xmax();
1337 if (integ == 0)
return xmin;
1338 if (integ > y[qi - 1]) {
1342 if (integ == y[qi - 1])
return xmax;
1345 mesh.get_scoor(0, xp1);
1352 while (nr - nl > 1) {
1363 mesh.get_scoor(nr, x);
1374template <
class T,
class D,
class M>
1378 mfunname(
"double t_hispre_step_ar(...)");
1381 long qi = mesh.get_qi();
1388 mesh.get_scoor(n, xp2);
1389 for (n = 0; n < qi; n++) {
1391 mesh.get_scoor(n + 1, xp2);
1394 "n=" << n <<
" xp1=" << xp1 <<
" xp2=" << xp2 <<
'\n',
1396 s = s + y[n] * step;
1403 for (n = 0; n < qi; n++) {
1411template <
class T,
class D,
class M>
1413 mfunname(
"double t_hisran_step_ar(...)");
1415 long qi = mesh.get_qi();
1416 long s_same =
apeq_mant(integ_y[qi - 1], 1.0, 1.0e-12);
1417 check_econd11a(s_same, != 1.0,
"integ_y[qi-1]=" << integ_y[qi - 1] <<
'\n',
1442template <
class T,
class D,
class M>
1444 mfunname(
"double t_opposite_hisran_step_ar(...)");
1447 long qi = mesh.get_qi();
1448 long s_same =
apeq_mant(integ_y[qi - 1], 1.0, 1.0e-12);
1449 check_econd11a(s_same, != 1.0,
"integ_y[qi-1]=" << integ_y[qi - 1] <<
'\n',
1457 mesh.get_interval_extrap(x, n1, b1, n2, b2);
1464 y1 = integ_y[n1 - 1];
1465 y2 = integ_y[n2 - 1];
1467 T res = y1 + ((y2 - y1) / (b2 - b1)) * (x - b1);
1473template <
class T,
class D,
class M>
1475 mfunname(
"double t_entire_hisran_step_ar(...)");
1478 long qi = mesh.get_qi();
1479 long s_same =
apeq_mant(integ_y[qi - 1], 1.0, 1.0e-12);
1480 check_econd11a(s_same, != 1.0,
"integ_y[qi-1]=" << integ_y[qi - 1] <<
'\n',
1489 check_econd11a(s_err, != 0,
"mesh=" << mesh <<
" integ_y=" << integ_y
1490 <<
" rannum=" << rannum <<
'\n',
1503template <
class T,
class D,
class M>
1505 T x1, T x2,
int& s_err) {
1506 mfunname(
"double t_mean_step_ar(...)");
1514 return xinteg / integ;
1519 mfunname(
"double t_value_straight_2point(...)");
1522 T a = (y2 - y1) / (x2 - x1);
1530 T adx1 = (dx1 > 0) ? dx1 : -dx1;
1536 T adx2 = (dx2 > 0) ? dx2 : -dx2;
1547 if (s_ban_neg == 1 && res < 0.0) res = 0.0;
1557 mfunname(
"double t_integ_straight_2point(...)");
1560 T a = (y2 - y1) / (x2 - x1);
1562 T yl = a * (xl - x1) + b;
1563 T yr = a * (xr - x1) + b;
1564 if (s_ban_neg == 1) {
1565 if (yl <= 0.0 && yr <= 0.0)
return 0.0;
1566 if (yl < 0.0 || yr < 0.0) {
1579 res = 0.5 * a * (xr * xr - xl * xl) + (b - a * x1) * (xr - xl);
1581 res = a * (xr * xr * xr - xl * xl * xl) / 3.0 +
1582 0.5 * (b - a * x1) * (xr * xr - xl * xl);
1589template <
class T,
class D,
class M>
1592 T x,
int s_ban_neg,
int s_extrap_left, T left_bond,
1593 int s_extrap_right, T right_bond) {
1595 mfunname(
"double t_value_straight_point_ar(...)");
1596 double xmin = mesh.get_xmin();
1597 double xmax = mesh.get_xmax();
1599 if (x < left_bond)
return 0.0;
1600 if (x > right_bond)
return 0.0;
1601 if (x < xmin && s_extrap_left == 0)
return 0.0;
1602 if (x > xmax && s_extrap_right == 0)
return 0.0;
1605 mesh.get_interval_extrap(x, n1, b1, n2, b2);
1607 mesh.get_scoor(n1, x1);
1609 mesh.get_scoor(n2, x2);
1614template <
class T,
class D,
class M>
1616 const M& mesh,
const D& y,
1617 T (*funval)(T xp1, T yp1, T xp2, T yp2, T xmin,
1620 T x,
int s_extrap_left, T left_bond,
int s_extrap_right, T right_bond) {
1622 mfunname(
"double t_value_generic_point_ar(...)");
1623 double xmin = mesh.get_xmin();
1624 double xmax = mesh.get_xmax();
1626 if (x < left_bond)
return 0.0;
1627 if (x > right_bond)
return 0.0;
1628 if (x < xmin && s_extrap_left == 0)
return 0.0;
1629 if (x > xmax && s_extrap_right == 0)
return 0.0;
1632 mesh.get_interval_extrap(x, n1, b1, n2, b2);
1634 mesh.get_scoor(n1, x1);
1636 mesh.get_scoor(n2, x2);
1637 return funval(x1, y[n1], x2, y[n2], left_bond, right_bond, x);
1648 mfunname(
"double t_value_power_2point(...)");
1655 if (x1 <= 0.0 && x2 >= 0.0) {
1656 mcerr <<
"T t_value_power_2point(...): \n";
1657 mcerr <<
"x's are of different sign, power cannot be drawn\n";
1660 T pw = log(y1 / y2) / log(x1 / x2);
1662 res = y1 *
pow(x, pw) /
pow(x1, pw);
1690 mfunname(
"double t_value_exp_2point(...)");
1698 T a = log(y1 / y2) / (x1 - x2);
1699 T c = y1 /
exp(a * x1);
1701 res = c *
exp(a * x);
1710 mfunname(
"double t_integ_power_2point(...)");
1716 T pw = log(y1 / y2) / log(x1 / x2);
1718 T k = y1 *
pow(x1, -pw);
1719 T t = k / (1 + pw) * (
pow(xr, (pw + 1)) -
pow(xl, (pw + 1)));
1723template <
class T,
class D,
class M>
1728 int s_ban_neg,
int s_extrap_left, T left_bond,
1729 int s_extrap_right, T right_bond) {
1730 mfunname(
"double t_integ_straight_point_ar(...)");
1735 long qi = mesh.get_qi();
1738 double xmin = mesh.get_xmin();
1739 double xmax = mesh.get_xmax();
1740 if (x2 <= xmin && s_extrap_left == 0)
return 0.0;
1741 if (x1 >= xmax && s_extrap_right == 0)
return 0.0;
1742 if (x2 <= left_bond)
return 0.0;
1743 if (x1 >= right_bond)
return 0.0;
1745 if (x1 < left_bond) x1 = left_bond;
1746 if (x2 > right_bond) x2 = right_bond;
1747 if (x1 <= xmin && s_extrap_left == 0) x1 = xmin;
1748 if (x2 > xmax && s_extrap_left == 0) x2 = xmax;
1753 i_ret = mesh.get_interval_extrap(x1, np1, bp1, np2, bp2);
1756 mesh.get_scoor(np1, xp1);
1758 mesh.get_scoor(np2, xp2);
1762 if (i_ret == 2 || x2 <= xp2)
1764 res = t_integ_straight_2point<T>(xp1, yp1, xp2, yp2, x1, x2, xpower,
1770 res = t_integ_straight_2point<T>(xp1, yp1, xp2, yp2, x1i, x2i, xpower,
1778 mesh.get_scoor(np2, xp2);
1795 res += t_integ_straight_2point<T>(xp1, yp1, xp2, yp2, x1i, x2i, xpower,
1802 }
while (s_stop == 0);
1807template <
class T,
class D,
class M>
1810 T x1, T x2,
int s_extrap_left, T left_bond,
1811 int s_extrap_right, T right_bond,
int& s_err) {
1812 mfunname(
"double t_mean_straight_point_ar(...)");
1815 left_bond, s_extrap_right, right_bond);
1821 left_bond, s_extrap_right, right_bond);
1822 return xinteg / integ;
1831template <
class T,
class D,
class M>
1833 const M& mesh,
const D& y,
1835 T (*fun)(T xp1, T yp1, T xp2, T yp2, T xmin, T xmax, T x1, T x2), T x1,
1836 T x2,
int s_extrap_left, T left_bond,
int s_extrap_right, T right_bond) {
1837 mfunname(
"double t_integ_generic_point_ar(...)");
1842 long qi = mesh.get_qi();
1845 double xmin = mesh.get_xmin();
1846 double xmax = mesh.get_xmax();
1847 if (x2 <= xmin && s_extrap_left == 0)
return 0.0;
1848 if (x1 >= xmax && s_extrap_right == 0)
return 0.0;
1849 if (x2 <= left_bond)
return 0.0;
1850 if (x1 >= right_bond)
return 0.0;
1852 if (x1 < left_bond) x1 = left_bond;
1853 if (x2 > right_bond) x2 = right_bond;
1854 if (x1 <= xmin && s_extrap_left == 0) x1 = xmin;
1855 if (x2 > xmax && s_extrap_left == 0) x2 = xmax;
1860 i_ret = mesh.get_interval_extrap(x1, np1, bp1, np2, bp2);
1863 mesh.get_scoor(np1, xp1);
1865 mesh.get_scoor(np2, xp2);
1869 if (i_ret == 2 || x2 <= xp2)
1871 res = fun(xp1, yp1, xp2, yp2, xmin, xmax, x1, x2);
1876 res = fun(xp1, yp1, xp2, yp2, xmin, xmax, x1i, x2i);
1883 mesh.get_scoor(np2, xp2);
1900 res += fun(xp1, yp1, xp2, yp2, xmin, xmax, x1i, x2i);
1906 }
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)