r"""The unpolarized, space-like anomalous dimension
:math:`\gamma_{ns,+}^{(3)}`."""
import numba as nb
from eko.constants import CF, zeta3
from ......harmonics import cache as c
from ......harmonics.log_functions import lm11, lm11m1, lm12m1, lm13m1
[docs]
@nb.njit(cache=True)
def gamma_nsp(n, nf, cache, variation):
r"""Compute the |N3LO| singlet-like non-singlet anomalous dimension.
The routine is taken from :cite:`Moch:2017uml`.
The :math:`nf^{0,1}` leading large-nc contributions and the :math:`nf^2` part
are high-accuracy (0.1% or better) parametrizations of the exact
results. The :math:`nf^3` expression is exact up to numerical truncations.
The remaining :math:`nf^{0,1}` terms are approximations based on the first
eight even moments together with small-x and large-x constraints.
The two sets spanning the error estimate are called via IMOD = 1
and IMOD = 2. Any other value of IMOD invokes their average.
Parameters
----------
n : complex
Mellin moment
nf : int
Number of active flavors
cache: numpy.ndarray
Harmonic sum cache
variation : int
|N3LO| anomalous dimension variation
Returns
-------
complex
|N3LO| singlet-like non-singlet anomalous dimension
:math:`\gamma_{ns,+}^{(3)}(N)`
"""
S1 = c.get(c.S1, cache, n)
S2 = c.get(c.S2, cache, n)
S3 = c.get(c.S3, cache, n)
S4 = c.get(c.S4, cache, n)
# Leading large-n_c, nf^0 and nf^1, parametrized
P3NSA0 = (
360.0 / n**7
- 1920.0 / n**6
+ 7147.812 / n**5
- 17179.356 / n**4
+ 34241.9 / n**3
- 51671.329999999994 / n**2
+ 19069.8 * lm11(n, S1)
- (491664.8019540468 / n)
- 4533.0 / (1 + n) ** 3
- 11825.0 / (1 + n) ** 2
+ 129203.0 / (1 + n)
- 254965.0 / (2 + n)
+ 83377.5 / (3 + n)
- 45750.0 / (4 + n)
+ (49150.0 * (6.803662258392675 + n) * S1) / (n**2 * (1.0 + n))
+ (334400.0 * S2) / n
)
P3NSA1 = (
160.0 / n**6
- 864.0 / n**5
+ 2583.1848 / n**4
- 5834.624 / n**3
+ 9239.374 / n**2
- 3079.76 * lm11(n, S1)
- (114047.0 / n)
- 465.0 / (1 + n) ** 4
- 1230.0 / (1 + n) ** 3
+ 7522.5 / (1 + n) ** 2
+ 55669.3 / (1 + n)
- 43057.8 / (2 + n)
+ 13803.8 / (3 + n)
- 7896.0 / (4 + n)
- (120.0 * (-525.063 + n) * S1) / (n**2 * (1.0 + n))
+ (63007.5 * S2) / n
)
# Nonleading large-n_c, nf^0 and nf^1: two approximations
P3NPA01 = (
-(107.16 / n**7)
+ 339.753 / n**6
- 1341.01 / n**5
+ 2412.94 / n**4
- 3678.88 / n**3
- 2118.87 * lm11(n, S1)
- 1777.27 * lm12m1(n, S1, S2)
- 204.183 * lm13m1(n, S1, S2, S3)
+ 1853.56 / n
- 8877.38 / (1 + n)
+ 7393.83 / (2 + n)
- 2464.61 / (3 + n)
)
P3NPA02 = (
-(107.16 / n**7)
+ 339.753 / n**6
- 1341.01 / n**5
+ 379.152 / n**3
- 1389.73 / n**2
- 2118.87 * lm11(n, S1)
- 173.936 * lm12m1(n, S1, S2)
+ 223.078 * lm13m1(n, S1, S2, S3)
- (2096.54 / n)
+ 8698.39 / (1 + n)
- 19188.9 / (2 + n)
+ 10490.5 / (3 + n)
)
P3NPA11 = (
-(33.5802 / n**6)
+ 111.802 / n**5
+ 50.772 / n**4
- 118.608 / n**3
+ 337.931 * lm11(n, S1)
- 143.813 * lm11m1(n, S1)
- 18.8803 * lm13m1(n, S1, S2, S3)
+ 304.82503 / n
- 1116.34 / (1 + n)
+ 2187.58 / (2 + n)
- 1071.24 / (3 + n)
)
P3NPA12 = (
-(33.5802 / n**6)
+ 111.802 / n**5
- 204.341 / n**4
+ 267.404 / n**3
+ 337.931 * lm11(n, S1)
- 745.573 * lm11m1(n, S1)
+ 8.61438 * lm13m1(n, S1, S2, S3)
- (385.52331999999996 / n)
+ 690.151 / (1 + n)
- 656.386 / (2 + n)
+ 656.386 / (3 + n)
)
# nf^2 (parametrized) and nf^3 (exact)
P3NSPA2 = -(
-193.85906555742952
- 18.962964 / n**5
+ 99.1605 / n**4
- 225.141 / n**3
+ 393.0056000000001 / n**2
- 403.50217685814835 / n
- 34.425000000000004 / (1 + n) ** 4
+ 108.42 / (1 + n) ** 3
- 93.8225 / (1 + n) ** 2
+ 534.725 / (1 + n)
+ 246.50250000000003 / (2 + n)
- 25.455 / ((1 + n) ** 2 * (2 + n))
- (16.97 * n) / ((1 + n) ** 2 * (2 + n))
+ 8.485 / ((1 + n) * (2 + n))
- 110.015 / (3 + n)
+ 78.9875 / (4 + n)
+ 195.5772 * S1
- (101.0775 * S1) / n**2
+ (35.17361 * S1) / n
- (8.485 * S1) / (1 + n)
- (101.0775 * S2) / n
)
eta = 1 / n * 1 / (n + 1)
P3NSA3 = -CF * (
-32 / 27 * zeta3 * eta
- 16 / 9 * zeta3
- 16 / 27 * eta**4
- 16 / 81 * eta**3
+ 80 / 27 * eta**2
- 320 / 81 * eta
+ 32 / 27 * 1 / (n + 1) ** 4
+ 128 / 27 * 1 / (n + 1) ** 2
+ 64 / 27 * S1 * zeta3
- 32 / 81 * S1
- 32 / 81 * S2
- 160 / 81 * S3
+ 32 / 27 * S4
+ 131 / 81
)
# Assembly regular piece.
P3NSPAI = P3NSA0 + nf * P3NSA1 + nf**2 * P3NSPA2 + nf**3 * P3NSA3
if variation == 1:
P3NSPA = P3NSPAI + P3NPA01 + nf * P3NPA11
elif variation == 2:
P3NSPA = P3NSPAI + P3NPA02 + nf * P3NPA12
else:
P3NSPA = P3NSPAI + 0.5 * ((P3NPA01 + P3NPA02) + nf * (P3NPA11 + P3NPA12))
# The singular piece.
A4qI = (
2.120902 * 10**4 - 5.179372 * 10**3 * nf
# + 1.955772 * 10**2 * nf**2
# + 3.272344 * nf**3
)
A4ap1 = -507.152 + 7.33927 * nf
A4ap2 = -505.209 + 7.53662 * nf
D1 = 1 / n - S1
if variation == 1:
P3NSPB = (A4qI + A4ap1) * D1
elif variation == 2:
P3NSPB = (A4qI + A4ap2) * D1
else:
P3NSPB = (A4qI + 0.5 * (A4ap1 + A4ap2)) * D1
# ..The local piece.
B4qI = (
2.579609 * 10**4 + 0.08 - (5.818637 * 10**3 + 0.97) * nf
# + (1.938554 * 10**2 + 0.0037) * nf**2
# + 3.014982 * nf**3
)
B4ap1 = -2405.03 + 267.965 * nf
B4ap2 = -2394.47 + 269.028 * nf
if variation == 1:
P3NSPC = B4qI + B4ap1
elif variation == 2:
P3NSPC = B4qI + B4ap2
else:
P3NSPC = +B4qI + 0.5 * (B4ap1 + B4ap2)
return -(P3NSPA + P3NSPB + P3NSPC)