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*) |
|