%
%----------------------------------------------------------------------
\subsection{\label{subsurvey}Survey of the existing program packages}
%----------------------------------------------------------------------
%
%- {{{ intro:

This section gives a short overview of the existing program packages
written to automate the treatment of Feynman diagrams.  Meanwhile quite
a number of such packages exist, some of them published in journals and
available via anonymous ftp, others still under development and
therefore only accessible for a restricted group.  This review is not
supposed to serve as a catalogue to select the one package most suitable
for ones purposes. It shall simply provide an indication of what has
been done, what is doable, and what are the most urgent topics to
improve. Therefore we will not respect the question of availability.
Furthermore, the description of packages and applications unavoidably
will be biased, with emphasis on the topics the authors are and were
personally involved in.  However, since it allows us to go into details
as far as ever necessary, we hope the reader will benefit from this
strategy.  Nevertheless, we will try to be as objective as possible and
to fairly cover the class of most successful packages.

The first part will be devoted to programs concerned with the generation
of diagrams. For higher order corrections this becomes more and more
important, because the number of diagrams increases rapidly with the
order of perturbation theory.  The second part describes programs that
apply to the evaluation of the corresponding amplitudes on a
diagram-by-diagram basis. Some of them are optimized for the use in
combination with one of the generators mentioned before.  Part three
deals with two packages that automatically apply the rules of the
hard-mass and the large-momentum procedure.  Finally,
Section~\ref{subcompl} contains a collection of programs that mainly
combine some of the previously mentioned ones in order to treat full
processes from the very generation up to the summation of the results of
all diagrams.

The aim of this section is not to compare or judge the listed programs.
This is inadmissible anyway since each of them has its specific main
focuses.  We will just describe their needs, abilities and applications.
Each package is based on one (sometimes also several) algebraic
programs, the most important of which were introduced in
Section~\ref{secalgprg}.  A summary in table form will also include some
additional packages that could not be described in more detail.

%- }}}
%- {{{ Generation of Feynman diagrams:
%----------------------------------------------------------------------
\subsubsection{Generation of Feynman diagrams}
%----------------------------------------------------------------------
%
Two programs of quite different design will be discribed: {\tt FeynArts}
and {\tt QGRAF}.

%- {{{ FeynArts:

%----------------------------------------------------------------------
\paragraph{{\tt FeynArts}}\mbox{}\\[1em]
%----------------------------------------------------------------------
%
{\tt FeynArts}~\cite{FeynArts} is written in {\tt
  Mathematica} and may be used interactively.  Given the
number of loops and external particles, {\tt FeynArts} first creates all
possible topologies, allowing for additional criteria to select some
subset of diagrams.  In the second step, fields must be attributed to
the lines which is most conveniently done by choosing a specific field
theoretical model.  The most popular models are predefined, but the user
may equally well provide his own ones.  {\tt FeynArts} has the nice
feature of drawing the generated diagrams which works to two loops with the
default setup but may be extended to higher loop order by the
user.  This is very helpful for debugging, for example, by figuring out
if the desired subset of diagrams was selected correctly.
Finally, a
mathematical expression is generated for each diagram which may then be
further evaluated.  This is preferably done using the program packages
{\tt FeynCalc}, {\tt FormCalc} or {\tt TwoCalc} (see below)
because the user's intervention remains minimal in that case.
It is very convenient that {\tt FeynArts} works within the {\tt
  Mathematica} environment since a lot of powerful commands are
available here, allowing the manipulation of intermediate and final
results.

%- }}}
%- {{{ QGRAF:

%----------------------------------------------------------------------
\paragraph{{\tt QGRAF}}\mbox{}\\[1em]
%----------------------------------------------------------------------
%
The program {\tt QGRAF}~\cite{Nog93} is written in {\tt FORTRAN~77} and
is a rather efficient generator for Feynman diagrams.  It takes, for
example, only a few seconds to generate $10000$ diagrams.  The user has
to provide two files: the first one, called {\it model file}, contains
the vertices and propagators in a purely topological notation.  In the
second one, the {\it process file}, the initial and final states as well
as the number of loops must be defined.  Furthermore, as for {\tt
  FeynArts}, one may provide several options allowing the selection of
certain subclasses of diagrams.

Similar to the input, also the output of {\tt QGRAF} is very abstract.
It encodes the diagrams in a symbolic notation,
thereby reproducing all necessary combinatoric
factors as well as minus signs induced by fermion loops. While {\tt
  QGRAF} suggests a distribution for the loop- and external momenta
among the propagators, it is the users task to insert the Feynman rules,
i.e., the proper mathematical expressions for the vertices and
propagators.  Nevertheless, {\tt QGRAF} allows one to choose among different
output formats which increases the flexibility for further operations.

%- }}}

%- }}}
%- {{{ Computation of diagrams \label{sec:surv:comp}:

%----------------------------------------------------------------------
\subsubsection{\label{sec:surv:comp}Computation of diagrams}
%----------------------------------------------------------------------
%- {{{ intro:

%
This section lists programs to be used for the computation of Feynman
diagrams, all working on a diagram-by-diagram basis. Packages dealing
with whole processes will be described in Section~\ref{subcompl}.

We will start with three packages based on {\tt FORM}~\cite{form} and
dealing with single-scale integrals: massive integrals with zero
external momentum, massless integrals with one external momentum and
two-point functions on their mass shell.  Concerning their input
requirements and their principle structure they are quite comparable.

Furthermore we will describe certain {\tt Mathematica} packages
computing one- and two-loop diagrams and a {\tt MAPLE} program which
provides a graphical interface for such calculations.

%- }}}
%- {{{ MINCER:

%----------------------------------------------------------------------
\paragraph{{\tt MINCER}}\mbox{}\\[1em]
%----------------------------------------------------------------------
%
The package {\tt MINCER} computes one-, two- and three-loop integrals
where all lines are massless and only one external momentum is different
from zero.  The first version of {\tt MINCER}~\cite{MINCER1} was written
in {\tt SCHOONSCHIP}~\cite{VelSS}, but here we will only describe the
much more elaborate {\tt FORM}-version~\cite{mincer2}. {\tt MINCER} was
the first implementation of the integration-by-parts algorithm and
certainly is one of the most important programs for multi-loop
calculations. It is supposed to be highly efficient, in particular
because the author of {\tt FORM} was involved in the translation to this
system.

The user has to provide the diagrams that may all be listed in a single
file, separated with the help of the fold-option of {\tt FORM}.  The
input notation is based on the following scheme: The momenta carried by
the propagators are numerated by integer numbers fixed by the topology
of the diagram. The topology itself, uniquely classifying the diagram,
must be specified through a keyword.  The final result is given as an
expansion in $\varepsilon$ where one-loop results are expanded up to
${\cal O}(\varepsilon^2)$, two-loop ones up to ${\cal O}(\varepsilon)$
and three-loop ones up to the finite part.

%- }}}
%- {{{ MATAD:

%----------------------------------------------------------------------
\paragraph{{\tt MATAD}}\mbox{}\\[1em]
%----------------------------------------------------------------------
%
One-, two- and three-loop vacuum integrals can be evaluated with the
help of {\tt MATAD}~\cite{Stediss}, also written in {\tt FORM}. Each
propagator may either be massless or carry the common mass, $M$, and all
external momenta have to be zero.

The input notation as well as the whole concept is very similar to the
one of {\tt MINCER}. In particular, the core of the routines is again
formed by the integration-by-parts algorithm.  {\tt MATAD} provides an
interface for using {\tt MINCER} and, furthermore, it supports Taylor
expansion in small masses or momenta. For example, given a massive
diagram with one small external momentum, after Taylor expansion of the
integrand in the small momentum one is left with a vacuum integral
again.  At different stages of the computation there is the opportunity
to interact from outside in order to control the expansion, apply
projectors, or perform other operations.

The applicability of both {\tt MINCER} and {\tt MATAD} seems to be quite
restricted.  However, as we have seen in
Section~\ref{subasymp}, if a diagram has a certain hierarchy of mass scales
which happens to be the case for quite a lot of physical applications,
it can be reduced to products of single-scale integrals. Then {\tt
  MINCER} and {\tt MATAD} can be used in combination to arrive at an
analytical result.

%- }}}
%- {{{ SHELL2:

%----------------------------------------------------------------------
\paragraph{{\tt SHELL2}}\mbox{}\\[1em]
%----------------------------------------------------------------------
%
The program {\tt SHELL2}~\cite{SHELL2} is also written in {\tt FORM} and
deals with one- and two-loop propagator-type on-shell integrals.  The
implemented topologies allow computations mainly in QED and QCD.  The
prototype examples are the two-loop contribution to $g-2$ of the
electron and the relation between the $\overline{\rm MS}$ and
on-shell mass up to order $\alpha_s^2$ in QCD.

The user has to provide the diagrams in terms of a polynomial
representing the numerator and abbreviated denominators. This must be
supplemented by a label indicating both the number of loops and the
topology. Except for the on-shell momentum no other external momentum
may be present because then the numerator can be completely decomposed
in terms of the denominators.  A small {\tt FORM} program ensures that an
input very similar to the one of {\tt MATAD} and {\tt MINCER} can be
applied so that one may run all three packages in parallel.

%- }}}
%- {{{ FeynCalc, FormCalc and TwoCalc:

%----------------------------------------------------------------------
\paragraph{{\tt FeynCalc}, {\tt FormCalc} and {\tt TwoCalc}}\mbox{}\\[1em]
%----------------------------------------------------------------------
%
The {\tt Mathematica} package {\tt FeynCalc}~\cite{FeynCalc} is based on
a quite different philosophy than the ones described above.  Its main
applications are one-loop radiative corrections in the Standard Model and
its extensions. The diagrams may either be provided by hand or one uses
the output of the generator {\tt FeynArts} (see above).  {\tt FeynCalc}
performs the Dirac algebra and applies the tensor reduction algorithm of
Section~\ref{sectensdec} in order to express the result in terms of
scalar integrals. Special functions and the power of {\tt Mathematica}
allow to conveniently handle the intermediate and final expressions.

Since {\tt FeynCalc} is fully based on {\tt Mathematica}, its
performance is rather slow if the underlying expressions get large.
Combining the advantages of {\tt Mathematica} and {\tt FORM}, the
package {\tt FormCalc}~\cite{FormCalc} is a sped-up version of {\tt
  FeynCalc} well suited for huge problems at the one-loop level.

The {\tt Mathematica} package {\tt TwoCalc}~\cite{WeiSchBoe94} is to
some degree the extension of {\tt FeynCalc} to two loops. It applies,
however, only to two-point functions, since only for them may the tensor
reduction algorithm be generalized to two loops, as was already noted in
Section~\ref{sectensdec}.  Operations that are not specific for two-loop
calculations, like the evaluation of Dirac traces, are passed to {\tt
  FeynCalc}, so that mainly the reduction of the tensor integrals to a
basic set of one- and two-loop integrals is performed.

The numerical evaluation of the scalar one-loop integrals may
conveniently be performed with the help of {\tt LoopTools} to be
described below. The two-loop integrals resulting from the {\tt
  TwoCalc}-routines may be evaluated using the {\tt C}-programs {\tt
  s2lse} and {\tt master}~\cite{Bauetal}.

%- }}}
\pagebreak[4]
%- {{{ LoopTools:

%----------------------------------------------------------------------
\paragraph{{\tt LoopTools}}\mbox{}\\[1em]
%----------------------------------------------------------------------
%
{\tt LoopTools}~\cite{FormCalc} is an integration of the {\tt FORTRAN}
program {\tt FF}~\cite{ffmanual} into {\tt Mathematica}. It allows a
convenient numerical evaluation of the results as obtained by {\tt
  FeynCalc} or {\tt FormCalc}. In addition, it extends the ability of
{\tt FF} from doing only scalar integrals to the coefficients of the
tensor decomposition $B_{ij}, C_{ijk}, D_{ijkl}$ as described in
Section~\ref{sectensdec}, so that it is not even necessary to fully
reduce the tensor integrals with the help of {\tt FeynCalc} in order to
arrive at numerical results.  Indeed, {\tt FormCalc} reduces the tensor
integrals only up to the point where {\tt LoopTools} is applicable.

%- }}}
%- {{{ ProcessDiagram:

%----------------------------------------------------------------------
\paragraph{{\tt ProcessDiagram}}\mbox{}\\[1em]
%----------------------------------------------------------------------
%
The package {\tt ProcessDiagram}~\cite{ProcDia} is written in {\tt
  Mathematica} and deals with one- and two-loop vacuum diagrams without
any restrictions concerning masses. One may apply Taylor expansions with
respect to external momenta before integration.  In addition, some
auxiliary functions to simplify the results are available. It is, for
example, possible to expand the result with respect to the masses.

%- }}}
%- {{{ XLOOPS:

%----------------------------------------------------------------------
\paragraph{{\tt XLOOPS}}\mbox{}\\[1em]
%----------------------------------------------------------------------
%
One- and two-loop diagrams can be processed in a convenient way with the
help of the program package {\tt XLOOPS}~\cite{XLOOPS}.  An {\tt
  Xwindows} interface based on {\tt Tcl/Tk} allows even unexperienced
users to compute loop diagrams.  After choosing the topology, the
particle type of each line must be specified.  {\tt XLOOPS} then
performs the Dirac algebra and expresses the result in terms of certain
one- and two-loop integrals.  Whereas the one-loop integrals are
evaluated analytically, for the two-loop ones the result is reduced to
an at most two-fold integral representation which is then evaluated
numerically.  The main underlying strategy in this reduction is based on
the parallel space technique~\cite{CzaKilKre95}.  For the analytical
part of the calculations the algebra program {\tt MAPLE~V}~\cite{MAPLE}
is used; the numerical integrations are done with the help of {\tt
  VEGAS}~\cite{VEGAS,pvegas}.

%- }}}

%- }}}
%- {{{ Generation of Subdiagrams\label{subgensd}:

%----------------------------------------------------------------------
\subsubsection{\label{subgensd}Generation of Subdiagrams}
%----------------------------------------------------------------------
%
%- {{{ intro:

This section describes two packages, {\tt LMP} and {\tt
  EXP}, that automatically apply the hard-mass
and the large-momentum procedure to a given diagram. The basic
concept and the realization of these programs is quite similar.
However, whereas {\tt LMP} is written in {\tt PERL} and was specialized
for the large-momentum procedure, {\tt EXP} is written in {\tt
  FORTRAN~90} and applies to the case of large external momenta, large
internal masses, and a combination of both.

%- }}}
%- {{{ LMP and EXP:

%----------------------------------------------------------------------
\paragraph{{\tt LMP} and {\tt EXP}}\mbox{}\\[1em]
%----------------------------------------------------------------------
%
{\tt LMP}~\cite{Har:diss} is written in {\tt PERL} and was developed to
fully exploit the power of the large-momentum procedure. It therefore
extends the range of analytically calculable three-loop diagrams from
single-scale ones to two-point functions carrying small masses. It found
its main application in the evaluation of quark mass corrections to
certain QCD processes.

Its basic concept was then carried over to the {\tt FORTRAN~90} program
{\tt EXP}~\cite{Sei:dipl} which not only evaluates the large-momentum as
well as the hard-mass procedure but also any successive application of
both. Although the first version of {\tt EXP} is only capable of dealing
with two-point functions, the next version will also incorporate the
case of an arbitrary number of external momenta and masses, so that any
three-loop integral will be calculable in terms of a (possibly nested)
series in ratios of the involved mass scales. So far, {\tt EXP} was
applied to the decay rate of the $Z$ boson into
quarks~\cite{HarSeiSte97}, but one can certainly think of a huge number
of further possible applications.

The usage of both {\tt LMP} and {\tt EXP} is very similar. Their input
and output is adapted to {\tt MINCER} and {\tt MATAD}, so that
the experienced user of these two packages will only have to
provide some additional input information.

%- }}}

%- }}}
%- {{{ Complete packages\label{subcompl}:
%----------------------------------------------------------------------
\subsubsection{\label{subcompl}Complete packages}
%----------------------------------------------------------------------
%- {{{ intro:

%
In this section five program packages are described
which automate the evaluation of a given process from
the generation up to the computation of the corresponding amplitudes.
Both their methods and purposes are quite different.

{\tt GEFICOM} computes Feynman diagrams up to three loops in analytical
form by expanding them in terms of single-scale integrals; processes
containing different mass scales are evaluated in terms of expansions. A
different setup was used at NIKHEF (Amsterdam) to compute, for example,
four-loop tadpole diagrams up to their simple poles in $\varepsilon$.
Further on, {\tt CompHEP} is a multi-leg system calculating cross
sections at tree level, involving up to five particles in the final
state. The automation of {\tt GRACE} relies heavily on numerical methods
and has a similar field of application like {\tt CompHEP}.  Finally, an
approach to provide a rather general environment for the computation of
one- and two-loop diagrams is described with the programs {\tt TLAMM}
and {\tt DIANA}.

%- }}}
%- {{{ GEFICOM:

%----------------------------------------------------------------------
\paragraph{{\tt GEFICOM}}\mbox{}\\[1em]
%----------------------------------------------------------------------
%
The program package {\tt GEFICOM}~\cite{geficom} combines the generator
{\tt QGRAF}, the integration packages {\tt MATAD} and {\tt MINCER} and
the programs {\tt EXP} and {\tt LMP} concerned with asymptotic expansion
to compute Feynman diagrams up to three loops. The translation of the
{\tt QGRAF} output to {\tt MINCER}/{\tt MATAD} notation is done by a
collection of {\tt Mathematica} routines.  The links between the single
packages is done by script languages like {\tt AWK} and {\tt PERL}.

With the short descriptions of its components in the previous section it
is rather clear what the purpose of {\tt GEFICOM} is: Given the initial
and final states, {\tt GEFICOM} generates and computes all contributing
diagrams up to three loops in analytic form, provided that the involved
mass scales are subject to a certain hierarchy. The result is obtained in
terms of an in general multiple expansion in the ratios of the mass
scales. The input therefore is essentially the same as for {\tt QGRAF},
except that one additionally assigns masses to the different particles
and defines a hierarchy among them.

%- }}}
%- {{{ NIKHEF setup:

%----------------------------------------------------------------------
\paragraph{``NIKHEF setup''}\mbox{}\\[1em]
%----------------------------------------------------------------------
%
When the number of diagrams contributing to a single quantity increases
and gets of the order $10^4$ one should think carefully about the
organization of the calculation.  For example, storing the result of
each individual diagram to a separate file may push the operational
system over its limits.  In the ``NIKHEF setup'' a database-like tool
named {\tt Minos}~\cite{minos} is used to circumvent such book-keeping
problems.  It contains {\tt make}-like and lots of additional features.
For example, it helps to find bottlenecks of the setup by reporting on
the subproblem on which most of the CPU time was spent.

For the generation of the diagrams the program {\tt QGRAF} is used. The
output of {\tt QGRAF} is translated to the notation of
the {\tt FORM} routines {\tt MINCER} and {\tt BUBBLES}~\cite{bubbles}
which are concerned with the integration of the massless two-point
functions and the massive tadpole integrals, respectively.  Another {\tt
  FORM} program, named {\tt Color}~\cite{color}, determines the colour
factor. The resulting expressions are inserted into a database.  After
integration, the results of the single diagrams are written to another
database.  Finally, the diagrams are multiplied by their colour factor
and summed up.

%- }}}
%- {{{ CompHEP:

%----------------------------------------------------------------------
\paragraph{{\tt CompHEP}}\mbox{}\\[1em]
%----------------------------------------------------------------------
%
{\tt CompHEP} \cite{comphep} is a program package which allows the
evaluation of scattering processes and decay rates at tree level.  A
menu-driven interface makes its use quite handy.  There are several
built-in models among which one finds the Standard Model both in
unitary and in 't~Hooft-Feynman gauge, or the Minimal Supersymmetric
Standard Model. Modification of these models and definition of new ones
can be done in a very convenient way. Using {\tt LanHEP} (see
Section~\ref{submisc}) which works out the Feynman rules in {\tt
  CompHEP} format, it even suffices to provide a Lagrangian density.

After a model is selected and the process is specified, the Feynman
diagrams are generated and graphically displayed on the screen.  The
user may now select the diagrams to be treated further. Then the squared
Feynman amplitudes are generated and displayed, and the corresponding
analytical expressions are computed.  They may be stored either in {\tt
  REDUCE} or {\tt Mathematica} format which simplifies further
symbolical manipulations.  For complicated processes {\tt FORTRAN} or
{\tt C} code is generated, allowing for numerical studies.  On the other
hand, if the number of diagrams is not too large, numerical integrations
may be performed immediately and plots showing angular distributions and
cross sections can be produced.

The numerical part of {\tt CompHEP} is based on the Monte-Carlo
integration routine {\tt VEGAS}.  It is possible to introduce
cuts on various kinematical variables.
Further on, distributions, cross sections
and particle widths can be evaluated.  For the incoming particles one
may define structure functions and then repeat the same integrations.
Finally, {\tt CompHEP} generates events and displays the corresponding
histograms.

%- }}}
%- {{{ GRACE:

%----------------------------------------------------------------------
\paragraph{{\tt GRACE}}\mbox{}\\[1em]
%----------------------------------------------------------------------
%
A different approach for the automatic computation of Feynman diagrams
is realized by the program package {\tt GRACE}~\cite{grace}.  It was
developed to compute cross sections and radiative corrections
to them. Also here several models are available, including the
Minimal Supersymmetric Standard Model~\cite{Jim95}.

{\tt GRACE} has its own generator for Feynman diagrams,
producing {\tt FORTRAN} source code for each of them and passing it
to the package {\tt CHANEL}~\cite{CHANEL} which performs the calculation
with purely numerical methods. The user is free to directly evaluate the
amplitudes rather than the squared ones. This significantly reduces
the size of the expressions (see Section~\ref{sec::helamp}).

In the final step the integration over the phase space for the
particular final state is performed with the help of the
multi-dimensional integration package {\tt BASES} and the event
generator {\tt SPRING} which allows to generate unweighted event
flow~\cite{BASES/SPRING}.

%- }}}
%- {{{ TLAMM and DIANA:

%----------------------------------------------------------------------
\paragraph{{\tt TLAMM} and {\tt DIANA}}\mbox{}\\[1em]
%----------------------------------------------------------------------
%
There are two projects, partly under development, the purpose of which
is to automate the evaluation of processes involving one- and two-loop
diagrams. The package {\tt TLAMM}~\cite{tlamm} is written in {\tt C} and was
mainly developed to compute the two-loop corrections to the anomalous
magnetic moment of the muon. It uses {\tt QGRAF} to generate the
diagrams, translates the output to {\tt FORM} code and executes the
integration routines.

The second package, called {\tt DIANA}~\cite{diana},
is supposed to work on a more
universal basis. Again, in a first step the output of {\tt QGRAF} is
read, the topologies are determined and internal representations for the
diagrams are created.  Subsequently, an interpreter executes a ``special
text manipulating language'' ({\tt TM}) which allows one to select the
algebra language to be adopted for the calculation, to pass the
expressions to {\tt FORTRAN} in order to perform a numerical calculation
or to generate, for example, PostScript files of the diagrams.

%- }}}

%- }}}
%- {{{ Miscellaneous\label{submisc}:

%----------------------------------------------------------------------
\subsubsection{\label{submisc}Miscellaneous}
%----------------------------------------------------------------------
%- {{{ intro:
%
There are many more programs developed by several different groups.
Many of them are neither published nor documented in the literature,
especially if they were designed for a very special task only.  This
section is supposed to touch on some of them in a more or less encyclopedic
form\footnote{ The links to the corresponding {\tt www} and {\tt ftp}
  sites can also be found at\\ {\tt
    http://www-ttp.physik.uni-karlsruhe.de/Links/algprog.html } }.  For
completeness also the programs already discussed are included in the
list below.  Note that when we did not include information on the
availability of a program this means that we could not find an
apropriate {\tt ftp} or {\tt http} site.  Interested readers should
contact the authors of the corresponding programs in this case.  Some
programs are also available from the CPC program library ({\tt
  http://www.cpc.cs.qub.ac.uk}) upon request, even if it is not
indicated below.

\newlength{\savebaselineskip}
\setlength{\savebaselineskip}{\baselineskip}
\begin{itemize}
\setlength{\baselineskip}{.5em}

%- }}}
%- {{{ BASES:

\item{\tt BASES} \cite{BASES/SPRING}:
  \begin{itemize}
  \item{\it Availability:} CPC program library
  \item{\it Purpose:} Monte Carlo integration
  \item{\it Source:} {\tt FORTRAN}
  \end{itemize}
  
%- }}}
%- {{{ BUBBLES:

\item{\tt BUBBLES} \cite{bubbles}:
  \begin{itemize}
  \item{\it Purpose:} analytical computation of purely massive
    four-loop tadpole integrals up to ${\cal O}(1/\varepsilon)$
  \item{\it Algorithms:} integration-by-parts
  \item{\it Source:} {\tt FORM}
  \end{itemize}
  
%- }}}
%- {{{ CHANEL:

\item{\tt CHANEL} \cite{CHANEL}:
  \begin{itemize}
  \item{\it Availability:} CPC program library
  \item{\it Purpose:} library for the calculation of helicity amplitudes
  \item{\it Source:} {\tt FORTRAN}
  \end{itemize}
  
%- }}}
%- {{{ COLOR:

\item {\tt Color} \cite{color}:
  \begin{itemize}
  \item {\it Availability:}
    {\tt http://norma.nikhef.nl/\~\/t68/FORMapplications/Color}
  \item{\it Purpose:} computation of colour factors
  \item {\it Source:} {\tt FORM}
  \end{itemize}
  
%- }}}
%- {{{ CompHEP:

\item {\tt CompHEP} \cite{comphep}:
  \begin{itemize} 
  \item {\it Availability:} {\tt http://theory.npi.msu.su/\~\/comphep}
    or {\tt http://www.ifh.de/\~\/pukhov}
  \item {\it Purpose:} symbolic and numerical computation of tree level
    processes with up to six external legs
  \item {\it Algorithms:} symbolic evaluation of squared diagrams,
    recursive representation of kinematics, Monte Carlo integration
  \item{\it Source:} {\tt FORTRAN}, {\tt C}
  \item{\it Uses:} {\tt VEGAS}
  \item {\it Preferably combined with:} {\tt LanHEP}
  \end{itemize}

%- }}}
%- {{{ DIANA:

\item {\tt DIANA} \cite{diana}:
  \begin{itemize}
  \item{\it Availability:} upon request from the author
  \item{\it Purpose:} general environment for generating and evaluating
    Feynman diagrams
  \item{\it Source:} {\tt C}
  \item{\it Uses:} {\tt QGRAF}
  \end{itemize}

%- }}}
%- {{{ EXP:

\item {\tt EXP} \cite{Sei:dipl}:
  \begin{itemize}
  \item{\it Purpose:} reduce two-point functions to single-scale integrals
  \item{\it Algorithms:} large-momentum procedure, hard-mass procedure
    (see Section~\ref{subasymp})
  \item {\it Preferably combined with:} {\tt MATAD}, {\tt MINCER}
  \item{\it Source:} {\tt FORTRAN~90}
  \end{itemize}

%- }}}
%- {{{ FeynArts:

\item {\tt FeynArts} \cite{FeynArts}:
  \begin{itemize}
  \item{\it Availability:} {\tt
      http://www-itp.physik.uni-karlsruhe.de/feynarts}
  \item{\it Purpose:} diagram generator with main focus on one- and
    two-loop cases
  \item{\it Source:} {\tt Mathematica}
  \item{\it Preferably combined with:} {\tt FeynCalc}, {\tt FormCalc}, 
    {\tt TwoCalc}
  \end{itemize}

%- }}}
%- {{{ FeynCalc:

\item {\tt FeynCalc} \cite{FeynCalc}:
  \begin{itemize}
  \item{\it Availability:} {\tt
      http://www.mertig.com} (commercial);\\ the latest free version is
      available at {\tt http://www.mertig.com/oldfc}
  \item{\it Purpose:} reduction of arbitrary one-loop to a set of basis
    integrals
  \item{\it Algorithms:} tensor decomposition and tensor reduction by
    means of \cite{PasVel79} (see Section~\ref{sectensdec})
  \item{\it Source:} {\tt Mathematica}
  \item{\it Preferably combined with:} {\tt FeynArts}, {\tt LoopTools}
  \end{itemize}

%- }}}
%- {{{ FF:

\item {\tt FF} \cite{OldVer89,ffmanual}:
  \begin{itemize}
  \item{\it Availability:} {\tt http://www.xs4all.nl/\~\/gjvo/FF.html}
  \item{\it Purpose:} numerical computation of scalar and vector one-loop
    integrals up to six-point functions
  \item{\it Source:} {\tt FORTRAN}
  \end{itemize}

%- }}}
%- {{{ FormCalc:

\item {\tt FormCalc} \cite{FormCalc}:
  \begin{itemize}
  \item{\it Availability:} {\tt
      http://www-itp.physik.uni-karlsruhe.de/formcalc}
  \item{\it Purpose:} slimmed, high speed version of {\tt FeynCalc}
  \item{\it Algorithms:} tensor decomposition
  \item{\it Source:} {\tt Mathematica}, {\tt FORM}
  \item{\it Preferably combined with:} {\tt FeynArts}, {\tt LoopTools} 
  \end{itemize}

%- }}}
%- {{{ GEFICOM:

\item {\tt GEFICOM} \cite{geficom}:
  \begin{itemize}
  \item{\it Purpose:} automatic generation and computation of three-loop
    Feynman diagrams in terms of expansions
  \item {\it Uses:} {\tt QGRAF}, {\tt MATAD}, {\tt MINCER},
    {\tt EXP} or {\tt LMP}
  \item {\it Source:} {\tt Mathematica}, {\tt FORM}, {\tt AWK}
  \end{itemize}

%- }}}
%- {{{ GRACE:

\item {\tt GRACE} \cite{grace}:
  \begin{itemize}
  \item {\it Availability:} {\tt ftp://ftp.kek.jp/kek/minami/grace}
  \item {\it Purpose:} numerical computation of $2\to 2$ scattering
    processes to one-loop and multi-particle scattering processes at
    tree level
  \item {\it Algorithms:} helicity-amplitude method (see
    Section~\ref{sec::helamp}), Monte Carlo integration
  \item {\it Uses:} {\tt CHANEL}, {\tt BASES}, {\tt SPRING}
  \item{\it Source:} {\tt C}, {\tt FORTRAN}
  \end{itemize}

%- }}}
%- {{{ HELAS:

\item {\tt HELAS} \cite{HELAS}:
  \begin{itemize}
  \item{\it Purpose:} helicity-amplitude subroutines for Feynman diagram
    evaluations 
  \item{\it Source:} {\tt FORTRAN}
  \end{itemize}

%- }}}
%- {{{ HEPLoops:

\item {\tt HEPLoops} \cite{HEPLoops}:
 \begin{itemize}
  \item {\it Availability:} upon request from the author
  \item{\it Purpose:} analytical computation of massless propagator-type
    diagrams up to three loops
  \item {\it Algorithms:} integration-by-parts (see Section~\ref{sec::IP})
  \item {\it Source:} {\tt FORM}
  \end{itemize}

%- }}}
%- {{{ LanHEP:

\item {\tt LanHEP} \cite{lanhep}:
  \begin{itemize}
  \item {\it Availability:}
    {\tt http://theory.npi.msu.su/\~\/semenov/lanhep.html}
  \item {\it Purpose:} generate Feynman rules from Lagrangian
  \item {\it Preferably combined with:} {\tt CompHEP}
  \item{\it Source:} {\tt C}
  \end{itemize}

%- }}}
%- {{{ LMP:

\item {\tt LMP} \cite{Har:diss}:
  \begin{itemize}
  \item{\it Purpose:} factorize large external momentum in two-point
    functions
  \item{\it Algorithms:} large-momentum procedure (see
    Section~\ref{subasymp})
  \item {\it Source:} {\tt PERL}
  \item {\it Preferably combined with:} {\tt MATAD}, {\tt MINCER}
  \end{itemize}

%- }}}
%- {{{ LOOPS:

\item {\tt LOOPS} \cite{LOOPS}:
  \begin{itemize}
  \item {\it Availability:} CPC Program Library
  \item{\it Purpose:} computation of one- and two-loop propagator type
                      integrals
  \item {\it Algorithms:} integration-by-parts (see
    Section~\ref{sec::IP})
  \item {\it Source:} {\tt REDUCE}
  \end{itemize}

%- }}}
%- {{{ LoopTools:

\item {\tt LoopTools} \cite{FormCalc}:
  \begin{itemize}
  \item{\it Availability:} {\tt
      http://www-itp.physik.uni-karlsruhe.de/looptools}
  \item{\it Purpose:} implementation and extension of {\tt FF} in {\tt
      Mathematica}
  \item{\it Uses:} {\tt FF}
  \item{\it Source:} {\tt Mathematica}, {\tt FORTRAN}
  \item{\it Preferably combined with:} {\tt FeynCalc}, {\tt FormCalc}
  \end{itemize}

%- }}}
%- {{{ MadGraph:

\item {\tt MadGraph} \cite{MadGraph}:
  \begin{itemize}
  \item {\it Availability:} {\tt
      http://pheno.physics.wisc.edu/Software/MadGraph/}
  \item{\it Purpose:} automatic generation of Feynman diagrams; calculation of
    helicity amplitudes
  \item {\it Uses:} {\tt HELAS}
  \item{\it Source:} {\tt FORTRAN}
  \end{itemize}

%- }}}
%- {{{ master:

\item{\tt master} \cite{Bauetal}: supplement to {\tt s2lse}
    
%- }}}
%- {{{ MATAD:

\item {\tt MATAD} \cite{Stediss}:
  \begin{itemize}
  \item {\it Purpose:} analytical computation of massive three-loop tadpole
    integrals
  \item {\it Algorithms:} integration-by-parts (see Section~\ref{sec::IP})
  \item {\it Source:} {\tt FORM}
  \end{itemize}

%- }}}
%- {{{ MINCER (form):

\item {\tt MINCER} ({\tt FORM} version) \cite{mincer2}:
  \begin{itemize}
  \item {\it Availability:} {\tt
      ftp://nikhefh.nikhef.nl/pub/theory/form/libraries/form2/mincer}
  \item{\it Purpose:} analytical computation of massless propagator-type
    diagrams up to three loops
  \item {\it Algorithms:} integration-by-parts (see Section~\ref{sec::IP})
  \item {\it Source:} {\tt FORM}
  \end{itemize}

%- }}}
%- {{{ MINCER (schoonschip):

\item {\tt MINCER} ({\tt SCHOONSCHIP} version) \cite{MINCER1}:
  \begin{itemize}
  \item {\it Availability:} CPC program library
  \item{\it Purpose:} analytical computation of massless propagator-type
    diagrams up to three loops
  \item {\it Algorithms:} integration-by-parts (see Section~\ref{sec::IP})
  \item {\it Source:} {\tt SCHOONSCHIP}
  \end{itemize}

%- }}}
%- {{{ MINOS:

\item {\tt MINOS} \cite{minos}:
  \begin{itemize}
  \item{\it Purpose:} controlling facility for the calculation of
    processes with a huge number of diagrams
  \item{\it Source:} {\tt C}
  \end{itemize}

%- }}}
%- {{{ oneloop:

\item {\tt oneloop} \cite{oneloop}:
  \begin{itemize}
  \item{\it Availability:} {\tt http://wwwthep.physik.uni-mainz.de/\~\/xloops}
  \item{\it Purpose:} algebraic and numerical calculation of one-loop diagrams
  \item{\it Source:} {\tt MAPLE}
  \end{itemize}

%- }}}
%- {{{ PHACT:

\item{\tt PHACT} \cite{phact}:
  \begin{itemize}
  \item{\it Purpose:} numerical computation of tree processes up to four
    particles in the final state
  \item {\it Algorithms:} helicity amplitudes by means of
    \cite{BalMai95}
  \item{\it Source:} {\tt FORTRAN}
  \end{itemize}
  
%- }}}
%- {{{ ProcessDiagram:

\item {\tt ProcessDiagram} \cite{ProcDia}:
  \begin{itemize}
  \item{\it Purpose:} computation of one- and two-loop bubble diagrams
    allowing for several different masses
  \item {\it Source:} {\tt Mathematica}
  \end{itemize}

%- }}}
%- {{{ PVEGAS:

\item{\tt PVEGAS} \cite{pvegas}: parallel version of {\tt VEGAS}
  \begin{itemize}
  \item{\it Availability:} {\tt
      ftp://ftpthep.physik.uni-mainz.de/pub/pvegas/}
    \item{\it Source:} {\tt C}
  \end{itemize}
  
%- }}}
%- {{{ RECURSOR:

\item {\tt RECURSOR} \cite{recursor}:
  \begin{itemize}
  \item{\it Purpose:} analytical computation of massive three-loop tadpole
    integrals
  \item {\it Algorithms:} integration-by-parts (see Section~\ref{sec::IP})
  \item {\it Source:} {\tt REDUCE}
  \end{itemize}

%- }}}
%- {{{ s2lse:

\item{\tt s2lse} \cite{Bauetal}:
  \begin{itemize}
  \item{\it Availability:} {\tt
      ftp://ftp.physik.uni-wuerzburg.de/pub/hep/index.html}
  \item{\it Purpose:} numerically evaluate integral
    representations for scalar two-loop self-energy integrals
  \item{\it Source:} {\tt C}
  \item{\it Preferably combined with:} {\tt TwoCalc}
  \end{itemize}

%- }}}
%- {{{ SHELL2:

\item {\tt SHELL2} \cite{SHELL2}:
  \begin{itemize}
  \item {\it Availability:} CPC Program Library
  \item{\it Purpose:} computation of propagator-type on-shell integrals up to
    two loops
  \item {\it Algorithms:} integration-by-parts (see Section~\ref{sec::IP})
  \item {\it Source:} {\tt FORM}
  \end{itemize}

%- }}}
%- {{{ SIXPHACT:

\item {\tt SIXPHACT} \cite{sixphact}:
  extension of {\tt PHACT} to six particles in the final state

%- }}}
%- {{{ SLICER:

\item {\tt SLICER} \cite{slicer}:
  \begin{itemize}
  \item{\it Purpose:} analytical computation of massless propagator-type
    diagrams up to three loops
  \item {\it Algorithms:} integration-by-parts (see Section~\ref{sec::IP}) 
  \item {\it Source:} {\tt REDUCE}
  \end{itemize}

%- }}}
%- {{{ SPRING:

\item{\tt SPRING} \cite{BASES/SPRING}:
  \begin{itemize}
  \item{\it Purpose:} event generation
  \item{\it Source:} {\tt FORTRAN}
  \end{itemize}

%- }}}
%- {{{ TARCER:

\item {\tt TARCER} \cite{MerSch98}:
  \begin{itemize}
  \item {\it Availability:} {\tt http://www.mertig.com/tarcer/}
  \item{\it Purpose:} tensor reduction of two-loop propagator-type
    integrals and reduction to a set of basic integrals
  \item {\it Algorithms:} tensor reduction by shifting the space-time
      dimension (see Section~\ref{sec::tredtar})
  \item {\it Source:} {\tt Mathematica}
  \end{itemize}

%- }}}
%- {{{ TLAMM:

\item {\tt TLAMM} \cite{tlamm}:
  \begin{itemize}
  \item{\it Purpose:} automatic evaluation of two-loop vertex diagrams
  \item{\it Source:} {\tt C}
  \end{itemize}

%- }}}
%- {{{ TRACER:

\item {\tt TRACER} \cite{tracer}:
  \begin{itemize}
  \item{\it Purpose:} Dirac trace calculations in {\tt Mathematica},
    optionally with 't~Hooft-Veltman or naive anti-commuting $\gamma_5$
  \item {\it Source:} {\tt Mathematica}
  \end{itemize}

%- }}}
%- {{{ TwoCalc:

\item {\tt TwoCalc} \cite{WeiSchBoe94}:
  \begin{itemize}
  \item{\it Availability:} upon request from the author
  \item{\it Purpose:} reduction of two-loop propagator diagrams to 
    a set of basis integrals
  \item{\it Algorithms:} two-loop tensor reduction by means of
    \cite{WeiSchBoe94}
  \item{\it Source:} {\tt Mathematica}
  \item{\it Uses:} {\tt FeynCalc}
  \item{\it Preferably combined with:}  {\tt FeynArts}, {\tt s2lse},
    {\tt master}
  \end{itemize}

%- }}}
%- {{{ QGRAF:

\item {\tt QGRAF} \cite{Nog93}:
  \begin{itemize}
  \item{\it Availability:} {\tt ftp://gtae2.ist.utl.pt/pub/qgraf/}
  \item{\it Purpose:} efficiently generate multi-loop Feynman diagrams in
    symbolic notation
  \item{\it Source:} {\tt FORTRAN}
  \end{itemize}

%- }}}
%- {{{ VEGAS:

\item{\tt VEGAS} \cite{VEGAS}:
  \begin{itemize}
  \item{Availability:} see, e.g.~\cite{NumRecBook}
  \item{\it Purpose:} adaptive multi-dimensional integration
  \item{\it Source:} {\tt FORTRAN}
  \end{itemize}
  
%- }}}
%- {{{ WPHACT:

\item {\tt WPHACT} \cite{wphact}: extension of {\tt PHACT} to $W$ and
  Higgs physics
  \begin{itemize}
  \item {\it Availability:}
    {\tt http://www.to.infn.it/\~\/ballestr/wphact/}
  \end{itemize}

%- }}}
%- {{{ XLOOPS:

\item {\tt XLOOPS} \cite{XLOOPS}:
  \begin{itemize}
  \item{\it Availability:} {\tt
      http://wino.physik.uni-mainz.de/\~\/xloops/}
  \item{\it Purpose:} compute one- and two-loop diagrams using
    X-interface
  \item{\it Algorithms:} parallel space technique \cite{CzaKilKre95}
  \item{\it Uses:} {\tt PVEGAS}, {\tt oneloop}
  \item{\it Source:} {\tt MAPLE}, {\tt Tcl/Tk}
  \end{itemize}
\end{itemize}

%- }}}

%- }}}

\setlength{\baselineskip}{\savebaselineskip}




