[Scipy-svn] r3224 - trunk/Lib/fftpack/src
scipy-svn at scipy.org
scipy-svn at scipy.org
Wed Aug 8 02:46:33 EDT 2007
Author: cdavid
Date: 2007-08-08 01:46:12 -0500 (Wed, 08 Aug 2007)
New Revision: 3224
Modified:
trunk/Lib/fftpack/src/zfftnd.c
Log:
Forgot to remove unused, older code for multi dimensional fft
Modified: trunk/Lib/fftpack/src/zfftnd.c
===================================================================
--- trunk/Lib/fftpack/src/zfftnd.c 2007-08-08 06:39:47 UTC (rev 3223)
+++ trunk/Lib/fftpack/src/zfftnd.c 2007-08-08 06:46:12 UTC (rev 3224)
@@ -43,177 +43,3 @@
#include "zfftnd_fftpack.c"
GEN_PUBLIC_API(fftpack)
#endif
-
-#if 0
-/**************** INTEL MKL **************************/
-#ifdef WITH_MKL
-long* convert_dims(int n, int *dims)
-{
- long * ndim;
- int i;
- ndim = (long*)malloc(sizeof(long)*n);
- for(i=0;i<n;i++){ ndim[i] = (long)dims[i];}
- return ndim;
-}
-
-GEN_CACHE(zmklfftnd,(int n,int *dims)
- ,DFTI_DESCRIPTOR_HANDLE desc_handle;
- int *dims;
- long *ndims;
- ,((caches_zmklfftnd[i].n==n) &&
- (equal_dims(n,caches_zmklfftnd[i].dims,dims)))
- ,caches_zmklfftnd[id].ndims = convert_dims(n, dims);
- caches_zmklfftnd[id].n = n;
- caches_zmklfftnd[id].dims = (int*)malloc(sizeof(int)*n);
- memcpy(caches_zmklfftnd[id].dims,dims,sizeof(int)*n);
- DftiCreateDescriptor(&caches_zmklfftnd[id].desc_handle, DFTI_DOUBLE, DFTI_COMPLEX, (long)n, caches_zmklfftnd[id].ndims);
- DftiCommitDescriptor(caches_zmklfftnd[id].desc_handle);
- ,DftiFreeDescriptor(&caches_zmklfftnd[id].desc_handle);
- free(caches_zmklfftnd[id].dims);
- free(caches_zmklfftnd[id].ndims);
- ,10)
-
-/**************** FFTW3 *****************************/
-#elif defined WITH_FFTW3
-/* Don't worry about caching for fftw3 - plans take specific arrays and
- * keeping around a lot of memory for such a small speed up isn't
- * worth it.
- */
-/**************** FFTW2 *****************************/
-#elif defined WITH_FFTW
-GEN_CACHE(zfftwnd,(int n,int *dims,int d,int flags)
- ,int direction;
- int *dims;
- fftwnd_plan plan;
- ,((caches_zfftwnd[i].n==n) &&
- (caches_zfftwnd[i].direction==d) &&
- (equal_dims(n,caches_zfftwnd[i].dims,dims)))
- ,caches_zfftwnd[id].direction = d;
- caches_zfftwnd[id].n = n;
- caches_zfftwnd[id].dims = (int*)malloc(sizeof(int)*n);
- memcpy(caches_zfftwnd[id].dims,dims,sizeof(int)*n);
- caches_zfftwnd[id].plan = fftwnd_create_plan(n,dims,
- (d>0?FFTW_FORWARD:FFTW_BACKWARD),flags);
- ,fftwnd_destroy_plan(caches_zfftwnd[id].plan);
- free(caches_zfftwnd[id].dims);
- ,10)
-#else
-GEN_CACHE(zfftnd,(int n,int rank)
- ,complex_double *ptr;
- int *iptr;
- int rank;
- ,((caches_zfftnd[i].n==n)&&(caches_zfftnd[i].rank==rank))
- ,caches_zfftnd[id].n = n;
- caches_zfftnd[id].ptr = (complex_double*)malloc(2*sizeof(double)*n);
- caches_zfftnd[id].iptr = (int*)malloc(4*rank*sizeof(int));
- ,free(caches_zfftnd[id].ptr);
- free(caches_zfftnd[id].iptr);
- ,10)
-#endif
-
-extern void destroy_zfftnd_cache(void) {
-#ifdef WITH_MKL
- destroy_zmklfftnd_caches();
-#elif defined WITH_FFTW3
-#elif defined WITH_FFTW
- destroy_zfftwnd_caches();
-#else
- destroy_zfftnd_caches();
-#endif
-}
-#if defined(WITH_FFTW) || defined(WITH_FFTW3) || defined(WITH_MKL)
-#else
-#endif
-/**************** ZFFTND function **********************/
-extern void zfftnd(complex_double *inout,int rank,
- int *dims,int direction,int howmany,int normalize) {
- int i,sz;
- complex_double *ptr = inout;
-#if defined WITH_MKL
- DFTI_DESCRIPTOR_HANDLE desc_handle;
-#elif defined WITH_FFTW3
- fftw_plan plan = NULL;
-#elif defined WITH_FFTW
- fftwnd_plan plan = NULL;
-#else
- int axis;
- complex_double *tmp;
- int *itmp;
- int k,j;
-#endif
- sz = 1;
- for(i=0;i<rank;++i)
- sz *= dims[i];
-#ifdef WITH_MKL
- desc_handle = caches_zmklfftnd[get_cache_id_zmklfftnd(rank, dims)].desc_handle;
- for (i=0;i<howmany;++i,ptr+=sz){
- if (direction == 1){
- DftiComputeForward(desc_handle, (double *)ptr);
- }else if (direction == -1){
- DftiComputeBackward(desc_handle, (double *)ptr);
- }
- }
- if (normalize) {
- ptr = inout;
- for (i=sz*howmany-1;i>=0;--i) {
- *((double*)(ptr)) /= sz;
- *((double*)(ptr++)+1) /= sz;
- }
- }
-#elif defined WITH_FFTW3
- plan = fftw_plan_many_dft(rank,dims,howmany,
- (fftw_complex*)ptr,NULL,1,sz,
- (fftw_complex*)ptr,NULL,1,sz,
- (direction>0?FFTW_FORWARD:FFTW_BACKWARD),
- FFTW_ESTIMATE);
- fftw_execute(plan);
- fftw_destroy_plan(plan);
- /* note that fftw_malloc of array *could* lead
- * to faster fft here for processors with SIMD acceleration,
- * but would require more memory and an array memcpy
- */
- if (normalize) {
- ptr = inout;
- for (i=sz*howmany-1;i>=0;--i) {
- *((double*)(ptr)) /= sz;
- *((double*)(ptr++)+1) /= sz;
- }
- }
-#elif defined WITH_FFTW
- i = get_cache_id_zfftwnd(rank,dims,direction,FFTW_IN_PLACE|FFTW_ESTIMATE);
- plan = caches_zfftwnd[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;
- }
- }
-#else
- zfft(ptr,dims[rank-1],direction,howmany*sz/dims[rank-1],normalize);
-
- i = get_cache_id_zfftnd(sz,rank); /*Get cache*/
- tmp = caches_zfftnd[i].ptr;
- itmp = caches_zfftnd[i].iptr;
-
- itmp[rank-1] = 1; /*Calculate strides*/
- for (i=2;i<=rank;++i)
- itmp[rank-i] = itmp[rank-i+1]*dims[rank-i+1];
-
- for (i=0;i<howmany;++i,ptr+=sz) {
- for(axis=0;axis<rank-1;++axis) {
- for (k=j=0;k<rank;++k)
- if (k!=axis) {
- *(itmp+rank+j) = itmp[k];
- *(itmp+2*rank+j++)= dims[k]-1;
- }
- flatten(tmp,ptr,rank,itmp[axis],dims[axis],0,itmp);
- zfft(tmp,dims[axis],direction,sz/dims[axis],normalize);
- flatten(ptr,tmp,rank,itmp[axis],dims[axis],1,itmp);
- }
- }
-#endif
-}
-#endif
More information about the Scipy-svn
mailing list