Function rgsl::fft::real_radix2::unpack[][src]

pub fn unpack(
    halfcomplex_coefficient: &mut [f64],
    complex_coefficient: &mut [f64],
    stride: usize,
    n: usize
) -> Value
Expand description

This function converts halfcomplex_coefficient, an array of half-complex coefficients as returned by gsl_fft_real_radix2_transform, into an ordinary complex array, complex_coefficient. It fills in the complex array using the symmetry z_k = z_{n-k}^* to reconstruct the redundant elements. The algorithm for the conversion is,

complex_coefficient[0].real
  = halfcomplex_coefficient[0];
complex_coefficient[0].imag
  = 0.0;

for (i = 1; i < n - i; i++)
  {
    double hc_real
      = halfcomplex_coefficient[i*stride];
    double hc_imag
      = halfcomplex_coefficient[(n-i)*stride];
    complex_coefficient[i*stride].real = hc_real;
    complex_coefficient[i*stride].imag = hc_imag;
    complex_coefficient[(n - i)*stride].real = hc_real;
    complex_coefficient[(n - i)*stride].imag = -hc_imag;
  }

if (i == n - i)
  {
    complex_coefficient[i*stride].real
      = halfcomplex_coefficient[(n - 1)*stride];
    complex_coefficient[i*stride].imag
      = 0.0;
  }