/* 
   Performs an in-place Fourier transform of the vector. The results
   is stored in the so-called "half-complex" format (see
   http://www.fftw.org/fftw3_doc/The-Halfcomplex_002dformat-DFT.html
   for more information).

*/
static VALUE dvector_fft(VALUE self)
{
  long len;
  double * values = Dvector_Data_for_Write(self, &len);
  fftw_plan plan = fftw_plan_r2r_1d(len, values, values,
                                    FFTW_R2HC, FFTW_ESTIMATE);
  fftw_execute(plan);
  fftw_destroy_plan(plan);
  return self;
}