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
   functions, respectively.

   Likewise, the more sophisticated example in the manual which keeps
   track of Cptr and Dptr would now be
	integer Cptr
	integer Dptr

	(calculate some integrals)
	Cptr = getcachelast(Ccache)
	Dptr = getcachelast(Dcache)
	(calculate some more integrals)

	setcachelast(Ccache, Cptr)
	setcachelast(Dcache, Dptr)

   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
	Cval(id, pos)
   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 <>