35 namespace threshold_loop_functions {
37 template <
typename T> constexpr T sqr(T x) noexcept {
return x*x; }
38 template <
typename T> constexpr T cube(T x) noexcept {
return x*x*x; }
39 template <
typename T> constexpr T quad(T x) noexcept {
return sqr(sqr(x)); }
40 template <
typename T> constexpr T pow5(T x) noexcept {
return quad(x) * x; }
41 template <
typename T> constexpr T pow6(T x) noexcept {
return sqr(sqr(x) * x); }
42 template <
typename T> constexpr T pow7(T x) noexcept {
return pow6(x) * x; }
43 template <
typename T> constexpr T pow8(T x) noexcept {
return sqr(quad(x)); }
44 template <
typename T> constexpr T pow9(T x) noexcept {
return pow8(x) * x; }
46 double logx(
double x) noexcept
48 if (is_zero(x, 10.0*std::numeric_limits<double>::epsilon())) {
55 double xlogx(
double x) noexcept
57 if (is_zero(x, 1e-14)) {
66 double F1(
double x) noexcept
68 const double eps = std::numeric_limits<double>::epsilon();
70 if (is_zero(x, eps)) {
74 if (is_equal(x, 1., 0.01)) {
75 const double d = x - 1;
76 const double d2 = sqr(d);
77 return 1 + d2*(-1/6. + d*(1/6. - 2/15.*d));
80 const double x2 = sqr(x);
85 double F2(
double x) noexcept
87 const double eps = std::numeric_limits<double>::epsilon();
89 if (is_zero(x, eps)) {
93 if (is_equal(x, 1., 0.01)) {
94 const double d = (x - 1)*(x + 1);
95 const double d2 = sqr(d);
96 return 1 + d2*(-0.1 + d*(0.1 - 3/35.*d));
99 const double x2 = sqr(x);
101 return 6*x2*(2 - 2*x2 + (1 + x2)*
std::log(x2))/cube(x2 - 1);
104 double F3(
double x) noexcept
106 const double eps = std::numeric_limits<double>::epsilon();
108 if (is_zero(x, eps)) {
112 if (is_equal(x, 1., 0.01)) {
113 const double d = x - 1;
114 return 1 + d*(5/9. + d*(-4/9. + d*(2/9. - 7/90.*d)));
117 const double x2 = sqr(x);
119 return 2*x*(5*(1 - x2) + (1 + 4*x2)*
std::log(x2))/(3*sqr(x2 - 1));
122 double F4(
double x) noexcept
124 const double eps = std::numeric_limits<double>::epsilon();
126 if (is_zero(x, eps)) {
130 if (is_equal(x, 1., 0.01)) {
131 const double d = x - 1;
132 const double d2 = sqr(d);
133 return 1 + d*(-1/3. + d2*(2/15. - d/6.));
136 const double x2 = sqr(x);
138 return 2*x*(x2 - 1 -
std::log(x2))/sqr(x2 - 1);
141 double F5(
double x) noexcept
143 const double eps = std::numeric_limits<double>::epsilon();
145 if (is_zero(x, eps)) {
149 if (is_equal(x, 1., 0.01)) {
150 const double d = x - 1;
151 const double d2 = sqr(d);
152 return 1 + d2*(-0.3 + d*(0.3 - 3/14.*d));
155 if (is_equal(x, -1., 0.01)) {
156 const double d = x + 1;
157 const double d2 = sqr(d);
158 return -1 + d2*(0.3 + d*(0.3 + 3/14.*d));
161 const double x2 = sqr(x);
162 const double x4 = sqr(x2);
164 return 3*x*(1 - x4 + 2*x2*
std::log(x2))/cube(1 - x2);
167 double F6(
double x) noexcept
169 const double eps = std::numeric_limits<double>::epsilon();
171 if (is_zero(x, eps)) {
175 const double x2 = sqr(x);
177 if (is_equal(x2, 1., 0.01)) {
178 const double d = (x - 1)*(x + 1);
179 return d*(1/3. + d*(-1/8. + d*(1/15. + d/24.)));
182 return (x2 - 3)/(4*(1 - x2)) + x2*(x2 - 2)/(2*sqr(1 - x2))*
std::log(x2);
185 double F7(
double x) noexcept
187 const double eps = std::numeric_limits<double>::epsilon();
189 if (is_zero(x, eps)) {
193 const double x2 = sqr(x);
195 if (is_equal(x2, 1., 0.01)) {
196 const double d = (x - 1)*(x + 1);
197 return 1 + d*(3/2. + d*(-9/20. + d*(0.2 - 3/28.*d)));
200 const double x4 = sqr(x2);
202 return -3*(x4 - 6*x2 + 1)/(2*sqr(x2 - 1))
203 + 3*x4*(x2 - 3)/cube(x2 - 1)*
std::log(x2);
207 static double F8_1_1(
double x1,
double x2) noexcept
209 const double d1 = (x1 - 1)*(x1 + 1);
210 const double d2 = (x2 - 1)*(x2 + 1);
211 const double d12 = sqr(d1);
212 const double d22 = sqr(d2);
213 const double d13 = d1*d12;
214 const double d23 = d2*d22;
215 const double d14 = sqr(d12);
216 const double d24 = sqr(d22);
218 return 1 + 2/3.*(d1 + d2) + 1/6.*(-d12 - d1*d2 - d22)
219 + (d13 + d12*d2 + d1*d22 + d23)/15.
220 + (-d14 - d13*d2 - d12*d22 - d1*d23 - d24)/30.;
224 static double F8_1_x2(
double x1,
double x2) noexcept
226 const double x22 = sqr(x2);
227 const double d = (x1 - 1)*(x1 + 1);
229 if (is_zero(x2, 0.01)) {
230 return 2*x22 + d*(1 - x22 + d*(-1/3. + 2/3.*x22));
233 const double d2 = sqr(d);
234 const double d3 = d*d2;
235 const double d4 = sqr(d2);
236 const double y = (x2 - 1)*(x2 + 1);
237 const double y2 = sqr(y);
238 const double y3 = y*y2;
239 const double y4 = sqr(y2);
240 const double y5 = y2*y3;
241 const double y6 = sqr(y3);
245 - 2 + 2*(1 + x22*(-1 + lx22*x22))/y2
246 + d*(-1 + x22*(4 + x22*(-3 + 2*lx22)))/y3
247 + d2*(-1 + x22*(6 + x22*(-3 + 6*lx22 + -2*x22)))/(3*y4)
248 + d3*(-1 + x22*(8 + x22*(12*lx22 + x22*(-8 + x22))))/(6*y5)
249 + d4*(-3 + x22*(30 + x22*(20 + 60*lx22 + x22*(-60 + x22*(15 - 2*x22)))))/(30*y6);
253 static double F8_0_x2(
double x1,
double x2) noexcept
255 const double x12 = sqr(x1);
256 const double x22 = sqr(x2);
259 return 2*(1 - x22 + (x12 + x22)*lx22)/(-1 + x22);
263 static double F8_x1_x2(
double x1,
double x2) noexcept
265 const double x22 = sqr(x2);
266 const double d = (x1 - x2)*(x1 + x2);
267 const double d2 = sqr(d);
268 const double d3 = d*d2;
269 const double y = (x2 - 1)*(x2 + 1);
270 const double y2 = sqr(y);
271 const double y3 = y*y2;
272 const double y4 = sqr(y2);
273 const double y5 = y2*y3;
277 + 2*((-2 + x22)*x22*lx22 + y)/y2
278 + d*(3 + x22*(-4 + x22) + 2*lx22)/y3
279 + d2*(-2 + x22*(-3 - 6*lx22 + x22*(6 - x22)))/(3*x22*y4)
280 + d3*(-1 + x22*(8 + x22*(12*lx22 + x22*(-8 + x22))))/(6*x22*x22*y5);
283 double F8(
double x1,
double x2) noexcept
285 const double eps = 10.*std::numeric_limits<double>::epsilon();
287 if (is_zero(x1, eps) && is_zero(x2, eps)) {
291 const double ax1 = std::fabs(x1);
292 const double ax2 = std::fabs(x2);
294 if (is_equal(ax1, 1., 0.01) && is_equal(ax2, 1., 0.01)) {
298 if (is_equal(ax1, 1., 0.01)) {
302 if (is_equal(ax2, 1., 0.01)) {
306 if (is_zero(x1, 0.00001)) {
310 if (is_zero(x2, 0.00001)) {
314 if (is_equal(ax1, ax2, 0.00001)) {
318 const double x12 = sqr(x1);
319 const double x22 = sqr(x2);
320 const double x14 = sqr(x12);
321 const double x24 = sqr(x22);
323 return -2. + 2./(x12 - x22)*(
329 static double F9_1_1(
double x1,
double x2) noexcept
331 const double d1 = (x1 - 1)*(x1 + 1);
332 const double d2 = (x2 - 1)*(x2 + 1);
333 const double d12 = sqr(d1);
334 const double d22 = sqr(d2);
335 const double d13 = d1*d12;
336 const double d23 = d2*d22;
337 const double d14 = sqr(d12);
338 const double d24 = sqr(d22);
342 + 1/6.*(d12 + d1*d2 + d22)
343 + 1/10.*(-d13 - d12*d2 - d1*d22 - d23)
344 + 1/15.*(d14 + d13*d2 + d12*d22 + d1*d23 + d24);
348 static double F9_1_x2(
double x1,
double x2) noexcept
350 const double x22 = sqr(x2);
351 const double d = (x1 - 1)*(x1 + 1);
352 const double d2 = sqr(d);
353 const double d3 = d*d2;
354 const double d4 = sqr(d2);
355 const double y = (x2 - 1)*(x2 + 1);
356 const double y2 = sqr(y);
357 const double y3 = y*y2;
358 const double y4 = sqr(y2);
359 const double y5 = y2*y3;
360 const double y6 = sqr(y3);
363 if (is_zero(x2, 0.01)) {
368 + 2*(1 + x22*(-1 + lx22))/y2
369 + d*(1 + x22*(2*lx22 - x22))/y3
370 + d2*(2 + x22*(3 + 6*lx22 + x22*(-6 + x22)))/(3*y4)
371 + d3*(3 + x22*(10 + 12*lx22 + x22*(-18 + x22*(6 - x22))))/(6*y5)
372 + d4*(12 + x22*(65 + 60*lx22 + x22*(-120 + x22*(60 + x22*(-20 + 3*x22)))))/(30*y6);
376 static double F9_0_x2(
double ,
double x2) noexcept
378 const double x22 = sqr(x2);
384 static double F9_x1_x2(
double x1,
double x2) noexcept
386 const double x22 = sqr(x2);
387 const double d = (x1 - x2)*(x1 + x2);
388 const double d2 = sqr(d);
389 const double d3 = d*d2;
390 const double y = (x2 - 1)*(x2 + 1);
391 const double y2 = sqr(y);
392 const double y3 = y*y2;
393 const double y4 = sqr(y2);
394 const double y5 = y2*y3;
399 + d*(1 + x22*(2*lx22 - x22))/(x22*y3)
400 + d2*(1 + x22*(-6 + x22*(3 - 6*lx22 + 2*x22)))/(3*x22*x22*y4)
401 + d3*(1 + x22*(-6 + x22*(18 + x22*(-10 + 12*lx22 - 3*x22))))/(6*x22*x22*x22*y5);
404 double F9(
double x1,
double x2) noexcept
406 const double ax1 = std::fabs(x1);
407 const double ax2 = std::fabs(x2);
409 if (is_equal(ax1, 1., 0.01) && is_equal(ax2, 1., 0.01)) {
413 if (is_equal(ax1, 1., 0.01)) {
417 if (is_equal(ax2, 1., 0.01)) {
421 if (is_zero(x1, 0.0001)) {
425 if (is_zero(x2, 0.0001)) {
429 if (is_equal(ax1, ax2, 0.00001)) {
433 const double x12 = sqr(x1);
434 const double x22 = sqr(x2);
436 return 2/(x12 - x22)*(
441 double f(
double r) noexcept
446 double g(
double r) noexcept
451 double f1(
double r) noexcept
453 const double r2 = sqr(
r);
455 if (is_zero(
r, 0.01)) {
459 const double d = r2 - 1;
461 if (is_equal(std::fabs(
r), 1., 0.01)) {
462 return 1 + d*(4/7. + d*(-13/70. + d*(3/35. - 23/490.*d)));
465 const double d2 = sqr(d);
466 const double d3 = d*d2;
468 return 6*(r2 + 3)*r2/(7*d2) + 6*(r2 - 5)*sqr(r2)*
std::log(r2)/(7*d3);
471 double f2(
double r) noexcept
473 const double r2 = sqr(
r);
475 if (is_zero(
r, 0.01)) {
479 const double d = r2 - 1;
481 if (is_equal(std::fabs(
r), 1., 0.01)) {
482 return 1 + d*(16/27. + d*(-49/270. + d*(11/135. - 83/1890.*d)));
485 const double d2 = sqr(d);
486 const double d3 = d*d2;
488 return 2*(r2 + 11)*r2/(9*d2) + 2*(5*r2 - 17)*sqr(r2)*
std::log(r2)/(9*d3);
491 double f3(
double r) noexcept
493 if (is_zero(
r, 1e-6)) {
497 const double r2 = sqr(
r);
498 const double d = r2 - 1;
500 if (is_equal(std::fabs(
r), 1., 0.01)) {
501 return 1 + d*(2/9. + d*(1/90. + d*(-2/45. + 29/630.*d)));
504 const double r4 = sqr(r2);
505 const double d2 = sqr(d);
506 const double d3 = d*d2;
508 return 2*(r4 + 9*r2 + 2)/(3*d2) + 2*(r4 - 7*r2 - 6)*r2*
std::log(r2)/(3*d3);
511 double f4(
double r) noexcept
513 if (is_zero(
r, 1e-6)) {
517 const double r2 = sqr(
r);
518 const double d = r2 - 1;
520 if (is_equal(std::fabs(
r), 1., 0.01)) {
521 return 1 + d*(2/21. + d*(13/210. + d*(-8/105. + 101/1470.*d)));
524 const double r4 = sqr(r2);
525 const double d2 = sqr(d);
526 const double d3 = d*d2;
528 return 2*(5*r4 + 25*r2 + 6)/(7*d2) + 2*(r4 - 19*r2 - 18)*r2*
std::log(r2)/(7*d3);
532 static double f5_0_0(
double r1,
double r2) noexcept
534 if (is_zero(r1, 1e-6) && is_zero(r2, 1e-6)) {
538 if (std::abs(r1) > std::abs(r2)) {
542 const double r12 = sqr(r1);
543 const double r22 = sqr(r2);
544 const double r2lr2 = xlogx(r2);
545 const double lr2 = logx(r2);
554 + r12*(2 + 2*lr2 + r2*(2*r2 + 6*r2lr2))
555 + r1*r22*(6*r2lr2 + 2*r2)
560 static double f5_1_1(
double r1,
double r2) noexcept
562 const double d1 = r1 - 1;
563 const double d2 = r2 - 1;
564 const double d12 = sqr(d1);
565 const double d22 = sqr(d2);
566 const double d13 = d1*d12;
567 const double d23 = d2*d22;
568 const double d14 = sqr(d12);
569 const double d24 = sqr(d22);
573 + 1./40.*(d12 + d1*d2 + d22)
574 + 1./20.*(-d13 - d12*d2 - d1*d22 - d23)
575 + 1./280.*(9*(d14 + d13*d2 + d12*d22 + d1*d23 + d24));
579 static double f5_1_r2(
double r1,
double r2) noexcept
581 if (is_zero(r2, 0.01)) {
582 const double d = r1 - 1;
583 return 0.75*(1 + d*(1./3. + d/6. + r2/3.));
586 const double d1 = r1 - 1;
587 const double d2 = r2 - 1;
588 const double d12 = sqr(d1);
589 const double d13 = d12*d1;
590 const double d14 = d13*d1;
591 const double d22 = sqr(d2);
592 const double d23 = d22*d2;
593 const double d24 = d23*d2;
594 const double d25 = d24*d2;
595 const double d26 = d25*d2;
596 const double d27 = d26*d2;
597 const double y = 1 + r2;
598 const double y2 = sqr(y);
599 const double r22 = sqr(r2);
603 + (-3 + r2*(3 + r2*(6 + r2*(3*lr22 + r2*(-3 + (-3 + 3*lr22)*r2)))))/(4.*d23*y2)
604 + d1*(1 + r2*(-1 + r2*(-2 + r2*(8 + 3*lr22 + r2*(1 + (-7 + 3*lr22)*r2)))))/(4.*d24*y2)
605 + d12*(-1 + r2*(4 + r2*(-1 + r2*(4 + 6*lr22 + r2*(5 + (-8 + 6*lr22 - 3*r2)*r2)))))/(8.*d25*y2)
606 + d13*(-4 + r2*(17 + r2*(-4 + r2*(25 + 30*lr22 + r2*(20 + r2*(-41 + 30*lr22 + (-12 - r2)*r2))))))/(40.*d26*y2)
607 + d14*(-2 + r2*(9 + r2*(4 + r2*(33 + 30*lr22 + r22*(-33 + 30*lr22 + r2*(-4 + r2*(-9 + 2*r2)))))))/(40.*d27*y2);
611 static double f5_0_r2(
double r1,
double r2) noexcept
613 const double r22 = sqr(r2);
619 (1 + r22*(lr22 + (-1 + lr22)*r22)
620 + r1*(r1*(2 + lr22 + (-2 + lr22)*r22) + r2*(2 + lr22 + (-2 + lr22)*r22)))/sqr(-1 + r22);
626 static double f5_r1_r2(
double r1,
double r2) noexcept
628 const double d = r1 - r2;
629 const double d2 = sqr(d);
630 const double d3 = d2*d;
631 const double r22 = sqr(r2);
632 const double y = r22 - 1;
633 const double y3 = sqr(y)*y;
634 const double y4 = y3*y;
635 const double y5 = y4*y;
636 const double y6 = y5*y;
640 + (-1 + r22*(-5 - 3*lr22 + r22*(5 - 6*lr22 + (1 + lr22)*r22)))/y3
641 + d*r2*(11 + 3*lr22 + r22*(3 + 18*lr22 + r22*(-15 + 3*lr22 + r22)))/y4
642 + d2*(-17 - 3*lr22 + r22*(-116 - 75*lr22 + r22*(90 - 105*lr22 + r22*(44 - 9*lr22 - r22))))/(3.*y5)
643 + d3*(3 + r22*(273 + 90*lr22 + r22*(314 + 510*lr22 + r22*(-498 + 342*lr22 + r22*(-93 + 18*lr22 + r22)))))/(6.*r2*y6)
647 double f5(
double r1,
double r2) noexcept
649 const double eps_zero = 1e-4;
650 const double eps_one = 1e-2;
652 if (is_zero(r1, eps_zero) && is_zero(r2, eps_zero)) {
656 if (is_equal(r1, 1., eps_one) && is_equal(r2, 1., eps_one)) {
660 if (is_equal(r1, -1., eps_one) && is_equal(r2, -1., eps_one)) {
664 if (is_equal(r1, 1., eps_one)) {
668 if (is_equal(r2, 1., 0.01)) {
672 if (is_zero(r1, eps_zero)) {
676 if (is_zero(r2, eps_zero)) {
680 if (is_equal(r1, r2, 0.0001)) {
684 const double r12 = sqr(r1);
685 const double r22 = sqr(r2);
688 = (1 + sqr(r1 + r2) - r12*r22)/((r12 - 1)*(r22 - 1))
689 + (cube(r1)*(r12 + 1)*
std::log(r12))/(sqr(r12 - 1)*(r1 - r2))
690 - (cube(r2)*(r22 + 1)*
std::log(r22))/((r1 - r2)*sqr(r22 - 1));
692 return 0.75 * result;
696 static double f6_0_0(
double r1,
double r2) noexcept
698 if (is_zero(r1, 1e-10) && is_zero(r2, 1e-10)) {
702 const double r22 = sqr(r2);
706 r22*(1 + (1 + lr22)*r22)
707 + r1*(r2*(1 + (1 + lr22)*r22)
708 + r1*(1 + r22*(1 + lr22 + (1 + 2*lr22)*r22)
709 + r1*(r2*(1 + lr22 + (1 + 2*lr22)*r22)
710 + r1*(1 + lr22 + r22*(1 + 2*lr22 + (1 + 3*lr22)*r22)))));
716 static double f6_1_1(
double r1,
double r2) noexcept
718 const double d1 = r1 - 1;
719 const double d2 = r2 - 1;
722 1 + d2*(4./7 + d2*(-2./35 + (-1./70 + 9.*d2/490)*d2)) +
723 d1*(4./7 + d2*(-2./35 + d2*(-1./70 + (9./490 - 3.*d2/245)*d2)) +
724 d1*(-2./35 + d2*(-1./70 + d2*(9./490 + (-3./245 + d2/147)*d2)) +
725 d1*(-1./70 + d2*(9./490 + d2*(-3./245 + (1./147 - d2/294)*d2)) +
726 d1*(9./490 + d2*(-3./245 + d2*(1./147 + (-1./294 + 5.*d2/3234)*d2))))));
730 static double f6_0_1(
double r1,
double r2) noexcept
732 const double d2 = r2 - 1;
733 const double d22 = sqr(d2);
736 + 3./7 + d2*(4./7 + (-2./35 + 3.*d2/70)*d22)
737 + r1*(3./7 + d2*(1./7 + d2*(-1./7 + (3./35 - 3.*d2/70)*d2))
738 + r1*(3./7 + d2*(-2./7 + d2*(1./7 + (-2./35 + d2/70)*d2))
739 + r1*(-3./7 + d2*(1./7 + (-2./35 + d2/14)*d22)
740 + r1*(-3./7 + d2*(4./7 + d2*(-4./7 + (18./35 - 31.*d2/70)*d2))))));
744 static double f6_1_r2(
double r1,
double r2) noexcept
746 if (is_zero(r2, 1e-4)) {
750 const double r22 = sqr(r2);
752 const double y = 1 + r2;
753 const double y2 = sqr(y);
754 const double z = r2 - 1;
755 const double z2 = sqr(z);
756 const double z3 = z2*z;
757 const double z4 = z3*z;
758 const double z5 = z4*z;
759 const double z6 = z5*z;
760 const double z7 = z6*z;
761 const double d = r1 - 1;
762 const double d2 = sqr(d);
763 const double d3 = d2*d;
764 const double d4 = d3*d;
767 (-3 + r22*(6 + r2*(6 + r2*(-3 + r2*(-6 + 6*lr22)))))/(7.*z3*y2)
768 + d*(4 + r2*(-7 + r2*(-8 + r2*(20 + r2*(4 + r2*(-13 + 6*lr22))))))/(7.*z4*y2)
769 + d2*r2*(1 + r2*(-4 + r2*(4 + r2*(8 + r2*(-5 - 4*r2 + 6*lr22)))))/(7.*z5*y2)
770 + d3*(-2 + r2*(11 + r2*(-22 + r2*(10 + r2*(50 + r2*(-23 + r2*(-26 + 2*r2) + 30*lr22))))))/(35.*z6*y2)
771 + d4*(-3 + r2*(18 + r2*(-40 + r2*(24 + r2*(90 + r2*(-42 + r2*(-48 + r22) + 60*lr22))))))/(70.*z7*y2);
775 static double f6_0_r2(
double r1,
double r2) noexcept
777 const double r22 = sqr(r2);
781 6./7.*(r22*(1 + (-1 + lr22)*r22)
782 + r1*(r2*(1 + (-1 + lr22)*r22)
783 + r1*(1 + (-1 + lr22)*r22
784 + r1*(r1*(1 + lr22 - r22) + r2*(1 + lr22 - r22)))))/sqr(-1 + r22);
788 static double f6_r1_r2(
double r1,
double r2) noexcept
790 const double d = r1 - r2;
791 const double d2 = sqr(d);
792 const double d3 = d2*d;
793 const double d4 = d3*d;
794 const double r22 = sqr(r2);
795 const double y = r22 - 1;
796 const double y2 = sqr(y);
797 const double y3 = y2*y;
798 const double y4 = y3*y;
799 const double y5 = y4*y;
800 const double y6 = y5*y;
801 const double y7 = y6*y;
806 r22*(-3 + r22*(2 - 5*lr22 + (1 + lr22)*r22))/y3
807 + d*r2*(3 + r22*(7 + 10*lr22 + r22*(-11 + 2*lr22 + r22)))/y4
808 + d2*(-3 + r22*(-62 - 30*lr22 + r22*(36 - 60*lr22 + r22*(30 - 6*lr22 - r22))))/(3.*y5)
809 + d3*r2*(107 + 30*lr22 + r22*(206 + 240*lr22 + r22*(-252 + 198*lr22 + r22*(-62 + 12*lr22 + r22))))/(6.*y6)
810 + d4*(-167 - 30*lr22 + r22*(-2215 - 1050*lr22 + r22*(-510 - 3150*lr22 + r22*(2570 - 1470*lr22 + r22*(325 - 60*lr22 - 3*r22)))))/(30.*y7)
814 double f6(
double r1,
double r2) noexcept
816 const double eps_zero = 1e-4;
818 if (is_zero(r1, eps_zero) && is_zero(r2, eps_zero)) {
822 if (is_equal(r1, 1., 0.02) && is_equal(r2, 1., 0.02)) {
826 if (is_equal(r1, -1., 0.02) && is_equal(r2, -1., 0.02)) {
830 if (is_equal(r1, 1., 0.001)) {
834 if (is_equal(r2, 1., 0.001)) {
838 if (is_zero(r1, eps_zero)) {
842 if (is_zero(r2, eps_zero)) {
846 if (is_equal(r1, r2, 1e-4)) {
850 const double r12 = sqr(r1);
851 const double r22 = sqr(r2);
854 = (r12 + r22 + r1*r2 - r12*r22)/((r12 - 1)*(r22 - 1))
855 + (pow5(r1)*
std::log(r12))/(sqr(r12 - 1)*(r1 - r2))
856 - (pow5(r2)*
std::log(r22))/((r1 - r2)*sqr(r22 - 1));
858 return 6./7. * result;
862 static double f7_0_0(
double r1,
double r2) noexcept
864 if (is_zero(r1, 1e-6) && is_zero(r2, 1e-6)) {
868 if (std::abs(r1) > std::abs(r2)) {
872 const double r22 = sqr(r2);
877 + r1*((1 + lr22)*r2 + r1*(1 + lr22 + (1 + 2*lr22)*r22));
883 static double f7_1_1(
double r1,
double r2) noexcept
885 const double d1 = r1 - 1;
886 const double d2 = r2 - 1;
889 1 + d2*(-1 + d2*(3./5 + (-3./10 + 9.*d2/70)*d2))
890 + d1*(-1 + d2*(3./5 + d2*(-3./10 + (9./70 - 3.*d2/70)*d2))
891 + d1*(3./5 + d2*(-3./10 + d2*(9./70 + (-3./70 + d2/210)*d2))
892 + d1*(-3./10 + d2*(9./70 + d2*(-3./70 + (1./210 + d2/105)*d2))
893 + d1*(9./70 + d2*(-3./70 + d2*(1./210 + (1./105 - d2/77)*d2))))));
897 static double f7_0_1(
double r1,
double r2) noexcept
899 const double d = r2 - 1;
900 const double r12 = sqr(r1);
902 return 3 + r1*(-4 - 3*r1 + r2)
905 + d*(-0.4 + r1*(-0.4 + (18*r1)/5.)
906 + d*(0.1 + (0.5 - (31*r1)/10.)*r1))));
910 static double f7_1_r2(
double r1,
double r2) noexcept
912 if (is_zero(r2, 0.0001)) {
916 const double d = r1 - 1;
917 const double d2 = sqr(d);
918 const double d3 = d2*d;
919 const double d4 = d3*d;
920 const double y = r2 - 1;
921 const double y2 = sqr(y);
922 const double y3 = y2*y;
923 const double y4 = y3*y;
924 const double y5 = y4*y;
925 const double y6 = y5*y;
926 const double y7 = y6*y;
927 const double z = 1 + r2;
928 const double z2 = sqr(z);
929 const double r22 = sqr(r2);
933 (-3 + r2*(6 + r2*(6 + (-6 + 6*lr22 - 3*r2)*r2)))/(y3*z2)
934 + d*(-2 + r2*(5 + r2*(4 + r2*(-4 + 6*lr22 + (-2 - r2)*r2))))/(y4*z2)
935 + d2*(-1 + r2*(3 + r2*(3 + r2*(6*lr22 + r2*(-3 + (-3 + r2)*r2)))))/(y5*z2)
936 + d3*(-2 + r2*(6 + r2*(18 + r2*(15 + 30*lr22 + r2*(-30 + r2*(-18 + (14 - 3*r2)*r2))))))/(5.*y6*z2)
937 + d4*(-1 + r22*(48 + r2*(42 + 60*lr22 + r2*(-90 + r2*(-24 + r2*(40 + r2*(-18 + 3*r2)))))))/(10.*y7*z2);
941 static double f7_0_r2(
double r1,
double r2) noexcept
943 const double r12 = sqr(r1);
944 const double r22 = sqr(r2);
946 const double r12lr12 = xlogx(r12);
950 + r22*(1 + (-1 + lr22)*r22)
951 + r1*(r2*(-r12lr12 + r22*(1 + lr22 + 2*r12lr12 + (-1 - r12lr12)*r22))
952 + r1*(-r12lr12 + r22*(1 + lr22 + 2*r12lr12 + (-1 - r12lr12)*r22)
953 + r1*(r1*(lr22 + r22*(1 - r22)) + r2*(lr22 + r22*(1 - r22)))))
954 )/(r22*sqr(-1 + r22));
958 static double f7_r1_r2(
double r1,
double r2) noexcept
960 const double d = r1 - r2;
961 const double d2 = sqr(d);
962 const double d3 = d2*d;
963 const double d4 = d3*d;
964 const double r22 = sqr(r2);
965 const double y = r22 - 1;
966 const double y2 = sqr(y);
967 const double y3 = y2*y;
968 const double y4 = y3*y;
969 const double y5 = y4*y;
970 const double y6 = y5*y;
971 const double y7 = y6*y;
975 (-1 + r22*(-2 - 3*lr22 + (3 - lr22)*r22))/y3
976 + d*r2*(8 + 3*lr22 + r22*(-4 + 8*lr22 + (-4 + lr22)*r22))/y4
977 + d2*(-14 - 3*lr22 + r22*(-54 - 45*lr22 + r22*(54 - 45*lr22 + (14 - 3*lr22)*r22)))/(3.*y5)
978 + d3*(3 + r22*(166 + 60*lr22 + r22*(108 + 270*lr22 + r22*(-246 + 144*lr22 + (-31 + 6*lr22)*r22))))/(6.*r2*y6)
979 + d4*(3 + r22*(-325 - 60*lr22 + r22*(-2570 - 1470*lr22 + r22*(510 - 3150*lr22 + r22*(2215 - 1050*lr22 + (167 - 30*lr22)*r22)))))/(30.*r22*y7);
984 double f7(
double r1,
double r2) noexcept
986 const double eps_zero = 1e-4;
987 const double eps_one = 2e-2;
989 if (is_zero(r1, eps_zero) && is_zero(r2, eps_zero)) {
993 if (is_equal(r1, 1., eps_one) && is_equal(r2, 1., eps_one)) {
997 if (is_equal(r1, -1., eps_one) && is_equal(r2, -1., eps_one)) {
1001 if (is_equal(r1, 1., eps_one)) {
1005 if (is_equal(r2, 1., eps_one)) {
1009 if (is_zero(r1, eps_zero)) {
1013 if (is_zero(r2, eps_zero)) {
1017 if (is_equal(r1, r2, 0.0001)) {
1021 const double r12 = sqr(r1);
1022 const double r22 = sqr(r2);
1025 = (1 + r1*r2)/((r12 - 1)*(r22 - 1))
1026 + (cube(r1)*
std::log(r12))/(sqr(r12 - 1)*(r1 - r2))
1027 - (cube(r2)*
std::log(r22))/((r1 - r2)*sqr(r22 - 1));
1033 static double f8_0_0(
double r1,
double r2) noexcept
1035 if (is_zero(r1, 1e-10) && is_zero(r2, 1e-10)) {
1039 if (std::abs(r1) > std::abs(r2)) {
1043 const double r22 = sqr(r2);
1044 const double lr22 = logx(r22);
1045 const double r2lr22 = r2*lr22;
1046 const double r22lr22 = r2*r2lr22;
1048 if (is_zero(r1, 1e-8) && is_zero(r2, 1e-8)) {
1051 + r1*(1.5 + (3*r22)/2. + (3*r22lr22)/2.
1052 + r1*((3*r2)/2. + (3*r2lr22)/2.));
1056 r2*(1.5 + (3*r22)/2. + (3*r22lr22)/2.)
1057 + r1*(1.5 + (3*r22)/2. + (3*r22lr22)/2.
1058 + r1*(r2*(1.5 + (3*r22)/2. + 3*r22lr22)
1059 + r1*(1.5 + (3*lr22)/2. + (3*r22)/2. + 3*r22lr22) + (3*r2lr22)/2.));
1063 static double f8_1_1(
double r1,
double r2) noexcept
1065 const double d1 = r1 - 1;
1066 const double d2 = r2 - 1;
1067 const double d22 = sqr(d2);
1070 1 + d22*(-1./10 + (3./40 - 3.*d2/70)*d2)
1071 + d1*(d2*(-1./10 + d2*(3./40 + (-3./70 + 3.*d2/140)*d2))
1072 + d1*(-1./10 + d2*(3./40 + d2*(-3./70 + (3./140 - d2/105)*d2))
1073 + d1*(3./40 + d2*(-3./70 + d2*(3./140 + (-1./105 + d2/280)*d2))
1074 + d1*(-3./70 + d2*(3./140 + d2*(-1./105 + (1./280 - d2/1155)*d2))))));
1078 static double f8_0_1(
double r1,
double r2) noexcept
1080 const double r12 = sqr(r1);
1081 const double d2 = r2 - 1;
1083 return 0.75 + r1*(0.75 + r1*(-0.75 + r1*(-1.75 + r2)))
1084 + d2*(0.25 + (-0.5 + r1/4.)*r1
1085 + d2*(-0.25 + r1*(0.25 - r12)
1086 + d2*(0.15 + r1*(-0.1 + (-0.1 + (9*r1)/10.)*r1))));
1090 static double f8_1_r2(
double r1,
double r2) noexcept
1092 if (is_zero(r2, 1e-4)) {
1096 const double d1 = r1 - 1;
1097 const double d12 = sqr(d1);
1098 const double d13 = d12*d1;
1099 const double d14 = d13*d1;
1100 const double y = 1 + r2;
1101 const double y2 = sqr(y);
1102 const double d2 = r2 - 1;
1103 const double d22 = sqr(d2);
1104 const double d23 = d22*d2;
1105 const double d24 = d23*d2;
1106 const double d25 = d24*d2;
1107 const double d26 = d25*d2;
1108 const double d27 = d26*d2;
1109 const double r22 = sqr(r2);
1113 (-3 + r22*(12 + (-9 + 6*lr22)*r22))/(4.*d23*y2)
1114 + d1*(1 + r2*(-4 + r2*(4 + r2*(8 + (-5 + 6*lr22 - 4*r2)*r2))))/(4.*d24*y2)
1115 + d12*(1 + r2*(-4 + r2*(4 + r2*(8 + (-5 + 6*lr22 - 4*r2)*r2))))/(4.*d25*y2)
1116 + d13*(3 + r2*(-14 + r2*(18 + r2*(30 + r2*(-15 + 30*lr22 + r2*(-18 + r2*(-6 + 2*r2)))))))/(20.*d26*y2)
1117 + d14*(3 + r2*(-16 + r2*(24 + r2*(48 + r2*(60*lr22 + r2*(-48 + r2*(-24 + (16 - 3*r2)*r2)))))))/(40.*d27*y2);
1121 static double f8_0_r2(
double r1,
double r2) noexcept
1123 const double r12 = sqr(r1);
1124 const double r22 = sqr(r2);
1126 const double r12lr12 = xlogx(r12);
1129 (r22*(3 + (-3 + 3*lr22)*r22)
1130 + r1*(r2*(3 + (-3 + 3*lr22)*r22)
1131 + r1*(-3*r12lr12 + r22*(3 + 3*lr22 + 6*r12lr12 + (-3 - 3*r12lr12)*r22)
1132 + r1*(r2*(3 + 3*lr22 - 3*r22) + r1*(3*lr22 + r22*(3 - 3*r22))))))/(2*r2*sqr(-1 + r22));
1138 const double d = r1 - r2;
1139 const double d2 = sqr(d);
1140 const double d3 = d2*d;
1141 const double d4 = d3*d;
1142 const double r22 = sqr(r2);
1143 const double y = r22 - 1;
1144 const double y2 = sqr(y);
1145 const double y3 = y2*y;
1146 const double y4 = y3*y;
1147 const double y5 = y4*y;
1148 const double y6 = y5*y;
1149 const double y7 = y6*y;
1153 (r2*(-3 + r22*(-6*lr22 + 3*r22)))/y3
1154 + d*(3 + r22*(27 + 18*lr22 + r22*(-27 + 18*lr22 - 3*r22)))/(2.*y4)
1155 + d2*r2*(-19 - 6*lr22 + r22*(-9 - 30*lr22 + r22*(27 - 12*lr22 + r22)))/y5
1156 + d3*(31 + 6*lr22 + r22*(246 + 144*lr22 + r22*(-108 + 270*lr22 + r22*(-166 + 60*lr22 - 3*r22))))/(4.*y6)
1157 + d4*(-3 + r22*(-285 - 90*lr22 + r22*(-570 - 630*lr22 + r22*(570 - 630*lr22 + r22*(285 - 90*lr22 + 3*r22)))))/(5.*r2*y7);
1160 double f8(
double r1,
double r2) noexcept
1162 const double eps_zero = 5e-5;
1163 const double eps_one = 1e-2;
1165 if (is_zero(r1, eps_zero) && is_zero(r2, eps_zero)) {
1169 if (is_equal(r1, 1., eps_one) && is_equal(r2, 1., eps_one)) {
1173 if (is_equal(r1, -1., eps_one) && is_equal(r2, -1., eps_one)) {
1177 if (is_equal(r1, 1., eps_one)) {
1181 if (is_equal(r2, 1., eps_one)) {
1185 if (is_zero(r1, eps_zero)) {
1189 if (is_zero(r2, eps_zero)) {
1193 if (is_equal(r1, r2, 0.0001)) {
1197 const double r12 = sqr(r1);
1198 const double r22 = sqr(r2);
1201 = (r1 + r2)/((r12 - 1)*(r22 - 1))
1202 + (quad(r1)*
std::log(r12))/(sqr(r12 - 1)*(r1 - r2))
1203 - (quad(r2)*
std::log(r22))/((r1 - r2)*sqr(r22 - 1));
1205 return 1.5 * result;
1210 const double eps = 10.*std::numeric_limits<double>::epsilon();
1212 if (is_zero(y, eps)) {
1216 if (is_equal(std::abs(y), 1.0, eps)) {
1220 if (!is_zero(y, eps) && !is_equal(std::abs(y), 1.0, eps)) {
1221 const double y2 = sqr(y);
1223 return y2*
std::log(y2) / (1. - y2);
1231 const double eps = 10.*std::numeric_limits<double>::epsilon();
1233 if (is_zero(y, eps)) {
1237 if (is_equal(std::abs(y), 1.0, eps)) {
1241 if (!is_zero(y, eps) && !is_equal(std::abs(y), 1.0, eps)) {
1242 const double y2 = sqr(y);
1244 return (1. + y2*
std::log(y2) / (1. - y2)) / (1 - y2);
1252 const double eps = 10.*std::numeric_limits<double>::epsilon();
1253 const double z2 = 1.644934066848226;
1255 if (is_zero(y, eps)) {
1259 if (is_equal(std::abs(y), 1.0, eps)) {
1263 if (!is_zero(y, eps) && !is_equal(std::abs(y), 1.0, eps)) {
1264 const double y2 = sqr(y);
1265 const double y4 = sqr(y2);
1268 return (-1. + 2*y2 + 2*y4)
1279 double I2aaa(
double a,
double b,
double c) noexcept {
1280 const double ba = b -
a;
1281 const double ca = c -
a;
1282 const double a2 = sqr(a);
1283 const double a3 = a2*
a;
1285 return 0.5/a + (-ba - ca)/(6.0*a2) + (sqr(ba) + ba*ca + sqr(ca))/(12.0*a3);
1289 double I2aac(
double a,
double b,
double c) noexcept {
1290 const double ba = b -
a;
1291 const double ac = a - c;
1292 const double a2 = sqr(a);
1293 const double a3 = a2*
a;
1294 const double c2 = sqr(c);
1295 const double c3 = c2*c;
1296 const double ac2 = sqr(ac);
1297 const double ac3 = ac2*ac;
1298 const double ac4 = ac2*ac2;
1301 return (ac - c*lac)/ac2
1302 + ba*(-a2 + c2 + 2*a*c*lac)/(2.0*a*ac3)
1303 + sqr(ba)*((2*a3 + 3*a2*c - 6*a*c2 + c3 - 6*a2*c*lac)/(6.*a2*ac4));
1307 double I2aa0(
double a,
double b) noexcept {
1308 const double a2 = sqr(a);
1309 const double a3 = a2*
a;
1310 const double ba = b -
a;
1311 const double ba2 = sqr(ba);
1313 return 1.0/a - ba/(2.0*a2) + ba2/(3.0*a3);
1317 double I20bc(
double b,
double c) noexcept {
1323 double Iabc(
double a,
double b,
double c) noexcept {
1324 const double eps = 10.0*std::numeric_limits<double>::epsilon();
1326 if ((is_zero(
a, eps) && is_zero(b, eps) && is_zero(c, eps)) ||
1327 (is_zero(
a, eps) && is_zero(b, eps)) ||
1328 (is_zero(
a, eps) && is_zero(c, eps)) ||
1329 (is_zero(b, eps) && is_zero(c, eps))) {
1333 const double a2 = sqr(
a);
1334 const double b2 = sqr(b);
1335 const double c2 = sqr(c);
1336 const double eps_eq = 0.001;
1338 if (is_close(a2, b2, eps_eq) && is_close(a2, c2, eps_eq)) {
1339 return I2aaa(a2, b2, c2);
1342 if (is_close(a2, b2, eps_eq)) {
1343 if (is_zero(c, eps)) {
1344 return I2aa0(a2, b2);
1346 return I2aac(a2, b2, c2);
1349 if (is_close(b2, c2, eps_eq)) {
1350 if (is_zero(
a, eps)) {
1351 return I2aa0(b2, c2);
1353 return I2aac(b2, c2, a2);
1356 if (is_close(a2, c2, eps_eq)) {
1357 if (is_zero(b, eps)) {
1358 return I2aa0(a2, c2);
1360 return I2aac(a2, c2, b2);
1363 if (is_zero(
a, eps)) {
1364 return I20bc(b2, c2);
1367 if (is_zero(b, eps)) {
1368 return I20bc(c2, a2);
1371 if (is_zero(c, eps)) {
1372 return I20bc(a2, b2);
1375 return (+ a2 * b2 *
std::log(a2/b2)
1378 / ((a2 - b2) * (b2 - c2) * (a2 - c2));
1384 return sqr(x)+sqr(y)+sqr(z)-2*(x*y+x*z+y*z);
1389 double lambda_2(
double u,
double v) noexcept
1391 return sqr(1 - u - v) - 4*u*v;
1395 double phi_pos(
double u,
double v) noexcept
1397 const double eps = 1.0e-7;
1399 if (is_equal(u, 1.0, eps) && is_equal(v, 1.0, eps)) {
1400 return 2.343907238689459;
1403 const double Pi = 3.141592653589793;
1404 const auto lambda = std::sqrt(lambda_2(u,v));
1406 if (is_equal(u, v, eps)) {
1409 - 4*
dilog((1 - lambda)/2.)
1410 + sqr(Pi)/3.)/lambda;
1415 - 2*
dilog((1 - lambda + u - v)/2.)
1416 - 2*
dilog((1 - lambda - u + v)/2.)
1417 + sqr(Pi)/3.)/lambda;
1421 double phi_neg_1v(
double v,
double lambda) noexcept
1423 return 2*(+
clausen_2(2*std::acos((2 - v)/2))
1424 + 2*
clausen_2(2*std::acos(0.5*std::sqrt(v))))/lambda;
1428 double phi_neg(
double u,
double v) noexcept
1430 const double eps = 1.0e-7;
1432 if (is_equal(u, 1.0, eps) && is_equal(v, 1.0, eps)) {
1433 return 2.343907238689459;
1436 const auto lambda = std::sqrt(-lambda_2(u,v));
1438 if (is_equal(u, 1.0, eps)) {
1439 return phi_neg_1v(v, lambda);
1442 if (is_equal(v, 1.0, eps)) {
1443 return phi_neg_1v(u, lambda);
1446 if (is_equal(u, v, eps)) {
1447 return 2*(2*
clausen_2(2*std::acos(1/(2.*std::sqrt(u))))
1448 +
clausen_2(2*std::acos((-1 + 2*u)/(2.*std::abs(u)))))/lambda;
1451 return 2*(+
clausen_2(2*std::acos((1 + u - v)/(2.*std::sqrt(u))))
1452 +
clausen_2(2*std::acos((1 - u + v)/(2.*std::sqrt(v))))
1453 +
clausen_2(2*std::acos((-1 + u + v)/(2.*std::sqrt(u*v)))))/lambda;
1462 double phi_uv(
double u,
double v) noexcept
1464 const auto lambda = lambda_2(u,v);
1466 if (is_zero(lambda, std::numeric_limits<double>::epsilon())) {
1473 if (u <= 1 && v <= 1) {
1474 return phi_pos(u,v);
1476 if (u >= 1 && v/u <= 1) {
1477 return phi_pos(1./u,v/u)/u;
1480 return phi_pos(1./v,u/v)/v;
1483 return phi_neg(u,v);
1499 double phi_xyz(
double x,
double y,
double z) noexcept
1501 const auto u = x/z, v = y/z;
static double f6_r1_r2(double r1, double r2) noexcept
double fth3(double y) noexcept
static double F8_0_x2(double x1, double x2) noexcept
F8(x1,x2) in the limit x1 -> 0, x2 != 0.
HimalayaCalculateDMh3L [a___,(settings|parameters) -> s_List, r___] Sequence r
static double F9_1_1(double x1, double x2) noexcept
F9(x1,x2) in the limit x1 -> 1 and x2 -> 1.
static double f5_0_0(double r1, double r2) noexcept
f5(r1,r2) in the limit r1 -> 0, r2 -> 0
static double f5_r1_r2(double r1, double r2) noexcept
f5(r1,r2) in the limit r1 -> r2
double delta_xyz(double x, double y, double z) noexcept
Delta function from hep-ph/0907.47682v1.
double f3(double r) noexcept
static double f7_0_0(double r1, double r2) noexcept
f7(r1,r2) in the limit r1 -> 0, r2 -> 0
Declaration of the dilogarithm function.
double g(double r) noexcept
static double f7_0_1(double r1, double r2) noexcept
f7(r1,r2) in the limit r1 -> 0 and r2 -> 1
static double f7_1_1(double r1, double r2) noexcept
f7(r1,r2) in the limit r1 -> 1 and r2 -> 1
double F6(double x) noexcept
double clausen_2(double x) noexcept
Clausen function .
static double f8_0_0(double r1, double r2) noexcept
f8(r1,r2) in the limit r1 -> 0 and r2 -> 0
static double f6_0_0(double r1, double r2) noexcept
f6(r1,r2) in the limit r1 -> 0 and r2 -> 0
static double F9_1_x2(double x1, double x2) noexcept
F9(x1,x2) in the limit x1 -> 1.
static double f6_1_1(double r1, double r2) noexcept
f6(r1,r2) in the limit r1 -> 1 and r2 -> 1
double fth1(double y) noexcept
static double f5_1_r2(double r1, double r2) noexcept
f5(r1,r2) in the limit r1 -> 1, r2 != 1
double dilog(double x) noexcept
Real dilogarithm .
static double f5_1_1(double r1, double r2) noexcept
f5(r1,r2) in the limit r1 -> 1 and r2 -> 1
double F4(double x) noexcept
double F7(double x) noexcept
static double F9_x1_x2(double x1, double x2) noexcept
F9(x1,x2) in the limit x1 -> x2, x2 != 0.
double fth2(double y) noexcept
static double f8_1_r2(double r1, double r2) noexcept
f8(r1,r2) in the limit r1 -> 1
double f8(double r1, double r2) noexcept
double Iabc(double a, double b, double c) noexcept
(arguments are interpreted as unsquared)
static double f8_0_r2(double r1, double r2) noexcept
f8(r1,r2) in the limit r1 -> 0
static double f8_r1_r2(double r1, double r2) noexcept
f8(r1,r2) in the limit r1 -> r2
double F9(double x1, double x2) noexcept
static double f8_1_1(double r1, double r2) noexcept
f8(r1,r2) in the limit r1 -> 1 and r2 -> 1
static double f7_1_r2(double r1, double r2) noexcept
f7(r1,r2) in the limit r1 -> 1
static double F8_x1_x2(double x1, double x2) noexcept
static double f5_0_r2(double r1, double r2) noexcept
f5(r1,r2) in the limit r1 -> 0
double f4(double r) noexcept
static double f6_0_1(double r1, double r2) noexcept
f6(r1,r2) in the limit r1 -> 0 and r2 -> 1
static double f8_0_1(double r1, double r2) noexcept
f8(r1,r2) in the limit r1 -> 0 and r2 -> 1
double phi_xyz(double x, double y, double z) noexcept
(arguments are interpreted as squared masses)
double F1(double x) noexcept
double f(double r) noexcept
Declaration of the loop functions from [arXiv:1407.4081].
static double F9_0_x2(double, double x2) noexcept
F9(x1,x2) in the limit x1 -> 0, x2 != 1, x2 != 0.
double f5(double r1, double r2) noexcept
Complex< T > log(const Complex< T > &z_) noexcept
static double f6_0_r2(double r1, double r2) noexcept
f6(r1,r2) in the limit r1 -> 0
static double f7_0_r2(double r1, double r2) noexcept
f7(r1,r2) in the limit r1 -> 0
static double f6_1_r2(double r1, double r2) noexcept
f6(r1,r2) in the limit r1 -> 1
double f2(double r) noexcept
double f7(double r1, double r2) noexcept
double f6(double r1, double r2) noexcept
double f1(double r) noexcept
double F3(double x) noexcept
double F5(double x) noexcept
static double f7_r1_r2(double r1, double r2) noexcept
f7(r1,r2) in the limit r1 -> r2
double F8(double x1, double x2) noexcept
static double F8_1_1(double x1, double x2) noexcept
F8(x1,x2) in the limit x1 -> 1 and x2 -> 1.
static double F8_1_x2(double x1, double x2) noexcept
F8(x1,x2) in the limit x1 -> 1, x2 != 1.
double F2(double x) noexcept