Changeset 16107 for trunk/Ohana/src/opihi/lib.data/fftold.c
- Timestamp:
- Jan 17, 2008, 8:41:08 AM (19 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/opihi/lib.data/fftold.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/lib.data/fftold.c
r16099 r16107 49 49 mmax = istep; 50 50 } 51 }52 53 void fftold_Nindices (float *Data, int N, int isign) {54 55 int n,ifp1,m,j,ipf2,i;56 double wtemp,wr,wpr,wpi,wi,theta;57 float tempr,tempi, *data;58 59 data = Data;60 n = N << 1;61 62 ip1 = 2;63 ip2 = n;64 i2rev = 0;65 for (i2 = 0; i2 < ip2; i2 += ip1) {66 if (i2 < i2ref) {67 FSWAP (data[i2rev], data[i2]);68 FSWAP (data[i2rev+1], data[i2+1]);69 }70 ibit = ip2 >> 1;71 while (ibit >= ip1 && i2rev >= ibit) {72 i2rev -= ibit;73 ibit >>= 1;74 }75 i2rev += ibit;76 }77 78 ifp1 = 2;79 while (ifp1 < ip2) {80 ifp2 = ifp1 << 1;81 theta = isign*6.28318530717959 / (2*ifp1/ip1);82 wtemp = sin(0.5*theta);83 wpr = -2.0*wtemp*wtemp;84 wpi = sin(theta);85 wr = 1.0;86 wi = 0.0;87 for (i3 = 0; i3 < ifp1; i3+=ip1) {88 // in the N-d version, this loop is broken into two loops89 for (i1 = i3; i1 < n; i1+=ipf2) {90 k1 = i1;91 k2 = k1 + ifp1;92 tempr = wr*data[k2] - wi*data[k2+1];93 tempi = wr*data[k2+1] + wi*data[k2];94 data[k2] = data[k1] - tempr;95 data[k2+1] = data[k1+1] - tempi;96 data[k1] += tempr;97 data[k1+1] += tempi;98 }99 wr = (wtemp = wr)*wpr - wi*wpi+wr;100 wi = wi*wpr + wtemp*wpi + wi;101 }102 ifp1 = ifp2;103 }104 105 51 } 106 52
Note:
See TracChangeset
for help on using the changeset viewer.
