IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 17, 2008, 8:41:08 AM (19 years ago)
Author:
eugene
Message:

converting fft and fftn to code from Jones, with Magnier version of multi-dim

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/lib.data/fftold.c

    r16099 r16107  
    4949    mmax = istep;
    5050  }
    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 loops
    89       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 
    10551}
    10652
Note: See TracChangeset for help on using the changeset viewer.