39 #include "sinfo_fft_base.h"
40 #include "sinfo_globals.h"
112 register unsigned i2=0;
113 register unsigned i3=0;
122 for (idim = 0; idim < ndim; ++idim) {
126 for (idim = ndim - 1; idim >= 0; --idim) {
134 for (i2 = 0; i2 < ip2; i2 += nprev) {
137 for (i1 = i2; i1 < i2 + nprev; ++i1) {
139 for (i3 = i1; i3 < ntot; i3 += ip2) {
140 i3rev = i3 + i2rev - i2;
142 data[i3] = data[i3rev];
152 }
while (ibit >= nprev && !(ibit & i2rev));
157 for (ifp1 = nprev; ifp1 < ip2; ifp1 <<= 1) {
160 theta = isign * 2.0 * PI_NUMB / (ifp2 / nprev);
161 wp.x = sin(0.5 * theta);
168 for (i3 = 0; i3 < ifp1; i3 += nprev) {
170 for (i1 = i3; i1 < i3 + nprev; ++i1) {
172 for (i2 = i1; i2 < ntot; i2 += ifp2) {
179 data[k2].x = data[i2].x - (temp.x =
180 (t1 = w.x * wt.x) - (t2 = w.y * wt.y));
181 data[k2].y = data[i2].y - (temp.y =
182 (w.x + w.y) * (wt.x + wt.y) - t1 - t2);
183 data[i2].x += temp.x;
184 data[i2].y += temp.y;
190 w.x += (t1 = w.x * wp.x) - (t2 = w.y * wp.y);
191 w.y += (wtemp + w.y) * (wp.x + wp.y) - t1 - t2;
221 sinfo_is_power_of_2(
int p)
231 c = (float)(log((
double)p) / log(2.0)) ;
232 if (c == (
float)((int)c)) {