46 for (i = 0; i <
n; i++)
48 data[stride*
i] *= norm;
76 GSL_ERROR (
"n is not a power of 2", GSL_EINVAL);
85 p =
n; q = 1 ; p_1 =
n/2 ;
87 for (i = 1; i <=
logn; i++)
93 for (b = 0; b <
q; b++)
98 const ATOMIC t0_real = z0 + z1 ;
99 const ATOMIC t1_real = z0 - z1 ;
101 VECTOR(data,stride,b*p) = t0_real;
102 VECTOR(data,stride,b*p + p_1) = t1_real ;
117 for (a = 1; a < (
p_1)/2; a++)
122 const ATOMIC tmp_real = w_real - s * w_imag - s2 * w_real;
123 const ATOMIC tmp_imag = w_imag + s * w_real - s2 * w_imag;
128 for (b = 0; b <
q; b++)
137 ATOMIC t0_real = z0_real + z1_real;
138 ATOMIC t0_imag = z0_imag + z1_imag;
142 ATOMIC t1_real = z0_real - z1_real;
143 ATOMIC t1_imag = z0_imag - z1_imag;
145 VECTOR(data,stride,b*p + a) = t0_real ;
146 VECTOR(data,stride,b*p + p_1 - a) = t0_imag ;
148 VECTOR(data,stride,b*p + p_1 + a) = (w_real * t1_real - w_imag * t1_imag) ;
149 VECTOR(data,stride,b*p + p - a) = (w_real * t1_imag + w_imag * t1_real) ;
155 for (b = 0; b <
q; b++) {
156 VECTOR(data,stride,b*p + p_1/2) *= 2 ;
157 VECTOR(data,stride,b*p + p_1 + p_1/2) *= -2 ;
#define VECTOR(a, stride, i)
int const size_t const size_t n
int FUNCTION(gsl_fft_halfcomplex, radix2_backward)(BASE data[]
static int fft_binary_logn(const size_t n)