Source code for yadism.coefficient_functions.light.n3lo.xc3ns3p

"""
Note that here the m refers to odd-N, but it actually corresponds to
:math:`\nu + \bar{\nu}`. Vice versa for the minus combination.
To generate `c3np3a,c3np3c` we follow `xcdiff3p.f` or the reference paper :cite:`Davies:2016ruz`.
"""

import numba as nb
import numpy as np

from .common import d3, d27, d81, d243
from .xcdiff3p import c3q3dfp, c3q3dfpc


[docs] @nb.njit("f8(f8,f8[:])", cache=True) def c3nm3a(y, args): nf = args[0] y1 = 1.0 - y dl = np.log(y) dl1 = np.log(1.0 - y) res = ( -1853.0 - 5709.0 * y + y * y1 * (5600.0 - 1432.0 * y) - 536.0 / 405.0 * dl**5 - 4036.0 / 81.0 * dl**4 - 496.95 * dl**3 - 1488.0 * dl**2 - 293.3 * dl - 512.0 * d27 * dl1**5 + 8896.0 * d27 * dl1**4 - 1396.0 * dl1**3 + 3990.0 * dl1**2 + 14363.0 * dl1 - 0.463 * y * dl**6 - dl * dl1 * (4007.0 + 1312.0 * dl) + nf * ( 516.1 - 465.2 * y + y * y1 * (635.3 + 310.4 * y) + 304.0 / 81.0 * dl**4 + 48512.0 / 729.0 * dl**3 + 305.32 * dl**2 + 366.9 * dl - 1.200 * y * dl**4 - 640.0 / 81.0 * dl1**4 + 32576.0 / 243.0 * dl1**3 - 660.7 * dl1**2 + 959.1 * dl1 + 31.95 * (1.0 - y) * dl1**4 + dl * dl1 * (1496.0 + 270.1 * dl - 1191.0 * dl1) ) + nf**2 * ( 11.32 + 51.94 * y - y * y1 * (44.52 + 11.05 * y) - 368.0 * d243 * dl**3 - 2848.0 / 243.0 * dl**2 - 16.00 * dl - 64.0 / 81.0 * dl1**3 + 992.0 / 81.0 * dl1**2 - 49.65 * dl1 - dl * dl1 * (39.99 + 5.103 * dl - 16.30 * dl1) + 0.0647 * y * dl**4 ) ) return res
[docs] @nb.njit("f8(f8,f8[:])", cache=True) def c3nsv3a(y, args): # contributions from flavor class fl02 nf = args[0] y1 = 1.0 - y dl = np.log(y) dl1 = np.log(1.0 - y) fl02 = 1 res = ( fl02 * nf * ( 48.79 - (242.4 - 150.7 * y) * y1 - 16.0 / 27.0 * dl**5 + 17.26 * dl**3 - 113.4 * dl**2 - 477.0 * dl + 2.147 * dl1**2 - 24.57 * dl1 + y * dl * (218.1 + 82.27 * dl**2) - dl * dl1 * (81.70 + 9.412 * dl1) ) * y1 ) return res
[docs] @nb.njit("f8(f8,f8[:])", cache=True) def c3ns3b(y, args): nf = args[0] dl1 = np.log(1.0 - y) dm = 1.0 / (1.0 - y) res = ( +1536.0 * d81 * dl1**5 - 16320.0 * d81 * dl1**4 + 5.01099e2 * dl1**3 + 1.17154e3 * dl1**2 - 7.32845e3 * dl1 + 4.44276e3 + nf * ( 640.0 * d81 * dl1**4 - 6592.0 * d81 * dl1**3 + 220.573 * dl1**2 + 294.906 * dl1 - 729.359 ) + nf**2 * (64.0 * d81 * dl1**3 - 464.0 * d81 * dl1**2 + 7.67505 * dl1 + 1.00830) ) res = dm * res return res
[docs] @nb.njit("f8(f8,f8[:])", cache=True) def c3nm3c(y, args): nf = args[0] dl1 = np.log(1.0 - y) res = ( +256.0 * d81 * dl1**6 - 3264.0 * d81 * dl1**5 + 1.252745e2 * dl1**4 + 3.905133e2 * dl1**3 - 3.664225e3 * dl1**2 + 4.44276e3 * dl1 - 9195.48 + 22.80 + nf * ( 128.0 * d81 * dl1**5 - 1648.0 * d81 * dl1**4 + 220.573 * d3 * dl1**3 + 147.453 * dl1**2 - 729.359 * dl1 + 2575.074 + 0.386 ) + nf**2 * ( 16.0 * d81 * dl1**4 - 464.0 * d81 * d3 * dl1**3 + 7.67505 * 1 / 5.0 * dl1**2 + 1.0083 * dl1 - 103.2521 - 0.0081 ) ) return res
[docs] @nb.njit("f8(f8,f8[:])", cache=True) def c3np3a(y, args): return c3nm3a(y, args) + c3q3dfp(y, args)
[docs] @nb.njit("f8(f8,f8[:])", cache=True) def c3np3c(y, args): return c3nm3c(y, args) + c3q3dfpc(y, args)