All of the chirp generation routines,
in particular the ubiquitous `make_filters()`,
compute what has come to be
known as **``restricted'' post-Newtonian chirps**.
This means they include all post-Newtonian corrections
(up to the specified order)
in the phase evolution, but only the dominant quadrupole
amplitude.

The routines are flexible in the sense that they have a number
of *run-time* options available for choosing the post-Newtonian
order of the phase calculations, or choosing whether or not
to include spin effects.
We have also isolated those parts of the code where the messy
post-Newtonian coefficients appear;
thus the routines may be
easily modified to include yet higher-order post-Newtonian terms as
they become available.

The post-Newtonian equations for the orbital phase evolution are notoriously ill-behaved [10,11] as the binary system nears coalescence. In this regime the expansion parameters [namely the relative velocity of the bodies and/or the field strength ] used in the derivation are comparable to unity. In post-Newtonian calculations higher orders such as post-Newtonian terms have been discarded. Because of this truncation, quantities that are are positive definite in an exact calculation (say the energy-loss rate, or the time derivative of the orbital frequency) often become negative in their post-Newtonian expansion when the orbital separation becomes small. When this happens you are using a post-Newtonian expression in a regime where its validity is questionable. This is cause for concern, and it may be cause for terminating a chirp calculation; but, it need not crash your code. A full-scale gravitational-wave search will need to compute chirps over a broad range of parameters, virtually assuring that any post-Newtonian chirp generator will be pushed into a region of parameter space where it doesn't belong. These routines are designed to traverse these dangerous regions of parameter space as well as possible and gently warn the user of the dangers encountered. The calling routines may wish to act on the warnings coming from the chirp generator. For example a severe warning may prompt the calling routine to discard a given filter from a data search, because the second post-Newtonian calculation of the chirp is so dubious that it can't give meaningful results.

In the next several sections we detail the use of three routines used
to compute the ``chirp'' of a coalescing binary system. The first
routine we describe is `phase_frequency()`. This is the
underlying routine for the other chirp routines. Given a set of
parameters (*e.g.* the two masses, and the upper and lower cut-off
frequency for the chirp) it returns the orbital phase and orbital
frequency evolution as a function of time. Next we describe `chirp_filter()` which returns two (unnormalized) chirp signals. This
routine can be used for wholesale production of a bank of templates for
a coalescing binary search.