[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