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

scipy-svn at scipy.org scipy-svn at scipy.org
Thu May 8 08:36:35 EDT 2008


Author: cdavid
Date: 2008-05-08 07:36:20 -0500 (Thu, 08 May 2008)
New Revision: 4248

Added:
   branches/refactor_fft/scipy/fftpack/src/fftw/drfft.cxx
   branches/refactor_fft/scipy/fftpack/src/fftw/zfftnd.cxx
Removed:
   branches/refactor_fft/scipy/fftpack/src/fftw/drfft.c
   branches/refactor_fft/scipy/fftpack/src/fftw/zfftnd.c
Modified:
   branches/refactor_fft/scipy/fftpack/setup.py
   branches/refactor_fft/scipy/fftpack/src/drfft.cxx
   branches/refactor_fft/scipy/fftpack/src/zfftnd.cxx
Log:
Change C->C++ extension for fftw2 implementation of zfftnd/drfft.

Modified: branches/refactor_fft/scipy/fftpack/setup.py
===================================================================
--- branches/refactor_fft/scipy/fftpack/setup.py	2008-05-08 12:26:26 UTC (rev 4247)
+++ branches/refactor_fft/scipy/fftpack/setup.py	2008-05-08 12:36:20 UTC (rev 4248)
@@ -34,8 +34,8 @@
         depends=['src/djbfft/zfft.cxx', 'src/fftw/zfft.cxx', 'src/fftpack/zfft.cxx',
             'src/fftw3/zfft.cxx', 'src/mkl/zfft.cxx',
             'src/djbfft/drfft.c', 'src/fftpack/drfft.cxx',
-            'src/fftw3/drfft.cxx', 'src/fftw/drfft.c',
-            'src/fftpack/zfftnd.cxx', 'src/fftw/zfftnd.c',
+            'src/fftw3/drfft.cxx', 'src/fftw/drfft.cxx',
+            'src/fftpack/zfftnd.cxx', 'src/fftw/zfftnd.cxx',
             'src/fftw3/zfftnd.cxx', 'src/mkl/zfftnd.c',
             ],
         include_dirs = ['src'],

Modified: branches/refactor_fft/scipy/fftpack/src/drfft.cxx
===================================================================
--- branches/refactor_fft/scipy/fftpack/src/drfft.cxx	2008-05-08 12:26:26 UTC (rev 4247)
+++ branches/refactor_fft/scipy/fftpack/src/drfft.cxx	2008-05-08 12:36:20 UTC (rev 4248)
@@ -41,7 +41,7 @@
         GEN_PUBLIC_API(fftw3)
     #endif
 #elif defined WITH_FFTW
-    #include "fftw/drfft.c"
+    #include "fftw/drfft.cxx"
     #ifndef WITH_DJBFFT
         GEN_PUBLIC_API(fftw)
     #endif

Deleted: branches/refactor_fft/scipy/fftpack/src/fftw/drfft.c
===================================================================
--- branches/refactor_fft/scipy/fftpack/src/fftw/drfft.c	2008-05-08 12:26:26 UTC (rev 4247)
+++ branches/refactor_fft/scipy/fftpack/src/fftw/drfft.c	2008-05-08 12:36:20 UTC (rev 4248)
@@ -1,70 +0,0 @@
-/*
- * Last Change: Wed Aug 01 07:00 PM 2007 J
- *
- * FFTW2 implementation
- *
- * Original code by Pearu Peterson.
- */
-
-GEN_CACHE(drfftw, (int n, int d, int flags)
-	  , int direction;
-	  int flags;
-	  rfftw_plan plan;
-	  double *ptr;, ((caches_drfftw[i].n == n) &&
-			 (caches_drfftw[i].direction == d) &&
-			 (caches_drfftw[i].flags == flags))
-	  , caches_drfftw[id].direction = d;
-	  caches_drfftw[id].flags = flags;
-	  caches_drfftw[id].plan = rfftw_create_plan(n,
-						     (d >
-						      0 ?
-						      FFTW_REAL_TO_COMPLEX
-						      :
-						      FFTW_COMPLEX_TO_REAL),
-						     flags);
-	  caches_drfftw[id].ptr =
-	  (double *) malloc(sizeof(double) * (n));,
-	  rfftw_destroy_plan(caches_drfftw[id].plan);
-	  free(caches_drfftw[id].ptr);, 10)
-
-static void drfft_fftw(double *inout, int n, int dir, int
-			howmany, int normalize)
-{
-    int i;
-    double *ptr = inout;
-    double *ptrc = NULL;
-    rfftw_plan plan = NULL;
-
-    i = get_cache_id_drfftw(n, dir, FFTW_IN_PLACE | FFTW_ESTIMATE);
-    plan = caches_drfftw[i].plan;
-    ptrc = caches_drfftw[i].ptr;
-
-    switch (dir) {
-    case 1:
-        for (i = 0; i < howmany; ++i, ptr += n) {
-            memcpy(ptrc, ptr, sizeof(double) * n);
-            rfftw(plan, 1, (fftw_real *) ptrc, 1, 1, NULL, 1, 1);
-            COPYRFFTW2STD(ptrc, ptr, n);
-        }
-        break;
-
-    case -1:
-        for (i = 0; i < howmany; ++i, ptr += n) {
-            COPYINVRFFTW2STD(ptr, ptrc, n);
-            rfftw(plan, 1, (fftw_real *) ptrc, 1, 1, NULL, 1, 1);
-            memcpy(ptr, ptrc, sizeof(double) * n);
-        }
-        break;
-
-    default:
-        fprintf(stderr, "drfft: invalid direction=%d\n", dir);
-    }
-
-    if (normalize) {
-        double d = 1.0 / n;
-        ptr = inout;
-        for (i = n * howmany - 1; i >= 0; --i) {
-            (*(ptr++)) *= d;
-        }
-    }
-}

Copied: branches/refactor_fft/scipy/fftpack/src/fftw/drfft.cxx (from rev 4244, branches/refactor_fft/scipy/fftpack/src/fftw/drfft.c)

Deleted: branches/refactor_fft/scipy/fftpack/src/fftw/zfftnd.c
===================================================================
--- branches/refactor_fft/scipy/fftpack/src/fftw/zfftnd.c	2008-05-08 12:26:26 UTC (rev 4247)
+++ branches/refactor_fft/scipy/fftpack/src/fftw/zfftnd.c	2008-05-08 12:36:20 UTC (rev 4248)
@@ -1,53 +0,0 @@
-/*
- * fftw2 backend for multi dimensional fft
- *
- * Original code by Pearu Peaterson
- *
- * Last Change: Thu Sep 06 05:00 PM 2007 J
- */
-
-GEN_CACHE(zfftnd_fftw, (int n, int *dims, int d, int flags)
-	  , int direction;
-	  int *dims;
-	  fftwnd_plan plan;, ((caches_zfftnd_fftw[i].n == n) &&
-			      (caches_zfftnd_fftw[i].direction == d) &&
-			      (equal_dims
-			       (n, caches_zfftnd_fftw[i].dims, dims)))
-	  , caches_zfftnd_fftw[id].direction = d;
-	  caches_zfftnd_fftw[id].n = n;
-	  caches_zfftnd_fftw[id].dims = (int *) malloc(sizeof(int) * n);
-	  memcpy(caches_zfftnd_fftw[id].dims, dims, sizeof(int) * n);
-	  caches_zfftnd_fftw[id].plan =
-	  fftwnd_create_plan(n, dims,
-			     (d > 0 ? FFTW_FORWARD : FFTW_BACKWARD),
-			     flags);,
-	  fftwnd_destroy_plan(caches_zfftnd_fftw[id].plan);
-	  free(caches_zfftnd_fftw[id].dims);, 10)
-
-
-extern void zfftnd_fftw(complex_double * inout, int rank,
-		       int *dims, int direction, int howmany,
-		       int normalize)
-{
-    int i, sz;
-    complex_double *ptr = inout;
-    fftwnd_plan plan = NULL;
-
-    sz = 1;
-    for (i = 0; i < rank; ++i) {
-	sz *= dims[i];
-    }
-    i = get_cache_id_zfftnd_fftw(rank, dims, direction,
-				 FFTW_IN_PLACE | FFTW_ESTIMATE);
-    plan = caches_zfftnd_fftw[i].plan;
-    for (i = 0; i < howmany; ++i, ptr += sz) {
-	fftwnd_one(plan, (fftw_complex *) ptr, NULL);
-    }
-    if (normalize) {
-	ptr = inout;
-	for (i = sz * howmany - 1; i >= 0; --i) {
-	    *((double *) (ptr)) /= sz;
-	    *((double *) (ptr++) + 1) /= sz;
-	}
-    }
-}

Copied: branches/refactor_fft/scipy/fftpack/src/fftw/zfftnd.cxx (from rev 4244, branches/refactor_fft/scipy/fftpack/src/fftw/zfftnd.c)

Modified: branches/refactor_fft/scipy/fftpack/src/zfftnd.cxx
===================================================================
--- branches/refactor_fft/scipy/fftpack/src/zfftnd.cxx	2008-05-08 12:26:26 UTC (rev 4247)
+++ branches/refactor_fft/scipy/fftpack/src/zfftnd.cxx	2008-05-08 12:36:20 UTC (rev 4248)
@@ -34,7 +34,7 @@
     #include "fftw3/zfftnd.cxx"
     GEN_PUBLIC_API(fftw3)
 #elif defined WITH_FFTW
-    #include "fftw/zfftnd.c"
+    #include "fftw/zfftnd.cxx"
     GEN_PUBLIC_API(fftw)
 #elif defined WITH_MKL
     #include "mkl/zfftnd.c"




More information about the Scipy-svn mailing list