34 #if __cplusplus >= 201402L 35 #define QCD_CONSTEXPR_AFTER_CXX14 constexpr 37 #define QCD_CONSTEXPR_AFTER_CXX14 53 constexpr
unsigned zeta_alpha_s_max_order = 4;
58 constexpr
double pi = 3.141592653589793238462643383279;
59 constexpr
double pi2 = pi*pi;
60 constexpr
double pi4 = pi2*pi2;
61 constexpr
double pi6 = pi4*pi2;
63 constexpr
double zeta_2 = pi*pi/6.;
64 constexpr
double zeta_3 = 1.202056903159594285399738161511449990765;
65 constexpr
double zeta_5 = 1.036927755143369926331365486457034168057;
66 constexpr
double log_2 = 0.693147180559945309428690474185;
67 constexpr
double log2_2 = log_2*log_2;
68 constexpr
double log3_2 = log2_2*log_2;
69 constexpr
double log4_2 = log3_2*log_2;
70 constexpr
double log5_2 = log4_2*log_2;
71 constexpr
double a4 = 0.5174790616738993863307581618988629456224;
72 constexpr
double a5 = 0.5084005792422687074591088492585899413195;
74 constexpr
unsigned max_nf_pow(
unsigned order){
75 return (order > 2u)?(order-2u):0u;
78 constexpr
unsigned max_log_pow(
unsigned order,
unsigned nf_pow){
79 return (nf_pow==0u)?order:order-1u;
83 constexpr
size_t num_coeff = 26;
84 constexpr
double T54_3 = -8445.8046390310298;
85 constexpr
double T62_2 = -4553.4004372195263;
86 constexpr
double Delta_OS_4_nf0 =
87 - 2287952896065241./43342154956800.
88 + 3657317./207360.*zeta_5
89 - 44801124029./1567641600.*zeta_3
90 + 151369./544320.*zeta_3*zeta_3
92 + 21199949./544320.*a4
94 + 1439./1296.*pi2*zeta_3
95 - 389455229./1567641600.*pi4
96 - 151369./30481920.*pi6
98 - 2057./51840.*log_2*pi4
99 - 18377549./13063680.*log2_2*pi2
100 - 121./2592.*log3_2*pi2
101 + 21199949./13063680.*log4_2
103 + 82037./30965760.*T54_3
104 - 151369./11612160.*T62_2
106 constexpr
double Delta_OS_4_nf1 =
109 + 4778329./995328.*zeta_3
112 - 697709./14929920.*pi4
114 - 1709./124416.*log2_2*pi2
115 + 173./124416.*log4_2
117 constexpr
double Delta_OS_4_nf2 =
122 constexpr
auto data_OS = std::array<double, num_coeff>{{
125 - 7./24., - 19./24., 1./36.,
126 - 68849./124416. - 7./9.*zeta_2 - 2./9.*zeta_2*log_2
127 - 80507./27648.*zeta_3,
128 - 4465./864., - 131./576., - 1./216.,
129 + 2479./31104. + zeta_2/9, + 409./1728., 0.,
132 - 2703685./165888.*zeta_3
134 - 31./162.*log_2*pi2,
135 - 16921./2304., - 9013./10368., + 1./1296.,
138 + 132283./82944.*zeta_3
141 + 3577./5184., + 107./1728.,
143 - 1679./186624. - 1./162.*pi2, - 493./20736., 0.
146 constexpr
double Delta_MS_4_nf0 =
147 + 224509779902759./43342154956800.
148 + 4289317./207360.*zeta_5
149 - 42159357629./1567641600.*zeta_3
150 + 151369./544320.*zeta_3*zeta_3
152 + 19667789./544320.*a4
153 - 452556029./1567641600.*pi4
154 - 151369./30481920.*pi6
155 - 2057./51840.*log_2*pi4
156 - 19667789./13063680.*log2_2*pi2
157 - 121./2592.*log3_2*pi2
158 + 19667789./13063680.*log4_2
160 + 82037./30965760.*T54_3
161 - 151369./11612160.*T62_2
163 constexpr
double Delta_MS_4_nf1 =
166 + 3581785./995328.*zeta_3
168 - 541549./14929920.*pi4
169 - 685./124416.*log2_2*pi2
170 + 685./124416.*log4_2
172 constexpr
double Delta_MS_4_nf2 =
176 constexpr
auto data_MS = std::array<double, num_coeff>{{
179 11./72., -11./24., 1./36.,
180 575263./124416. - 82043./27648.*zeta_3,
181 -511./288., 23./192., -1./216.,
182 -2633./31104., 67./576., -1./36,
184 + 7639841./746496. - 2751301./165888.*zeta_3,
185 + 5317./6912., - 1597./10368., + 1./1296.,
187 - 137801./373248. + 110779./82944.*zeta_3,
188 - 703./5184., - 53./1728.,
190 + 6865./186624., - 77./20736., + 1./324.
193 constexpr
auto data_SI = std::array<double, num_coeff>{{
196 11./72., -19./24., 1./36.,
197 575263./124416 - 82043./27648.*zeta_3,
198 -131./32., -131./576., -1./216.,
199 -2633./31104., 281./1728., 0.,
201 - 2745007./746496. - 2751301./165888.*zeta_3,
202 - 30091./6912., - 9013./10368., + 1./1296.,
204 + 156103./373248. + 133819./82944.*zeta_3,
205 + 59./192., + 107./1728.,
207 + 8545./186624., - 79./6912., 0.
211 QCD_CONSTEXPR_AFTER_CXX14
212 double coeffs(
size_t);
215 inline QCD_CONSTEXPR_AFTER_CXX14
216 double coeffs<scheme::pole>(
size_t i){
221 inline QCD_CONSTEXPR_AFTER_CXX14
222 double coeffs<scheme::MSbar>(
size_t i){
227 inline QCD_CONSTEXPR_AFTER_CXX14
228 double coeffs<scheme::scale_invariant>(
size_t i){
233 constexpr
auto data_OS_inv = std::array<double, num_coeff>{{
236 + 7./24., + 19./24., 1./36.,
237 + 58933./124416. + 2./3.*zeta_2 + 2./9.*zeta_2*log_2
238 + 80507./27648.*zeta_3,
239 + 8941./1728., + 511./576., + 1./216.,
240 - 2479./31104. - zeta_2/9, - 409./1728., 0.0,
241 + 49./192. - Delta_OS_4_nf2 - Delta_OS_4_nf1 - Delta_OS_4_nf0,
242 + 21084715./746496. + 2922161./165888.*zeta_3
243 + 35./54.*pi2 + 35./162.*log_2*pi2,
244 + 47039./3456., + 14149./10368., + 1./1296.,
245 - Delta_OS_4_nf1 - 2*Delta_OS_4_nf2,
246 - 1140191./373248. - 132283./82944.*zeta_3
247 - 47./324.*pi2 - 1./81.*log_2*pi2,
248 - 9115./10368., - 107./1728.,
250 + 1679./186624. + 1./162.*pi2, + 493./20736.
254 constexpr
auto data_MS_inv = std::array<double, num_coeff>{{
257 - 11./72., + 11./24., 1./36.,
258 - 564731./124416. + 82043./27648.*zeta_3,
259 + 2645./1728., + 167./576., + 1./216.,
260 + 2633./31104., - 67./576., 1./36.,
261 + 121./1728. - Delta_MS_4_nf2 - Delta_MS_4_nf1 - Delta_MS_4_nf0,
262 - 11093717./746496. + 3022001./165888.*zeta_3,
263 + 1837./1152., + 2909./10368., + 1./1296.,
264 - 2*Delta_MS_4_nf2 - Delta_MS_4_nf1,
265 + 141937./373248. - 110779./82944.*zeta_3,
266 + 277./10368., + 271./5184.,
268 - 6865./186624., + 77./20736., - 1./324.
271 constexpr
auto data_SI_inv = std::array<double, num_coeff>{{
274 - 11./72., + 19./24., 1./36.,
275 - 564731./124416. + 82043./27648.*zeta_3,
276 + 2191./576., + 511./576., + 1./216.,
277 + 2633./31104., - 281./1728., 0.,
278 + 121./1728. - Delta_MS_4_nf2 - Delta_MS_4_nf1 - Delta_MS_4_nf0,
279 - 1531493./746496. + 2975921./165888.*zeta_3,
280 + 33887./3456., + 14149./10368., + 1./1296.,
281 - 2*Delta_MS_4_nf2 - Delta_MS_4_nf1,
282 - 158687./373248. - 133819./82944.*zeta_3,
283 - 515./1152., - 107./1728.,
285 - 8545./186624., + 79./6912., 0.
289 QCD_CONSTEXPR_AFTER_CXX14
290 double coeffs_inv(
size_t);
293 inline QCD_CONSTEXPR_AFTER_CXX14
294 double coeffs_inv<scheme::pole>(
size_t i){
295 return data_OS_inv[i];
299 inline QCD_CONSTEXPR_AFTER_CXX14
300 double coeffs_inv<scheme::MSbar>(
size_t i){
301 return data_MS_inv[i];
305 inline QCD_CONSTEXPR_AFTER_CXX14
306 double coeffs_inv<scheme::scale_invariant>(
size_t i){
307 return data_SI_inv[i];
312 constexpr
unsigned get_index(
317 constexpr
unsigned get_index(
320 return (order == 0u)?
323 + max_log_pow(order - 1, max_nf_pow(order - 1))
324 + get_index(order - 1, max_nf_pow(order - 1))
328 constexpr
unsigned get_index(
332 return (nf_pow == 0u)?
334 1u + max_log_pow(order, nf_pow - 1) + get_index(order, nf_pow - 1)
338 constexpr
unsigned get_index(
343 return log_pow + get_index(order, nf_pow);
349 inline QCD_CONSTEXPR_AFTER_CXX14
350 double zeta_alpha_s_log_coeff(
356 return coeffs<s>(get_index(order, nf_pow, log_pow));
360 inline QCD_CONSTEXPR_AFTER_CXX14
361 double zeta_alpha_s_inv_log_coeff(
367 return coeffs_inv<s>(get_index(order, nf_pow, log_pow));
375 inline QCD_CONSTEXPR_AFTER_CXX14
376 double nf_coeff_helper(
382 return (cur_log_pow == max_log_pow(order, nf_pow))?
383 zeta_alpha_s_log_coeff<s>(order, nf_pow, cur_log_pow):(
384 + zeta_alpha_s_log_coeff<s>(order, nf_pow, cur_log_pow)
385 + lm * nf_coeff_helper<s>(order, nf_pow, lm, cur_log_pow + 1)
390 inline QCD_CONSTEXPR_AFTER_CXX14
391 double nf_coeff_helper_inv(
397 return (cur_log_pow == max_log_pow(order, nf_pow))?
398 zeta_alpha_s_inv_log_coeff<s>(order, nf_pow, cur_log_pow):(
399 + zeta_alpha_s_inv_log_coeff<s>(order, nf_pow, cur_log_pow)
400 + lm * nf_coeff_helper_inv<s>(order, nf_pow, lm, cur_log_pow + 1)
407 inline QCD_CONSTEXPR_AFTER_CXX14
408 double zeta_alpha_s_nf_coeff(
414 return nf_coeff_helper<s>(order, nf_pow, lm, 0);
418 inline QCD_CONSTEXPR_AFTER_CXX14
419 double zeta_alpha_s_inv_nf_coeff(
425 return nf_coeff_helper_inv<s>(order, nf_pow, lm, 0);
431 inline QCD_CONSTEXPR_AFTER_CXX14
438 return (cur_nf_pow == max_nf_pow(order))?
439 zeta_alpha_s_nf_coeff<s>(order, cur_nf_pow, lm):(
440 + zeta_alpha_s_nf_coeff<s>(order, cur_nf_pow, lm)
441 + nf * helper<s>(order, nf, lm, cur_nf_pow + 1)
446 inline QCD_CONSTEXPR_AFTER_CXX14
453 return (cur_nf_pow == max_nf_pow(order))?
454 zeta_alpha_s_inv_nf_coeff<s>(order, cur_nf_pow, lm):(
455 + zeta_alpha_s_inv_nf_coeff<s>(order, cur_nf_pow, lm)
456 + nf * helper_inv<s>(order, nf, lm, cur_nf_pow + 1)
461 inline QCD_CONSTEXPR_AFTER_CXX14
467 return helper<s>(order, nf, lm, 0);
471 inline QCD_CONSTEXPR_AFTER_CXX14
477 return helper_inv<s>(order, nf, lm, 0);
481 inline QCD_CONSTEXPR_AFTER_CXX14
489 return (cur_order == order)?
490 zeta_alpha_s<s>(order, nf, lm):(
491 + zeta_alpha_s<s>(cur_order, nf, lm)
492 + alpha_s/pi * helper<s>(order, nf, lm, alpha_s, cur_order + 1)
497 inline QCD_CONSTEXPR_AFTER_CXX14
505 return (cur_order == order)?
506 zeta_alpha_s_inv<s>(order, nf, lm):(
507 + zeta_alpha_s_inv<s>(cur_order, nf, lm)
508 + alpha_s/pi * helper_inv<s>(order, nf, lm, alpha_s, cur_order + 1)
531 inline QCD_CONSTEXPR_AFTER_CXX14
539 return helper<s>(order, nf, lm, alpha_s, 0);
558 inline QCD_CONSTEXPR_AFTER_CXX14
566 return helper_inv<s>(order, nf, lm, alpha_s, 0);
581 inline QCD_CONSTEXPR_AFTER_CXX14
587 return detail::zeta_alpha_s::zeta_alpha_s<s>(order, nf, lm);
602 inline QCD_CONSTEXPR_AFTER_CXX14
608 return detail::zeta_alpha_s::zeta_alpha_s_inv<s>(order, nf, lm);
613 #undef QCD_CONSTEXPR_AFTER_CXX14 QCD_CONSTEXPR_AFTER_CXX14 double zeta_alpha_s(unsigned order, unsigned nf, double lm, double alpha_s)
Decoupling constant for the strong coupling constant.
Definition: zeta_alpha_s.hpp:532
Definition: alpha_s.hpp:35
QCD_CONSTEXPR_AFTER_CXX14 double zeta_alpha_s(unsigned order, unsigned nf, double lm)
Coefficients of the decoupling constant.
Definition: zeta_alpha_s.hpp:582
Definition of mass schemes.
QCD_CONSTEXPR_AFTER_CXX14 double zeta_alpha_s_inv(unsigned order, unsigned nf, double lm, double alpha_s)
Inverse decoupling constant for the strong coupling constant.
Definition: zeta_alpha_s.hpp:559