  We describe BlackHat, an automated C++ program for calculating one-loop
amplitudes, and the techniques used in its construction. These include the
unitarity method and on-shell recursion. The other ingredients are compact
analytic formulae for tree amplitudes for four-dimensional helicity states. The
program computes amplitudes numerically, using analytic formulae only for the
tree amplitudes, the starting point for the recursion, and the loop integrals.
We make use of recently developed on-shell methods for evaluating coefficients
of loop integrals, in particular a discrete Fourier projection as a means of
improving numerical stability. We illustrate the good numerical stability of
this approach by computing six-, seven- and eight-gluon amplitudes in QCD and
comparing against known analytic results.
