From c7c1d4493097428b58eccffb52109bf64e7cb991 Mon Sep 17 00:00:00 2001 From: Valerio Bertone Date: Thu, 1 Aug 2024 15:09:50 +0200 Subject: [PATCH] Still working on O(as^3) massive coefficient functions (work in progress) --- .../massivezerocoefficientfunctionsunp_sl.h | 6 +- .../massivecoefficientfunctionsunp_sl.cc | 4 +- .../massivezerocoefficientfunctionsunp_sl.cc | 689 +++++++++++++----- .../structurefunctionbuilder.cc | 30 +- 4 files changed, 534 insertions(+), 195 deletions(-) diff --git a/inc/apfel/massivezerocoefficientfunctionsunp_sl.h b/inc/apfel/massivezerocoefficientfunctionsunp_sl.h index e7d0a583a..81cf47f0c 100644 --- a/inc/apfel/massivezerocoefficientfunctionsunp_sl.h +++ b/inc/apfel/massivezerocoefficientfunctionsunp_sl.h @@ -504,9 +504,10 @@ namespace apfel class Cm0L3psNC_l: public Expression { public: - Cm0L3psNC_l(bool const& muterms = true); + Cm0L3psNC_l(int const& nf, bool const& muterms = true); double Regular(double const& x) const; private: + int const _nf; bool const _muterms; }; @@ -518,9 +519,10 @@ namespace apfel class Cm0L3psNC_l2: public Expression { public: - Cm0L3psNC_l2(bool const& muterms = true); + Cm0L3psNC_l2(int const& nf, bool const& muterms = true); double Regular(double const& x) const; private: + int const _nf; bool const _muterms; }; ///@} diff --git a/src/structurefunctions/massivecoefficientfunctionsunp_sl.cc b/src/structurefunctions/massivecoefficientfunctionsunp_sl.cc index 07f39e4b9..112c426e8 100644 --- a/src/structurefunctions/massivecoefficientfunctionsunp_sl.cc +++ b/src/structurefunctions/massivecoefficientfunctionsunp_sl.cc @@ -867,8 +867,8 @@ namespace apfel Expression(), _eta(eta), _cm0L3ps_c(Cm0L3psNC_c{nf}), - _cm0L3ps_l(Cm0L3psNC_l{false}), - _cm0L3ps_l2(Cm0L3psNC_l2{false}), + _cm0L3ps_l(Cm0L3psNC_l{nf, false}), + _cm0L3ps_l2(Cm0L3psNC_l2{nf, false}), _cmsxL3ps(CmsxL3psNC{nf, eta, false}), _cm0sxL3ps(Cm0sxL3psNC{nf, eta, false}) { diff --git a/src/structurefunctions/massivezerocoefficientfunctionsunp_sl.cc b/src/structurefunctions/massivezerocoefficientfunctionsunp_sl.cc index badf41892..37bf71428 100644 --- a/src/structurefunctions/massivezerocoefficientfunctionsunp_sl.cc +++ b/src/structurefunctions/massivezerocoefficientfunctionsunp_sl.cc @@ -4209,6 +4209,7 @@ namespace apfel const double z2 = z * z; const double z3 = z * z2; const double z4 = z * z3; + const double z5 = z * z4; // Allocate pointers for the harmonic polylogs double wx = z; @@ -4227,22 +4228,24 @@ namespace apfel // weight 1 const double Hm1 = Hr1[0]; - const double H0 = Hr1[1]; - const double H1 = Hr1[2]; + const double H0 = Hr1[1]; + const double H1 = Hr1[2]; // weight 2 const double H0m1 = Hr2[1]; - const double H01 = Hr2[7]; + const double H01 = Hr2[7]; // weight 3 const double H0m1m1 = Hr3[1]; - const double H00m1 = Hr3[4]; - const double H001 = Hr3[22]; - const double H011 = Hr3[25]; + const double H00m1 = Hr3[4]; + const double H01m1 = Hr3[7]; + const double H0m11 = Hr3[19]; + const double H001 = Hr3[22]; + const double H011 = Hr3[25]; // weight 4 const double H000m1 = Hr4[13]; - const double H0001 = Hr4[67]; + const double H0001 = Hr4[67]; delete[] Hr1; delete[] Hr2; @@ -4250,132 +4253,327 @@ namespace apfel delete[] Hr4; delete[] Hr5; - return -(CA * TR * TR - * (64. * (z - 1.) * (68. * z2 + z - 7.) / (9. * z) - - 128. / 9 * (4. * z - 1.) * (13. * z + 6.) * H0 - - 128. * (z - 1.) * (19. * z2 + 2. * z - 1.) * H1 - / (9. * z) - + (z - 1.) * z - * (-128. / 3 * H1 * H1 - 256. / 3 * H0 * H1) - + z * (z + 1.) - * (256. / 3 * Hm1 * H0 - 256. / 3 * H0m1) - + z * (256. / 3 * H0 * H0 + 512. / 3 * H01) - + 256. / 3 * (z - 2.) * z * zeta2) - + CF * CF * TR - * (32. / 15 * (24. * z3 + 90. * z2 - 95. * z - 15.) - * H0 * H0 - + 32. * (78. * z3 + 141. * z2 - 34. * z + 8.) * H0 - / (15. * z) - + 128. * (2. * z2 - 3. * z - 1.) * H01 * H0 - - 8. * (z - 1.) * (6. * z + 1.) * (153. * z - 32.) - / (15. * z) - + 16. * (z - 1.) * (4. * z - 3.) * H1 - + ((z + 1.) - * (12. * z4 + 3. * z3 - 73. * z2 - 2. * z + 2.) - * (128. / 15 * H0m1 - 128. / 15 * Hm1 * H0)) - / z2 - + 32. * (6. * z + 1.) * H01 - - 64. * (4. * z2 - 5. * z - 2.) * H001 - - 32. / 15 - * (48. * z3 + 120. * z2 - 250. * z - 45.) - * zeta2 - + (z + 1.) * (2. * z - 1.) - * (128. * H0 * Hm1 * Hm1 - + (-64. * H0 * H0 - 256. * H0m1) * Hm1 - + 128. * zeta2 * Hm1 - 128. * H0 * H0m1 - + 256. * H0m1m1 + 384. * H00m1) - + (z - 1.) * (2. * z + 1.) - * (-64. * H1 * H0 * H0 + 128. * H1 * H0 - + 64. * H1 * H1 + 128. * H1 * zeta2) - + z - * (32. / 3 * H0 * H0 * H0 - + (128. * H01 - 128. * H0m1) * H0 * H0 - + (512. * H0m1m1 + 512. * H00m1 - - 512. * H001) - * H0 - - 256. * H0m1 * H0m1 - + 768. * zeta2 * zeta2 / 5. - 256. * H011 - - 768. * H000m1 + 768. * H0001 - + (64. * H0 + 256. * H0m1 - 256. * H01) + return (_muterms ? -(CA * TR * TR + * (64. * (z - 1.) * (68. * z2 + z - 7.) / (9. * z) + - 128. / 9 * (4. * z - 1.) * (13. * z + 6.) * H0 + - 128. * (z - 1.) * (19. * z2 + 2. * z - 1.) * H1 + / (9. * z) + + (z - 1.) * z + * (-128. / 3 * H1 * H1 - 256. / 3 * H0 * H1) + + z * (z + 1.) + * (256. / 3 * Hm1 * H0 - 256. / 3 * H0m1) + + z * (256. / 3 * H0 * H0 + 512. / 3 * H01) + + 256. / 3 * (z - 2.) * z * zeta2) + + CF * CF * TR + * (32. / 15 * (24. * z3 + 90. * z2 - 95. * z - 15.) + * H0 * H0 + + 32. * (78. * z3 + 141. * z2 - 34. * z + 8.) * H0 + / (15. * z) + + 128. * (2. * z2 - 3. * z - 1.) * H01 * H0 + - 8. * (z - 1.) * (6. * z + 1.) * (153. * z - 32.) + / (15. * z) + + 16. * (z - 1.) * (4. * z - 3.) * H1 + + ((z + 1.) + * (12. * z4 + 3. * z3 - 73. * z2 - 2. * z + 2.) + * (128. / 15 * H0m1 - 128. / 15 * Hm1 * H0)) + / z2 + + 32. * (6. * z + 1.) * H01 + - 64. * (4. * z2 - 5. * z - 2.) * H001 + - 32. / 15 + * (48. * z3 + 120. * z2 - 250. * z - 45.) + * zeta2 + + (z + 1.) * (2. * z - 1.) + * (128. * H0 * Hm1 * Hm1 + + (-64. * H0 * H0 - 256. * H0m1) * Hm1 + + 128. * zeta2 * Hm1 - 128. * H0 * H0m1 + + 256. * H0m1m1 + 384. * H00m1) + + (z - 1.) * (2. * z + 1.) + * (-64. * H1 * H0 * H0 + 128. * H1 * H0 + + 64. * H1 * H1 + 128. * H1 * zeta2) + + z + * (32. / 3 * H0 * H0 * H0 + + (128. * H01 - 128. * H0m1) * H0 * H0 + + (512. * H0m1m1 + 512. * H00m1 + - 512. * H001) + * H0 + - 256. * H0m1 * H0m1 + + 768. * zeta2 * zeta2 / 5. - 256. * H011 + - 768. * H000m1 + 768. * H0001 + + (64. * H0 + 256. * H0m1 - 256. * H01) + * zeta2 + + (-512. * H0 - 576.) * zeta3)) + + CF * TR * TR + * (-64. / 45 * (12. * z3 + 180. * z2 + 305. * z - 90.) + * H0 * H0 + + 64. * (426. * z3 - 553. * z2 + 362. * z - 4.) + * H0 / (45. * z) + + 32. * (z - 1.) * (3716. * z2 - 4753. * z - 4.) + / (135. * z) + + 128. * (z - 1.) * (37. * z2 - 20. * z - 2.) * H1 + / (9. * z) + + (z + 1.) * (6. * z4 - 6. * z3 + z2 - z + 1.) + * (256. / 45 * Hm1 * H0 - 256. / 45 * H0m1) + / z2 + - 128. / 3 * (4. * z2 + 3. * z - 3.) * H01 + + 128. / 45 * (12. * z3 + 60. * z2 + 35. * z - 45.) + * zeta2 + + z + * (-128. * H0 * H0 * H0 + 256. * zeta2 * H0 + - 256. * H001 + 256. * zeta3)) + + CF * _nf * TR * TR + * (-32. / 9 * (z - 1.) * (68. * z + 25.) + - 64. / 9 * (6. * z2 - 31. * z - 3.) * H0 + - 64. / 3 * (z - 1.) * (2. * z + 1.) * H1 + + z + * (128. / 3 * H0 * H0 + 128. / 3 * H01 + - 128. * zeta2 / 3.)) + + CA * CF * TR + * (-32. / 5 * (4. * z3 + 5. * z2 - 10. * z - 5.) * H0 + * H0 + + 16. * (2226. * z3 - 43. * z2 - 63. * z - 24.) + * H0 / (45. * z) + - 8. * (z - 1.) * (3758. * z2 - 1299. * z - 152.) + / (45. * z) + - 16. / 3 * (z - 1.) * (2. * z - 23.) * H1 + + ((z + 1.) + * (12. * z4 - 27. * z3 - 58. * z2 - 2. * z + 2.) + ) / z2 + * (64. / 15 * Hm1 * H0 - 64. / 15 * H0m1) + - 64. * (6. * z2 - z - 3.) * H00m1 + + 32. / 15 * z * (24. * z2 - 85.) * zeta2 + + (z + 1.) * (2. * z - 1.) + * (-64. * H0 * Hm1 * Hm1 + + (32. * H0 * H0 + 128. * H0m1) * Hm1 + - 64. * zeta2 * Hm1 - 128. * H0m1m1) + + (z - 1.) * (2. * z + 1.) + * (32. * H1 * H0 * H0 + + (64. * H0m1 - 64. * H01) * H0 + - 32. * H1 * H1 + 64. * H001 + - 64. * H1 * zeta2) + + z + * (-128. / 3 * H0 * H0 * H0 + + (64. * H0m1 - 64. * H01) * H0 * H0 + + (-256. * H0m1m1 - 256. * H00m1 + + 256. * H001) + * H0 + + 256. * zeta3 * H0 + 128. * H0m1 * H0m1 + - 384. * zeta2 * zeta2 / 5. + - 544. / 3 * H01 + 128. * H011 + + 384. * H000m1 - 384. * H0001 + + (128. * H01 - 128. * H0m1) * zeta2)) + - 4. / 3 * ( CA * TR + * (-32. * (z - 1.) * (53. * z2 + 2. * z - 1.) / (9. * z) + - 32. * (13. * z2 - 8. * z - 1.) * H0 + - 32. / 3 * (z - 1.) * (29. * z2 + 2. * z - 1.) * H1 / z + + (z - 1.) * z * (-32. * H1 * H1 - 64. * H0 * H1) + + z * (z + 1.) * (64. * Hm1 * H0 - 64. * H0m1) + + z * (96. * H0 * H0 + 128. * H01) + + 64. * (z - 2.) * z * zeta2) + + CF * TR + * (-64. / 15 * z * (3. * z2 + 5.) * H0 * H0 + + 16. * (36. * z3 - 78. * z2 - 13. * z - 4.) * H0 / 15. / z + + 32. * (z - 1.) * (63. * z2 + 6. * z - 2.) / 15. / z + + 16. * (z - 1.) * (4. * z + 1.) * H1 + + (z + 1.) * (6. * z4 - 6. * z3 + z2 - z + 1.) / z2 + * (64. / 15 * Hm1 * H0 - 64. / 15 * H0m1) + - 32. * z * H01 + + 32. / 15 * z * (12. * z2 + 5.) * zeta2)) + - (10. / 3 * CA + 2 * CF) * 16. * TR * z * (1. - z)) : 0) + + (_muterms ? 0 : + CA * TR * TR + * ( (-64. * (z - 1.) * (461. * z2 + 11. * z - 25.) / (27. * z) + - 128. / 9 * z * (26. * z - 59.) * H0 + - 128. * (z - 1.) * (39. * z2 + 2. * z - 1.) * H1 + / (9. * z) + + (z - 1.) * z + * (-128. / 3 * H1 * H1 - 256. / 3 * H0 * H1) + + z * (z + 1.) * (256. / 3 * Hm1 * H0 - 256. / 3 * H0m1) + + z * (512. / 3 * H0 * H0 + 512. / 3 * H01) + + 256. / 3 * (z - 2.) * z * zeta2) ) + + CA * TR * TR * _nf + * ( (-64. * (z - 1.) * (461. * z2 + 11. * z - 25.) / (27. * z) + - 128. / 9 * z * (26. * z - 59.) * H0 + - 128. * (z - 1.) * (39. * z2 + 2. * z - 1.) * H1 + / (9. * z) + + (z - 1.) * z + * (-128. / 3 * H1 * H1 - 256. / 3 * H0 * H1) + + z * (z + 1.) * (256. / 3 * Hm1 * H0 - 256. / 3 * H0m1) + + z * (512. / 3 * H0 * H0 + 512. / 3 * H01) + + 256. / 3 * (z - 2.) * z * zeta2) ) + + CA * CA * TR + * (64. / 3 * (18. * z2 - 91. * z + 6.) * H0 * H0 + + 32. * (2713. * z3 - 1405. * z2 - 60. * z + 4.) * H0 + / (9. * z) + + 64. * (z - 1.) * (137. * z2 + 12. * z - 6.) * H1 * H0 + / (3. * z) + + 128. * z * (3. * z - 5.) * H0m1 * H0 + - 128. * z * (z + 11.) * H01 * H0 + + 32. * (z - 1.) * (161. * z2 + 12. * z - 6.) * H1 * H1 + / (3. * z) + + 32. * (z - 1.) * (680. * z2 - 60. * z - 13.) + / (9. * z) + + 32. * (z - 1.) * (1919. * z2 + 30. * z - 93.) * H1 + / (9. * z) + + (z + 1.) * (79. * z2 - 8. * z - 4.) + * (64. / 3 * H0m1 - 64. / 3 * Hm1 * H0) / z + - 128. * (z3 + 53. * z2 - 6. * z + 1.) * H01 / (3. * z) + - 128. * z * (3. * z - 13.) * H00m1 + - 128. * (z - 3.) * z * H001 + - 256. * z * (z + 5.) * H011 + - 64. / 3 * (135. * z2 - 160. * z - 6.) * zeta2 + + z * (z + 1.) + * (256. * H0 * Hm1 * Hm1 + + (-192. * H0 * H0 - 512. * H0m1 - 256. * H01) + * Hm1 + + 512. * zeta2 * Hm1 + 512. * H0m1m1 + + 256. * H0m11 + 256. * H01m1) + + (z - 1.) * z + * (128. * H1 * H1 * H1 + 384. * H0 * H1 * H1 + + 192. * H0 * H0 * H1 - 512. * zeta2 * H1) + + z + * (-1024. / 3 * H0 * H0 * H0 + 1792. * zeta2 * H0 + - 128. * zeta3)) + + CF * CF * TR + * ( (-32. / 15 * (24. * z3 + 90. * z2 - 95. * z - 15.) + * H0 * H0 + - 32. * (78. * z3 + 141. * z2 - 34. * z + 8.) * H0 + / (15. * z) + - 128. * (2. * z2 - 3. * z - 1.) * H01 * H0 + + 8. * (z - 1.) * (6. * z + 1.) * (153. * z - 32.) + / (15. * z) + - 16. * (z - 1.) * (4. * z - 3.) * H1 + + (z + 1. + ) * (12. * z4 + 3 * z3 - 73. * z2 - 2. * z + 2.) + * (128. / 15 * Hm1 * H0 - 128. / 15 * H0m1) + / z2 + - 32. * (6. * z + 1) * H01 + + 64. * (4. * z2 - 5. * z - 2.) * H001 + + 32. / 15 + * (48. * z3 + 120. * z2 - 250. * z - 45.) * zeta2 - + (-512. * H0 - 576.) * zeta3)) - + CF * TR * TR - * (-64. / 45 * (12. * z3 + 180. * z2 + 305. * z - 90.) - * H0 * H0 - + 64. * (426. * z3 - 553. * z2 + 362. * z - 4.) - * H0 / (45. * z) - + 32. * (z - 1.) * (3716. * z2 - 4753. * z - 4.) - / (135. * z) - + 128. * (z - 1.) * (37. * z2 - 20. * z - 2.) * H1 - / (9. * z) - + (z + 1.) * (6. * z4 - 6. * z3 + z2 - z + 1.) - * (256. / 45 * Hm1 * H0 - 256. / 45 * H0m1) - / z2 - - 128. / 3 * (4. * z2 + 3. * z - 3.) * H01 - + 128. / 45 * (12. * z3 + 60. * z2 + 35. * z - 45.) - * zeta2 - + z - * (-128. * H0 * H0 * H0 + 256. * zeta2 * H0 - - 256. * H001 + 256. * zeta3)) - + CF * _nf * TR * TR - * (-32. / 9 * (z - 1.) * (68. * z + 25.) - - 64. / 9 * (6. * z2 - 31. * z - 3.) * H0 - - 64. / 3 * (z - 1.) * (2. * z + 1.) * H1 - + z - * (128. / 3 * H0 * H0 + 128. / 3 * H01 - - 128. * zeta2 / 3.)) - + CA * CF * TR - * (-32. / 5 * (4. * z3 + 5. * z2 - 10. * z - 5.) * H0 - * H0 - + 16. * (2226. * z3 - 43. * z2 - 63. * z - 24.) - * H0 / (45. * z) - - 8. * (z - 1.) * (3758. * z2 - 1299. * z - 152.) - / (45. * z) - - 16. / 3 * (z - 1.) * (2. * z - 23.) * H1 - + ((z + 1.) - * (12. * z4 - 27. * z3 - 58. * z2 - 2. * z + 2.) - ) / z2 - * (64. / 15 * Hm1 * H0 - 64. / 15 * H0m1) - - 64. * (6. * z2 - z - 3.) * H00m1 - + 32. / 15 * z * (24. * z2 - 85.) * zeta2 - + (z + 1.) * (2. * z - 1.) - * (-64. * H0 * Hm1 * Hm1 - + (32. * H0 * H0 + 128. * H0m1) * Hm1 - - 64. * zeta2 * Hm1 - 128. * H0m1m1) - + (z - 1.) * (2. * z + 1.) - * (32. * H1 * H0 * H0 - + (64. * H0m1 - 64. * H01) * H0 - - 32. * H1 * H1 + 64. * H001 - - 64. * H1 * zeta2) - + z - * (-128. / 3 * H0 * H0 * H0 - + (64. * H0m1 - 64. * H01) * H0 * H0 - + (-256. * H0m1m1 - 256. * H00m1 - + 256. * H001) + + (z + 1.) * (2. * z - 1.) + * (-128. * H0 * Hm1 * Hm1 + + (64. * H0 * H0 + 256. * H0m1) * Hm1 + - 128. * zeta2 * Hm1 + 128. * H0 * H0m1 + - 256. * H0m1m1 - 384. * H00m1) + + (z - 1.) * (2. * z + 1.) + * (64. * H1 * H0 * H0 - 128. * H1 * H0 + - 64. * H1 * H1 - 128. * H1 * zeta2) + + z + * (-32. / 3 * H0 * H0 * H0 + + (128. * H0m1 - 128. * H01) * H0 * H0 + + (-512. * H0m1m1 - 512. * H00m1 + + 512. * H001) + * H0 + + 256. * H0m1 * H0m1 + - (768. * zeta2 * zeta2) / 5. + + 256. * H011 + 768. * H000m1 + - 768. * H0001 + + (-64. * H0 - 256. * H0m1 + 256. * H01) + * zeta2 + + (512. * H0 + 576.) * zeta3))) + + CF * TR * TR + * ( (-128. * (25. * z + 2.) * H1 * (z - 1.) * (z - 1.) + / (9. * z) + - 32. * (2474. * z2 - 4897. * z + 44.) * (z - 1.) + / (135. * z) + - 64. / 45 + * (12. * z3 - 180. * z2 - 265. * z + 90.) + * H0 * H0 + - 64. * (354. * z3 - 397. * z2 + 388. * z + 4.) + * H0 / (45. * z) + + (z + 1.) * (6. * z4 - 6. * z3 + z2 - z + 1.) / z2 + * (256. / 45 * Hm1 * H0 - 256. / 45 * H0m1) + + 128. / 3 * (z + 1.) * (4. * z - 3.) * H01 + + 128. / 45 * (12. * z3 - 60. * z2 - 25. * z + 45.) + * zeta2 + + z + * (128. * H0 * H0 * H0 - 256. * zeta2 * H0 + + 256. * H001 - 256. * zeta3))) + + CF * _nf * TR * TR + * ( (-128. * (25. * z + 2.) * H1 * (z - 1.) * (z - 1.) + / (9. * z) + - 32. * (2474. * z2 - 4897. * z + 44.) * (z - 1.) + / (135. * z) + - 64. / 45 * (12. * z3 - 180. * z2 - 265. * z + 90.) * H0 * H0 - + 256. * zeta3 * H0 + 128. * H0m1 * H0m1 - - 384. * zeta2 * zeta2 / 5. - - 544. / 3 * H01 + 128. * H011 - + 384. * H000m1 - 384. * H0001 - + (128. * H01 - 128. * H0m1) * zeta2)) - - 4. / 3 * ( CA * TR - * (-32. * (z - 1.) * (53. * z2 + 2. * z - 1.) / (9. * z) - - 32. * (13. * z2 - 8. * z - 1.) * H0 - - 32. / 3 * (z - 1.) * (29. * z2 + 2. * z - 1.) * H1 / z - + (z - 1.) * z * (-32. * H1 * H1 - 64. * H0 * H1) - + z * (z + 1.) * (64. * Hm1 * H0 - 64. * H0m1) - + z * (96. * H0 * H0 + 128. * H01) - + 64. * (z - 2.) * z * zeta2) - + CF * TR - * (-64. / 15 * z * (3. * z2 + 5.) * H0 * H0 - + 16. * (36. * z3 - 78. * z2 - 13. * z - 4.) * H0 / 15. / z - + 32. * (z - 1.) * (63. * z2 + 6. * z - 2.) / 15. / z - + 16. * (z - 1.) * (4. * z + 1.) * H1 - + (z + 1.) * (6. * z4 - 6. * z3 + z2 - z + 1.) / z2 - * (64. / 15 * Hm1 * H0 - 64. / 15 * H0m1) - - 32. * z * H01 - + 32. / 15 * z * (12. * z2 + 5.) * zeta2)) - - (10. / 3 * CA + 2 * CF) * 16. * TR * z * (1. - z)); + - 64. * (354. * z3 - 397. * z2 + 388. * z + 4.) * H0 + / (45. * z) + + (z + 1.) * (6. * z4 - 6. * z3 + z2 - z + 1.) / z2 + * (256. / 45 * Hm1 * H0 - 256. / 45 * H0m1) + + 128. / 3 * (z + 1.) * (4. * z - 3.) * H01 + + 128. / 45 * (12. * z3 - 60. * z2 - 25. * z + 45.) + * zeta2 + + z + * (128. * H0 * H0 * H0 - 256. * zeta2 * H0 + + 256. * H001 - 256. * zeta3))) + + CA * CF * TR + * ( (128. / 45 * z * (6. * z2 + 35.) * H0 * H0 * H0 + + 64. + * (84. * z4 - 9. * z3 + 272. * z2 - 48. * z + + 6.) + * H0 * H0 / (45. * z) + - 32. * (z + 1.) + * (24. * z4 + 6. * z3 - 11. * z2 - 4. * z + + 4.) + * Hm1 * H0 * H0 / (15. * z2) + - 32. * (z - 1.) * (2. * z + 1.) * H1 * H0 * H0 + - 16. * (4668. * z3 - 5233. * z2 - 130. * z - 64.) + * H0 / (45. * z) + - 64. * (z - 1.) * (4. * z + 1.) * H1 * H0 + - 64. * (30. * z4 - 35. * z3 - 15. * z2 - 4.) + * H0m1 * H0 / (15. * z2) + + 64. * (z + 1.) * (2. * z - 1.) * H01 * H0 + - 256. / 5 * z * (4. * z2 + 5.) * zeta2 * H0 + - 32. * (z - 1.) * (6. * z + 1.) * H1 * H1 + - 8. * (z - 1.) * (11062. * z2 + 1335. * z - 168.) + / (45. * z) + - 64. / 45 + * (168. * z4 - 108. * z3 + 343. * z2 - 6. * z + + 24.) + * zeta2 / z + + 64. / 5 * (z + 1.) + * (12. * z4 - 2. * z3 - 3. * z2 - 2. * z + 2. + ) + * zeta2 / z2 * Hm1 + - 64. * (z - 1.) * (371. * z2 + 37. * z - 14.) * H1 + / (15. * z) + - 64. / 15 * (z - 1.) + * (12. * z4 - 18. * z3 - 13. * z2 + 2. * z + + 2.) + * zeta2 / z2 * H1 + + (z + 1.) + * (42. * z4 - 69. * z3 - 35. * z2 - 4. * z + + 7.) + * (256. / 45 * H0m1 - 256. / 45 * Hm1 * H0) + / z2 + + 64. * (24. * z3 + 208. * z2 - 17. * z + 4.) * H01 + / (15. * z) + + (z + 1.) + * (12. * z4 + 18. * z3 - 13. * z2 - 2. * z + + 2.) + / z2 + * (64. / 15 * H0 * Hm1 * Hm1 + - 128. / 15 * H0m1 * Hm1 + + 128. / 15 * H0m1m1) + + 64. + * (24. * z5 + 90. * z4 - 75. * z3 - 45. * z2 + - 4.) + * H00m1 / (15. * z2) + + 64. / 15 * (24. * z3 - 30. * z2 + 55. * z + 15.) + * H001 + + (z + 1.) * (6. * z4 - 6. * z3 + z2 - z + 1.) / z2 + * (-256. / 15 * Hm1 * H01 + 256. / 15 * H0m11 + + 256. / 15 * H01m1) + - 256. / 3 * z * (3. * z2 + 2.) * zeta3 + + z + * ((64. * H01 - 64. * H0m1) * H0 * H0 + + (256. * H0m1m1 + 256. * H00m1 + - 256. * H001) + * H0 + - 256. * zeta3 * H0 - 128. * H0m1 * H0m1 + + 384. * zeta2 * zeta2 / 5. + 128. * H011 + - 384. * H000m1 + 384. * H0001 + + (128. * H0m1 - 128. * H01) * zeta2)))); } //_________________________________________________________________________________ @@ -4388,31 +4586,64 @@ namespace apfel double Cm0L3gNC_l2::Regular(double const& z) const { const double z2 = z * z; + const double z3 = z * z2; const double H0 = log(z); const double H1 = - log(1 - z); const double H01 = dilog(z); - return -TR * TR * TR * 256. / 9 * (z - 1) * z - + CA * TR * TR - * (64. * (z - 1.) * (17. * z2 + 2. * z - 1.) / (9. * z) - - 256. / 3 * z * H0 + 128. / 3 * (z - 1.) * z * H1) - + CF * CF * TR - * (32. * (2. * z + 1.) * H1 * (z - 1.) - + 24. * (z - 1.) - + 16. * (2. * z - 1.) * (2. * z + 1.) * H0 - + z * (-16. * H0 * H0 - 64. * H01 + 64. * zeta2)) - + CF * TR * TR - * (-64. * z * H0 * H0 - - 64. / 3 * (4. * z2 + 5. * z - 3.) * H0 - + 64. * (z - 1.) * (40. * z2 - 17. * z - 2.) / (9. * z)) - + CA * CF * TR - * (-16. * (z - 1.) * (43. * z2 - 11. * z - 2.) - / (3. * z) - + 32. * (3. * z - 1.) * H0 - - 32. * (z - 1.) * (2. * z + 1.) * H1 - + z * (64. * H0 * H0 + 64. * H01 - 64. * zeta2)) - - 4. / 3 * ( TR * TR * (-64. / 3 * (z - 1.) * z) - + CF * TR* (16. * (z - 1.) * (2. * z + 1.) - 32. * z * H0)) - + 4. / 9 * 16. * TR * z * (1. - z); + return (_muterms ? -TR * TR * TR * 256. / 9 * (z - 1) * z + + CA * TR * TR + * (64. * (z - 1.) * (17. * z2 + 2. * z - 1.) / (9. * z) + - 256. / 3 * z * H0 + 128. / 3 * (z - 1.) * z * H1) + + CF * CF * TR + * (32. * (2. * z + 1.) * H1 * (z - 1.) + + 24. * (z - 1.) + + 16. * (2. * z - 1.) * (2. * z + 1.) * H0 + + z * (-16. * H0 * H0 - 64. * H01 + 64. * zeta2)) + + CF * TR * TR + * (-64. * z * H0 * H0 + - 64. / 3 * (4. * z2 + 5. * z - 3.) * H0 + + 64. * (z - 1.) * (40. * z2 - 17. * z - 2.) / (9. * z)) + + CA * CF * TR + * (-16. * (z - 1.) * (43. * z2 - 11. * z - 2.) + / (3. * z) + + 32. * (3. * z - 1.) * H0 + - 32. * (z - 1.) * (2. * z + 1.) * H1 + + z * (64. * H0 * H0 + 64. * H01 - 64. * zeta2)) + - 4. / 3 * ( TR * TR * (-64. / 3 * (z - 1.) * z) + + CF * TR* (16. * (z - 1.) * (2. * z + 1.) - 32. * z * H0)) + + 4. / 9 * 16. * TR * z * (1. - z) : 0) + + (_muterms ? 0 : + CA * TR * TR + * ((64. * (z - 1) * (17. * z2 + 2. * z - 1.) / (9. * z) + - 256. / 3 * z * H0 + 128. / 3 * (z - 1.) * z * H1) ) + + CA * TR * TR * _nf + * ((64. * (z - 1.) * (17. * z2 + 2. * z - 1.) / (9. * z) + - 256. / 3 * z * H0 + 128. / 3 * (z - 1.) * z * H1)) + + CA * CA * TR + * ((-16. * (z - 1.) * (1033. * z2 - 26. * z - 65.) / (9. * z) + - 64. * (6. * z3 - 47. * z2 + 3. * z + 1.) * H0 / (3. * z) + - 32. * (z - 1.) * (79. * z2 + 8. * z - 4.) * H1 / (3. * z) + + (z - 1.) * z * (-128. * H1 * H1 - 128. * H0 * H1) + + 128. * z * (z + 3.) * H01 + + z * (256. * H0 * H0 - 512. * zeta2))) + + CF * CF * TR + * ( (32. * (2. * z + 1.) * H1 * (z - 1.) + + 24. * (z - 1.) + + 16. * (2. * z - 1.) * (2. * z + 1.) * H0 + + z * (-16. * H0 * H0 - 64. * H01 + 64. * zeta2))) + + CF * TR * TR + * ( (-64. * z * H0 * H0 + - 64. / 3 * (z + 1.) * (4. * z - 3.) * H0 + + 64. * (z - 1.) * (28. * z2 - 23. * z - 2.) + / (9. * z))) + + CF * _nf * TR * TR + * ((-64. * z * H0 * H0 + - 64. / 3 * (z + 1.) * (4. * z - 3.) * H0 + + 64. * (z - 1.) * (28. * z2 - 23. * z - 2.) / (9. * z)) ) + + CA * CF * TR + * ( (16. * (z - 1.) * (65. * z2 - 2.) / (3. * z) + - 32. / 3 * (20. * z - 3.) * H0 + + 32. * (z - 1.) * (2. * z + 1.) * H1 + + z * (-64. * H0 * H0 - 64. * H01 + 64. * zeta2)))); } //_________________________________________________________________________________ @@ -4484,45 +4715,151 @@ namespace apfel } //_________________________________________________________________________________ - Cm0L3psNC_l::Cm0L3psNC_l(bool const& muterms): + Cm0L3psNC_l::Cm0L3psNC_l(int const& nf, bool const& muterms): Expression(), + _nf(nf), _muterms(muterms) { } double Cm0L3psNC_l::Regular(double const& z) const { - const double z2 = z * z; - const double H0 = log(z); - const double H1 = - log(1 - z); - const double H01 = dilog(z); - return -(CF * CF * TR * (-32. / 3 * z * H0 * H0 * H0 + 16. * (5. * z + 2.) * H0 * H0 - + 32. / 3 * (8. * z2 + 18. * z + 3.) * H0 - - 32. * (z - 1.) * (80. * z2 + 17. * z - 10.) / (9. * z)) - + CF * TR * TR * ((256. * (z - 1.) * (19. * z2 + 16. * z - 5.)) - / (27. * z) - - 256. / 9 * z * (2. * z + 11.) * H0 - - (256. * (z - 1.) * (2. * z2 + 2. * z - 1.) * H1) - / (9. * z) - + z * (256. / 3 * H01 - 256. * zeta2 / 3.)) - + (_muterms ? - 4. / 3 * CF * TR * (32. / 9. / z * (z - 1.) * (10. * z2 - 2. * z + 1.) + const double z2 = z * z; + const double z3 = z * z2; + const double z4 = z * z3; + // Allocate pointers for the harmonic polylogs + double wx = z; + int nw = 3; + int n1 = -1; + int n2 = 1; + int sz = n2 - n1 + 1; + double *Hr1 = new double[sz]; + double *Hr2 = new double[sz * sz]; + double *Hr3 = new double[sz * sz * sz]; + double *Hr4 = new double[sz * sz * sz * sz]; + double *Hr5 = new double[sz * sz * sz * sz * sz]; + + // Call polylogs + apf_hplog_(&wx, &nw, Hr1, Hr2, Hr3, Hr4, Hr5, &n1, &n2); + + // weight 1 + const double Hm1 = Hr1[0]; + const double H0 = Hr1[1]; + const double H1 = Hr1[2]; + + // weight 2 + const double H01 = Hr2[7]; + const double H0m1 = Hr2[1]; + const double H00m1 = Hr3[4]; + + // weight 3 + const double H011 = Hr3[25]; + + // Deallocate pointers + delete[] Hr1; + delete[] Hr2; + delete[] Hr3; + delete[] Hr4; + delete[] Hr5; + + return + (_muterms ? -(CF * CF * TR * (-32. / 3 * z * H0 * H0 * H0 + 16. * (5. * z + 2.) * H0 * H0 + + 32. / 3 * (8. * z2 + 18. * z + 3.) * H0 + - 32. * (z - 1.) * (80. * z2 + 17. * z - 10.) / (9. * z)) + + CF * TR * TR * ((256. * (z - 1.) * (19. * z2 + 16. * z - 5.)) + / (27. * z) + - 256. / 9 * z * (2. * z + 11.) * H0 + - (256. * (z - 1.) * (2. * z2 + 2. * z - 1.) * H1) + / (9. * z) + + z * (256. / 3 * H01 - 256. * zeta2 / 3.)) + - 4. / 3 * CF * TR * (32. / 9. / z * (z - 1.) * (10. * z2 - 2. * z + 1.) - 32. * (z + 1.) * (2. * z - 1.) * H0 - 32. / 3. / z * (z - 1.) * (2. * z2 + 2. * z - 1.) * H1 - + z * (32. * H0 * H0 + 32. * H01 - 32. * zeta2)) : 0)); + + z * (32. * H0 * H0 + 32. * H01 - 32. * zeta2))) : 0) + + + (_muterms ? 0 : CF * CF * TR + * ((-32. * (z - 1.) * (86. * z2 - 33. * z + 6.) + / (45. * z) + - 32. * (56. * z3 - 813. * z2 + 142. * z + 16.) * H0 + / (45. * z) + + 64. * (z - 1.) * (4. * z2 + 55. * z - 5.) * H1 + / (9. * z) + + (z - 1.) * (2. * z2 + 2. * z - 1.) + * (64. / 3 * H1 * H1 + 128. / 3. * H0 * H1) / z + + ((z + 1.) + * (6. * z4 - 6. * z3 + 11. * z2 + 4. * z - 4.) + * (128. / 45 * H0m1 - 128. / 45 * Hm1 * H0)) + / z2 + + (128. * (4. * z3 - 6. * z2 - 3. * z - 1.) * H01) + / (3. * z) + + (6. * z3 + 90. * z2 - 85. * z - 90.) + * (64. / 45 * H0 * H0 - (128. * zeta2) / 45.) + + z + * (-64. / 9 * H0 * H0 * H0 + + (128. / 3 * H0m1 - 128. * H01) * H0 + + 896. / 3 * zeta2 * H0 - 256. / 3 * H00m1 + - 128. * H011 + 192. * zeta3))) + + CF * TR * TR * _nf + * ((256. / 3 * z * H0 * H0 + - 256. / 9 * (4. * z2 - 8. * z - 3.) * H0 + - 256. * (z - 1.) * (3. * z2 + 6. * z - 2.) / (9. * z))) + + CF * TR * TR + * ((256. / 3 * z * H0 * H0 + - 256. / 9 * (4. * z2 - 8. * z - 3) * H0 + - 256 * (z - 1.) * (3. * z2 + 6. * z - 2.) / (9. * z))) + + CF * CA * TR + * ((-32. / 3 * (19. * z - 12.) * H0 * H0 + + 32. * (422. * z3 - 137. * z2 - 114. * z + 4.) * H0 + / (9. * z) + - 32. * (z - 1.) * (670. * z2 - 245. * z + 46.) + / (27. * z) + + 32. * (z - 1.) * (106. * z2 - 23. * z - 65.) * H1 + / (9. * z) + + (z - 1.) * (2. * z2 + 2. * z - 1.) + * (128. / 3 * H1 * H1 + 256. / 3 * H0 * H1) / z + + (z + 1.) * (2. * z2 - 2. * z - 1.) + * (256. / 3 * H0m1 - 256. / 3 * Hm1 * H0) / z + - 64. * (z - 4.) * H01 + - 64. / 3 * z * (8. * z - 3.) * zeta2 + + z + * (-256. / 3 * H0 * H0 * H0 + + (-256. * H0m1 - 256. * H01) * H0 + + 256. * zeta2 * H0 + 512. * H00m1 - 256. * H011 + - 128. * zeta3)))); } //_________________________________________________________________________________ - Cm0L3psNC_l2::Cm0L3psNC_l2(bool const& muterms): + Cm0L3psNC_l2::Cm0L3psNC_l2(int const& nf, bool const& muterms): Expression(), + _nf(nf), _muterms(muterms) { } double Cm0L3psNC_l2::Regular(double const& z) const { - const double z2 = z * z; - const double H0 = log(z); - return CF * CF * TR * (16. * z * H0 * H0 - 16. * (z + 2.) * H0 - - 16. * (z - 1.) * (4. * z2 - 11. * z - 2.) / (3. * z)) - + CF * TR * TR * (128. * (z - 1.) * (2. * z2 + 2. * z - 1.) / (9. * z) - - 128. / 3 * z * H0); + const double z2 = z * z; + const double H0 = log(z); + const double H1 = - log(1 - z); + const double H01 = dilog(z); + return (_muterms ? CF * CF * TR * (16. * z * H0 * H0 - 16. * (z + 2.) * H0 + - 16. * (z - 1.) * (4. * z2 - 11. * z - 2.) / (3. * z)) + + CF * TR * TR * (128. * (z - 1.) * (2. * z2 + 2. * z - 1.) / (9. * z) + - 128. / 3 * z * H0) : 0) + + + (_muterms ? 0 : CF * CF * TR + * ((-64. / 3 * (2. * z2 - 3.) * H0 + + 32. * (z - 1) * (2. * z2 - 9. * z - 1.) / (3. * z) + - 64. * (z - 1.) * (2. * z2 + 2. * z - 1.) * H1 + / (3. * z) + + z * (64. * H01 - 64. * zeta2))) + + CF * TR * TR * _nf + * ((128. * (z - 1.) * (2. * z2 + 2. * z - 1.) / (9. * z) + - 128. / 3 * z * H0)) + + CF * TR * TR + * (((128. * (z - 1.) * (2. * z2 + 2. * z - 1.)) / (9. * z) + - 128. / 3 * z * H0)) + + CF * CA * TR + * ((-16. * (z - 1.) * (46. * z2 - z - 21.) / (3. * z) + + 64. * (7. * z2 - 3. * z - 1.) * H0 / (3. * z) + - 64. * (z - 1.) * (2. * z2 + 2. * z - 1.) * H1 / (3. * z) + + z * (64. * H0 * H0 + 64. * H01 - 64. * zeta2)))); } } diff --git a/src/structurefunctions/structurefunctionbuilder.cc b/src/structurefunctions/structurefunctionbuilder.cc index 17877d6ea..125cf01df 100644 --- a/src/structurefunctions/structurefunctionbuilder.cc +++ b/src/structurefunctions/structurefunctionbuilder.cc @@ -1774,21 +1774,21 @@ namespace apfel Not.insert({DISNCBasis::CG, Zero}); // Initialize massive zero coefficient functions - const Operator Om0L1g {g, Cm0L1gNC_c{}, IntEps}; - const Operator Om0L2nsc {g, Cm0L2nsNC_c{}, IntEps}; - const Operator Om0L2nsl {g, Cm0L2nsNC_l{}, IntEps}; - const Operator Om0L2psc {g, Cm0L2psNC_c{}, IntEps}; - const Operator Om0L2psl {g, Cm0L2psNC_l{}, IntEps}; - const Operator Om0L2psf {g, Cm0L2psNC_f{}, IntEps}; - const Operator Om0L2gc {g, Cm0L2gNC_c{}, IntEps}; - const Operator Om0L2gl {g, Cm0L2gNC_l{}, IntEps}; - const Operator Om0L2gf {g, Cm0L2gNC_f{}, IntEps}; - const Operator Om0L3psc {g, Cm0L3psNC_c{actnf}, IntEps}; - const Operator Om0L3psl {g, Cm0L3psNC_l{}, IntEps}; - const Operator Om0L3psl2{g, Cm0L3psNC_l2{}, IntEps}; - const Operator Om0L3gc {g, Cm0L3gNC_c{actnf}, IntEps}; - const Operator Om0L3gl {g, Cm0L3gNC_l{actnf}, IntEps}; - const Operator Om0L3gl2 {g, Cm0L3gNC_l2{actnf}, IntEps}; + const Operator Om0L1g {g, Cm0L1gNC_c{}, IntEps}; + const Operator Om0L2nsc {g, Cm0L2nsNC_c{}, IntEps}; + const Operator Om0L2nsl {g, Cm0L2nsNC_l{}, IntEps}; + const Operator Om0L2psc {g, Cm0L2psNC_c{}, IntEps}; + const Operator Om0L2psl {g, Cm0L2psNC_l{}, IntEps}; + const Operator Om0L2psf {g, Cm0L2psNC_f{}, IntEps}; + const Operator Om0L2gc {g, Cm0L2gNC_c{}, IntEps}; + const Operator Om0L2gl {g, Cm0L2gNC_l{}, IntEps}; + const Operator Om0L2gf {g, Cm0L2gNC_f{}, IntEps}; + const Operator Om0L3psc {g, Cm0L3psNC_c{actnf}, IntEps}; + const Operator Om0L3psl {g, Cm0L3psNC_l{actnf}, IntEps}; + const Operator Om0L3psl2{g, Cm0L3psNC_l2{actnf}, IntEps}; + const Operator Om0L3gc {g, Cm0L3gNC_c{actnf}, IntEps}; + const Operator Om0L3gl {g, Cm0L3gNC_l{actnf}, IntEps}; + const Operator Om0L3gl2 {g, Cm0L3gNC_l2{actnf}, IntEps}; // NNLO massive const TabulateObject TabOL2ns{[=] (double const& xi) -> Operator