  We have developed an algorithm for transferring radiation in
three-dimensional space. The algorithm computes radiation source and sink terms
using the Fast Fourier Transform (FFT) method, based on a formulation in which
the integral of any quantity (such as emissivity or opacity) over any volume
may be written in the classic convolution form. The algorithm is fast with the
computational time scaling as N (log N)^2, where N is the number of grid points
of a simulation box, independent of the number of radiation sources.
Furthermore, in this formulation one can naturally account for both local
radiation sources and diffuse background as well as any extra external sources,
all in a self-consistent fashion. Finally, the algorithm is completely stable
and robust.
  While the algorithm is generally applicable, we test it on a set of problems
that encompass a wide range of situations in cosmological applications,
demonstrating that the algorithm is accurate. These tests show that the
algorithm produces results that are in excellent agreement with analytic
expectations in all cases. In particular, radiation flux is guaranteed to
propagate in the right direction, with the ionization fronts traveling at the
correct speed with an error no larger than one cell for all the cases tested.
The total number of photons is conserved in the worst case at 10% level and
typically at 1-5% level over hundreds of time steps. As an added advantage, the
accuracy of the results depends weakly on the size of the time step, with a
typical cosmological hydrodynamic time step being sufficient.
