Source code for ekore.anomalous_dimensions.unpolarized.space_like.as4.fhmruvv.gqg

r"""The unpolarized, space-like anomalous dimension :math:`\gamma_{qg}^{(3)}`."""

import numba as nb
import numpy as np

from ......harmonics import cache as c
from ......harmonics.log_functions import lm11, lm12, lm13, lm14, lm14m1, lm15, lm15m1


[docs] @nb.njit(cache=True) def gamma_qg(n, nf, cache, variation): r"""Compute the |N3LO| quark-gluon singlet anomalous dimension. The routine is taken from :cite:`Falcioni:2023vqq`. 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| quark-gluon singlet anomalous dimension :math:`\gamma_{qg}^{(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) S5 = c.get(c.S5, cache, n) nf2 = nf * nf nf3 = nf * nf2 # Known large-x coefficients x1L5cff = 1.8518519 * nf - 4.1152263 * 0.1 * nf2 x1L4cff = 3.5687794 * 10 * nf - 3.5116598 * nf2 - 8.2304527 * 0.01 * nf3 y1L5cff = 2.8806584 * nf + 8.2304527 * 0.1 * nf2 y1L4cff = -4.0511391 * 10 * nf + 5.5418381 * nf2 + 1.6460905 * 0.1 * nf3 # Known small-x coefficients bfkl1 = 3.9357613 * 10**3 * nf x0L6cff = -1.9588477 * 10 * nf + 2.7654321 * nf2 x0L5cff = 2.1573663 * 10 * nf + 1.7244444 * 10 * nf2 x0L4cff = -2.8667643 * 10**3 * nf + 3.0122403 * 10**2 * nf2 + 4.1316872 * nf3 # The resulting part of the function P3QG01 = ( +bfkl1 * 2 / (-1 + n) ** 3 + x0L6cff * 720 / n**7 + x0L5cff * -120 / n**6 + x0L4cff * 24 / n**5 + x1L4cff * lm14(n, S1, S2, S3, S4) + x1L5cff * lm15(n, S1, S2, S3, S4, S5) + y1L4cff * lm14m1(n, S1, S2, S3, S4) + y1L5cff * lm15m1(n, S1, S2, S3, S4, S5) ) # The selected approximations for nf = 3, 4, 5 if nf == 3: P3qgApp1 = ( P3QG01 + 187500.0 * -(1 / (-1 + n) ** 2) + 826060.0 * 1 / ((-1 + n) * n) - 150474.0 * 1 / n + 226254.0 * (3 + n) / (2 + 3 * n + n**2) + 577733.0 * -1 / n**2 - 180747.0 * 2 / n**3 + 95411.0 * -6 / n**4 + 119.8 * lm13(n, S1, S2, S3) + 7156.3 * lm12(n, S1, S2) + 45790.0 * lm11(n, S1) - 95682.0 * (S1 - n * (np.pi**2 / 6 - S2)) / n**2 ) P3qgApp2 = ( P3QG01 + 135000.0 * -(1 / (-1 + n) ** 2) + 484742.0 * 1 / ((-1 + n) * n) - 11627.0 * 1 / n - 187478.0 * (3 + n) / (2 + 3 * n + n**2) + 413512.0 * -1 / n**2 - 82500.0 * 2 / n**3 + 29987.0 * -6 / n**4 - 850.1 * lm13(n, S1, S2, S3) - 11425.0 * lm12(n, S1, S2) - 75323.0 * lm11(n, S1) + 282836.0 * (S1 - n * (np.pi**2 / 6 - S2)) / n**2 ) elif nf == 4: P3qgApp1 = ( P3QG01 + 250000.0 * -(1 / (-1 + n) ** 2) + 1089180.0 * 1 / ((-1 + n) * n) - 241088.0 * 1 / n + 342902.0 * (3 + n) / (2 + 3 * n + n**2) + 720081.0 * -1 / n**2 - 247071.0 * 2 / n**3 + 126405.0 * -6 / n**4 + 272.4 * lm13(n, S1, S2, S3) + 10911.0 * lm12(n, S1, S2) + 60563.0 * lm11(n, S1) - 161448.0 * (S1 - n * (np.pi**2 / 6 - S2)) / n**2 ) P3qgApp2 = ( P3QG01 + 180000.0 * -(1 / (-1 + n) ** 2) + 634090.0 * 1 / ((-1 + n) * n) - 55958.0 * 1 / n - 208744.0 * (3 + n) / (2 + 3 * n + n**2) + 501120.0 * -1 / n**2 - 116073.0 * 2 / n**3 + 39173.0 * -6 / n**4 - 1020.8 * lm13(n, S1, S2, S3) - 13864.0 * lm12(n, S1, S2) - 100922.0 * lm11(n, S1) + 343243.0 * (S1 - n * (np.pi**2 / 6 - S2)) / n**2 ) elif nf == 5: P3qgApp1 = ( P3QG01 + 312500.0 * -(1 / (-1 + n) ** 2) + 1345700.0 * 1 / ((-1 + n) * n) - 350466.0 * 1 / n + 480028.0 * (3 + n) / (2 + 3 * n + n**2) + 837903.0 * -1 / n**2 - 315928.0 * 2 / n**3 + 157086.0 * -6 / n**4 + 472.7 * lm13(n, S1, S2, S3) + 15415.0 * lm12(n, S1, S2) + 75644.0 * lm11(n, S1) - 244869.0 * (S1 - n * (np.pi**2 / 6 - S2)) / n**2 ) P3qgApp2 = ( P3QG01 + 225000.0 * -(1 / (-1 + n) ** 2) + 776837.0 * 1 / ((-1 + n) * n) - 119054.0 * 1 / n - 209530.0 * (3 + n) / (2 + 3 * n + n**2) + 564202.0 * -1 / n**2 - 152181.0 * 2 / n**3 + 48046.0 * -6 / n**4 - 1143.8 * lm13(n, S1, S2, S3) - 15553.0 * lm12(n, S1, S2) - 126212.0 * lm11(n, S1) + 385995.0 * (S1 - n * (np.pi**2 / 6 - S2)) / n**2 ) else: raise NotImplementedError("nf=6 is not available at N3LO") # We return one of the two error-band representatives # or the present best estimate, their average if variation == 1: P3QGA = P3qgApp1 elif variation == 2: P3QGA = P3qgApp2 else: P3QGA = 0.5 * (P3qgApp1 + P3qgApp2) return -P3QGA