| Clear All; | | S[{a1st_, b1st_}, {a2s_, b2s_}, {a3t_, b3t_}, S_, mS_, {zs_, zt_}]:= Module[, | | (*Function (s + t)*) | | Past = Function[u, Product[Gamma[1 − a1st[[1, n]] − u], {n, 1, Length[a1st[1]]}]]; | | Qast = Function[u, Product[Gamma[a1st[[2, n]] + u], {n, 1, Length[a1st[2]]}]]; | | Pbst = Function[u, Product[Gamma[b1st[[1, n]] + u], {n, 1, Length[b1st[1]]}]]; | | Qbst = Function[u, Product[Gamma[1 − b1st[[2, n]] − u], {n, 1, Length[b1st[2]]}]]; | | Mst = Function[u, Past[u] * Pbst[u]/(Qast[u] Qbst[u])]; | | (*Function (s)*) | | Pas = Function[u, Product[Gamma[1 − a2s[[1, n]] − u], {n, 1, Length[a2s[1]]}]]; | | Qas = Function[u, Product[Gamma[a2s[[2, n]] + u], {n, 1, Length[a2s[2]]}]]; | | Pbs = Function[u, Product[Gamma[b2s[[1, n]] + u], {n, 1, Length[b2s[1]]}]]; | | Qbs = Function[u, Product[Gamma[1 − b2s[[2, n]] − u], {n, 1, Length[b2s[2]]}]]; | | Ms = Function[u, Pas[u] * Pbs[u]/(Qas[u] Qbs[u])]; | | (*Function (t)*) | | Pat = Function[u, Product[Gamma[1 − a3t[[1, n]] − u], {n, 1, Length[a3t[1]]}]]; | | Qat = Function[u, Product[Gamma[a3t[[2, n]] + u], {n, 1, Length[a3t[2]]}]]; | | Pbt = Function[u, Product[Gamma[b3t[[1, n]] + u], {n, 1, Length[b3t[1]]}]]; | | Qbt = Function[u, Product[Gamma[1 − b3t[[2, n]] − u], {n, 1, Length[b3t[2]]}]]; | | Mt = Function[u, Pat[u] * Pbt[u]/(Qat[u] Qbt[u])]; | | MT = Function[u, v, Mst[u + v] * Ms[u] * Mt[v]]; | | (*Countour limiters*) | | Zs = zs; (*x*) | | Zt = zt; (*y*) | | W = 50; | | Wp = 10; (*When it is necessary to apply integration by parts. Only for t variable*) | | Rs = −1/4; | | If[(S − mS) 0, | | Rt = (S − mS)/2; | | (*Final Evaluation*) | | Print[“Numerical Integration:”]; | | value = 1/(2I)2 NIntegrate[MT[s, t] Zs Zt, {s, Rs – I * W, Rs + I * W}, {t, Rt – I * W, Rt + I * W}], | | PosPoleT = Ceiling[Abs[S − mS]] + (S − mS); | | NegPoleT = Floor[Abs[S − mS]] + (S − mS); | | Rt1 = PosPoleT/2; | | Rt2 = NegPoleT/2; | | (*Final Evaluation*) | | Print[“Numerical Integration by parts:”]; | | valIni = 1/(2I)2 NIntegrate[MT[s, t] Zs Zt, {s, Rs – I * W, Rs + I * W}, {t, Rt1 – I * W, Rt1 – I * Wp}]; | | nIter = Abs[Floor[S − mS]]; | | val1T = Sum[1/(2I)2 NIntegrate[MT[s, t] Zs Zt, {s, Rs – I * W, Rs + I * W}, {t, (Rt1 − n + 1) – I * Wp, | | (Rt1 − n + 1) + I * Wp}], {n, 1, nIter}]; | | val2T = Sum[1/(2I)2 NIntegrate[MT[s, t] Zs Zt, {s, Rs – I * W, Rs + I * W}, {t, (Rt1 − n + 1) + I * Wp, | | (Rt2 − n + 1) + I * Wp}], {n, 1, nIter}]; | | val3T = Sum[1/(2I)2 NIntegrate[MT[s, t] Zs Zt, {s, Rs – I * W, Rs + I * W}, {t, (Rt2 − n + 1) + I * Wp, | | (Rt2 − n + 1) – I * Wp}], {n, 1, nIter}]; | | val4T = Sum[1/(2I)2 NIntegrate[MT[s, t] Zs Zt, {s, Rs – I * W, Rs + I * W}, {t, (Rt2 − n + 1) – I * Wp, | | (Rt1 − n) – I * Wp}], {n, 1, nIter}]; | | valFin = 1/(2I)2 NIntegrate[MT[s, t] Zs Zt, {s, Rs – I * W, Rs + I * W}, {t, (Rt1 − nIter) – I * Wp, | | (Rt1 − nIter) + I * W}]; | | value = valIni + valFin + val1T + val2T + val3T + val4T]; | | (*Returning back the value*) | | Return[value]; | | ]; | | (*End of MEGBMGF*) |
|