int qn_ring(float iota, float beta, float eps, float M, float a, int l, int m, float dt, float atten, int max, float **plusPtr, float **crossPtr)This routine is used to compute the ``'' and ``'' polarizations of the gravitational waveform, , produced by a black hole ringdown at a distance . To obtain the waveforms at a distance , multiply the result by . The arguments are:

`iota`: Input. The polar angle (inclination), (in radians), of the sky position of the observer with respect to the (positive) spin axis of the black hole, .`beta`: Input. The azimuth, (in radians), of the sky position of the observer with respect to the axis of the perturbation at the start time. ( .)`eps`: Input. The fraction of the total mass lost in gravitational radiation from the particular mode. ( .)`M`: Input. The mass of the black hole in solar masses.`a`: Input. The dimensionless angular momentum parameter of the Kerr black hole, , which is negative if the black hole is spinning clockwise about the axis (see figure ).`l`: Input. The mode integer . ( )`m`: Input. The mode integer . ( )`dt`: Input. The time interval, in seconds, between successive data points in the returned waveforms.`atten`: Input. The attenuation level, in dB, at which the routine will terminate calculation of the waveforms. I.e., the routine will terminate when the amplitude, , falls below the level .`max`: Input. The maximum number of data points to be returned in the waveforms.`plusPtr`: Input/Output. A pointer to an array which, on return, contains the waveform sampled at intervals`dt`. If the array has the value`NULL`on input, the routine allocates an amount of memory to`*plusPtr`to hold`max`elements.`crossPtr`: Input/Output. A pointer to an array which, on return, contains the waveform sampled at intervals`dt`. If the array has the value`NULL`on input, the routine allocates an amount of memory to`*crossPtr`to hold`max`elements.

The routine `qn_ring()` returns the number of data points that were
written to the arrays `(*plusPtr)[]` and `(*crossPtr)[]`; this
is either the number specified by the input parameter `max` or the
number of points computed when the waveform was attenuated by the threshold
`atten`. The eigenvalues are obtained from the function
`qn_eigenvalues()`. The waveform is
then computed using
with
given by
equation (). The spheroidal wave function
is obtained from the function `sw_spheroid()`.

- Author: Jolien Creighton, jolien@tapir.caltech.edu