** Date Started: Dec 2000
**
** This is part of the CTSim program
-** Copyright (c) 1983-2001 Kevin Rosenberg
-**
-** $Id: fourier.h,v 1.7 2001/03/21 21:45:31 kevin Exp $
+** Copyright (c) 1983-2009 Kevin Rosenberg
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License (version 2) as
******************************************************************************/
#include <complex>
+#ifdef HAVE_FFTW
+#include <fftw3.h>
+#endif
class ImageFile;
static void shuffleFourierToNaturalOrder (ImageFile& im);
static void shuffleNaturalToFourierOrder (ImageFile& im);
+#ifdef HAVE_FFTW
+ static void shuffleFourierToNaturalOrder (fftw_complex* pc, const int n);
+ static void shuffleNaturalToFourierOrder (fftw_complex* pc, const int n);
+#endif
+
// Odd Number of Points
// Natural Frequency Order: -(n-1)/2...-1,0,1...(n-1)/2
// Fourier Frequency Order: 0, 1..(n-1)/2,-(n-1)/2...-1
// Natural Frequency Order: -n/2...-1,0,1...((n/2)-1)
// Fourier Frequency Order: 0,1...((n/2)-1),-n/2...-1
template<class T>
- static void shuffleNaturalToFourierOrder (T* pVector, const int n)
+ static void shuffleNaturalToFourierOrder (T* pVector, const int n)
{
T* pTemp = new T [n];
int i;
int i;
if (isOdd(n)) { // Odd
int iHalfN = (n - 1) / 2;
-
+
pTemp[iHalfN] = pVector[0];
for (i = 0; i < iHalfN; i++)
pTemp[i + 1 + iHalfN] = pVector[i + 1];
for (i = 0; i < iHalfN - 1; i++)
pTemp[i + iHalfN + 1] = pVector[i+1];
}
-
+
for (i = 0; i < n; i++)
pVector[i] = pTemp[i];
delete pTemp;