File LoopTools.changes of Package LoopTools-v2.0
This file lists the most important things that have changed from
LoopTools 1.2 to LoopTools 2:
1. There is now only one LoopTools library, and no extra files containing
actual code like tools.F in version 1.2.
Also the filenames have been straightened out. They do not coincide
with the old ones, hence it is possible to have the old and new
version installed side by side. In particular, the names are now:
libooptools.a -- the regular LoopTools library
libooptools_check.a -- the version that double-checks the
LoopTools -- the MathLink executable
looptools.h -- the (only) include file for Fortran
clooptools.h -- the include file for C++
2. The use of LoopTools in Fortran has simplified:
one needs to include only looptools.h in every function/subroutine
that needs the LoopTools functions. No tools.F. No defs.h.
The CSTORE and DSTORE variables are no longer needed, memory for
the caching of intermediate results is now allocated dynamically.
3. Owing to the change in memory handling, the procedure for freeing
memory (more precisely, making memory reusable) is now:
call setcachelast(Ccache, 0)
call setcachelast(Dcache, 0)
which flushes the cache of the three- and four-point tensor
Likewise, the more sophisticated example in the manual which keeps
track of Cptr and Dptr would now be
(calculate some integrals)
Cptr = getcachelast(Ccache)
Dptr = getcachelast(Dcache)
(calculate some more integrals)
Accessing the cached values is the same using Cval and Dval.
Cval and Dval are actually macros:
Cval(id, pos) = Ccache(pos + id)
Dval(id, pos) = Dcache(pos + id)
Because of the sneaky things needed to make Fortran use
dynamically allocated memory there are two caveats:
a) programs that use LoopTools cannot be compiled with options
that check array bounds (typically -C),
b) it is not recommended to build shared libraries because that,
too, may interfere with Fortran's use of dynamically allocated
memory. (Most loaders put shared libraries at the upper end
of address space, out of reach of Fortran's integer*4 indices.)
4. For C++: libhep.a is gone. C++ links directly to libooptools.a.
In fact, the clooptools.h include file (formerly ctools.h)
supplies only some inline functions that couple directly to the
Fortran code. Consequently the doubledouble stuff is no longer needed.
Everything in C++ is now completely analogous to the Fortran
case, e.g. to access a cached value use
or the more direct Ccache(pos + id). Note the round brackets
like in Fortran.
5. Setting the regularization parameters mudim, delta (for the UV
divergence) and lambda (for the IR divergence) is now easier:
plus the lookup-functions
Thomas Hahn <email@example.com>