Advertisement
Guest User

Untitled

a guest
Nov 1st, 2014
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.23 KB | None | 0 0
  1. << barnesroutines.m
  2.  
  3. Barnes Routines, v 1.1.1 of July 23, 2009
  4.  
  5. SetDelayed::write: "Tag Merge in Merge[{MB`MBint[int1_,contour1_,origins1___],MB`MBint[int2_,contour2_,origins2___]}] is Protected."
  6.  
  7. Merge[{MBint[int1_,contour1_,origins1___],MBint[int2_,contour2_,origins2___]}] :=
  8. Module[{mvars1,mvars2,expr1,expr2},
  9. mvars1=MellinVars[MBint[int1,contour1]];
  10. mvars2=MellinVars[MBint[int2,contour2]];
  11. expr1=CoreFactor[int1,mvars1];
  12. expr2=CoreFactor[int2,mvars2];
  13. (*WriteString[$Output,"M expr1: ",InputForm[expr1],"n"];
  14. WriteString[$Output,"M expr2: ",InputForm[expr2],"n"];*)
  15. If [(LeafCount[expr1] != LeafCount[expr2])
  16. || (Length[contour1[[2]]] != Length[contour2[[2]]])
  17. || contour1[[1]] =!= contour2[[1]],
  18. Return[{MBint[int1,contour1,origins1],MBint[int2,contour2,origins2]}]];
  19. (* 8/16/07 Speed up merging of zero-dimensional integrals *)
  20. If [MBDimension[MBint[int1,contour1]] == 0,
  21. Return[{MBint[FactorSquareFree[int1+int2],
  22. which you can Sequence @@ Join[{contour1},Thread[Join[{origins1},{origins2}]]]]},Module]];
  23. If [(relabel=Relabeling[expr1,expr2,mvars1,mvars2]) === {},
  24. (*WriteString[$Output,"relabel x: ",relabel,"n"];*)
  25. http://mbtools.hepforge.org/Return[{MBint[int1,contour1,origins1],MBint[int2,contour2,origins2]}]];
  26. (*WriteString[$Output,"relabel: ",relabel,"n"];*)
  27. (* 1/11/08: Need to sort contour1 too! *)
  28. If [(Sort /@ (contour2 /. relabel)) === (Sort /@ contour1),
  29. Return[{MBint[FactorSquareFree[int1+(int2 /. relabel)],
  30. Sequence @@ Join[{contour1},Thread[Join[{origins1},{origins2}]]] ]}]];
  31. (* Avoid silly error messages... *)
  32. If [expr2 === 0,
  33. Return[{MBint[int1,Sequence @@ Join[{contour1},
  34. Thread[Join[{origins1},{origins2}]] ]]}]];
  35. If [expr1 === 0,
  36. Return[{MBint[int2,Sequence @@ Join[{contour2},
  37. Thread[Join[{origins1},{origins2}]] ]]}]];
  38. (* Otherwise need to shift contours *)
  39. shiftNeeded = Join[shiftNeeded,
  40. {{MBint[int1,contour1],MBint[int2,contour2]}}];
  41. (* First integral will be shifted one; additional ones if any,
  42. residue terms from the shift *)
  43. (* So far, this does not appear to have generated accidentally
  44. divergent integrals, so no need to use DoMergingWithShift,
  45. though perhaps in principle we should *)
  46. xint1 = int1;
  47. xint2 = int2; xrelabel = relabel; xcontour2 = contour2; xcontour1 = contour1;
  48. (* 8/01/07: Need to sort contour1 too *)
  49. shifted = ShiftContours[MBint[int2 /. relabel,
  50. Sort /@ (contour2 /. relabel)],
  51. Sort[contour1[[2]]]];
  52. If [avoidNonUnityCoefficients && HasNonUnityFactorQ[#[[1]]& /@ shifted],
  53. If [verbosity >= 3, WriteString[$Output,"(evaded c z)"]];
  54. Return[{MBint[int1,contour1,origins1],MBint[int2,contour2,origins2]},
  55. Module]];
  56. (**)
  57. Join[{MBint[FactorSquareFree[int1+shifted[[1,1]]],
  58. e[] is in an .m file:
  59.  
  60. Sequence @@ Join[{contour1},Thread[Join[{origins1},{origins2}]]]]},
  61. Flatten[ExpandInt[MBint[FactorSquareFree[#[[1]]],#[[2]],origins2]]& /@ Rest[shifted]]]
  62. ];
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement