[Scipy-svn] r4289 - branches/refactor_fft/scipy/fftpack/src/fftpack

scipy-svn at scipy.org scipy-svn at scipy.org
Mon May 12 09:49:43 EDT 2008


Author: cdavid
Date: 2008-05-12 08:49:37 -0500 (Mon, 12 May 2008)
New Revision: 4289

Added:
   branches/refactor_fft/scipy/fftpack/src/fftpack/common.h
Modified:
   branches/refactor_fft/scipy/fftpack/src/fftpack/drfft.cxx
Log:
Put drfft cache code in separate file for fftpack backend, for future sharing with convolve.

Added: branches/refactor_fft/scipy/fftpack/src/fftpack/common.h
===================================================================
--- branches/refactor_fft/scipy/fftpack/src/fftpack/common.h	2008-05-12 13:46:14 UTC (rev 4288)
+++ branches/refactor_fft/scipy/fftpack/src/fftpack/common.h	2008-05-12 13:49:37 UTC (rev 4289)
@@ -0,0 +1,74 @@
+#ifndef _SCIPY_FFTPACK_FFTPACK_COMMON_H
+#define _SCIPY_FFTPACK_FFTPACK_COMMON_H
+
+#include <new>
+
+#include "cycliccache.h"
+
+namespace fft {
+
+extern "C" {
+extern void F_FUNC(dfftf, DFFTF) (int *, double *, double *);
+extern void F_FUNC(dfftb, DFFTB) (int *, double *, double *);
+extern void F_FUNC(dffti, DFFTI) (int *, double *);
+};
+
+class RFFTPackCacheId : public CacheId {
+        public:
+                RFFTPackCacheId(int n) : CacheId(n) {};
+};
+
+class RFFTPackCache: public Cache<RFFTPackCacheId> {
+        public:
+                RFFTPackCache(const RFFTPackCacheId& id);
+                virtual ~RFFTPackCache();
+
+                int compute_forward(double * inout) const;
+                int compute_backward(double * inout) const;
+
+        protected:
+                double* m_wsave;
+};
+
+RFFTPackCache::RFFTPackCache(const RFFTPackCacheId& id)
+:	Cache<RFFTPackCacheId>(id)
+{
+        int n = id.m_n;
+
+        m_wsave = (double *)malloc(sizeof(*m_wsave) * (2 * n + 15));
+        if (m_wsave == NULL) {
+                goto fail;
+        }
+
+        F_FUNC(dffti, DFFTI)(&n, m_wsave);
+
+        return;
+
+fail:
+	throw std::bad_alloc();
+}
+
+RFFTPackCache::~RFFTPackCache()
+{
+        free(m_wsave);
+}
+
+int RFFTPackCache::compute_forward(double *inout) const 
+{
+        int n = m_id.m_n;
+
+        F_FUNC(dfftf, DFFTF)(&n, inout, m_wsave);
+        return 0;
+}
+
+int RFFTPackCache::compute_backward(double *inout) const 
+{
+        int n = m_id.m_n;
+
+        F_FUNC(dfftb, DFFTB)(&n, inout, m_wsave);
+        return 0;
+}
+
+};
+
+#endif

Modified: branches/refactor_fft/scipy/fftpack/src/fftpack/drfft.cxx
===================================================================
--- branches/refactor_fft/scipy/fftpack/src/fftpack/drfft.cxx	2008-05-12 13:46:14 UTC (rev 4288)
+++ branches/refactor_fft/scipy/fftpack/src/fftpack/drfft.cxx	2008-05-12 13:49:37 UTC (rev 4289)
@@ -1,78 +1,14 @@
 /*
- * Last Change: Sun May 11 09:00 PM 2008 J
+ * Last Change: Mon May 12 10:00 PM 2008 J
  *
  * FFTPACK implementation
  *
  * Original code by Pearu Peterson.
  */
-#include <new>
+#include "common.h"
 
-#include "cycliccache.h"
-
-extern "C" {
-extern void F_FUNC(dfftf, DFFTF) (int *, double *, double *);
-extern void F_FUNC(dfftb, DFFTB) (int *, double *, double *);
-extern void F_FUNC(dffti, DFFTI) (int *, double *);
-};
-
 using namespace fft;
 
-class RFFTPackCacheId : public CacheId {
-        public:
-                RFFTPackCacheId(int n) : CacheId(n) {};
-};
-
-class RFFTPackCache: public Cache<RFFTPackCacheId> {
-        public:
-                RFFTPackCache(const RFFTPackCacheId& id);
-                virtual ~RFFTPackCache();
-
-                int compute_forward(double * inout) const;
-                int compute_backward(double * inout) const;
-
-        protected:
-                double* m_wsave;
-};
-
-RFFTPackCache::RFFTPackCache(const RFFTPackCacheId& id)
-:	Cache<RFFTPackCacheId>(id)
-{
-        int n = id.m_n;
-
-        m_wsave = (double *)malloc(sizeof(*m_wsave) * (2 * n + 15));
-        if (m_wsave == NULL) {
-                goto fail;
-        }
-
-        F_FUNC(dffti, DFFTI)(&n, m_wsave);
-
-        return;
-
-fail:
-	throw std::bad_alloc();
-}
-
-RFFTPackCache::~RFFTPackCache()
-{
-        free(m_wsave);
-}
-
-int RFFTPackCache::compute_forward(double *inout) const 
-{
-        int n = m_id.m_n;
-
-        F_FUNC(dfftf, DFFTF)(&n, inout, m_wsave);
-        return 0;
-}
-
-int RFFTPackCache::compute_backward(double *inout) const 
-{
-        int n = m_id.m_n;
-
-        F_FUNC(dfftb, DFFTB)(&n, inout, m_wsave);
-        return 0;
-}
-
 static CacheManager<RFFTPackCacheId, RFFTPackCache> rfftpack_cmgr(10);
 
 static void drfft_fftpack(double *inout, int n, int direction, int howmany,




More information about the Scipy-svn mailing list