[Scipy-svn] r4310 - in branches/refactor_fft/scipy/fftpack: . src/fftw

scipy-svn at scipy.org scipy-svn at scipy.org
Tue May 13 04:26:15 EDT 2008


Author: cdavid
Date: 2008-05-13 03:26:09 -0500 (Tue, 13 May 2008)
New Revision: 4310

Modified:
   branches/refactor_fft/scipy/fftpack/setup.py
   branches/refactor_fft/scipy/fftpack/src/fftw/api.h
   branches/refactor_fft/scipy/fftpack/src/fftw/convolve.cxx
Log:
fftw backend as a lib now works for convolve too.

Modified: branches/refactor_fft/scipy/fftpack/setup.py
===================================================================
--- branches/refactor_fft/scipy/fftpack/setup.py	2008-05-13 08:12:24 UTC (rev 4309)
+++ branches/refactor_fft/scipy/fftpack/setup.py	2008-05-13 08:26:09 UTC (rev 4310)
@@ -8,7 +8,7 @@
     from numpy.distutils.system_info import get_info
     config = Configuration('fftpack',parent_package, top_path)
 
-    backends = ['mkl', 'djbfft', 'fftw3', 'fftw', 'fftpack']
+    backends = ['mkl', 'djbfft', 'fftw3', 'fftw2', 'fftpack']
     info = dict([(k, False) for k in backends])
 
     djbfft_info = {}
@@ -20,17 +20,17 @@
     else:
         def has_optimized_backend():
             # Take the first in the list
-            for b in ['fftw3', 'fftw']:
+            for b in ['fftw3', 'fftw2']:
                 tmp = get_info(b)
                 if tmp:
-                    fft_opt_info = tmp
+                    opt = tmp
                     info[b] = True
-                    return True
+                    return opt
             return False
 
-        if not has_optimized_backend():
+        fft_opt_info = has_optimized_backend()
+        if not fft_opt_info:
             info['fftpack'] = True
-            fft_opt_info = {}
 
         djbfft_info = get_info('djbfft')
         if djbfft_info:
@@ -48,7 +48,7 @@
                               ['zfft.cxx', 'drfft.cxx', 'convolve.cxx']]
     backends_src['fftw3'] = [join('src/fftw3/', i) for i in 
                              ['zfft.cxx', 'drfft.cxx', 'zfftnd.cxx']]
-    backends_src['fftw'] = [join('src/fftw/', i) for i in 
+    backends_src['fftw2'] = [join('src/fftw/', i) for i in 
                              ['zfft.cxx', 'drfft.cxx', 'zfftnd.cxx']]
     backends_src['fftpack'] = [join('src/fftpack/', i) for i in 
                              ['zfft.cxx', 'drfft.cxx', 'zfftnd.cxx']]
@@ -70,9 +70,9 @@
     if info['djbfft']:
         build_backend('djbfft', [djbfft_info])
 
-    for b in ['fftw3', 'fftw']:
+    for b in ['fftw3', 'fftw2']:
         if info[b]:
-            build_backend(b, [djbfft_info, fft_opt_info])
+            build_backend(b, [fft_opt_info])
 
     if info['fftpack']:
         build_backend('fftpack', [])

Modified: branches/refactor_fft/scipy/fftpack/src/fftw/api.h
===================================================================
--- branches/refactor_fft/scipy/fftpack/src/fftw/api.h	2008-05-13 08:12:24 UTC (rev 4309)
+++ branches/refactor_fft/scipy/fftpack/src/fftw/api.h	2008-05-13 08:26:09 UTC (rev 4310)
@@ -3,6 +3,9 @@
 
 #include "fftpack.h"
 
+/*
+ * straight FFT api
+ */
 void drfft_fftw(double * inout, int n, int direction, int howmany, 
                   int normalize);
 
@@ -13,4 +16,15 @@
 			 int *dims, int direction, int howmany,
 			 int normalize);
 
+/*
+ * Convolution api
+ */
+void convolve_fftw(int n, double *inout, double *omega, int swap_real_imag);
+void convolve_z_fftw(int n, double *inout, double *omega_real, 
+                       double* omega_imag);
+
+void init_convolution_kernel_fftw(int n, double *omega, int d,
+				 double (*kernel_func) (int),
+				 int zero_nyquist);
+
 #endif

Modified: branches/refactor_fft/scipy/fftpack/src/fftw/convolve.cxx
===================================================================
--- branches/refactor_fft/scipy/fftpack/src/fftw/convolve.cxx	2008-05-13 08:12:24 UTC (rev 4309)
+++ branches/refactor_fft/scipy/fftpack/src/fftw/convolve.cxx	2008-05-13 08:26:09 UTC (rev 4310)
@@ -1,5 +1,10 @@
 #include <new>
 
+#include <rfftw.h>
+#include <fftw.h>
+
+#include "api.h"
+
 #include "cycliccache.h"
 
 using namespace fft;
@@ -117,7 +122,6 @@
 CacheManager<DRFFTWCacheId, DRFFTWCache> drfftw_cmgr(20);
 
 /**************** convolve **********************/
-static
 void convolve_fftw(int n,double* inout,double* omega,int swap_real_imag) 
 {
         DRFFTWCache *cache;
@@ -127,7 +131,6 @@
 }
 
 /**************** convolve **********************/
-static
 void convolve_z_fftw(int n,double* inout,double* omega_real,double* omega_imag) 
 {
         DRFFTWCache *cache;
@@ -136,7 +139,6 @@
         cache->convolve_z(inout, omega_real, omega_imag);
 }
 
-static
 void init_convolution_kernel_fftw(int n,double* omega, int d,
 			     double (*kernel_func)(int),
 			     int zero_nyquist) 




More information about the Scipy-svn mailing list