2 ***********************************************************
3 $SNARK_Header: S N A R K 1 4 - A PICTURE RECONSTRUCTION PROGRAM $
4 $HeadURL: svn://dig.cs.gc.cuny.edu/snark/trunk/src/snark/fft2p.cpp $
5 $LastChangedRevision: 85 $
6 $Date: 2014-07-02 16:07:08 -0400 (Wed, 02 Jul 2014) $
8 ***********************************************************
10 fft2p.cpp,v 1.2 2008/08/25 16:11:08 jklukowska Exp
12 THE SUBROUTINES FFT2P , FTODD , UNKPS ARE FAST FOUTIER ROUTINES.
13 THE SUBROUTINE SNFFT ,DESCRIBED IN THE SNARK05 MANUAL , MAKES
14 USE OF THESE SUBROUTINES.
15 THE SUBROUTINES HAVE BEEN TAKEN FROM
16 POLGE,R.J., AND BHAGAVAN,B.K., EFFICIENT FAST FOURIER TRANSFORM
17 PROGRAMS FOR ARBITRARY FACTORS WITH ONE STEP LOOP UNSCRAMBLING,
18 IEEE TRANSACTIONS ON COMPUTERS, MAY 1976.
74 //dovirt = virt && (istep > 1);
76 tpis = ((REAL) 2.0) * Consts.pi / ((REAL) invdir);
83 for (k = 0; k < nipf; k++)
92 n = (1 << (m - mc)) * ir;
100 v[0] = (REAL) cos(fi);
101 v[1] = (REAL) sin(fi);
110 for (j = 0; j < sk; j++)
112 for (k = j; k < n; k += nk)
119 for (l = 0; l < imax; l++)
125 CA(xs, 0, 0)= CA(x, 0, index1);
126 CA(xs, 1, 0)= CA(x, 1, index1);
128 CA(x, 0, index1)+= CA(x, 0, index2);
129 CA(x, 1, index1)+= CA(x, 1, index2);
131 CA(xs, 0, 0)-= CA(x, 0, index2);
132 CA(xs, 1, 0)-= CA(x, 1, index2);
134 CA(x, 0, index2)= vg[0] * CA(xs, 0, 0) - vg[1] * CA(xs, 1, 0);
135 CA(x, 1, index2)= vg[0] * CA(xs, 1, 0) + vg[1] * CA(xs, 0, 0);
138 temp = vg[0] * v[0] - vg[1] * v[1];
139 vg[1] = vg[0] * v[1] + vg[1] * v[0];
143 temp = (v[0] - v[1]) * (v[0] + v[1]);
144 v[1] = ((REAL) 2.0) * v[0] * v[1];
160 ftodd(imax, istep, xs, x, n, &nk, v, tpis, nipf, ipf, mc, k4m4, nipfx, ipfx, ipu, ix, &nfixp, vspt, t, virt);
168 unkps(imax, istep, xs, x, m, nipfx, 2, mc, ir, n, ix, ipu, nfixp, k4m4, virt);