TSIL-Mma provides a Mathematica interface for the two-loop self-energy integral library TSIL [CPC 174 (2006) 133-151]. TSIL is written by Stephen P. Martin and David G. Robertson.
First, TSIL must be downloaded
and extracted. Afterwards, edit the TSIL Makefile and add -fPIC
to TSIL_OPT:
TSIL_OPT = -O3 -funroll-loops -fPICIn addition, we recommend to enable long double precision in the TSIL
Makefile (enabled by default):
TSIL_SIZE = -DTSIL_SIZE_LONGAfterwards, run
makeTo build TSIL-Mma, first create a build sub-directory and enter that directory:
mkdir build
cd buildThen, call cmake to search for the Mathematica installation and for
the TSIL library and header files:
cmake -DTSIL_DIR=/path/to/tsil -DCMAKE_CXX_FLAGS=-DTSIL_SIZE_LONG ..The variable CMAKE_CXX_FLAGS must be set to the value of TSIL_SIZE
that has been set in the TSIL Makefile (see above):
-
If TSIL has been build with long double precision (
TSIL_SIZE = -DTSIL_SIZE_LONG), pass to cmake:-DCMAKE_CXX_FLAGS=-DTSIL_SIZE_LONGThis is the default TSIL configuration.
-
If TSIL has been build with double precision (
TSIL_SIZE = -DTSIL_SIZE_DOUBLE), pass to cmake:-DCMAKE_CXX_FLAGS=-DTSIL_SIZE_DOUBLE
Finally TSIL-Mma can be build by running
makeTo call the TSIL functions from Mathematica one has to first include
the file src/LibraryLink.m (assuming one is currently in the build
directory):
Get[FileNameJoin[{"..", "src", "LibraryLink.m"}]];Afterwards, the TSIL-Mma LibraryLink library must be loaded using the
function TSILInitialize[libName]. The function argument libName
is the name of the created library, including the path. On Linux the
library is called LibraryLink.so, on MacOS it is called
LibraryLink.dylib. Thus, on Linux you may write:
libName = FileNameJoin[{"src", "LibraryLink.so"}];
TSILInitialize[libName];When these two steps are done, the TSIL functions can be called, for example:
x = 1;
y = 2;
z = 3;
u = 4;
v = 5;
s = 10;
qq = 1;
(* evaluate all TSIL integral functions *)
Print[TSILEvaluate[x, y, z, u, v, s, qq]];
(* individual TSIL integral functions *)
Print["A(x,qq) = ", TSILA[x, qq]];
Print["Ap(x,qq) = ", TSILAp[x, qq]];
Print["Aeps(x,qq) = ", TSILAeps[x, qq]];
Print["B(x,y,s,qq) = ", TSILB[x, y, s, qq]];
Print["Bp(x,y,s,qq) = ", TSILBp[x, y, s, qq]];
Print["dBds(x,y,s,qq) = ", TSILdBds[x, y, s, qq]];
Print["Beps(x,y,s,qq) = ", TSILBeps[x, y, s, qq]];
Print["I(x,y,z,qq) = ", TSILI[x, y, z, qq]];
Print["Ip(x,y,z,qq) = ", TSILIp[x, y, z, qq]];
Print["Ip2(x,y,z,qq) = ", TSILIp2[x, y, z, qq]];
Print["Ipp(x,y,z,qq) = ", TSILIpp[x, y, z, qq]];
Print["Ip3(x,y,z,qq) = ", TSILIp3[x, y, z, qq]];
Print["M(x,y,z,u,v,s) = ", TSILM[x, y, z, u, v, s]];
Print["S(x,y,z,s,qq) = ", TSILS[x, y, z, s, qq]];
Print["T(x,y,z,s,qq) = ", TSILT[x, y, z, s, qq]];
Print["Tbar(x,y,z,s,qq) = ", TSILTbar[x, y, z, s, qq]];
Print["U(x,y,z,u,s,qq) = ", TSILU[x, y, z, u, s, qq]];
Print["V(x,y,z,u,s,qq) = ", TSILV[x, y, z, u, s, qq]];A full example script can be found in example/example.m.
It can be run from the build directory as:
math -run '<< "../example/example.m"'TSIL-Mma is written by Alexander Voigt, RWTH Aachen University.
TSIL-Mma is licenced under the GNU General Public License (GNU GPL) version 3.