NINJA: Automated integrand reduction via Laurent expansion for one-loop amplitudes

Tiziano Peraro*

*Corresponding author for this work

Research output: Contribution to journalArticlepeer-review


We present the public C++ library NiNjA, which implements the Integrand Reduction via Laurent Expansion method for the computation of one-loop integrals. The algorithm is suited for applications to complex one-loop processes.

Program summary

Program title: Ninja

Catalogue identifier: AETO_v1_0

Program summary URL:

Program obtainable from: CPC Program Library, Queen's University, Belfast, N. Ireland

Licensing provisions: GNU General Public License, version 3

No. of lines in distributed program, including test data, etc.: 74303

No. of bytes in distributed program, including test data, etc.: 530944

Distribution format: tar.gz

Programming language: C++.

Computer: Any computer with a compliant C++ compiler.

Operating system: Unix-like (tested on Linux and Mac OS).

RAM: Several thousands of bytes (it can vary depending on the complexity of the computation)

Classification: 4.4, 11.1.

External routines: A library of one-loop Master Integrals:

OneLOop, LoopTools, or any other library implementing a suitable interface

Nature of problem:

Computation of one-loop integrals contributing to scattering amplitudes.

Solution method:

Semi-numerical implementation of the integrand reduction via Laurent expansion, using a simplified polynomial division algorithm.

Running time:

Depending on the number of integrals and their complexity, between less than a millisecond up to several seconds per phase-space point, for the computation of a full amplitude. (C) 2014 Elsevier B.V. All rights reserved.

Original languageEnglish
Pages (from-to)2771-2797
Number of pages27
JournalComputer Physics Communications
Issue number10
Publication statusPublished - Oct 2014


  • One-loop computations
  • Integrand reduction

Cite this