FormCalc is a Mathematica package for the calculation of tree-level and one-loop Feynman diagrams. It reads diagrams generated with FeynArts and returns the results in a way well suited for further numerical and analytical evaluation. FormCalc can in fact write out a complete Fortran (or C) subroutine to compute the squared matrix element for a given process. In addition to a comprehensive manual, several demo calculations are included in the FormCalc distribution, which show how the programs are used.

The following simplifications are performed by FormCalc:

- indices are contracted as far as possible,
- fermion traces are evaluated,
- open fermion chains are simplified using the Dirac equation,
- color structures are simplified using the
*SU(N)*algebra, - the tensor reduction is done,
- local terms (the remnants of divergent integrals) are added,
- the results are partially factored,
- abbreviations are introduced.

The output is in general a linear combination of loop integrals with prefactors that contain model parameters, kinematic variables, and abbreviations introduced by FormCalc. Such abbreviations are introduced for spinor chains, scalar products of vectors, and epsilon tensors contracted with vectors. A term in the output could for instance look like

The automatic introduction of abbreviations by FormCalc is a very important feature which can drastically reduce the size of an amplitude, particularly so because the abbreviations are nested in three levels. Here is an example:

FormCalc can treat ultraviolet divergences either with dimensional regularization or with constrained differential renormalization. At the one-loop level, the latter technique is equivalent to dimensional reduction. This means that FormCalc can process also supersymmetric diagrams.

The most common way to proceed with the analytical output is to convert it to a Fortran program. FormCalc has a sophisticated Fortran code generator built in which can produce a subroutine to calculate the squared matrix element fully automatically. This subroutine has to be linked with driver programs which supply the necessary input parameters. Included in the FormCalc package are driver programs for computing cross-sections of 1 → 2, 2 → 2, and 2 → 3 processes. It is written in a very modular way so that it is fairly easy to adapt parts of it for other purposes.

Internally, FormCalc performs most of the hard work (e.g. working out fermionic traces) in FORM, by Jos Vermaseren. The concept is rather straightforward: the symbolic expressions of the diagrams are prepared in an input file for FORM, then FORM is run, and finally the results are read back into Mathematica. The interfacing is completely shielded from the user and is handled internally by the FormCalc functions. The following diagram shows schematically how FormCalc interacts with FORM:

FormCalc combines the speed of FORM with the powerful instruction set of Mathematica and the latter greatly facilitates further processing of the results. Owing to FORM's speed, FormCalc can process, for example, the 1000-odd one-loop diagrams of elastic W–W scattering in the Standard Model in less than a minute on an ordinary PC.

FormCalc has been published in
Comput. Phys. Commun. **118** (1999) 153
[hep-ph/9807565].

Subsequently implemented techniques and features are described in

- hep-ph/0210220 (parallelization and fermion chains),
- hep-ph/0406288 (features in version 4),
- hep-ph/0506201 (features in version 4.1),
- hep-ph/0601248 (features in version 5),
- hep-ph/0607049 (programming techniques),
- hep-ph/0611273 (Mathematica interface),
- arXiv:0708.3652 (features in version 5.3),
- arXiv:0901.1528 (features in version 6),
- arXiv:1112.0124 (features in version 7),
- arXiv:1210.2628 (features in version 7.5),
- arXiv:1309.1692 (implementation of the complex MSSM),
- arXiv:1310.0274 (features in version 8),
- arXiv:1407.0235 (features in version 8.4).
- arXiv:1604.04611 (features in version 9).

More information:

- Some lecture material including lectures on FeynArts and FormCalc:

Part 1. Introduction to Mathematica and FORM: Slides ⋅ Examples ⋅ Mathematica Primer

Part 2. Symbolic Programming Examples: Slides ⋅ Examples

Part 3. Numeric Programming Examples: Slides ⋅ Examples

Part 4. Using FeynArts and FormCalc: Slides ⋅ Examples - http://feynarts.de/hep-processes lists some calculations which have been performed with FormCalc.

The installation script gets you started quickly and easily.

- Download the shell script FeynInstall [6 kB].

(Use the right mouse button and "Save Link As...") - Make it executable with "
`chmod 755 FeynInstall`". - Run it in the directory in which you want the packages installed:
"
`./FeynInstall`". - The script separately prompts you for the installation of FeynArts, FormCalc, and LoopTools.
- Finally, it asks whether to include FeynArts and FormCalc in Mathematica's $Path.

Downloads (hover over download link for MD5):

- FormCalc-9.10.tar.gz [32.07 MB] 30 Aug 2022
- Fixed RegisterAbbr issue on abbreviations of the form DiracChain[•]*Eps[•].
- Added way to implement crossing (beta).

- FormCalc-9.9.tar.gz [32.06 MB] of 11 Dec 2021
- FormCalc-9.8.tar.gz [27.8 MB] of 2 Sep 2019
- FormCalc-9.7.tar.gz [30.99 MB] of 8 Mar 2019
- FormCalc-9.6.tar.gz [31 MB] of 16 Apr 2018
- FormCalc-9.5.tar.gz [30.7 MB] of 20 Oct 2017
- FormCalc-9.4.tar.gz [25.87 MB] of 9 Jun 2016
- FormCalc-9.3.tar.gz [23.08 MB] of 22 Apr 2016
- FormCalc-9.2.tar.gz [23.49 MB] of 28 Jan 2016
- FormCalc-9.1.tar.gz [23.46 MB] of 4 Nov 2015
- FormCalc-9.0.tar.gz [31.09 MB] of 5 Sep 2015
- FormCalc-8.5.tar.gz [23 MB] of 29 Jun 2015
- FormCalc-8.4.tar.gz [22.85 MB] of 28 Apr 2015
- FormCalc-8.3.tar.gz [25.16 MB] of 14 Nov 2013
- FormCalc-8.2.tar.gz [15.57 MB] of 9 Sep 2013
- FormCalc-8.1.tar.gz [15.58 MB] of 27 Mar 2013
- FormCalc-8.0.tar.gz [9.09 MB] of 4 Mar 2013
- FormCalc-7.5.tar.gz [8.09 MB] of 9 Oct 2012
- FormCalc-7.4.tar.gz [9.07 MB] of 6 Jun 2012
- FormCalc-7.3.tar.gz [4.14 MB] of 12 Jan 2012
- FormCalc-7.2.tar.gz [4.12 MB] of 25 Aug 2011
- FormCalc-7.1.tar.gz [4.13 MB] of 4 Aug 2011
- FormCalc-7.0.tar.gz [4.11 MB] of 12 May 2011
- FormCalc-6.2.tar.gz [4.19 MB] of 11 Aug 2010
- FormCalc-6.1.tar.gz [4.19 MB] of 20 Jul 2010
- FormCalc-6.0.tar.gz [2.71 MB] of 12 Jun 2009
- FormCalc-5.4.tar.gz [2.73 MB] of 29 May 2008
- FormCalc-5.3.tar.gz [2.72 MB] of 28 Feb 2008
- FormCalc-5.2.tar.gz [451 kB] of 27 Feb 2007
- FormCalc-5.1.tar.gz [445 kB] of 24 Jan 2007
- FormCalc-5.0.tar.gz [441 kB] of 15 May 2006
- FormCalc-4.1.tar.gz [422 kB] of 15 May 2006
- FormCalc-4.0.tar.gz [403 kB] of 25 Jan 2005
- FormCalc-3.2.tar.gz [278 kB] of 31 Mar 2003
- FormCalc-3.1.tar.gz [230 kB] of 4 Mar 2002
- FormCalc-3.0.tar.gz [180 kB] of 21 Jun 2001
- FormCalc-2.0.tar.gz [219 kB] of 27 Jun 2000
- FormCalc-1.5.tar.gz [262 kB] of 3 Feb 2000
- FormCalc-1.4.tar.gz [260 kB] of 7 Jul 1999
- FormCalc-1.2.tar.gz [155 kB] of 11 Oct 1998

To run FormCalc, you need Mathematica 5 or above.

For FormCalc versions ≤ 5.2, you also need FORM 3.2 or above
(later versions have a copy of FORM included).

Installation notes for the impatient:

- unpack the
`FormCalc-`archive,*n.m*.tar.gz - change into the
`FormCalc-`directory,*n.m* - run "
`./compile`" to compile the programs needed by FormCalc.

To link the Fortran code generated by FormCalc, you also need the LoopTools library.

More detailed instructions are given in the manual contained in the
FormCalc distribution.

You can obtain the manual of the current
version here.

Problems with FormCalc? See the troubleshooting page before submitting a bug report.

The program FormGet is a spin-off from FormCalc. It contains just the code for reading FORM output files into Mathematica, but does not perform any simplifications like ReadForm does. More specifically, FormGet does two things: it translates the FORM syntax into Mathematica's InputForm, and it wraps a function called "bracket" around terms which are collected as a result of FORM's bracket command, i.e. FormGet preserves the structure of the FORM output.

The companion tool FortranGet reads the expressions in a Fortran 77 program into Mathematica.

Download FormGet.tm [11 kB]

Download FortranGet.tm [7 kB]

Installation instructions and usage information is given in the comments at the beginning of the source code.

More comprehensive, the FormRun package provides a Mathematica function which takes a Mathematica expression, sends it to FORM, and reads the results back. It allows to specify extra FORM declarations and commands.

Download FormRun-1.0.tar.gz [6.03 MB] of 6 Jun 2019

Thanks for looking in.

Please send bug reports, suggestions, fan mail, etc. to Thomas Hahn, hahn@feynarts.de.

Related packages: FeynArts, LoopTools, FeynCalc, FORM.

Note: FormCalc is a registered trademark of Schörghuber
Spezialtüren ;-) who have kindly allowed me to keep the name of the
program.

If you came here looking for special doors, please go to their fine
website www.formcalc.de.

This site and the programs offered here are not commercial.
FormCalc is and will stay an open-source package and free of charge.

If you want to use FormCalc in a commercial application, make sure
you understand the GNU
Lesser General Public License under which FormCalc is distributed.

FormCalc is being developed at the
Max Planck Institute for Physics
in Munich.

Data protection statement and Imprint

Last update: 30 Aug 22 Thomas Hahn