There isn't a great deal of point in just transforming data back and forth, unless it's to get a feel for the errors introduced by such a process. Usually one transforms into the Fourier domain in order to do something useful there. The obvious Fourier domain operations are multiplication (equivalent to a convolution operation in normal space), and multiplication by the complex conjugate (equivalent to a cross correlation in normal space).
Figaro provides a number of functions that operate on complex data to provide a complex result. The operations performed by these should be fairly obvious from their names: `cmplxmult', `cmplxdiv', `cmplxadd', `cmplxsub', and `cmplxconj'. The most useful will probably be `cmplxconj', which produces the complex conjugate of a complex data structure, and `cmplxmult', which performs the complex multiplication of two complex data structures.
For example, the cross-correlation function of two spectra may be determined crudely by transforming each, taking the complex conjugate of one, multiplying the two and transforming back. This is crude, because it omits any filtering and preparation of the data, but it will serve as a demonstration of the complex operations involved. If the two spectra in question are `spect1' and `spect2', then
ICL> r2cmplx spect1 cspect1 ICL> r2cmplx spect2 cspect2 ICL> fft cspect1 cspect1 ICL> fft cspect2 cspect2 ICL> cmplxconj cspect2 cspect2 ICL> cmplxmult cspect1 cspect2 cspect1 ICL> bfft cspect1 cspect1 ICL> cmplx2r cspect1 corrln
will produce a cross correlation function in `corrln'.
FIGARO A general data reduction system