[Scipy-svn] r4893 - in trunk: . scipy/fftpack scipy/fftpack/benchmarks scipy/fftpack/src scipy/fftpack/src/dfftpack scipy/fftpack/src/fftpack

scipy-svn@scip... scipy-svn@scip...
Sat Nov 1 09:51:10 CDT 2008


Author: cdavid
Date: 2008-11-01 09:49:49 -0500 (Sat, 01 Nov 2008)
New Revision: 4893

Added:
   trunk/scipy/fftpack/src/dfftpack/
   trunk/scipy/fftpack/src/dfftpack/dcosqb.f
   trunk/scipy/fftpack/src/dfftpack/dcosqf.f
   trunk/scipy/fftpack/src/dfftpack/dcosqi.f
   trunk/scipy/fftpack/src/dfftpack/dcost.f
   trunk/scipy/fftpack/src/dfftpack/dcosti.f
   trunk/scipy/fftpack/src/dfftpack/dfftb.f
   trunk/scipy/fftpack/src/dfftpack/dfftb1.f
   trunk/scipy/fftpack/src/dfftpack/dfftf.f
   trunk/scipy/fftpack/src/dfftpack/dfftf1.f
   trunk/scipy/fftpack/src/dfftpack/dffti.f
   trunk/scipy/fftpack/src/dfftpack/dffti1.f
   trunk/scipy/fftpack/src/dfftpack/doc
   trunk/scipy/fftpack/src/dfftpack/doc.double
   trunk/scipy/fftpack/src/dfftpack/dsinqb.f
   trunk/scipy/fftpack/src/dfftpack/dsinqf.f
   trunk/scipy/fftpack/src/dfftpack/dsinqi.f
   trunk/scipy/fftpack/src/dfftpack/dsint.f
   trunk/scipy/fftpack/src/dfftpack/dsint1.f
   trunk/scipy/fftpack/src/dfftpack/dsinti.f
   trunk/scipy/fftpack/src/dfftpack/zfftb.f
   trunk/scipy/fftpack/src/dfftpack/zfftb1.f
   trunk/scipy/fftpack/src/dfftpack/zfftf.f
   trunk/scipy/fftpack/src/dfftpack/zfftf1.f
   trunk/scipy/fftpack/src/dfftpack/zffti.f
   trunk/scipy/fftpack/src/dfftpack/zffti1.f
   trunk/scipy/fftpack/src/fftpack/
   trunk/scipy/fftpack/src/fftpack/cfftb.f
   trunk/scipy/fftpack/src/fftpack/cfftb1.f
   trunk/scipy/fftpack/src/fftpack/cfftf.f
   trunk/scipy/fftpack/src/fftpack/cfftf1.f
   trunk/scipy/fftpack/src/fftpack/cffti.f
   trunk/scipy/fftpack/src/fftpack/cffti1.f
   trunk/scipy/fftpack/src/fftpack/cosqb.f
   trunk/scipy/fftpack/src/fftpack/cosqf.f
   trunk/scipy/fftpack/src/fftpack/cosqi.f
   trunk/scipy/fftpack/src/fftpack/cost.f
   trunk/scipy/fftpack/src/fftpack/costi.f
   trunk/scipy/fftpack/src/fftpack/doc
   trunk/scipy/fftpack/src/fftpack/rfftb.f
   trunk/scipy/fftpack/src/fftpack/rfftb1.f
   trunk/scipy/fftpack/src/fftpack/rfftf.f
   trunk/scipy/fftpack/src/fftpack/rfftf1.f
   trunk/scipy/fftpack/src/fftpack/rffti.f
   trunk/scipy/fftpack/src/fftpack/rffti1.f
   trunk/scipy/fftpack/src/fftpack/sinqb.f
   trunk/scipy/fftpack/src/fftpack/sinqf.f
   trunk/scipy/fftpack/src/fftpack/sinqi.f
   trunk/scipy/fftpack/src/fftpack/sint.f
   trunk/scipy/fftpack/src/fftpack/sint1.f
   trunk/scipy/fftpack/src/fftpack/sinti.f
Removed:
   trunk/scipy/fftpack/dfftpack/
   trunk/scipy/fftpack/fftpack/
   trunk/scipy/fftpack/src/dfftpack/dcosqb.f
   trunk/scipy/fftpack/src/dfftpack/dcosqf.f
   trunk/scipy/fftpack/src/dfftpack/dcosqi.f
   trunk/scipy/fftpack/src/dfftpack/dcost.f
   trunk/scipy/fftpack/src/dfftpack/dcosti.f
   trunk/scipy/fftpack/src/dfftpack/dfftb.f
   trunk/scipy/fftpack/src/dfftpack/dfftb1.f
   trunk/scipy/fftpack/src/dfftpack/dfftf.f
   trunk/scipy/fftpack/src/dfftpack/dfftf1.f
   trunk/scipy/fftpack/src/dfftpack/dffti.f
   trunk/scipy/fftpack/src/dfftpack/dffti1.f
   trunk/scipy/fftpack/src/dfftpack/doc
   trunk/scipy/fftpack/src/dfftpack/doc.double
   trunk/scipy/fftpack/src/dfftpack/dsinqb.f
   trunk/scipy/fftpack/src/dfftpack/dsinqf.f
   trunk/scipy/fftpack/src/dfftpack/dsinqi.f
   trunk/scipy/fftpack/src/dfftpack/dsint.f
   trunk/scipy/fftpack/src/dfftpack/dsint1.f
   trunk/scipy/fftpack/src/dfftpack/dsinti.f
   trunk/scipy/fftpack/src/dfftpack/zfftb.f
   trunk/scipy/fftpack/src/dfftpack/zfftb1.f
   trunk/scipy/fftpack/src/dfftpack/zfftf.f
   trunk/scipy/fftpack/src/dfftpack/zfftf1.f
   trunk/scipy/fftpack/src/dfftpack/zffti.f
   trunk/scipy/fftpack/src/dfftpack/zffti1.f
   trunk/scipy/fftpack/src/drfft_djbfft.c
   trunk/scipy/fftpack/src/drfft_fftw.c
   trunk/scipy/fftpack/src/drfft_fftw3.c
   trunk/scipy/fftpack/src/fftpack/cfftb.f
   trunk/scipy/fftpack/src/fftpack/cfftb1.f
   trunk/scipy/fftpack/src/fftpack/cfftf.f
   trunk/scipy/fftpack/src/fftpack/cfftf1.f
   trunk/scipy/fftpack/src/fftpack/cffti.f
   trunk/scipy/fftpack/src/fftpack/cffti1.f
   trunk/scipy/fftpack/src/fftpack/cosqb.f
   trunk/scipy/fftpack/src/fftpack/cosqf.f
   trunk/scipy/fftpack/src/fftpack/cosqi.f
   trunk/scipy/fftpack/src/fftpack/cost.f
   trunk/scipy/fftpack/src/fftpack/costi.f
   trunk/scipy/fftpack/src/fftpack/doc
   trunk/scipy/fftpack/src/fftpack/rfftb.f
   trunk/scipy/fftpack/src/fftpack/rfftb1.f
   trunk/scipy/fftpack/src/fftpack/rfftf.f
   trunk/scipy/fftpack/src/fftpack/rfftf1.f
   trunk/scipy/fftpack/src/fftpack/rffti.f
   trunk/scipy/fftpack/src/fftpack/rffti1.f
   trunk/scipy/fftpack/src/fftpack/sinqb.f
   trunk/scipy/fftpack/src/fftpack/sinqf.f
   trunk/scipy/fftpack/src/fftpack/sinqi.f
   trunk/scipy/fftpack/src/fftpack/sint.f
   trunk/scipy/fftpack/src/fftpack/sint1.f
   trunk/scipy/fftpack/src/fftpack/sinti.f
   trunk/scipy/fftpack/src/zfft_djbfft.c
   trunk/scipy/fftpack/src/zfft_fftw.c
   trunk/scipy/fftpack/src/zfft_fftw3.c
   trunk/scipy/fftpack/src/zfft_mkl.c
   trunk/scipy/fftpack/src/zfftnd_fftw.c
   trunk/scipy/fftpack/src/zfftnd_fftw3.c
   trunk/scipy/fftpack/src/zfftnd_mkl.c
Modified:
   trunk/
   trunk/scipy/fftpack/NOTES.txt
   trunk/scipy/fftpack/SConscript
   trunk/scipy/fftpack/benchmarks/bench_basic.py
   trunk/scipy/fftpack/setup.py
   trunk/scipy/fftpack/src/convolve.c
   trunk/scipy/fftpack/src/drfft.c
   trunk/scipy/fftpack/src/fftpack.h
   trunk/scipy/fftpack/src/zfft.c
   trunk/scipy/fftpack/src/zfft_fftpack.c
   trunk/scipy/fftpack/src/zfftnd.c
Log:
Merge the remove_fft_backends branch.


Property changes on: trunk
___________________________________________________________________
Name: svnmerge-integrated
   - /branches/build_with_scons:1-3868 /branches/refactor_fft:1-4210 /branches/scipy.scons:1-3533 /branches/sparse_build_reduce_mem:1-4005 /branches/testing_cleanup:1-3662
   + /branches/build_with_scons:1-3868 /branches/refactor_fft:1-4210 /branches/scipy.scons:1-3533 /branches/sparse_build_reduce_mem:1-4005 /branches/testing_cleanup:1-3662 /trunk:1-4871

Modified: trunk/scipy/fftpack/NOTES.txt
===================================================================
--- trunk/scipy/fftpack/NOTES.txt	2008-11-01 14:42:39 UTC (rev 4892)
+++ trunk/scipy/fftpack/NOTES.txt	2008-11-01 14:49:49 UTC (rev 4893)
@@ -27,76 +27,14 @@
 
 ::
 
-  python tests/test_basic.py -l 10
-  python tests/test_pseudo_diffs.py -l 10
-  python tests/test_helper.py -l 10
+  python -c "import scipy.fftpack; scipy.fftpack.test()"
 
 or from python
 
->>> import fftpack
->>> fftpack.test(10)
+>>> import scipy.fftpack
+>>> scipy.fftpack.test(10)
 
 
-Building with high-performance FFT libraries
-============================================
-
-fftpack uses optimal combination of FFT libraries for different
-jobs. Currently, Fortran FFTPACK, FFTW, and DJBFFT libraries are
-supported. The last two are optional and used only if
-scipy/distutils/system_info.py detects them. 
-If they are available, then the output of
-
-::
-
-  python scipy/distutils/system_info.py
-
-should show, for example
-
-::
-
-  dfftw_info:
-    FOUND:
-      libraries = ['drfftw', 'dfftw']
-      library_dirs = ['/path/to/lib']
-      define_macros = [('SCIPY_DFFTW_H', None)]
-      include_dirs = ['/path/to/include']
-
-  djbfft_info:
-    FOUND:
-      extra_objects = ['/path/to/lib/djbfft.a']
-      define_macros = [('SCIPY_DJBFFT_H', None)]
-      include_dirs = ['/path/to/include']
-
-Note that when using fftw libraries provided by a Linux distribution
-then fftw-dev (or fftw-devel or similar) must be installed as well, 
-otherwise system_info.py won't detect fftw libraries.
-
-DJBFFT library is fastest for power-of-two (<=8192) Fourier
-transforms. FFTW is superior for non-power-of-two transforms and
-multi-dimensional transforms.
-
-Building notes for FFTW_
-------------------------
-Follow the instructions in
-
-  http://www.fftw.org/doc/fftw_6.html
-
-Note that fftpack uses double-precision FFTW. So, if you build
-libfftw.a, then it is assumed that it contains double-precision code.
-
-.. _FFTW: http://www.fftw.org
-
-Building notes for DJBFFT_
---------------------------
-.. _DJBFFT: http://cr.yp.to/djbfft.html
-
-Follow the installation instructions in
-
-  http://cr.yp.to/djbfft/install.html
-
-If djbfft is installed under these instructions then scipy_distutils
-picks up it for fftpack automatically.
-
 Differences between fftpack and FFT from Numeric
 ================================================
 

Modified: trunk/scipy/fftpack/SConscript
===================================================================
--- trunk/scipy/fftpack/SConscript	2008-11-01 14:42:39 UTC (rev 4892)
+++ trunk/scipy/fftpack/SConscript	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,32 +1,14 @@
-# Last Change: Thu Jun 12 07:00 PM 2008 J
+# Last Change: Sat Nov 01 10:00 PM 2008 J
 # vim:syntax=python
 from os.path import join as pjoin
 
-from numscons import GetNumpyEnvironment, write_info
-from numscons import CheckFFT, IsMKL, IsFFTW2, IsFFTW3
+from numscons import GetNumpyEnvironment
 
 env = GetNumpyEnvironment(ARGUMENTS)
 env.Tool('f2py')
 
-# Check fft implementation
-config = env.NumpyConfigure(custom_tests = {'CheckFFT': CheckFFT})
-has_fft = config.CheckFFT()
-config.Finish()
-write_info(env)
-
-# Tweak defineds depending on the fft used
-if has_fft:
-    if IsMKL(env, 'fft'):
-        env.Append(CPPDEFINES = "SCIPY_MKL_H")
-    elif IsFFTW3(env, 'fft'):
-        env.Append(CPPDEFINES = "SCIPY_FFTW3_H")
-    elif IsFFTW2(env, 'fft'):
-        env.Append(CPPDEFINES = "SCIPY_FFTW2_H")
-    else:
-        pass
-
 # Build dfftpack
-src = [pjoin("dfftpack", i) for i in [ "dcosqb.f", "dcosqf.f", "dcosqi.f",
+src = [pjoin("src/dfftpack", i) for i in [ "dcosqb.f", "dcosqf.f", "dcosqi.f",
 "dcost.f", "dcosti.f", "dfftb.f", "dfftb1.f", "dfftf.f", "dfftf1.f", "dffti.f",
 "dffti1.f", "dsinqb.f", "dsinqf.f", "dsinqi.f", "dsint.f", "dsint1.f",
 "dsinti.f", "zfftb.f", "zfftb1.f", "zfftf.f", "zfftf1.f", "zffti.f",

Modified: trunk/scipy/fftpack/benchmarks/bench_basic.py
===================================================================
--- trunk/scipy/fftpack/benchmarks/bench_basic.py	2008-11-01 14:42:39 UTC (rev 4892)
+++ trunk/scipy/fftpack/benchmarks/bench_basic.py	2008-11-01 14:49:49 UTC (rev 4893)
@@ -2,7 +2,7 @@
 """
 import sys
 from numpy.testing import *
-from scipy.fftpack import ifft, fft, fftn, irfft
+from scipy.fftpack import ifft, fft, fftn, irfft, rfft
 
 from numpy import arange, asarray, zeros, dot, exp, pi, double, cdouble
 import numpy.fft

Modified: trunk/scipy/fftpack/setup.py
===================================================================
--- trunk/scipy/fftpack/setup.py	2008-11-01 14:42:39 UTC (rev 4892)
+++ trunk/scipy/fftpack/setup.py	2008-11-01 14:49:49 UTC (rev 4893)
@@ -5,24 +5,14 @@
 
 def configuration(parent_package='',top_path=None):
     from numpy.distutils.misc_util import Configuration
-    from numpy.distutils.system_info import get_info
+
     config = Configuration('fftpack',parent_package, top_path)
 
-    djbfft_info = {}
-    mkl_info = get_info('mkl')
-    if mkl_info:
-        mkl_info.setdefault('define_macros', []).append(('SCIPY_MKL_H', None))
-        fft_opt_info = mkl_info
-    else:
-        fft_opt_info = get_info('fftw3') or get_info('fftw2') \
-                        or get_info('dfftw')
-        djbfft_info = get_info('djbfft')
-
     config.add_data_dir('tests')
     config.add_data_dir('benchmarks')
 
     config.add_library('dfftpack',
-                       sources=[join('dfftpack','*.f')])
+                       sources=[join('src/dfftpack','*.f')])
 
     sources = ['fftpack.pyf','src/zfft.c','src/drfft.c','src/zrfft.c',
                'src/zfftnd.c']
@@ -30,20 +20,12 @@
     config.add_extension('_fftpack',
         sources=sources,
         libraries=['dfftpack'],
-        extra_info=[fft_opt_info, djbfft_info],
-        depends=['src/zfft_djbfft.c', 'src/zfft_fftpack.c', 'src/zfft_fftw.c',
-            'src/zfft_fftw3.c', 'src/zfft_mkl.c',
-            'src/drfft_djbfft.c', 'src/drfft_fftpack.c',
-            'src/drfft_fftw3.c', 'src/drfft_fftw.c',
-            'src/zfftnd_fftpack.c', 'src/zfftnd_fftw.c',
-            'src/zfftnd_fftw3.c', 'src/zfftnd_mkl.c',
-            ],
-    )
+        depends=['src/zfft_fftpack.c', 'src/drfft_fftpack.c',
+                 'src/zfftnd_fftpack.c'])
 
     config.add_extension('convolve',
         sources=['convolve.pyf','src/convolve.c'],
         libraries=['dfftpack'],
-        extra_info=[fft_opt_info, djbfft_info],
     )
     return config
 

Modified: trunk/scipy/fftpack/src/convolve.c
===================================================================
--- trunk/scipy/fftpack/src/convolve.c	2008-11-01 14:42:39 UTC (rev 4892)
+++ trunk/scipy/fftpack/src/convolve.c	2008-11-01 14:49:49 UTC (rev 4893)
@@ -11,367 +11,121 @@
 
 #include "fftpack.h"
 
-/**************** DJBFFT *****************************/
-#ifdef WITH_DJBFFT
-GEN_CACHE(ddjbfft,(int n)
-	  ,double* ptr;
-	  ,(caches_ddjbfft[i].n==n)
-	  ,caches_ddjbfft[id].ptr = (double*)malloc(sizeof(double)*n);
-	  ,free(caches_ddjbfft[id].ptr);
-	  ,20)
-#endif
-
-/**************** FFTW *****************************/
-#ifdef WITH_FFTW
-GEN_CACHE(drfftw,(int n)
-	  ,rfftw_plan plan1;
-	   rfftw_plan plan2;
-	  ,(caches_drfftw[i].n==n)
-	  ,caches_drfftw[id].plan1 = rfftw_create_plan(n,
-		FFTW_REAL_TO_COMPLEX,
-		FFTW_IN_PLACE|FFTW_ESTIMATE);
-	   caches_drfftw[id].plan2 = rfftw_create_plan(n,
-		FFTW_COMPLEX_TO_REAL,
-		FFTW_IN_PLACE|FFTW_ESTIMATE);
-	  ,rfftw_destroy_plan(caches_drfftw[id].plan1);
-  	   rfftw_destroy_plan(caches_drfftw[id].plan2);
-	  ,20)
-#else
 /**************** FFTPACK ZFFT **********************/
-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*);
-GEN_CACHE(dfftpack,(int n)
-	  ,double* wsave;
-	  ,(caches_dfftpack[i].n==n)
-	  ,caches_dfftpack[id].wsave = (double*)malloc(sizeof(double)*(2*n+15));
-	   F_FUNC(dffti,DFFTI)(&n,caches_dfftpack[id].wsave);
-	  ,free(caches_dfftpack[id].wsave);
-	  ,20)
-#endif
-extern void destroy_convolve_cache(void) {
-#ifdef WITH_DJBFFT
-  destroy_ddjbfft_caches();
-#endif
-#ifdef WITH_FFTW
-  destroy_drfftw_caches();
-#else
-  destroy_dfftpack_caches();
-#endif
+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 *);
+GEN_CACHE(dfftpack, (int n)
+          , double *wsave;, (caches_dfftpack[i].n == n)
+          , caches_dfftpack[id].wsave =
+          (double *) malloc(sizeof(double) * (2 * n + 15));
+          F_FUNC(dffti, DFFTI) (&n, caches_dfftpack[id].wsave);,
+          free(caches_dfftpack[id].wsave);, 20)
+
+extern void destroy_convolve_cache(void)
+{
+    destroy_dfftpack_caches();
 }
 
 /**************** convolve **********************/
-extern
-void convolve(int n,double* inout,double* omega,int swap_real_imag) {
-  int i;
-#ifdef WITH_DJBFFT
-  double* ptr = NULL;
-#endif
-#ifdef WITH_FFTW
-  rfftw_plan plan1 = NULL;
-  rfftw_plan plan2 = NULL;
-#else
-  double* wsave = NULL;
-#endif
-#ifdef WITH_DJBFFT
-  switch (n) {
-  case 2:;case 4:;case 8:;case 16:;case 32:;case 64:;case 128:;case 256:;
-  case 512:;case 1024:;case 2048:;case 4096:;case 8192:
-    i = get_cache_id_ddjbfft(n);
-    ptr = caches_ddjbfft[i].ptr;
-    COPYSTD2DJB(inout,ptr,n);
-    switch (n) {
-#define TMPCASE(N) case N: fftr8_##N(ptr); break
-      TMPCASE(2);TMPCASE(4);TMPCASE(8);TMPCASE(16);TMPCASE(32);
-      TMPCASE(64);TMPCASE(128);TMPCASE(256);TMPCASE(512);
-      TMPCASE(1024);TMPCASE(2048);TMPCASE(4096);TMPCASE(8192);
-#undef TMPCASE
-    }
-    if (swap_real_imag) {
-      int n1 = n-1;
-      double c;
-      ptr[0] *= omega[0];
-      ptr[1] *= omega[1];
-      for(i=2;i<n1;i+=2) {
-	c = ptr[i] * omega[i];
-	ptr[i] = ptr[i+1] * omega[i+1];
-	ptr[i+1] = c;
-      }
-    }
-    else
-      for(i=0;i<n;++i)
-	ptr[i] *= omega[i];
-    switch (n) {
-#define TMPCASE(N)case N:fftr8_un##N(ptr);break
-      TMPCASE(2);TMPCASE(4);TMPCASE(8);TMPCASE(16);TMPCASE(32);
-      TMPCASE(64);TMPCASE(128);TMPCASE(256);TMPCASE(512);
-      TMPCASE(1024);TMPCASE(2048);TMPCASE(4096);TMPCASE(8192);
-#undef TMPCASE
-    }
-    COPYINVDJB2STD2(ptr,inout,n);
-    return;
-  }
-#endif
-  {
-#ifdef WITH_FFTW
-    int l = (n-1)/2+1;
-    i = get_cache_id_drfftw(n);
-    plan1 = caches_drfftw[i].plan1;
-    plan2 = caches_drfftw[i].plan2;
-    rfftw_one(plan1, (fftw_real *)inout, NULL);
-    if (swap_real_imag) {
-      double c;
-      inout[0] *= omega[0];
-      if (!(n%2))
-	inout[n/2] *= omega[n/2];
-      for(i=1;i<l;++i) {
-	c = inout[i] * omega[i];
-	inout[i] = omega[n-i] * inout[n-i];
-	inout[n-i] = c;
-      }
-    }
-    else
-      for(i=0;i<n;++i)
-	inout[i] *= omega[i];
-    rfftw_one(plan2, (fftw_real *)inout, NULL);
-#else
+extern void
+convolve(int n, double *inout, double *omega, int swap_real_imag)
+{
+    int i;
+    double *wsave = NULL;
+
     i = get_cache_id_dfftpack(n);
     wsave = caches_dfftpack[i].wsave;
-    F_FUNC(dfftf,DFFTF)(&n,inout,wsave);
+    F_FUNC(dfftf, DFFTF) (&n, inout, wsave);
     if (swap_real_imag) {
-      double c;
-      int n1 = n-1;
-      inout[0] *= omega[0];
-      if (!(n%2))
-	inout[n-1] *= omega[n-1];
-      for(i=1;i<n1;i+=2) {
-	c = inout[i] * omega[i];
-	inout[i] = inout[i+1] * omega[i+1];
-	inout[i+1] = c;
-      }
-    }
-    else
-      for(i=0;i<n;++i)
-	inout[i] *= omega[i];
-    F_FUNC(dfftb,DFFTB)(&n,inout,wsave);
-#endif
-  }
+        double c;
+        int n1 = n - 1;
+        inout[0] *= omega[0];
+        if (!(n % 2))
+            inout[n - 1] *= omega[n - 1];
+        for (i = 1; i < n1; i += 2) {
+            c = inout[i] * omega[i];
+            inout[i] = inout[i + 1] * omega[i + 1];
+            inout[i + 1] = c;
+        }
+    } else
+        for (i = 0; i < n; ++i)
+            inout[i] *= omega[i];
+    F_FUNC(dfftb, DFFTB) (&n, inout, wsave);
 }
 
 /**************** convolve **********************/
-extern
-void convolve_z(int n,double* inout,double* omega_real,double* omega_imag) {
-  int i;
-#ifdef WITH_DJBFFT
-  double* ptr = NULL;
-#endif
-#ifdef WITH_FFTW
-  rfftw_plan plan1 = NULL;
-  rfftw_plan plan2 = NULL;
-#else
-  double* wsave = NULL;
-#endif
-#ifdef WITH_DJBFFT
-  switch (n) {
-  case 2:;case 4:;case 8:;case 16:;case 32:;case 64:;case 128:;case 256:;
-  case 512:;case 1024:;case 2048:;case 4096:;case 8192:
-    i = get_cache_id_ddjbfft(n);
-    ptr = caches_ddjbfft[i].ptr;
-    COPYSTD2DJB(inout,ptr,n);
-    switch (n) {
-#define TMPCASE(N) case N: fftr8_##N(ptr); break
-      TMPCASE(2);TMPCASE(4);TMPCASE(8);TMPCASE(16);TMPCASE(32);
-      TMPCASE(64);TMPCASE(128);TMPCASE(256);TMPCASE(512);
-      TMPCASE(1024);TMPCASE(2048);TMPCASE(4096);TMPCASE(8192);
-#undef TMPCASE
-    }
-    {
-      int n1 = n-1;
-      double c;
-      ptr[0] *= (omega_real[0]+omega_imag[0]);
-      ptr[1] *= (omega_real[1]+omega_imag[1]);
-      for(i=2;i<n1;i+=2) {
-	c = ptr[i] * omega_imag[i];
-	ptr[i] *= omega_real[i];
-	ptr[i] += ptr[i+1] * omega_imag[i+1];
-	ptr[i+1] *= omega_real[i+1];
-	ptr[i+1] += c;
-      }
-    }
-    switch (n) {
-#define TMPCASE(N)case N:fftr8_un##N(ptr);break
-      TMPCASE(2);TMPCASE(4);TMPCASE(8);TMPCASE(16);TMPCASE(32);
-      TMPCASE(64);TMPCASE(128);TMPCASE(256);TMPCASE(512);
-      TMPCASE(1024);TMPCASE(2048);TMPCASE(4096);TMPCASE(8192);
-#undef TMPCASE
-    }
-    COPYINVDJB2STD2(ptr,inout,n);
-    return;
-  }
-#endif
-  {
-#ifdef WITH_FFTW
-    int l = (n-1)/2+1;
-    i = get_cache_id_drfftw(n);
-    plan1 = caches_drfftw[i].plan1;
-    plan2 = caches_drfftw[i].plan2;
-    rfftw_one(plan1, (fftw_real *)inout, NULL);
-    {
-      double c;
-      inout[0] *= (omega_real[0]+omega_imag[0]);
-      if (!(n%2))
-	inout[n/2] *= (omega_real[n/2]+omega_imag[n/2]);
-      for(i=1;i<l;++i) {
-	c = inout[i] * omega_imag[i];
-	inout[i] *= omega_real[i];
-	inout[i] += omega_imag[n-i] * inout[n-i];
-	inout[n-i] *= omega_real[n-i];
-	inout[n-i] += c;
-      }
-    }
-    rfftw_one(plan2, (fftw_real *)inout, NULL);
-#else
+extern void
+convolve_z(int n, double *inout, double *omega_real, double *omega_imag)
+{
+    int i;
+    double *wsave = NULL;
     i = get_cache_id_dfftpack(n);
     wsave = caches_dfftpack[i].wsave;
-    F_FUNC(dfftf,DFFTF)(&n,inout,wsave);
+    F_FUNC(dfftf, DFFTF) (&n, inout, wsave);
     {
-      double c;
-      int n1 = n-1;
-      inout[0] *= (omega_real[0]+omega_imag[0]);
-      if (!(n%2))
-	inout[n-1] *= (omega_real[n-1]+omega_imag[n-1]);
-      for(i=1;i<n1;i+=2) {
-	c = inout[i] * omega_imag[i];
-	inout[i] *= omega_real[i];
-	inout[i] += inout[i+1] * omega_imag[i+1];
-	inout[i+1] *= omega_real[i+1];
-	inout[i+1] += c;
-      }
+        double c;
+        int n1 = n - 1;
+        inout[0] *= (omega_real[0] + omega_imag[0]);
+        if (!(n % 2))
+            inout[n - 1] *= (omega_real[n - 1] + omega_imag[n - 1]);
+        for (i = 1; i < n1; i += 2) {
+            c = inout[i] * omega_imag[i];
+            inout[i] *= omega_real[i];
+            inout[i] += inout[i + 1] * omega_imag[i + 1];
+            inout[i + 1] *= omega_real[i + 1];
+            inout[i + 1] += c;
+        }
     }
-    F_FUNC(dfftb,DFFTB)(&n,inout,wsave);
-#endif
-  }
+    F_FUNC(dfftb, DFFTB) (&n, inout, wsave);
 }
 
-extern
-void init_convolution_kernel(int n,double* omega, int d,
-			     double (*kernel_func)(int),
-			     int zero_nyquist) {
-  /*
-    omega[k] = pow(sqrt(-1),d) * kernel_func(k)
-    omega[0] = kernel_func(0)
-    conjugate(omega[-k]) == omega[k]
-   */
-#ifdef WITH_DJBFFT
-  switch (n) {
-  case 2:;case 4:;case 8:;case 16:;case 32:;case 64:;case 128:;case 256:;
-  case 512:;case 1024:;case 2048:;case 4096:;case 8192:
-    {
-      int k,n2=n/2, *f = (int*)malloc(sizeof(int)*(n));
-      fftfreq_rtable(f,n);
-      for (k=1;k<n;++k)
-	if (f[k]>n2) f[k] -= n;
-      omega[0] = (*kernel_func)(0)/n;
-      switch (d%4) {
-      case 0:
-	for (k=2;k<n-1;k+=2) {
-	  omega[k] = (*kernel_func)(f[k])/n2;
-	  omega[k+1] = -omega[k];
-	}
-	omega[1] = (zero_nyquist?0.0:(*kernel_func)(n2)/n);
-	break;
-      case 1:;case -3:
-	for (k=2;k<n-1;k+=2)
-	  omega[k] = omega[k+1] = -(*kernel_func)(f[k])/n2;
-	omega[1] = (zero_nyquist?0.0:(*kernel_func)(n2)/n);
-	break;
-      case 2:;case -2:
-	for (k=2;k<n-1;k+=2) {
-	  omega[k] = -(*kernel_func)(f[k])/n2;
-	  omega[k+1] = -omega[k];
-	}
-	omega[1] = (zero_nyquist?0.0:-(*kernel_func)(n2)/n);
-	break;
-      case 3:;case -1:
-	for (k=2;k<n-1;k+=2)
-	  omega[k] = omega[k+1] = (*kernel_func)(f[k])/n2;
-	omega[1] = (zero_nyquist?0.0:-(*kernel_func)(n2)/n);
-	break;
-      }
-      free(f);
+extern void
+init_convolution_kernel(int n, double *omega, int d,
+                        double (*kernel_func) (int), int zero_nyquist)
+{
+    /*
+       omega[k] = pow(sqrt(-1),d) * kernel_func(k)
+       omega[0] = kernel_func(0)
+       conjugate(omega[-k]) == omega[k]
+     */
+    int j, k, l = (n % 2 ? n : n - 1);
+    omega[0] = (*kernel_func) (0) / n;
+    switch (d % 4) {
+        case 0:
+            for (k = j = 1; j < l; j += 2, ++k)
+                omega[j] = omega[j + 1] = (*kernel_func) (k) / n;
+            if (!(n % 2))
+                omega[n - 1] =
+                    (zero_nyquist ? 0.0 : (*kernel_func) (k) / n);
+            break;
+        case 1:;
+        case -3:
+            for (k = j = 1; j < l; j += 2, ++k) {
+                omega[j] = (*kernel_func) (k) / n;
+                omega[j + 1] = -omega[j];
+            }
+            if (!(n % 2))
+                omega[n - 1] =
+                    (zero_nyquist ? 0.0 : (*kernel_func) (k) / n);
+            break;
+        case 2:;
+        case -2:
+            for (k = j = 1; j < l; j += 2, ++k)
+                omega[j] = omega[j + 1] = -(*kernel_func) (k) / n;
+            if (!(n % 2))
+                omega[n - 1] =
+                    (zero_nyquist ? 0.0 : -(*kernel_func) (k) / n);
+            break;
+        case 3:;
+        case -1:
+            for (k = j = 1; j < l; j += 2, ++k) {
+                omega[j] = -(*kernel_func) (k) / n;
+                omega[j + 1] = -omega[j];
+            }
+            if (!(n % 2))
+                omega[n - 1] =
+                    (zero_nyquist ? 0.0 : -(*kernel_func) (k) / n);
+            break;
     }
-    return;
-  }
-#endif
-#ifdef WITH_FFTW
-  {
-    int k,l=(n-1)/2+1;
-    omega[0] = (*kernel_func)(0)/n;;
-    switch (d%4) {
-    case 0:
-      for (k=1;k<l;++k)
-	omega[k] = omega[n-k] = (*kernel_func)(k)/n;
-      if (!(n%2)) 
-	omega[n/2] = (zero_nyquist?0.0:(*kernel_func)(n/2)/n);
-      break;
-    case 1:;case -3:
-      for (k=1;k<l;++k) {
-	omega[k] = (*kernel_func)(k)/n;
-	omega[n-k] = -omega[k];
-      }
-      if (!(n%2))
-	omega[n/2] = (zero_nyquist?0.0:(*kernel_func)(n/2)/n);
-      break;
-    case 2:;case -2:
-      for (k=1;k<l;++k)
-	omega[k] = omega[n-k] = -(*kernel_func)(k)/n;
-      if (!(n%2))
-	omega[n/2] = (zero_nyquist?0.0:-(*kernel_func)(n/2)/n);
-      break;
-    case 3:;case -1:
-      for (k=1;k<l;++k) {
-	omega[k] = -(*kernel_func)(k)/n;
-	omega[n-k] = -omega[k];
-      }
-      if (!(n%2))
-        omega[n/2] = (zero_nyquist?0.0:-(*kernel_func)(n/2)/n);
-      break;
-    }
-  }
-#else
-  {
-    int j,k,l=(n%2?n:n-1);
-    omega[0] = (*kernel_func)(0)/n;
-    switch (d%4) {
-    case 0:
-      for (k=j=1;j<l;j+=2,++k)
-	omega[j] = omega[j+1] = (*kernel_func)(k)/n;
-      if (!(n%2))
-	omega[n-1] = (zero_nyquist?0.0:(*kernel_func)(k)/n);
-      break;
-    case 1:;case -3:
-      for (k=j=1;j<l;j+=2,++k) {
-	omega[j] = (*kernel_func)(k)/n;
-	omega[j+1] = -omega[j];
-      }
-      if (!(n%2))
-	omega[n-1] = (zero_nyquist?0.0:(*kernel_func)(k)/n);
-      break;
-    case 2:;case -2:
-      for (k=j=1;j<l;j+=2,++k)
-	omega[j] = omega[j+1] = -(*kernel_func)(k)/n;
-      if (!(n%2))
-	omega[n-1] = (zero_nyquist?0.0:-(*kernel_func)(k)/n);
-      break;
-    case 3:;case -1:
-      for (k=j=1;j<l;j+=2,++k) {
-	omega[j] = -(*kernel_func)(k)/n;
-	omega[j+1] = -omega[j];
-      }
-      if (!(n%2))
-	omega[n-1] = (zero_nyquist?0.0:-(*kernel_func)(k)/n);
-      break;
-    }
-  }
-#endif
 }

Copied: trunk/scipy/fftpack/src/dfftpack (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack)


Property changes on: trunk/scipy/fftpack/src/dfftpack
___________________________________________________________________
Name: svn:ignore
   + *.pyc
*.swp
*.pyd
*.so


Deleted: trunk/scipy/fftpack/src/dfftpack/dcosqb.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dcosqb.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/dcosqb.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,45 +0,0 @@
-      SUBROUTINE DCOSQB (N,X,WSAVE)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       X(*)       ,WSAVE(*)
-      DATA TSQRT2 /2.82842712474619009760D0/
-      IF (N.lt.2) GO TO 101
-      IF (N.eq.2) GO TO 102
-      GO TO 103
-  101 X(1) = 4.0D0*X(1)
-      RETURN
-  102 X1 = 4.0D0*(X(1)+X(2))
-      X(2) = TSQRT2*(X(1)-X(2))
-      X(1) = X1
-      RETURN
-  103 CALL DCOSQB1 (N,X,WSAVE,WSAVE(N+1))
-      RETURN
-      END
-
-      SUBROUTINE DCOSQB1 (N,X,W,XH)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       X(1)       ,W(1)       ,XH(1)
-      NS2 = (N+1)/2
-      NP2 = N+2
-      DO 101 I=3,N,2
-         XIM1 = X(I-1)+X(I)
-         X(I) = X(I)-X(I-1)
-         X(I-1) = XIM1
-  101 CONTINUE
-      X(1) = X(1)+X(1)
-      MODN = MOD(N,2)
-      IF (MODN .EQ. 0) X(N) = X(N)+X(N)
-      CALL DFFTB (N,X,XH)
-      DO 102 K=2,NS2
-         KC = NP2-K
-         XH(K) = W(K-1)*X(KC)+W(KC-1)*X(K)
-         XH(KC) = W(K-1)*X(K)-W(KC-1)*X(KC)
-  102 CONTINUE
-      IF (MODN .EQ. 0) X(NS2+1) = W(NS2)*(X(NS2+1)+X(NS2+1))
-      DO 103 K=2,NS2
-         KC = NP2-K
-         X(K) = XH(K)+XH(KC)
-         X(KC) = XH(K)-XH(KC)
-  103 CONTINUE
-      X(1) = X(1)+X(1)
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/dfftpack/dcosqb.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dcosqb.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/dcosqf.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dcosqf.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/dcosqf.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,42 +0,0 @@
-      SUBROUTINE DCOSQF (N,X,WSAVE)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       X(*)       ,WSAVE(*)
-      DATA SQRT2 /1.41421356237309504880D0/
-      IF (N.lt.2) GO TO 102
-      IF (N.eq.2) GO TO 101
-      GO TO 103
-  101 TSQX = SQRT2*X(2)
-      X(2) = X(1)-TSQX
-      X(1) = X(1)+TSQX
-  102 RETURN
-  103 CALL DCOSQF1 (N,X,WSAVE,WSAVE(N+1))
-      RETURN
-      END
-
-      SUBROUTINE DCOSQF1 (N,X,W,XH)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       X(1)       ,W(1)       ,XH(1)
-      NS2 = (N+1)/2
-      NP2 = N+2
-      DO 101 K=2,NS2
-         KC = NP2-K
-         XH(K) = X(K)+X(KC)
-         XH(KC) = X(K)-X(KC)
-  101 CONTINUE
-      MODN = MOD(N,2)
-      IF (MODN .EQ. 0) XH(NS2+1) = X(NS2+1)+X(NS2+1)
-      DO 102 K=2,NS2
-         KC = NP2-K
-         X(K) = W(K-1)*XH(KC)+W(KC-1)*XH(K)
-         X(KC) = W(K-1)*XH(K)-W(KC-1)*XH(KC)
-  102 CONTINUE
-      IF (MODN .EQ. 0) X(NS2+1) = W(NS2)*XH(NS2+1)
-      CALL DFFTF (N,X,XH)
-      DO 103 I=3,N,2
-         XIM1 = X(I-1)-X(I)
-         X(I) = X(I-1)+X(I)
-         X(I-1) = XIM1
-  103 CONTINUE
-      RETURN
-      END
-

Copied: trunk/scipy/fftpack/src/dfftpack/dcosqf.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dcosqf.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/dcosqi.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dcosqi.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/dcosqi.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,13 +0,0 @@
-      SUBROUTINE DCOSQI (N,WSAVE)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       WSAVE(1)
-      DATA PIH /1.57079632679489661923D0/
-      DT = PIH/FLOAT(N)
-      FK = 0.0D0
-      DO 101 K=1,N
-         FK = FK+1.0D0
-         WSAVE(K) = COS(FK*DT)
-  101 CONTINUE
-      CALL DFFTI (N,WSAVE(N+1))
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/dfftpack/dcosqi.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dcosqi.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/dcost.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dcost.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/dcost.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,45 +0,0 @@
-      SUBROUTINE DCOST (N,X,WSAVE)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       X(*)       ,WSAVE(*)
-      NM1 = N-1
-      NP1 = N+1
-      NS2 = N/2
-      IF (N.lt.2) GO TO 106
-      IF (N.eq.2) GO TO 101
-      GO TO 102
-  101 X1H = X(1)+X(2)
-      X(2) = X(1)-X(2)
-      X(1) = X1H
-      RETURN
-  102 IF (N .GT. 3) GO TO 103
-      X1P3 = X(1)+X(3)
-      TX2 = X(2)+X(2)
-      X(2) = X(1)-X(3)
-      X(1) = X1P3+TX2
-      X(3) = X1P3-TX2
-      RETURN
-  103 C1 = X(1)-X(N)
-      X(1) = X(1)+X(N)
-      DO 104 K=2,NS2
-         KC = NP1-K
-         T1 = X(K)+X(KC)
-         T2 = X(K)-X(KC)
-         C1 = C1+WSAVE(KC)*T2
-         T2 = WSAVE(K)*T2
-         X(K) = T1-T2
-         X(KC) = T1+T2
-  104 CONTINUE
-      MODN = MOD(N,2)
-      IF (MODN .NE. 0) X(NS2+1) = X(NS2+1)+X(NS2+1)
-      CALL DFFTF (NM1,X,WSAVE(N+1))
-      XIM2 = X(2)
-      X(2) = C1
-      DO 105 I=4,N,2
-         XI = X(I)
-         X(I) = X(I-2)-X(I-1)
-         X(I-1) = XIM2
-         XIM2 = XI
-  105 CONTINUE
-      IF (MODN .NE. 0) X(N) = XIM2
-  106 RETURN
-      END

Copied: trunk/scipy/fftpack/src/dfftpack/dcost.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dcost.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/dcosti.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dcosti.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/dcosti.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,19 +0,0 @@
-      SUBROUTINE DCOSTI (N,WSAVE)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       WSAVE(1)
-      DATA PI /3.14159265358979323846D0/
-      IF (N .LE. 3) RETURN
-      NM1 = N-1
-      NP1 = N+1
-      NS2 = N/2
-      DT = PI/FLOAT(NM1)
-      FK = 0.0D0
-      DO 101 K=2,NS2
-         KC = NP1-K
-         FK = FK+1.0D0
-         WSAVE(K) = 2.0D0*SIN(FK*DT)
-         WSAVE(KC) = 2.0D0*COS(FK*DT)
-  101 CONTINUE
-      CALL DFFTI (NM1,WSAVE(N+1))
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/dfftpack/dcosti.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dcosti.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/dfftb.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dfftb.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/dfftb.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,7 +0,0 @@
-      SUBROUTINE DFFTB (N,R,WSAVE)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       R(1)       ,WSAVE(1)
-      IF (N .EQ. 1) RETURN
-      CALL DFFTB1 (N,R,WSAVE,WSAVE(N+1),WSAVE(2*N+1))
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/dfftpack/dfftb.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dfftb.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/dfftb1.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dfftb1.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/dfftb1.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,423 +0,0 @@
-      SUBROUTINE DFFTB1 (N,C,CH,WA,IFAC)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       CH(*)      ,C(*)       ,WA(*)      ,IFAC(*)
-      NF = IFAC(2)
-      NA = 0
-      L1 = 1
-      IW = 1
-      DO 116 K1=1,NF
-         IP = IFAC(K1+2)
-         L2 = IP*L1
-         IDO = N/L2
-         IDL1 = IDO*L1
-         IF (IP .NE. 4) GO TO 103
-         IX2 = IW+IDO
-         IX3 = IX2+IDO
-         IF (NA .NE. 0) GO TO 101
-         CALL DADB4 (IDO,L1,C,CH,WA(IW),WA(IX2),WA(IX3))
-         GO TO 102
-  101    CALL DADB4 (IDO,L1,CH,C,WA(IW),WA(IX2),WA(IX3))
-  102    NA = 1-NA
-         GO TO 115
-  103    IF (IP .NE. 2) GO TO 106
-         IF (NA .NE. 0) GO TO 104
-         CALL DADB2 (IDO,L1,C,CH,WA(IW))
-         GO TO 105
-  104    CALL DADB2 (IDO,L1,CH,C,WA(IW))
-  105    NA = 1-NA
-         GO TO 115
-  106    IF (IP .NE. 3) GO TO 109
-         IX2 = IW+IDO
-         IF (NA .NE. 0) GO TO 107
-         CALL DADB3 (IDO,L1,C,CH,WA(IW),WA(IX2))
-         GO TO 108
-  107    CALL DADB3 (IDO,L1,CH,C,WA(IW),WA(IX2))
-  108    NA = 1-NA
-         GO TO 115
-  109    IF (IP .NE. 5) GO TO 112
-         IX2 = IW+IDO
-         IX3 = IX2+IDO
-         IX4 = IX3+IDO
-         IF (NA .NE. 0) GO TO 110
-         CALL DADB5 (IDO,L1,C,CH,WA(IW),WA(IX2),WA(IX3),WA(IX4))
-         GO TO 111
-  110    CALL DADB5 (IDO,L1,CH,C,WA(IW),WA(IX2),WA(IX3),WA(IX4))
-  111    NA = 1-NA
-         GO TO 115
-  112    IF (NA .NE. 0) GO TO 113
-         CALL DADBG (IDO,IP,L1,IDL1,C,C,C,CH,CH,WA(IW))
-         GO TO 114
-  113    CALL DADBG (IDO,IP,L1,IDL1,CH,CH,CH,C,C,WA(IW))
-  114    IF (IDO .EQ. 1) NA = 1-NA
-  115    L1 = L2
-         IW = IW+(IP-1)*IDO
-  116 CONTINUE
-      IF (NA .EQ. 0) RETURN
-      DO 117 I=1,N
-         C(I) = CH(I)
-  117 CONTINUE
-      RETURN
-      END
-
-      SUBROUTINE DADBG (IDO,IP,L1,IDL1,CC,C1,C2,CH,CH2,WA)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       CH(IDO,L1,IP)          ,CC(IDO,IP,L1)          ,
-     1                C1(IDO,L1,IP)          ,C2(IDL1,IP),
-     2                CH2(IDL1,IP)           ,WA(1)
-      DATA TPI/6.28318530717958647692D0/
-      ARG = TPI/FLOAT(IP)
-      DCP = COS(ARG)
-      DSP = SIN(ARG)
-      IDP2 = IDO+2
-      NBD = (IDO-1)/2
-      IPP2 = IP+2
-      IPPH = (IP+1)/2
-      IF (IDO .LT. L1) GO TO 103
-      DO 102 K=1,L1
-         DO 101 I=1,IDO
-            CH(I,K,1) = CC(I,1,K)
-  101    CONTINUE
-  102 CONTINUE
-      GO TO 106
-  103 DO 105 I=1,IDO
-         DO 104 K=1,L1
-            CH(I,K,1) = CC(I,1,K)
-  104    CONTINUE
-  105 CONTINUE
-  106 DO 108 J=2,IPPH
-         JC = IPP2-J
-         J2 = J+J
-         DO 107 K=1,L1
-            CH(1,K,J) = CC(IDO,J2-2,K)+CC(IDO,J2-2,K)
-            CH(1,K,JC) = CC(1,J2-1,K)+CC(1,J2-1,K)
-  107    CONTINUE
-  108 CONTINUE
-      IF (IDO .EQ. 1) GO TO 116
-      IF (NBD .LT. L1) GO TO 112
-      DO 111 J=2,IPPH
-         JC = IPP2-J
-         DO 110 K=1,L1
-            DO 109 I=3,IDO,2
-               IC = IDP2-I
-               CH(I-1,K,J) = CC(I-1,2*J-1,K)+CC(IC-1,2*J-2,K)
-               CH(I-1,K,JC) = CC(I-1,2*J-1,K)-CC(IC-1,2*J-2,K)
-               CH(I,K,J) = CC(I,2*J-1,K)-CC(IC,2*J-2,K)
-               CH(I,K,JC) = CC(I,2*J-1,K)+CC(IC,2*J-2,K)
-  109       CONTINUE
-  110    CONTINUE
-  111 CONTINUE
-      GO TO 116
-  112 DO 115 J=2,IPPH
-         JC = IPP2-J
-         DO 114 I=3,IDO,2
-            IC = IDP2-I
-            DO 113 K=1,L1
-               CH(I-1,K,J) = CC(I-1,2*J-1,K)+CC(IC-1,2*J-2,K)
-               CH(I-1,K,JC) = CC(I-1,2*J-1,K)-CC(IC-1,2*J-2,K)
-               CH(I,K,J) = CC(I,2*J-1,K)-CC(IC,2*J-2,K)
-               CH(I,K,JC) = CC(I,2*J-1,K)+CC(IC,2*J-2,K)
-  113       CONTINUE
-  114    CONTINUE
-  115 CONTINUE
-  116 AR1 = 1.0D0
-      AI1 = 0.0D0
-      DO 120 L=2,IPPH
-         LC = IPP2-L
-         AR1H = DCP*AR1-DSP*AI1
-         AI1 = DCP*AI1+DSP*AR1
-         AR1 = AR1H
-         DO 117 IK=1,IDL1
-            C2(IK,L) = CH2(IK,1)+AR1*CH2(IK,2)
-            C2(IK,LC) = AI1*CH2(IK,IP)
-  117    CONTINUE
-         DC2 = AR1
-         DS2 = AI1
-         AR2 = AR1
-         AI2 = AI1
-         DO 119 J=3,IPPH
-            JC = IPP2-J
-            AR2H = DC2*AR2-DS2*AI2
-            AI2 = DC2*AI2+DS2*AR2
-            AR2 = AR2H
-            DO 118 IK=1,IDL1
-               C2(IK,L) = C2(IK,L)+AR2*CH2(IK,J)
-               C2(IK,LC) = C2(IK,LC)+AI2*CH2(IK,JC)
-  118       CONTINUE
-  119    CONTINUE
-  120 CONTINUE
-      DO 122 J=2,IPPH
-         DO 121 IK=1,IDL1
-            CH2(IK,1) = CH2(IK,1)+CH2(IK,J)
-  121    CONTINUE
-  122 CONTINUE
-      DO 124 J=2,IPPH
-         JC = IPP2-J
-         DO 123 K=1,L1
-            CH(1,K,J) = C1(1,K,J)-C1(1,K,JC)
-            CH(1,K,JC) = C1(1,K,J)+C1(1,K,JC)
-  123    CONTINUE
-  124 CONTINUE
-      IF (IDO .EQ. 1) GO TO 132
-      IF (NBD .LT. L1) GO TO 128
-      DO 127 J=2,IPPH
-         JC = IPP2-J
-         DO 126 K=1,L1
-            DO 125 I=3,IDO,2
-               CH(I-1,K,J) = C1(I-1,K,J)-C1(I,K,JC)
-               CH(I-1,K,JC) = C1(I-1,K,J)+C1(I,K,JC)
-               CH(I,K,J) = C1(I,K,J)+C1(I-1,K,JC)
-               CH(I,K,JC) = C1(I,K,J)-C1(I-1,K,JC)
-  125       CONTINUE
-  126    CONTINUE
-  127 CONTINUE
-      GO TO 132
-  128 DO 131 J=2,IPPH
-         JC = IPP2-J
-         DO 130 I=3,IDO,2
-            DO 129 K=1,L1
-               CH(I-1,K,J) = C1(I-1,K,J)-C1(I,K,JC)
-               CH(I-1,K,JC) = C1(I-1,K,J)+C1(I,K,JC)
-               CH(I,K,J) = C1(I,K,J)+C1(I-1,K,JC)
-               CH(I,K,JC) = C1(I,K,J)-C1(I-1,K,JC)
-  129       CONTINUE
-  130    CONTINUE
-  131 CONTINUE
-  132 CONTINUE
-      IF (IDO .EQ. 1) RETURN
-      DO 133 IK=1,IDL1
-         C2(IK,1) = CH2(IK,1)
-  133 CONTINUE
-      DO 135 J=2,IP
-         DO 134 K=1,L1
-            C1(1,K,J) = CH(1,K,J)
-  134    CONTINUE
-  135 CONTINUE
-      IF (NBD .GT. L1) GO TO 139
-      IS = -IDO
-      DO 138 J=2,IP
-         IS = IS+IDO
-         IDIJ = IS
-         DO 137 I=3,IDO,2
-            IDIJ = IDIJ+2
-            DO 136 K=1,L1
-               C1(I-1,K,J) = WA(IDIJ-1)*CH(I-1,K,J)-WA(IDIJ)*CH(I,K,J)
-               C1(I,K,J) = WA(IDIJ-1)*CH(I,K,J)+WA(IDIJ)*CH(I-1,K,J)
-  136       CONTINUE
-  137    CONTINUE
-  138 CONTINUE
-      GO TO 143
-  139 IS = -IDO
-      DO 142 J=2,IP
-         IS = IS+IDO
-         DO 141 K=1,L1
-            IDIJ = IS
-            DO 140 I=3,IDO,2
-               IDIJ = IDIJ+2
-               C1(I-1,K,J) = WA(IDIJ-1)*CH(I-1,K,J)-WA(IDIJ)*CH(I,K,J)
-               C1(I,K,J) = WA(IDIJ-1)*CH(I,K,J)+WA(IDIJ)*CH(I-1,K,J)
-  140       CONTINUE
-  141    CONTINUE
-  142 CONTINUE
-  143 RETURN
-      END
-
-      SUBROUTINE DADB2 (IDO,L1,CC,CH,WA1)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       CC(IDO,2,L1)           ,CH(IDO,L1,2)           ,
-     1                WA1(1)
-      DO 101 K=1,L1
-         CH(1,K,1) = CC(1,1,K)+CC(IDO,2,K)
-         CH(1,K,2) = CC(1,1,K)-CC(IDO,2,K)
-  101 CONTINUE
-      IF (IDO.lt.2) GO TO 107
-      IF (IDO.eq.2) GO TO 105
-      GO TO 102
-  102 IDP2 = IDO+2
-      DO 104 K=1,L1
-         DO 103 I=3,IDO,2
-            IC = IDP2-I
-            CH(I-1,K,1) = CC(I-1,1,K)+CC(IC-1,2,K)
-            TR2 = CC(I-1,1,K)-CC(IC-1,2,K)
-            CH(I,K,1) = CC(I,1,K)-CC(IC,2,K)
-            TI2 = CC(I,1,K)+CC(IC,2,K)
-            CH(I-1,K,2) = WA1(I-2)*TR2-WA1(I-1)*TI2
-            CH(I,K,2) = WA1(I-2)*TI2+WA1(I-1)*TR2
-  103    CONTINUE
-  104 CONTINUE
-      IF (MOD(IDO,2) .EQ. 1) RETURN
-  105 DO 106 K=1,L1
-         CH(IDO,K,1) = CC(IDO,1,K)+CC(IDO,1,K)
-         CH(IDO,K,2) = -(CC(1,2,K)+CC(1,2,K))
-  106 CONTINUE
-  107 RETURN
-      END
-
-      SUBROUTINE DADB3 (IDO,L1,CC,CH,WA1,WA2)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       CC(IDO,3,L1)           ,CH(IDO,L1,3)           ,
-     1                WA1(1)     ,WA2(1)
-C     *** TAUI IS SQRT(3)/2 *** 
-      DATA TAUR,TAUI /-0.5D0,0.86602540378443864676D0/
-      DO 101 K=1,L1
-         TR2 = CC(IDO,2,K)+CC(IDO,2,K)
-         CR2 = CC(1,1,K)+TAUR*TR2
-         CH(1,K,1) = CC(1,1,K)+TR2
-         CI3 = TAUI*(CC(1,3,K)+CC(1,3,K))
-         CH(1,K,2) = CR2-CI3
-         CH(1,K,3) = CR2+CI3
-  101 CONTINUE
-      IF (IDO .EQ. 1) RETURN
-      IDP2 = IDO+2
-      DO 103 K=1,L1
-         DO 102 I=3,IDO,2
-            IC = IDP2-I
-            TR2 = CC(I-1,3,K)+CC(IC-1,2,K)
-            CR2 = CC(I-1,1,K)+TAUR*TR2
-            CH(I-1,K,1) = CC(I-1,1,K)+TR2
-            TI2 = CC(I,3,K)-CC(IC,2,K)
-            CI2 = CC(I,1,K)+TAUR*TI2
-            CH(I,K,1) = CC(I,1,K)+TI2
-            CR3 = TAUI*(CC(I-1,3,K)-CC(IC-1,2,K))
-            CI3 = TAUI*(CC(I,3,K)+CC(IC,2,K))
-            DR2 = CR2-CI3
-            DR3 = CR2+CI3
-            DI2 = CI2+CR3
-            DI3 = CI2-CR3
-            CH(I-1,K,2) = WA1(I-2)*DR2-WA1(I-1)*DI2
-            CH(I,K,2) = WA1(I-2)*DI2+WA1(I-1)*DR2
-            CH(I-1,K,3) = WA2(I-2)*DR3-WA2(I-1)*DI3
-            CH(I,K,3) = WA2(I-2)*DI3+WA2(I-1)*DR3
-  102    CONTINUE
-  103 CONTINUE
-      RETURN
-      END
-
-      SUBROUTINE DADB4 (IDO,L1,CC,CH,WA1,WA2,WA3)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       CC(IDO,4,L1)           ,CH(IDO,L1,4)           ,
-     1                WA1(1)     ,WA2(1)     ,WA3(1)
-      DATA SQRT2 /1.41421356237309504880D0/
-      DO 101 K=1,L1
-         TR1 = CC(1,1,K)-CC(IDO,4,K)
-         TR2 = CC(1,1,K)+CC(IDO,4,K)
-         TR3 = CC(IDO,2,K)+CC(IDO,2,K)
-         TR4 = CC(1,3,K)+CC(1,3,K)
-         CH(1,K,1) = TR2+TR3
-         CH(1,K,2) = TR1-TR4
-         CH(1,K,3) = TR2-TR3
-         CH(1,K,4) = TR1+TR4
-  101 CONTINUE
-      IF (IDO.lt.2) GO TO 107
-      IF (IDO.eq.2) GO TO 105
-      GO TO 102
-  102 IDP2 = IDO+2
-      DO 104 K=1,L1
-         DO 103 I=3,IDO,2
-            IC = IDP2-I
-            TI1 = CC(I,1,K)+CC(IC,4,K)
-            TI2 = CC(I,1,K)-CC(IC,4,K)
-            TI3 = CC(I,3,K)-CC(IC,2,K)
-            TR4 = CC(I,3,K)+CC(IC,2,K)
-            TR1 = CC(I-1,1,K)-CC(IC-1,4,K)
-            TR2 = CC(I-1,1,K)+CC(IC-1,4,K)
-            TI4 = CC(I-1,3,K)-CC(IC-1,2,K)
-            TR3 = CC(I-1,3,K)+CC(IC-1,2,K)
-            CH(I-1,K,1) = TR2+TR3
-            CR3 = TR2-TR3
-            CH(I,K,1) = TI2+TI3
-            CI3 = TI2-TI3
-            CR2 = TR1-TR4
-            CR4 = TR1+TR4
-            CI2 = TI1+TI4
-            CI4 = TI1-TI4
-            CH(I-1,K,2) = WA1(I-2)*CR2-WA1(I-1)*CI2
-            CH(I,K,2) = WA1(I-2)*CI2+WA1(I-1)*CR2
-            CH(I-1,K,3) = WA2(I-2)*CR3-WA2(I-1)*CI3
-            CH(I,K,3) = WA2(I-2)*CI3+WA2(I-1)*CR3
-            CH(I-1,K,4) = WA3(I-2)*CR4-WA3(I-1)*CI4
-            CH(I,K,4) = WA3(I-2)*CI4+WA3(I-1)*CR4
-  103    CONTINUE
-  104 CONTINUE
-      IF (MOD(IDO,2) .EQ. 1) RETURN
-  105 CONTINUE
-      DO 106 K=1,L1
-         TI1 = CC(1,2,K)+CC(1,4,K)
-         TI2 = CC(1,4,K)-CC(1,2,K)
-         TR1 = CC(IDO,1,K)-CC(IDO,3,K)
-         TR2 = CC(IDO,1,K)+CC(IDO,3,K)
-         CH(IDO,K,1) = TR2+TR2
-         CH(IDO,K,2) = SQRT2*(TR1-TI1)
-         CH(IDO,K,3) = TI2+TI2
-         CH(IDO,K,4) = -SQRT2*(TR1+TI1)
-  106 CONTINUE
-  107 RETURN
-      END
-
-
-      SUBROUTINE DADB5 (IDO,L1,CC,CH,WA1,WA2,WA3,WA4)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       CC(IDO,5,L1)           ,CH(IDO,L1,5)           ,
-     1                WA1(1)     ,WA2(1)     ,WA3(1)     ,WA4(1)
-C     *** TR11=COS(2*PI/5), TI11=SIN(2*PI/5)
-C     *** TR12=COS(4*PI/5), TI12=SIN(4*PI/5)      
-      DATA TR11,TI11,TR12,TI12 /0.3090169943749474241D0,
-     +     0.95105651629515357212D0,
-     +     -0.8090169943749474241D0,0.58778525229247312917D0/
-      DO 101 K=1,L1
-         TI5 = CC(1,3,K)+CC(1,3,K)
-         TI4 = CC(1,5,K)+CC(1,5,K)
-         TR2 = CC(IDO,2,K)+CC(IDO,2,K)
-         TR3 = CC(IDO,4,K)+CC(IDO,4,K)
-         CH(1,K,1) = CC(1,1,K)+TR2+TR3
-         CR2 = CC(1,1,K)+TR11*TR2+TR12*TR3
-         CR3 = CC(1,1,K)+TR12*TR2+TR11*TR3
-         CI5 = TI11*TI5+TI12*TI4
-         CI4 = TI12*TI5-TI11*TI4
-         CH(1,K,2) = CR2-CI5
-         CH(1,K,3) = CR3-CI4
-         CH(1,K,4) = CR3+CI4
-         CH(1,K,5) = CR2+CI5
-  101 CONTINUE
-      IF (IDO .EQ. 1) RETURN
-      IDP2 = IDO+2
-      DO 103 K=1,L1
-         DO 102 I=3,IDO,2
-            IC = IDP2-I
-            TI5 = CC(I,3,K)+CC(IC,2,K)
-            TI2 = CC(I,3,K)-CC(IC,2,K)
-            TI4 = CC(I,5,K)+CC(IC,4,K)
-            TI3 = CC(I,5,K)-CC(IC,4,K)
-            TR5 = CC(I-1,3,K)-CC(IC-1,2,K)
-            TR2 = CC(I-1,3,K)+CC(IC-1,2,K)
-            TR4 = CC(I-1,5,K)-CC(IC-1,4,K)
-            TR3 = CC(I-1,5,K)+CC(IC-1,4,K)
-            CH(I-1,K,1) = CC(I-1,1,K)+TR2+TR3
-            CH(I,K,1) = CC(I,1,K)+TI2+TI3
-            CR2 = CC(I-1,1,K)+TR11*TR2+TR12*TR3
-            CI2 = CC(I,1,K)+TR11*TI2+TR12*TI3
-            CR3 = CC(I-1,1,K)+TR12*TR2+TR11*TR3
-            CI3 = CC(I,1,K)+TR12*TI2+TR11*TI3
-            CR5 = TI11*TR5+TI12*TR4
-            CI5 = TI11*TI5+TI12*TI4
-            CR4 = TI12*TR5-TI11*TR4
-            CI4 = TI12*TI5-TI11*TI4
-            DR3 = CR3-CI4
-            DR4 = CR3+CI4
-            DI3 = CI3+CR4
-            DI4 = CI3-CR4
-            DR5 = CR2+CI5
-            DR2 = CR2-CI5
-            DI5 = CI2-CR5
-            DI2 = CI2+CR5
-            CH(I-1,K,2) = WA1(I-2)*DR2-WA1(I-1)*DI2
-            CH(I,K,2) = WA1(I-2)*DI2+WA1(I-1)*DR2
-            CH(I-1,K,3) = WA2(I-2)*DR3-WA2(I-1)*DI3
-            CH(I,K,3) = WA2(I-2)*DI3+WA2(I-1)*DR3
-            CH(I-1,K,4) = WA3(I-2)*DR4-WA3(I-1)*DI4
-            CH(I,K,4) = WA3(I-2)*DI4+WA3(I-1)*DR4
-            CH(I-1,K,5) = WA4(I-2)*DR5-WA4(I-1)*DI5
-            CH(I,K,5) = WA4(I-2)*DI5+WA4(I-1)*DR5
-  102    CONTINUE
-  103 CONTINUE
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/dfftpack/dfftb1.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dfftb1.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/dfftf.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dfftf.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/dfftf.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,7 +0,0 @@
-      SUBROUTINE DFFTF (N,R,WSAVE)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       R(1)       ,WSAVE(1)
-      IF (N .EQ. 1) RETURN
-      CALL DFFTF1 (N,R,WSAVE,WSAVE(N+1),WSAVE(2*N+1))
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/dfftpack/dfftf.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dfftf.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/dfftf1.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dfftf1.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/dfftf1.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,418 +0,0 @@
-      SUBROUTINE DFFTF1 (N,C,CH,WA,IFAC)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       CH(*)      ,C(*)       ,WA(*)      ,IFAC(*)
-      NF = IFAC(2)
-      NA = 1
-      L2 = N
-      IW = N
-      DO 111 K1=1,NF
-         KH = NF-K1
-         IP = IFAC(KH+3)
-         L1 = L2/IP
-         IDO = N/L2
-         IDL1 = IDO*L1
-         IW = IW-(IP-1)*IDO
-         NA = 1-NA
-         IF (IP .NE. 4) GO TO 102
-         IX2 = IW+IDO
-         IX3 = IX2+IDO
-         IF (NA .NE. 0) GO TO 101
-         CALL DADF4 (IDO,L1,C,CH,WA(IW),WA(IX2),WA(IX3))
-         GO TO 110
-  101    CALL DADF4 (IDO,L1,CH,C,WA(IW),WA(IX2),WA(IX3))
-         GO TO 110
-  102    IF (IP .NE. 2) GO TO 104
-         IF (NA .NE. 0) GO TO 103
-         CALL DADF2 (IDO,L1,C,CH,WA(IW))
-         GO TO 110
-  103    CALL DADF2 (IDO,L1,CH,C,WA(IW))
-         GO TO 110
-  104    IF (IP .NE. 3) GO TO 106
-         IX2 = IW+IDO
-         IF (NA .NE. 0) GO TO 105
-         CALL DADF3 (IDO,L1,C,CH,WA(IW),WA(IX2))
-         GO TO 110
-  105    CALL DADF3 (IDO,L1,CH,C,WA(IW),WA(IX2))
-         GO TO 110
-  106    IF (IP .NE. 5) GO TO 108
-         IX2 = IW+IDO
-         IX3 = IX2+IDO
-         IX4 = IX3+IDO
-         IF (NA .NE. 0) GO TO 107
-         CALL DADF5 (IDO,L1,C,CH,WA(IW),WA(IX2),WA(IX3),WA(IX4))
-         GO TO 110
-  107    CALL DADF5 (IDO,L1,CH,C,WA(IW),WA(IX2),WA(IX3),WA(IX4))
-         GO TO 110
-  108    IF (IDO .EQ. 1) NA = 1-NA
-         IF (NA .NE. 0) GO TO 109
-         CALL DADFG (IDO,IP,L1,IDL1,C,C,C,CH,CH,WA(IW))
-         NA = 1
-         GO TO 110
-  109    CALL DADFG (IDO,IP,L1,IDL1,CH,CH,CH,C,C,WA(IW))
-         NA = 0
-  110    L2 = L1
-  111 CONTINUE
-      IF (NA .EQ. 1) RETURN
-      DO 112 I=1,N
-         C(I) = CH(I)
-  112 CONTINUE
-      RETURN
-      END
-
-      SUBROUTINE DADFG (IDO,IP,L1,IDL1,CC,C1,C2,CH,CH2,WA)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       CH(IDO,L1,IP)          ,CC(IDO,IP,L1)          ,
-     1                C1(IDO,L1,IP)          ,C2(IDL1,IP),
-     2                CH2(IDL1,IP)           ,WA(1)
-      DATA TPI/6.28318530717958647692D0/
-      ARG = TPI/FLOAT(IP)
-      DCP = COS(ARG)
-      DSP = SIN(ARG)
-      IPPH = (IP+1)/2
-      IPP2 = IP+2
-      IDP2 = IDO+2
-      NBD = (IDO-1)/2
-      IF (IDO .EQ. 1) GO TO 119
-      DO 101 IK=1,IDL1
-         CH2(IK,1) = C2(IK,1)
-  101 CONTINUE
-      DO 103 J=2,IP
-         DO 102 K=1,L1
-            CH(1,K,J) = C1(1,K,J)
-  102    CONTINUE
-  103 CONTINUE
-      IF (NBD .GT. L1) GO TO 107
-      IS = -IDO
-      DO 106 J=2,IP
-         IS = IS+IDO
-         IDIJ = IS
-         DO 105 I=3,IDO,2
-            IDIJ = IDIJ+2
-            DO 104 K=1,L1
-               CH(I-1,K,J) = WA(IDIJ-1)*C1(I-1,K,J)+WA(IDIJ)*C1(I,K,J)
-               CH(I,K,J) = WA(IDIJ-1)*C1(I,K,J)-WA(IDIJ)*C1(I-1,K,J)
-  104       CONTINUE
-  105    CONTINUE
-  106 CONTINUE
-      GO TO 111
-  107 IS = -IDO
-      DO 110 J=2,IP
-         IS = IS+IDO
-         DO 109 K=1,L1
-            IDIJ = IS
-            DO 108 I=3,IDO,2
-               IDIJ = IDIJ+2
-               CH(I-1,K,J) = WA(IDIJ-1)*C1(I-1,K,J)+WA(IDIJ)*C1(I,K,J)
-               CH(I,K,J) = WA(IDIJ-1)*C1(I,K,J)-WA(IDIJ)*C1(I-1,K,J)
-  108       CONTINUE
-  109    CONTINUE
-  110 CONTINUE
-  111 IF (NBD .LT. L1) GO TO 115
-      DO 114 J=2,IPPH
-         JC = IPP2-J
-         DO 113 K=1,L1
-            DO 112 I=3,IDO,2
-               C1(I-1,K,J) = CH(I-1,K,J)+CH(I-1,K,JC)
-               C1(I-1,K,JC) = CH(I,K,J)-CH(I,K,JC)
-               C1(I,K,J) = CH(I,K,J)+CH(I,K,JC)
-               C1(I,K,JC) = CH(I-1,K,JC)-CH(I-1,K,J)
-  112       CONTINUE
-  113    CONTINUE
-  114 CONTINUE
-      GO TO 121
-  115 DO 118 J=2,IPPH
-         JC = IPP2-J
-         DO 117 I=3,IDO,2
-            DO 116 K=1,L1
-               C1(I-1,K,J) = CH(I-1,K,J)+CH(I-1,K,JC)
-               C1(I-1,K,JC) = CH(I,K,J)-CH(I,K,JC)
-               C1(I,K,J) = CH(I,K,J)+CH(I,K,JC)
-               C1(I,K,JC) = CH(I-1,K,JC)-CH(I-1,K,J)
-  116       CONTINUE
-  117    CONTINUE
-  118 CONTINUE
-      GO TO 121
-  119 DO 120 IK=1,IDL1
-         C2(IK,1) = CH2(IK,1)
-  120 CONTINUE
-  121 DO 123 J=2,IPPH
-         JC = IPP2-J
-         DO 122 K=1,L1
-            C1(1,K,J) = CH(1,K,J)+CH(1,K,JC)
-            C1(1,K,JC) = CH(1,K,JC)-CH(1,K,J)
-  122    CONTINUE
-  123 CONTINUE
-C
-      AR1 = 1.0D0
-      AI1 = 0.0D0
-      DO 127 L=2,IPPH
-         LC = IPP2-L
-         AR1H = DCP*AR1-DSP*AI1
-         AI1 = DCP*AI1+DSP*AR1
-         AR1 = AR1H
-         DO 124 IK=1,IDL1
-            CH2(IK,L) = C2(IK,1)+AR1*C2(IK,2)
-            CH2(IK,LC) = AI1*C2(IK,IP)
-  124    CONTINUE
-         DC2 = AR1
-         DS2 = AI1
-         AR2 = AR1
-         AI2 = AI1
-         DO 126 J=3,IPPH
-            JC = IPP2-J
-            AR2H = DC2*AR2-DS2*AI2
-            AI2 = DC2*AI2+DS2*AR2
-            AR2 = AR2H
-            DO 125 IK=1,IDL1
-               CH2(IK,L) = CH2(IK,L)+AR2*C2(IK,J)
-               CH2(IK,LC) = CH2(IK,LC)+AI2*C2(IK,JC)
-  125       CONTINUE
-  126    CONTINUE
-  127 CONTINUE
-      DO 129 J=2,IPPH
-         DO 128 IK=1,IDL1
-            CH2(IK,1) = CH2(IK,1)+C2(IK,J)
-  128    CONTINUE
-  129 CONTINUE
-C
-      IF (IDO .LT. L1) GO TO 132
-      DO 131 K=1,L1
-         DO 130 I=1,IDO
-            CC(I,1,K) = CH(I,K,1)
-  130    CONTINUE
-  131 CONTINUE
-      GO TO 135
-  132 DO 134 I=1,IDO
-         DO 133 K=1,L1
-            CC(I,1,K) = CH(I,K,1)
-  133    CONTINUE
-  134 CONTINUE
-  135 DO 137 J=2,IPPH
-         JC = IPP2-J
-         J2 = J+J
-         DO 136 K=1,L1
-            CC(IDO,J2-2,K) = CH(1,K,J)
-            CC(1,J2-1,K) = CH(1,K,JC)
-  136    CONTINUE
-  137 CONTINUE
-      IF (IDO .EQ. 1) RETURN
-      IF (NBD .LT. L1) GO TO 141
-      DO 140 J=2,IPPH
-         JC = IPP2-J
-         J2 = J+J
-         DO 139 K=1,L1
-            DO 138 I=3,IDO,2
-               IC = IDP2-I
-               CC(I-1,J2-1,K) = CH(I-1,K,J)+CH(I-1,K,JC)
-               CC(IC-1,J2-2,K) = CH(I-1,K,J)-CH(I-1,K,JC)
-               CC(I,J2-1,K) = CH(I,K,J)+CH(I,K,JC)
-               CC(IC,J2-2,K) = CH(I,K,JC)-CH(I,K,J)
-  138       CONTINUE
-  139    CONTINUE
-  140 CONTINUE
-      RETURN
-  141 DO 144 J=2,IPPH
-         JC = IPP2-J
-         J2 = J+J
-         DO 143 I=3,IDO,2
-            IC = IDP2-I
-            DO 142 K=1,L1
-               CC(I-1,J2-1,K) = CH(I-1,K,J)+CH(I-1,K,JC)
-               CC(IC-1,J2-2,K) = CH(I-1,K,J)-CH(I-1,K,JC)
-               CC(I,J2-1,K) = CH(I,K,J)+CH(I,K,JC)
-               CC(IC,J2-2,K) = CH(I,K,JC)-CH(I,K,J)
-  142       CONTINUE
-  143    CONTINUE
-  144 CONTINUE
-      RETURN
-      END
-
-
-      SUBROUTINE DADF2 (IDO,L1,CC,CH,WA1)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       CH(IDO,2,L1)           ,CC(IDO,L1,2)           ,
-     1                WA1(1)
-      DO 101 K=1,L1
-         CH(1,1,K) = CC(1,K,1)+CC(1,K,2)
-         CH(IDO,2,K) = CC(1,K,1)-CC(1,K,2)
-  101 CONTINUE
-      IF (IDO.lt.2) GO TO 107
-      IF (IDO.eq.2) GO TO 105
-      GO TO 102
-  102 IDP2 = IDO+2
-      DO 104 K=1,L1
-         DO 103 I=3,IDO,2
-            IC = IDP2-I
-            TR2 = WA1(I-2)*CC(I-1,K,2)+WA1(I-1)*CC(I,K,2)
-            TI2 = WA1(I-2)*CC(I,K,2)-WA1(I-1)*CC(I-1,K,2)
-            CH(I,1,K) = CC(I,K,1)+TI2
-            CH(IC,2,K) = TI2-CC(I,K,1)
-            CH(I-1,1,K) = CC(I-1,K,1)+TR2
-            CH(IC-1,2,K) = CC(I-1,K,1)-TR2
-  103    CONTINUE
-  104 CONTINUE
-      IF (MOD(IDO,2) .EQ. 1) RETURN
-  105 DO 106 K=1,L1
-         CH(1,2,K) = -CC(IDO,K,2)
-         CH(IDO,1,K) = CC(IDO,K,1)
-  106 CONTINUE
-  107 RETURN
-      END
-
-      SUBROUTINE DADF3 (IDO,L1,CC,CH,WA1,WA2)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       CH(IDO,3,L1)           ,CC(IDO,L1,3)           ,
-     1                WA1(1)     ,WA2(1)
-C     *** TAUI IS -SQRT(3)/2 ***
-      DATA TAUR,TAUI /-0.5D0,0.86602540378443864676D0/
-      DO 101 K=1,L1
-         CR2 = CC(1,K,2)+CC(1,K,3)
-         CH(1,1,K) = CC(1,K,1)+CR2
-         CH(1,3,K) = TAUI*(CC(1,K,3)-CC(1,K,2))
-         CH(IDO,2,K) = CC(1,K,1)+TAUR*CR2
-  101 CONTINUE
-      IF (IDO .EQ. 1) RETURN
-      IDP2 = IDO+2
-      DO 103 K=1,L1
-         DO 102 I=3,IDO,2
-            IC = IDP2-I
-            DR2 = WA1(I-2)*CC(I-1,K,2)+WA1(I-1)*CC(I,K,2)
-            DI2 = WA1(I-2)*CC(I,K,2)-WA1(I-1)*CC(I-1,K,2)
-            DR3 = WA2(I-2)*CC(I-1,K,3)+WA2(I-1)*CC(I,K,3)
-            DI3 = WA2(I-2)*CC(I,K,3)-WA2(I-1)*CC(I-1,K,3)
-            CR2 = DR2+DR3
-            CI2 = DI2+DI3
-            CH(I-1,1,K) = CC(I-1,K,1)+CR2
-            CH(I,1,K) = CC(I,K,1)+CI2
-            TR2 = CC(I-1,K,1)+TAUR*CR2
-            TI2 = CC(I,K,1)+TAUR*CI2
-            TR3 = TAUI*(DI2-DI3)
-            TI3 = TAUI*(DR3-DR2)
-            CH(I-1,3,K) = TR2+TR3
-            CH(IC-1,2,K) = TR2-TR3
-            CH(I,3,K) = TI2+TI3
-            CH(IC,2,K) = TI3-TI2
-  102    CONTINUE
-  103 CONTINUE
-      RETURN
-      END
-
-      SUBROUTINE DADF4 (IDO,L1,CC,CH,WA1,WA2,WA3)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       CC(IDO,L1,4)           ,CH(IDO,4,L1)           ,
-     1                WA1(1)     ,WA2(1)     ,WA3(1)
-      DATA HSQT2 /0.70710678118654752440D0/
-      DO 101 K=1,L1
-         TR1 = CC(1,K,2)+CC(1,K,4)
-         TR2 = CC(1,K,1)+CC(1,K,3)
-         CH(1,1,K) = TR1+TR2
-         CH(IDO,4,K) = TR2-TR1
-         CH(IDO,2,K) = CC(1,K,1)-CC(1,K,3)
-         CH(1,3,K) = CC(1,K,4)-CC(1,K,2)
-  101 CONTINUE
-      IF (IDO.lt.2) GO TO 107
-      IF (IDO.eq.2) GO TO 105
-      GO TO 102
-  102 IDP2 = IDO+2
-      DO 104 K=1,L1
-         DO 103 I=3,IDO,2
-            IC = IDP2-I
-            CR2 = WA1(I-2)*CC(I-1,K,2)+WA1(I-1)*CC(I,K,2)
-            CI2 = WA1(I-2)*CC(I,K,2)-WA1(I-1)*CC(I-1,K,2)
-            CR3 = WA2(I-2)*CC(I-1,K,3)+WA2(I-1)*CC(I,K,3)
-            CI3 = WA2(I-2)*CC(I,K,3)-WA2(I-1)*CC(I-1,K,3)
-            CR4 = WA3(I-2)*CC(I-1,K,4)+WA3(I-1)*CC(I,K,4)
-            CI4 = WA3(I-2)*CC(I,K,4)-WA3(I-1)*CC(I-1,K,4)
-            TR1 = CR2+CR4
-            TR4 = CR4-CR2
-            TI1 = CI2+CI4
-            TI4 = CI2-CI4
-            TI2 = CC(I,K,1)+CI3
-            TI3 = CC(I,K,1)-CI3
-            TR2 = CC(I-1,K,1)+CR3
-            TR3 = CC(I-1,K,1)-CR3
-            CH(I-1,1,K) = TR1+TR2
-            CH(IC-1,4,K) = TR2-TR1
-            CH(I,1,K) = TI1+TI2
-            CH(IC,4,K) = TI1-TI2
-            CH(I-1,3,K) = TI4+TR3
-            CH(IC-1,2,K) = TR3-TI4
-            CH(I,3,K) = TR4+TI3
-            CH(IC,2,K) = TR4-TI3
-  103    CONTINUE
-  104 CONTINUE
-      IF (MOD(IDO,2) .EQ. 1) RETURN
-  105 CONTINUE
-      DO 106 K=1,L1
-         TI1 = -HSQT2*(CC(IDO,K,2)+CC(IDO,K,4))
-         TR1 = HSQT2*(CC(IDO,K,2)-CC(IDO,K,4))
-         CH(IDO,1,K) = TR1+CC(IDO,K,1)
-         CH(IDO,3,K) = CC(IDO,K,1)-TR1
-         CH(1,2,K) = TI1-CC(IDO,K,3)
-         CH(1,4,K) = TI1+CC(IDO,K,3)
-  106 CONTINUE
-  107 RETURN
-      END
-
-
-      SUBROUTINE DADF5 (IDO,L1,CC,CH,WA1,WA2,WA3,WA4)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       CC(IDO,L1,5)           ,CH(IDO,5,L1)           ,
-     1                WA1(1)     ,WA2(1)     ,WA3(1)     ,WA4(1)
-      DATA TR11,TI11,TR12,TI12 /0.3090169943749474241D0,
-     +     0.95105651629515357212D0,
-     1     -0.8090169943749474241D0, 0.58778525229247312917D0/
-      DO 101 K=1,L1
-         CR2 = CC(1,K,5)+CC(1,K,2)
-         CI5 = CC(1,K,5)-CC(1,K,2)
-         CR3 = CC(1,K,4)+CC(1,K,3)
-         CI4 = CC(1,K,4)-CC(1,K,3)
-         CH(1,1,K) = CC(1,K,1)+CR2+CR3
-         CH(IDO,2,K) = CC(1,K,1)+TR11*CR2+TR12*CR3
-         CH(1,3,K) = TI11*CI5+TI12*CI4
-         CH(IDO,4,K) = CC(1,K,1)+TR12*CR2+TR11*CR3
-         CH(1,5,K) = TI12*CI5-TI11*CI4
-  101 CONTINUE
-      IF (IDO .EQ. 1) RETURN
-      IDP2 = IDO+2
-      DO 103 K=1,L1
-         DO 102 I=3,IDO,2
-            IC = IDP2-I
-            DR2 = WA1(I-2)*CC(I-1,K,2)+WA1(I-1)*CC(I,K,2)
-            DI2 = WA1(I-2)*CC(I,K,2)-WA1(I-1)*CC(I-1,K,2)
-            DR3 = WA2(I-2)*CC(I-1,K,3)+WA2(I-1)*CC(I,K,3)
-            DI3 = WA2(I-2)*CC(I,K,3)-WA2(I-1)*CC(I-1,K,3)
-            DR4 = WA3(I-2)*CC(I-1,K,4)+WA3(I-1)*CC(I,K,4)
-            DI4 = WA3(I-2)*CC(I,K,4)-WA3(I-1)*CC(I-1,K,4)
-            DR5 = WA4(I-2)*CC(I-1,K,5)+WA4(I-1)*CC(I,K,5)
-            DI5 = WA4(I-2)*CC(I,K,5)-WA4(I-1)*CC(I-1,K,5)
-            CR2 = DR2+DR5
-            CI5 = DR5-DR2
-            CR5 = DI2-DI5
-            CI2 = DI2+DI5
-            CR3 = DR3+DR4
-            CI4 = DR4-DR3
-            CR4 = DI3-DI4
-            CI3 = DI3+DI4
-            CH(I-1,1,K) = CC(I-1,K,1)+CR2+CR3
-            CH(I,1,K) = CC(I,K,1)+CI2+CI3
-            TR2 = CC(I-1,K,1)+TR11*CR2+TR12*CR3
-            TI2 = CC(I,K,1)+TR11*CI2+TR12*CI3
-            TR3 = CC(I-1,K,1)+TR12*CR2+TR11*CR3
-            TI3 = CC(I,K,1)+TR12*CI2+TR11*CI3
-            TR5 = TI11*CR5+TI12*CR4
-            TI5 = TI11*CI5+TI12*CI4
-            TR4 = TI12*CR5-TI11*CR4
-            TI4 = TI12*CI5-TI11*CI4
-            CH(I-1,3,K) = TR2+TR5
-            CH(IC-1,2,K) = TR2-TR5
-            CH(I,3,K) = TI2+TI5
-            CH(IC,2,K) = TI5-TI2
-            CH(I-1,5,K) = TR3+TR4
-            CH(IC-1,4,K) = TR3-TR4
-            CH(I,5,K) = TI3+TI4
-            CH(IC,4,K) = TI4-TI3
-  102    CONTINUE
-  103 CONTINUE
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/dfftpack/dfftf1.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dfftf1.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/dffti.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dffti.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/dffti.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,8 +0,0 @@
-      SUBROUTINE DFFTI (N,WSAVE)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       WSAVE(1)
-      IF (N .EQ. 1) RETURN
-      CALL DFFTI1 (N,WSAVE(N+1),WSAVE(2*N+1))
-      RETURN
-      END
-

Copied: trunk/scipy/fftpack/src/dfftpack/dffti.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dffti.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/dffti1.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dffti1.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/dffti1.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,60 +0,0 @@
-      SUBROUTINE DFFTI1 (N,WA,IFAC)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       WA(*)      ,IFAC(*)    ,NTRYH(4)
-      DATA NTRYH(1),NTRYH(2),NTRYH(3),NTRYH(4)/4,2,3,5/
-      NL = N
-      NF = 0
-      J = 0
-  101 J = J+1
-      IF (J.le.4) GO TO 102
-      GO TO 103
-  102 NTRY = NTRYH(J)
-      GO TO 104
-  103 NTRY = NTRY+2
-  104 NQ = NL/NTRY
-      NR = NL-NTRY*NQ
-      IF (NR.eq.0) GO TO 105
-      GO TO 101
-  105 NF = NF+1
-      IFAC(NF+2) = NTRY
-      NL = NQ
-      IF (NTRY .NE. 2) GO TO 107
-      IF (NF .EQ. 1) GO TO 107
-      DO 106 I=2,NF
-         IB = NF-I+2
-         IFAC(IB+2) = IFAC(IB+1)
-  106 CONTINUE
-      IFAC(3) = 2
-  107 IF (NL .NE. 1) GO TO 104
-      IFAC(1) = N
-      IFAC(2) = NF
-      TPI = 6.28318530717958647692D0
-      ARGH = TPI/FLOAT(N)
-      IS = 0
-      NFM1 = NF-1
-      L1 = 1
-      IF (NFM1 .EQ. 0) RETURN
-      DO 110 K1=1,NFM1
-         IP = IFAC(K1+2)
-         LD = 0
-         L2 = L1*IP
-         IDO = N/L2
-         IPM = IP-1
-         DO 109 J=1,IPM
-            LD = LD+L1
-            I = IS
-            ARGLD = FLOAT(LD)*ARGH
-            FI = 0.0D0
-            DO 108 II=3,IDO,2
-               I = I+2
-               FI = FI+1.0D0
-               ARG = FI*ARGLD
-               WA(I-1) = COS(ARG)
-               WA(I) = SIN(ARG)
-  108       CONTINUE
-            IS = IS+IDO
-  109    CONTINUE
-         L1 = L2
-  110 CONTINUE
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/dfftpack/dffti1.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dffti1.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/doc
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/doc	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/doc	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,868 +0,0 @@
-                      DFFTPACK V1.0
-*****************************************************************
-
-        A Double precision clone by Hugh C. Pumphrey  of:
-
-                      FFTPACK
-               version 4  april 1985
-
-     a package of fortran subprograms for the fast fourier
-      transform of periodic and other symmetric sequences
-
-                         by
-
-                  paul n swarztrauber
-
-  national center for atmospheric research  boulder,colorado 80307
-
-   which is sponsored by the national science foundation
-
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-
-
-this package consists of programs which perform fast fourier
-transforms for both double complex and (double precision) real
-periodic sequences and certain other symmetric sequences that are
-listed below.
-
-1.   dffti     initialize  dfftf and dfftb
-2.   dfftf     forward transform of a real periodic sequence
-3.   dfftb     backward transform of a real coefficient array
-
-4.   dzffti    initialize dzfftf and dzfftb
-5.   dzfftf    a simplified real periodic forward transform
-6.   dzfftb    a simplified real periodic backward transform
-
-7.   dsinti     initialize dsint
-8.   dsint      sine transform of a real odd sequence
-
-9.   dcosti     initialize dcost
-10.  dcost      cosine transform of a real even sequence
-
-11.  dsinqi     initialize dsinqf and dsinqb
-12.  dsinqf     forward sine transform with odd wave numbers
-13.  dsinqb     unnormalized inverse of dsinqf
-
-14.  dcosqi     initialize dcosqf and dcosqb
-15.  dcosqf     forward cosine transform with odd wave numbers
-16.  dcosqb     unnormalized inverse of dcosqf
-
-17.  zffti     initialize zfftf and zfftb
-18.  zfftf     forward transform of a double complex periodic sequence
-19.  zfftb     unnormalized inverse of zfftf
-
-
-******************************************************************
-
-subroutine dffti(n,wsave)
-
-  ****************************************************************
-
-subroutine dffti initializes the array wsave which is used in
-both dfftf and dfftb. the prime factorization of n together with
-a tabulation of the trigonometric functions are computed and
-stored in wsave.
-
-input parameter
-
-n       the length of the sequence to be transformed.
-
-output parameter
-
-wsave   a work array which must be dimensioned at least 2*n+15.
-        the same work array can be used for both dfftf and dfftb
-        as long as n remains unchanged. different wsave arrays
-        are required for different values of n. the contents of
-        wsave must not be changed between calls of dfftf or dfftb.
-
-******************************************************************
-
-subroutine dfftf(n,r,wsave)
-
-******************************************************************
-
-subroutine dfftf computes the fourier coefficients of a real
-perodic sequence (fourier analysis). the transform is defined
-below at output parameter r.
-
-input parameters
-
-n       the length of the array r to be transformed.  the method
-        is most efficient when n is a product of small primes.
-        n may change so long as different work arrays are provided
-
-r       a real array of length n which contains the sequence
-        to be transformed
-
-wsave   a work array which must be dimensioned at least 2*n+15.
-        in the program that calls dfftf. the wsave array must be
-        initialized by calling subroutine dffti(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-        the same wsave array can be used by dfftf and dfftb.
-
-
-output parameters
-
-r       r(1) = the sum from i=1 to i=n of r(i)
-
-        if n is even set l =n/2   , if n is odd set l = (n+1)/2
-
-          then for k = 2,...,l
-
-             r(2*k-2) = the sum from i = 1 to i = n of
-
-                  r(i)*cos((k-1)*(i-1)*2*pi/n)
-
-             r(2*k-1) = the sum from i = 1 to i = n of
-
-                 -r(i)*sin((k-1)*(i-1)*2*pi/n)
-
-        if n is even
-
-             r(n) = the sum from i = 1 to i = n of
-
-                  (-1)**(i-1)*r(i)
-
- *****  note
-             this transform is unnormalized since a call of dfftf
-             followed by a call of dfftb will multiply the input
-             sequence by n.
-
-wsave   contains results which must not be destroyed between
-        calls of dfftf or dfftb.
-
-
-******************************************************************
-
-subroutine dfftb(n,r,wsave)
-
-******************************************************************
-
-subroutine dfftb computes the real perodic sequence from its
-fourier coefficients (fourier synthesis). the transform is defined
-below at output parameter r.
-
-input parameters
-
-n       the length of the array r to be transformed.  the method
-        is most efficient when n is a product of small primes.
-        n may change so long as different work arrays are provided
-
-r       a real array of length n which contains the sequence
-        to be transformed
-
-wsave   a work array which must be dimensioned at least 2*n+15.
-        in the program that calls dfftb. the wsave array must be
-        initialized by calling subroutine dffti(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-        the same wsave array can be used by dfftf and dfftb.
-
-
-output parameters
-
-r       for n even and for i = 1,...,n
-
-             r(i) = r(1)+(-1)**(i-1)*r(n)
-
-                  plus the sum from k=2 to k=n/2 of
-
-                   2.*r(2*k-2)*cos((k-1)*(i-1)*2*pi/n)
-
-                  -2.*r(2*k-1)*sin((k-1)*(i-1)*2*pi/n)
-
-        for n odd and for i = 1,...,n
-
-             r(i) = r(1) plus the sum from k=2 to k=(n+1)/2 of
-
-                  2.*r(2*k-2)*cos((k-1)*(i-1)*2*pi/n)
-
-                 -2.*r(2*k-1)*sin((k-1)*(i-1)*2*pi/n)
-
- *****  note
-             this transform is unnormalized since a call of dfftf
-             followed by a call of dfftb will multiply the input
-             sequence by n.
-
-wsave   contains results which must not be destroyed between
-        calls of dfftb or dfftf.
-
-
-******************************************************************
-
-subroutine dzffti(n,wsave)
-
-******************************************************************
-
-subroutine dzffti initializes the array wsave which is used in
-both dzfftf and dzfftb. the prime factorization of n together with
-a tabulation of the trigonometric functions are computed and
-stored in wsave.
-
-input parameter
-
-n       the length of the sequence to be transformed.
-
-output parameter
-
-wsave   a work array which must be dimensioned at least 3*n+15.
-        the same work array can be used for both dzfftf and dzfftb
-        as long as n remains unchanged. different wsave arrays
-        are required for different values of n.
-
-
-******************************************************************
-
-subroutine dzfftf(n,r,azero,a,b,wsave)
-
-******************************************************************
-
-subroutine dzfftf computes the fourier coefficients of a real
-perodic sequence (fourier analysis). the transform is defined
-below at output parameters azero,a and b. dzfftf is a simplified
-but slower version of dfftf.
-
-input parameters
-
-n       the length of the array r to be transformed.  the method
-        is must efficient when n is the product of small primes.
-
-r       a real array of length n which contains the sequence
-        to be transformed. r is not destroyed.
-
-
-wsave   a work array which must be dimensioned at least 3*n+15.
-        in the program that calls dzfftf. the wsave array must be
-        initialized by calling subroutine dzffti(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-        the same wsave array can be used by dzfftf and dzfftb.
-
-output parameters
-
-azero   the sum from i=1 to i=n of r(i)/n
-
-a,b     for n even b(n/2)=0. and a(n/2) is the sum from i=1 to
-        i=n of (-1)**(i-1)*r(i)/n
-
-        for n even define kmax=n/2-1
-        for n odd  define kmax=(n-1)/2
-
-        then for  k=1,...,kmax
-
-             a(k) equals the sum from i=1 to i=n of
-
-                  2./n*r(i)*cos(k*(i-1)*2*pi/n)
-
-             b(k) equals the sum from i=1 to i=n of
-
-                  2./n*r(i)*sin(k*(i-1)*2*pi/n)
-
-
-******************************************************************
-
-subroutine dzfftb(n,r,azero,a,b,wsave)
-
-******************************************************************
-
-subroutine dzfftb computes a real perodic sequence from its
-fourier coefficients (fourier synthesis). the transform is
-defined below at output parameter r. dzfftb is a simplified
-but slower version of dfftb.
-
-input parameters
-
-n       the length of the output array r.  the method is most
-        efficient when n is the product of small primes.
-
-azero   the constant fourier coefficient
-
-a,b     arrays which contain the remaining fourier coefficients
-        these arrays are not destroyed.
-
-        the length of these arrays depends on whether n is even or
-        odd.
-
-        if n is even n/2    locations are required
-        if n is odd (n-1)/2 locations are required
-
-wsave   a work array which must be dimensioned at least 3*n+15.
-        in the program that calls dzfftb. the wsave array must be
-        initialized by calling subroutine dzffti(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-        the same wsave array can be used by dzfftf and dzfftb.
-
-
-output parameters
-
-r       if n is even define kmax=n/2
-        if n is odd  define kmax=(n-1)/2
-
-        then for i=1,...,n
-
-             r(i)=azero plus the sum from k=1 to k=kmax of
-
-             a(k)*cos(k*(i-1)*2*pi/n)+b(k)*sin(k*(i-1)*2*pi/n)
-
-********************* complex notation **************************
-
-        for j=1,...,n
-
-        r(j) equals the sum from k=-kmax to k=kmax of
-
-             c(k)*exp(i*k*(j-1)*2*pi/n)
-
-        where
-
-             c(k) = .5*cmplx(a(k),-b(k))   for k=1,...,kmax
-
-             c(-k) = conjg(c(k))
-
-             c(0) = azero
-
-                  and i=sqrt(-1)
-
-*************** amplitude - phase notation ***********************
-
-        for i=1,...,n
-
-        r(i) equals azero plus the sum from k=1 to k=kmax of
-
-             alpha(k)*cos(k*(i-1)*2*pi/n+beta(k))
-
-        where
-
-             alpha(k) = sqrt(a(k)*a(k)+b(k)*b(k))
-
-             cos(beta(k))=a(k)/alpha(k)
-
-             sin(beta(k))=-b(k)/alpha(k)
-
-******************************************************************
-
-subroutine dsinti(n,wsave)
-
-******************************************************************
-
-subroutine dsinti initializes the array wsave which is used in
-subroutine dsint. the prime factorization of n together with
-a tabulation of the trigonometric functions are computed and
-stored in wsave.
-
-input parameter
-
-n       the length of the sequence to be transformed.  the method
-        is most efficient when n+1 is a product of small primes.
-
-output parameter
-
-wsave   a work array with at least int(2.5*n+15) locations.
-        different wsave arrays are required for different values
-        of n. the contents of wsave must not be changed between
-        calls of dsint.
-
-******************************************************************
-
-subroutine dsint(n,x,wsave)
-
-******************************************************************
-
-subroutine dsint computes the discrete fourier sine transform
-of an odd sequence x(i). the transform is defined below at
-output parameter x.
-
-dsint is the unnormalized inverse of itself since a call of dsint
-followed by another call of dsint will multiply the input sequence
-x by 2*(n+1).
-
-the array wsave which is used by subroutine dsint must be
-initialized by calling subroutine dsinti(n,wsave).
-
-input parameters
-
-n       the length of the sequence to be transformed.  the method
-        is most efficient when n+1 is the product of small primes.
-
-x       an array which contains the sequence to be transformed
-
-
-wsave   a work array with dimension at least int(2.5*n+15)
-        in the program that calls dsint. the wsave array must be
-        initialized by calling subroutine dsinti(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-
-output parameters
-
-x       for i=1,...,n
-
-             x(i)= the sum from k=1 to k=n
-
-                  2*x(k)*sin(k*i*pi/(n+1))
-
-             a call of dsint followed by another call of
-             dsint will multiply the sequence x by 2*(n+1).
-             hence dsint is the unnormalized inverse
-             of itself.
-
-wsave   contains initialization calculations which must not be
-        destroyed between calls of dsint.
-
-******************************************************************
-
-subroutine dcosti(n,wsave)
-
-******************************************************************
-
-subroutine dcosti initializes the array wsave which is used in
-subroutine dcost. the prime factorization of n together with
-a tabulation of the trigonometric functions are computed and
-stored in wsave.
-
-input parameter
-
-n       the length of the sequence to be transformed.  the method
-        is most efficient when n-1 is a product of small primes.
-
-output parameter
-
-wsave   a work array which must be dimensioned at least 3*n+15.
-        different wsave arrays are required for different values
-        of n. the contents of wsave must not be changed between
-        calls of dcost.
-
-******************************************************************
-
-subroutine dcost(n,x,wsave)
-
-******************************************************************
-
-subroutine dcost computes the discrete fourier cosine transform
-of an even sequence x(i). the transform is defined below at output
-parameter x.
-
-dcost is the unnormalized inverse of itself since a call of dcost
-followed by another call of dcost will multiply the input sequence
-x by 2*(n-1). the transform is defined below at output parameter x
-
-the array wsave which is used by subroutine dcost must be
-initialized by calling subroutine dcosti(n,wsave).
-
-input parameters
-
-n       the length of the sequence x. n must be greater than 1.
-        the method is most efficient when n-1 is a product of
-        small primes.
-
-x       an array which contains the sequence to be transformed
-
-wsave   a work array which must be dimensioned at least 3*n+15
-        in the program that calls dcost. the wsave array must be
-        initialized by calling subroutine dcosti(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-
-output parameters
-
-x       for i=1,...,n
-
-            x(i) = x(1)+(-1)**(i-1)*x(n)
-
-             + the sum from k=2 to k=n-1
-
-                 2*x(k)*cos((k-1)*(i-1)*pi/(n-1))
-
-             a call of dcost followed by another call of
-             dcost will multiply the sequence x by 2*(n-1)
-             hence dcost is the unnormalized inverse
-             of itself.
-
-wsave   contains initialization calculations which must not be
-        destroyed between calls of dcost.
-
-******************************************************************
-
-subroutine dsinqi(n,wsave)
-
-******************************************************************
-
-subroutine dsinqi initializes the array wsave which is used in
-both dsinqf and dsinqb. the prime factorization of n together with
-a tabulation of the trigonometric functions are computed and
-stored in wsave.
-
-input parameter
-
-n       the length of the sequence to be transformed. the method
-        is most efficient when n is a product of small primes.
-
-output parameter
-
-wsave   a work array which must be dimensioned at least 3*n+15.
-        the same work array can be used for both dsinqf and dsinqb
-        as long as n remains unchanged. different wsave arrays
-        are required for different values of n. the contents of
-        wsave must not be changed between calls of dsinqf or dsinqb.
-
-******************************************************************
-
-subroutine dsinqf(n,x,wsave)
-
-******************************************************************
-
-subroutine dsinqf computes the fast fourier transform of quarter
-wave data. that is , dsinqf computes the coefficients in a sine
-series representation with only odd wave numbers. the transform
-is defined below at output parameter x.
-
-dsinqb is the unnormalized inverse of dsinqf since a call of dsinqf
-followed by a call of dsinqb will multiply the input sequence x
-by 4*n.
-
-the array wsave which is used by subroutine dsinqf must be
-initialized by calling subroutine dsinqi(n,wsave).
-
-
-input parameters
-
-n       the length of the array x to be transformed.  the method
-        is most efficient when n is a product of small primes.
-
-x       an array which contains the sequence to be transformed
-
-wsave   a work array which must be dimensioned at least 3*n+15.
-        in the program that calls dsinqf. the wsave array must be
-        initialized by calling subroutine dsinqi(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-
-output parameters
-
-x       for i=1,...,n
-
-             x(i) = (-1)**(i-1)*x(n)
-
-                + the sum from k=1 to k=n-1 of
-
-                2*x(k)*sin((2*i-1)*k*pi/(2*n))
-
-             a call of dsinqf followed by a call of
-             dsinqb will multiply the sequence x by 4*n.
-             therefore dsinqb is the unnormalized inverse
-             of dsinqf.
-
-wsave   contains initialization calculations which must not
-        be destroyed between calls of dsinqf or dsinqb.
-
-******************************************************************
-
-subroutine dsinqb(n,x,wsave)
-
-******************************************************************
-
-subroutine dsinqb computes the fast fourier transform of quarter
-wave data. that is , dsinqb computes a sequence from its
-representation in terms of a sine series with odd wave numbers.
-the transform is defined below at output parameter x.
-
-dsinqf is the unnormalized inverse of dsinqb since a call of dsinqb
-followed by a call of dsinqf will multiply the input sequence x
-by 4*n.
-
-the array wsave which is used by subroutine dsinqb must be
-initialized by calling subroutine dsinqi(n,wsave).
-
-
-input parameters
-
-n       the length of the array x to be transformed.  the method
-        is most efficient when n is a product of small primes.
-
-x       an array which contains the sequence to be transformed
-
-wsave   a work array which must be dimensioned at least 3*n+15.
-        in the program that calls dsinqb. the wsave array must be
-        initialized by calling subroutine dsinqi(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-
-output parameters
-
-x       for i=1,...,n
-
-             x(i)= the sum from k=1 to k=n of
-
-               4*x(k)*sin((2k-1)*i*pi/(2*n))
-
-             a call of dsinqb followed by a call of
-             dsinqf will multiply the sequence x by 4*n.
-             therefore dsinqf is the unnormalized inverse
-             of dsinqb.
-
-wsave   contains initialization calculations which must not
-        be destroyed between calls of dsinqb or dsinqf.
-
-******************************************************************
-
-subroutine dcosqi(n,wsave)
-
-******************************************************************
-
-subroutine dcosqi initializes the array wsave which is used in
-both dcosqf and dcosqb. the prime factorization of n together with
-a tabulation of the trigonometric functions are computed and
-stored in wsave.
-
-input parameter
-
-n       the length of the array to be transformed.  the method
-        is most efficient when n is a product of small primes.
-
-output parameter
-
-wsave   a work array which must be dimensioned at least 3*n+15.
-        the same work array can be used for both dcosqf and dcosqb
-        as long as n remains unchanged. different wsave arrays
-        are required for different values of n. the contents of
-        wsave must not be changed between calls of dcosqf or dcosqb.
-
-******************************************************************
-
-subroutine dcosqf(n,x,wsave)
-
-******************************************************************
-
-subroutine dcosqf computes the fast fourier transform of quarter
-wave data. that is , dcosqf computes the coefficients in a cosine
-series representation with only odd wave numbers. the transform
-is defined below at output parameter x
-
-dcosqf is the unnormalized inverse of dcosqb since a call of dcosqf
-followed by a call of dcosqb will multiply the input sequence x
-by 4*n.
-
-the array wsave which is used by subroutine dcosqf must be
-initialized by calling subroutine dcosqi(n,wsave).
-
-
-input parameters
-
-n       the length of the array x to be transformed.  the method
-        is most efficient when n is a product of small primes.
-
-x       an array which contains the sequence to be transformed
-
-wsave   a work array which must be dimensioned at least 3*n+15
-        in the program that calls dcosqf. the wsave array must be
-        initialized by calling subroutine dcosqi(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-
-output parameters
-
-x       for i=1,...,n
-
-             x(i) = x(1) plus the sum from k=2 to k=n of
-
-                2*x(k)*cos((2*i-1)*(k-1)*pi/(2*n))
-
-             a call of dcosqf followed by a call of
-             cosqb will multiply the sequence x by 4*n.
-             therefore dcosqb is the unnormalized inverse
-             of dcosqf.
-
-wsave   contains initialization calculations which must not
-        be destroyed between calls of dcosqf or dcosqb.
-
-******************************************************************
-
-subroutine dcosqb(n,x,wsave)
-
-******************************************************************
-
-subroutine dcosqb computes the fast fourier transform of quarter
-wave data. that is , dcosqb computes a sequence from its
-representation in terms of a cosine series with odd wave numbers.
-the transform is defined below at output parameter x.
-
-dcosqb is the unnormalized inverse of dcosqf since a call of dcosqb
-followed by a call of dcosqf will multiply the input sequence x
-by 4*n.
-
-the array wsave which is used by subroutine dcosqb must be
-initialized by calling subroutine dcosqi(n,wsave).
-
-
-input parameters
-
-n       the length of the array x to be transformed.  the method
-        is most efficient when n is a product of small primes.
-
-x       an array which contains the sequence to be transformed
-
-wsave   a work array that must be dimensioned at least 3*n+15
-        in the program that calls dcosqb. the wsave array must be
-        initialized by calling subroutine dcosqi(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-
-output parameters
-
-x       for i=1,...,n
-
-             x(i)= the sum from k=1 to k=n of
-
-               4*x(k)*cos((2*k-1)*(i-1)*pi/(2*n))
-
-             a call of dcosqb followed by a call of
-             dcosqf will multiply the sequence x by 4*n.
-             therefore dcosqf is the unnormalized inverse
-             of dcosqb.
-
-wsave   contains initialization calculations which must not
-        be destroyed between calls of dcosqb or dcosqf.
-
-******************************************************************
-
-subroutine zffti(n,wsave)
-
-******************************************************************
-
-subroutine zffti initializes the array wsave which is used in
-both zfftf and zfftb. the prime factorization of n together with
-a tabulation of the trigonometric functions are computed and
-stored in wsave.
-
-input parameter
-
-n       the length of the sequence to be transformed
-
-output parameter
-
-wsave   a work array which must be dimensioned at least 4*n+15
-        the same work array can be used for both zfftf and zfftb
-        as long as n remains unchanged. different wsave arrays
-        are required for different values of n. the contents of
-        wsave must not be changed between calls of zfftf or zfftb.
-
-******************************************************************
-
-subroutine zfftf(n,c,wsave)
-
-******************************************************************
-
-subroutine zfftf computes the forward complex discrete fourier
-transform (the fourier analysis). equivalently , zfftf computes
-the fourier coefficients of a complex periodic sequence.
-the transform is defined below at output parameter c.
-
-the transform is not normalized. to obtain a normalized transform
-the output must be divided by n. otherwise a call of zfftf
-followed by a call of zfftb will multiply the sequence by n.
-
-the array wsave which is used by subroutine zfftf must be
-initialized by calling subroutine zffti(n,wsave).
-
-input parameters
-
-
-n      the length of the complex sequence c. the method is
-       more efficient when n is the product of small primes. n
-
-c      a complex array of length n which contains the sequence
-
-wsave   a real work array which must be dimensioned at least 4n+15
-        in the program that calls zfftf. the wsave array must be
-        initialized by calling subroutine zffti(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-        the same wsave array can be used by zfftf and zfftb.
-
-output parameters
-
-c      for j=1,...,n
-
-           c(j)=the sum from k=1,...,n of
-
-                 c(k)*exp(-i*(j-1)*(k-1)*2*pi/n)
-
-                       where i=sqrt(-1)
-
-wsave   contains initialization calculations which must not be
-        destroyed between calls of subroutine zfftf or zfftb
-
-******************************************************************
-
-subroutine zfftb(n,c,wsave)
-
-******************************************************************
-
-subroutine zfftb computes the backward complex discrete fourier
-transform (the fourier synthesis). equivalently , zfftb computes
-a complex periodic sequence from its fourier coefficients.
-the transform is defined below at output parameter c.
-
-a call of zfftf followed by a call of zfftb will multiply the
-sequence by n.
-
-the array wsave which is used by subroutine zfftb must be
-initialized by calling subroutine zffti(n,wsave).
-
-input parameters
-
-
-n      the length of the complex sequence c. the method is
-       more efficient when n is the product of small primes.
-
-c      a complex array of length n which contains the sequence
-
-wsave   a real work array which must be dimensioned at least 4n+15
-        in the program that calls zfftb. the wsave array must be
-        initialized by calling subroutine zffti(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-        the same wsave array can be used by zfftf and zfftb.
-
-output parameters
-
-c      for j=1,...,n
-
-           c(j)=the sum from k=1,...,n of
-
-                 c(k)*exp(i*(j-1)*(k-1)*2*pi/n)
-
-                       where i=sqrt(-1)
-
-wsave   contains initialization calculations which must not be
-        destroyed between calls of subroutine zfftf or zfftb
-
-
-
-["send index for vfftpk" describes a vectorized version of fftpack]
-

Copied: trunk/scipy/fftpack/src/dfftpack/doc (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/doc)

Deleted: trunk/scipy/fftpack/src/dfftpack/doc.double
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/doc.double	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/doc.double	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,25 +0,0 @@
-This documents the changes done by HCP to make fftpack into dfftpack
-
-(1) Renamed all files corresponding to subroutines in the API
-    i.e. ones documented as callable by the luser. Names chosen to match
-    the ones in libsunperf.
-
-(2) Inserted  IMPLICIT DOUBLE PRECISION (A-H,O-Z) after every
-    subroutine statement. This makes everything that used to be a real 
-    into a double.
-
-(3) Replaced floating constants with Double Prec. constants. All
-    0. become 0.D0 etc and PI, SQRT(2) etc. expanded to dble prec.
- 
-(4) Replaced DIMENSION FOO(1) with DIMENSION FOO(*) where foo
-    is an array argument of a subroutine. I only did this in the places 
-    where g77 notices it, so the compile looks cleaner.
-
-(5) Replaced COMPLEX with DOUBLE COMPLEX. Now, this is not standard 
-    fortran 77, so the whole thing may fall apart if you have a VERY
-    vanilla Fortran 77 compiler. On the other hand, the only place a 
-    complex is _declared_ as such is in the test program. If you don't have 
-    DOUBLE COMPLEX my guess is that the library will work, except for 
-    the routines  ZFFTI, ZFFTB and ZFFTF.
-
-(6) Updated the file doc 
\ No newline at end of file

Copied: trunk/scipy/fftpack/src/dfftpack/doc.double (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/doc.double)

Deleted: trunk/scipy/fftpack/src/dfftpack/dsinqb.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dsinqb.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/dsinqb.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,19 +0,0 @@
-      SUBROUTINE DSINQB (N,X,WSAVE)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       X(1)       ,WSAVE(1)
-      IF (N .GT. 1) GO TO 101
-      X(1) = 4.0D0*X(1)
-      RETURN
-  101 NS2 = N/2
-      DO 102 K=2,N,2
-         X(K) = -X(K)
-  102 CONTINUE
-      CALL DCOSQB (N,X,WSAVE)
-      DO 103 K=1,NS2
-         KC = N-K
-         XHOLD = X(K)
-         X(K) = X(KC+1)
-         X(KC+1) = XHOLD
-  103 CONTINUE
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/dfftpack/dsinqb.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dsinqb.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/dsinqf.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dsinqf.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/dsinqf.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,17 +0,0 @@
-      SUBROUTINE DSINQF (N,X,WSAVE)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       X(1)       ,WSAVE(1)
-      IF (N .EQ. 1) RETURN
-      NS2 = N/2
-      DO 101 K=1,NS2
-         KC = N-K
-         XHOLD = X(K)
-         X(K) = X(KC+1)
-         X(KC+1) = XHOLD
-  101 CONTINUE
-      CALL DCOSQF (N,X,WSAVE)
-      DO 102 K=2,N,2
-         X(K) = -X(K)
-  102 CONTINUE
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/dfftpack/dsinqf.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dsinqf.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/dsinqi.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dsinqi.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/dsinqi.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,6 +0,0 @@
-      SUBROUTINE DSINQI (N,WSAVE)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       WSAVE(1)
-      CALL DCOSQI (N,WSAVE)
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/dfftpack/dsinqi.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dsinqi.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/dsint.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dsint.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/dsint.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,10 +0,0 @@
-      SUBROUTINE DSINT (N,X,WSAVE)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       X(1)       ,WSAVE(1)      
-      NP1 = N+1
-      IW1 = N/2+1
-      IW2 = IW1+NP1
-      IW3 = IW2+NP1
-      CALL DSINT1(N,X,WSAVE,WSAVE(IW1),WSAVE(IW2),WSAVE(IW3))
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/dfftpack/dsint.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dsint.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/dsint1.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dsint1.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/dsint1.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,43 +0,0 @@
-      SUBROUTINE DSINT1(N,WAR,WAS,XH,X,IFAC)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION WAR(*),WAS(*),X(*),XH(*),IFAC(*)
-      DATA SQRT3 /1.73205080756887729352D0/
-      DO 100 I=1,N
-      XH(I) = WAR(I)
-      WAR(I) = X(I)
-  100 CONTINUE
-      IF (N.lt.2) GO TO 101
-      IF (N.eq.2) GO TO 102
-      GO TO 103
-  101 XH(1) = XH(1)+XH(1)
-      GO TO 106
-  102 XHOLD = SQRT3*(XH(1)+XH(2))
-      XH(2) = SQRT3*(XH(1)-XH(2))
-      XH(1) = XHOLD
-      GO TO 106
-  103 NP1 = N+1
-      NS2 = N/2
-      X(1) = 0.0D0
-      DO 104 K=1,NS2
-         KC = NP1-K
-         T1 = XH(K)-XH(KC)
-         T2 = WAS(K)*(XH(K)+XH(KC))
-         X(K+1) = T1+T2
-         X(KC+1) = T2-T1
-  104 CONTINUE
-      MODN = MOD(N,2)
-      IF (MODN .NE. 0) X(NS2+2) = 4.0D0*XH(NS2+1)
-      CALL DFFTF1 (NP1,X,XH,WAR,IFAC)
-      XH(1) = 0.5D0*X(1)
-      DO 105 I=3,N,2
-         XH(I-1) = -X(I)
-         XH(I) = XH(I-2)+X(I-1)
-  105 CONTINUE
-      IF (MODN .NE. 0) GO TO 106
-      XH(N) = -X(N+1)
-  106 DO 107 I=1,N
-      X(I) = WAR(I)
-      WAR(I) = XH(I)
-  107 CONTINUE
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/dfftpack/dsint1.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dsint1.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/dsinti.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dsinti.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/dsinti.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,14 +0,0 @@
-      SUBROUTINE DSINTI (N,WSAVE)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       WSAVE(1)
-      DATA PI /3.14159265358979323846D0/
-      IF (N .LE. 1) RETURN
-      NS2 = N/2
-      NP1 = N+1
-      DT = PI/FLOAT(NP1)
-      DO 101 K=1,NS2
-         WSAVE(K) = 2.0D0*SIN(K*DT)
-  101 CONTINUE
-      CALL DFFTI (NP1,WSAVE(NS2+1))
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/dfftpack/dsinti.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/dsinti.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/zfftb.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/zfftb.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/zfftb.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,9 +0,0 @@
-      SUBROUTINE ZFFTB (N,C,WSAVE)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       C(1)       ,WSAVE(1)
-      IF (N .EQ. 1) RETURN
-      IW1 = N+N+1
-      IW2 = IW1+N+N
-      CALL ZFFTB1 (N,C,WSAVE,WSAVE(IW1),WSAVE(IW2))
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/dfftpack/zfftb.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/zfftb.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/zfftb1.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/zfftb1.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/zfftb1.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,384 +0,0 @@
-      SUBROUTINE ZFFTB1 (N,C,CH,WA,IFAC)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       CH(*)      ,C(*)       ,WA(*)      ,IFAC(*)
-      NF = IFAC(2)
-      NA = 0
-      L1 = 1
-      IW = 1
-      DO 116 K1=1,NF
-         IP = IFAC(K1+2)
-         L2 = IP*L1
-         IDO = N/L2
-         IDOT = IDO+IDO
-         IDL1 = IDOT*L1
-         IF (IP .NE. 4) GO TO 103
-         IX2 = IW+IDOT
-         IX3 = IX2+IDOT
-         IF (NA .NE. 0) GO TO 101
-         CALL DPASSB4 (IDOT,L1,C,CH,WA(IW),WA(IX2),WA(IX3))
-         GO TO 102
-  101    CALL DPASSB4 (IDOT,L1,CH,C,WA(IW),WA(IX2),WA(IX3))
-  102    NA = 1-NA
-         GO TO 115
-  103    IF (IP .NE. 2) GO TO 106
-         IF (NA .NE. 0) GO TO 104
-         CALL DPASSB2 (IDOT,L1,C,CH,WA(IW))
-         GO TO 105
-  104    CALL DPASSB2 (IDOT,L1,CH,C,WA(IW))
-  105    NA = 1-NA
-         GO TO 115
-  106    IF (IP .NE. 3) GO TO 109
-         IX2 = IW+IDOT
-         IF (NA .NE. 0) GO TO 107
-         CALL DPASSB3 (IDOT,L1,C,CH,WA(IW),WA(IX2))
-         GO TO 108
-  107    CALL DPASSB3 (IDOT,L1,CH,C,WA(IW),WA(IX2))
-  108    NA = 1-NA
-         GO TO 115
-  109    IF (IP .NE. 5) GO TO 112
-         IX2 = IW+IDOT
-         IX3 = IX2+IDOT
-         IX4 = IX3+IDOT
-         IF (NA .NE. 0) GO TO 110
-         CALL DPASSB5 (IDOT,L1,C,CH,WA(IW),WA(IX2),WA(IX3),WA(IX4))
-         GO TO 111
-  110    CALL DPASSB5 (IDOT,L1,CH,C,WA(IW),WA(IX2),WA(IX3),WA(IX4))
-  111    NA = 1-NA
-         GO TO 115
-  112    IF (NA .NE. 0) GO TO 113
-         CALL DPASSB (NAC,IDOT,IP,L1,IDL1,C,C,C,CH,CH,WA(IW))
-         GO TO 114
-  113    CALL DPASSB (NAC,IDOT,IP,L1,IDL1,CH,CH,CH,C,C,WA(IW))
-  114    IF (NAC .NE. 0) NA = 1-NA
-  115    L1 = L2
-         IW = IW+(IP-1)*IDOT
-  116 CONTINUE
-      IF (NA .EQ. 0) RETURN
-      N2 = N+N
-      DO 117 I=1,N2
-         C(I) = CH(I)
-  117 CONTINUE
-      RETURN
-      END
-
-      SUBROUTINE DPASSB (NAC,IDO,IP,L1,IDL1,CC,C1,C2,CH,CH2,WA)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       CH(IDO,L1,IP)          ,CC(IDO,IP,L1)          ,
-     1                C1(IDO,L1,IP)          ,WA(1)      ,C2(IDL1,IP),
-     2                CH2(IDL1,IP)
-      IDOT = IDO/2
-      NT = IP*IDL1
-      IPP2 = IP+2
-      IPPH = (IP+1)/2
-      IDP = IP*IDO
-C
-      IF (IDO .LT. L1) GO TO 106
-      DO 103 J=2,IPPH
-         JC = IPP2-J
-         DO 102 K=1,L1
-            DO 101 I=1,IDO
-               CH(I,K,J) = CC(I,J,K)+CC(I,JC,K)
-               CH(I,K,JC) = CC(I,J,K)-CC(I,JC,K)
-  101       CONTINUE
-  102    CONTINUE
-  103 CONTINUE
-      DO 105 K=1,L1
-         DO 104 I=1,IDO
-            CH(I,K,1) = CC(I,1,K)
-  104    CONTINUE
-  105 CONTINUE
-      GO TO 112
-  106 DO 109 J=2,IPPH
-         JC = IPP2-J
-         DO 108 I=1,IDO
-            DO 107 K=1,L1
-               CH(I,K,J) = CC(I,J,K)+CC(I,JC,K)
-               CH(I,K,JC) = CC(I,J,K)-CC(I,JC,K)
-  107       CONTINUE
-  108    CONTINUE
-  109 CONTINUE
-      DO 111 I=1,IDO
-         DO 110 K=1,L1
-            CH(I,K,1) = CC(I,1,K)
-  110    CONTINUE
-  111 CONTINUE
-  112 IDL = 2-IDO
-      INC = 0
-      DO 116 L=2,IPPH
-         LC = IPP2-L
-         IDL = IDL+IDO
-         DO 113 IK=1,IDL1
-            C2(IK,L) = CH2(IK,1)+WA(IDL-1)*CH2(IK,2)
-            C2(IK,LC) = WA(IDL)*CH2(IK,IP)
-  113    CONTINUE
-         IDLJ = IDL
-         INC = INC+IDO
-         DO 115 J=3,IPPH
-            JC = IPP2-J
-            IDLJ = IDLJ+INC
-            IF (IDLJ .GT. IDP) IDLJ = IDLJ-IDP
-            WAR = WA(IDLJ-1)
-            WAI = WA(IDLJ)
-            DO 114 IK=1,IDL1
-               C2(IK,L) = C2(IK,L)+WAR*CH2(IK,J)
-               C2(IK,LC) = C2(IK,LC)+WAI*CH2(IK,JC)
-  114       CONTINUE
-  115    CONTINUE
-  116 CONTINUE
-      DO 118 J=2,IPPH
-         DO 117 IK=1,IDL1
-            CH2(IK,1) = CH2(IK,1)+CH2(IK,J)
-  117    CONTINUE
-  118 CONTINUE
-      DO 120 J=2,IPPH
-         JC = IPP2-J
-         DO 119 IK=2,IDL1,2
-            CH2(IK-1,J) = C2(IK-1,J)-C2(IK,JC)
-            CH2(IK-1,JC) = C2(IK-1,J)+C2(IK,JC)
-            CH2(IK,J) = C2(IK,J)+C2(IK-1,JC)
-            CH2(IK,JC) = C2(IK,J)-C2(IK-1,JC)
-  119    CONTINUE
-  120 CONTINUE
-      NAC = 1
-      IF (IDO .EQ. 2) RETURN
-      NAC = 0
-      DO 121 IK=1,IDL1
-         C2(IK,1) = CH2(IK,1)
-  121 CONTINUE
-      DO 123 J=2,IP
-         DO 122 K=1,L1
-            C1(1,K,J) = CH(1,K,J)
-            C1(2,K,J) = CH(2,K,J)
-  122    CONTINUE
-  123 CONTINUE
-      IF (IDOT .GT. L1) GO TO 127
-      IDIJ = 0
-      DO 126 J=2,IP
-         IDIJ = IDIJ+2
-         DO 125 I=4,IDO,2
-            IDIJ = IDIJ+2
-            DO 124 K=1,L1
-               C1(I-1,K,J) = WA(IDIJ-1)*CH(I-1,K,J)-WA(IDIJ)*CH(I,K,J)
-               C1(I,K,J) = WA(IDIJ-1)*CH(I,K,J)+WA(IDIJ)*CH(I-1,K,J)
-  124       CONTINUE
-  125    CONTINUE
-  126 CONTINUE
-      RETURN
-  127 IDJ = 2-IDO
-      DO 130 J=2,IP
-         IDJ = IDJ+IDO
-         DO 129 K=1,L1
-            IDIJ = IDJ
-            DO 128 I=4,IDO,2
-               IDIJ = IDIJ+2
-               C1(I-1,K,J) = WA(IDIJ-1)*CH(I-1,K,J)-WA(IDIJ)*CH(I,K,J)
-               C1(I,K,J) = WA(IDIJ-1)*CH(I,K,J)+WA(IDIJ)*CH(I-1,K,J)
-  128       CONTINUE
-  129    CONTINUE
-  130 CONTINUE
-      RETURN
-      END
-
-      SUBROUTINE DPASSB2 (IDO,L1,CC,CH,WA1)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       CC(IDO,2,L1)           ,CH(IDO,L1,2)           ,
-     1                WA1(1)
-      IF (IDO .GT. 2) GO TO 102
-      DO 101 K=1,L1
-         CH(1,K,1) = CC(1,1,K)+CC(1,2,K)
-         CH(1,K,2) = CC(1,1,K)-CC(1,2,K)
-         CH(2,K,1) = CC(2,1,K)+CC(2,2,K)
-         CH(2,K,2) = CC(2,1,K)-CC(2,2,K)
-  101 CONTINUE
-      RETURN
-  102 DO 104 K=1,L1
-         DO 103 I=2,IDO,2
-            CH(I-1,K,1) = CC(I-1,1,K)+CC(I-1,2,K)
-            TR2 = CC(I-1,1,K)-CC(I-1,2,K)
-            CH(I,K,1) = CC(I,1,K)+CC(I,2,K)
-            TI2 = CC(I,1,K)-CC(I,2,K)
-            CH(I,K,2) = WA1(I-1)*TI2+WA1(I)*TR2
-            CH(I-1,K,2) = WA1(I-1)*TR2-WA1(I)*TI2
-  103    CONTINUE
-  104 CONTINUE
-      RETURN
-      END
-
-      SUBROUTINE DPASSB3 (IDO,L1,CC,CH,WA1,WA2)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       CC(IDO,3,L1)           ,CH(IDO,L1,3)           ,
-     1                WA1(1)     ,WA2(1)
-C     *** TAUI IS SQRT(3)/2 *** 
-      DATA TAUR,TAUI /-0.5D0,0.86602540378443864676D0/
-      IF (IDO .NE. 2) GO TO 102
-      DO 101 K=1,L1
-         TR2 = CC(1,2,K)+CC(1,3,K)
-         CR2 = CC(1,1,K)+TAUR*TR2
-         CH(1,K,1) = CC(1,1,K)+TR2
-         TI2 = CC(2,2,K)+CC(2,3,K)
-         CI2 = CC(2,1,K)+TAUR*TI2
-         CH(2,K,1) = CC(2,1,K)+TI2
-         CR3 = TAUI*(CC(1,2,K)-CC(1,3,K))
-         CI3 = TAUI*(CC(2,2,K)-CC(2,3,K))
-         CH(1,K,2) = CR2-CI3
-         CH(1,K,3) = CR2+CI3
-         CH(2,K,2) = CI2+CR3
-         CH(2,K,3) = CI2-CR3
-  101 CONTINUE
-      RETURN
-  102 DO 104 K=1,L1
-         DO 103 I=2,IDO,2
-            TR2 = CC(I-1,2,K)+CC(I-1,3,K)
-            CR2 = CC(I-1,1,K)+TAUR*TR2
-            CH(I-1,K,1) = CC(I-1,1,K)+TR2
-            TI2 = CC(I,2,K)+CC(I,3,K)
-            CI2 = CC(I,1,K)+TAUR*TI2
-            CH(I,K,1) = CC(I,1,K)+TI2
-            CR3 = TAUI*(CC(I-1,2,K)-CC(I-1,3,K))
-            CI3 = TAUI*(CC(I,2,K)-CC(I,3,K))
-            DR2 = CR2-CI3
-            DR3 = CR2+CI3
-            DI2 = CI2+CR3
-            DI3 = CI2-CR3
-            CH(I,K,2) = WA1(I-1)*DI2+WA1(I)*DR2
-            CH(I-1,K,2) = WA1(I-1)*DR2-WA1(I)*DI2
-            CH(I,K,3) = WA2(I-1)*DI3+WA2(I)*DR3
-            CH(I-1,K,3) = WA2(I-1)*DR3-WA2(I)*DI3
-  103    CONTINUE
-  104 CONTINUE
-      RETURN
-      END
-
-
-      SUBROUTINE DPASSB4 (IDO,L1,CC,CH,WA1,WA2,WA3)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z) 
-      DIMENSION       CC(IDO,4,L1)           ,CH(IDO,L1,4)           ,
-     1                WA1(1)     ,WA2(1)     ,WA3(1)
-      IF (IDO .NE. 2) GO TO 102
-      DO 101 K=1,L1
-         TI1 = CC(2,1,K)-CC(2,3,K)
-         TI2 = CC(2,1,K)+CC(2,3,K)
-         TR4 = CC(2,4,K)-CC(2,2,K)
-         TI3 = CC(2,2,K)+CC(2,4,K)
-         TR1 = CC(1,1,K)-CC(1,3,K)
-         TR2 = CC(1,1,K)+CC(1,3,K)
-         TI4 = CC(1,2,K)-CC(1,4,K)
-         TR3 = CC(1,2,K)+CC(1,4,K)
-         CH(1,K,1) = TR2+TR3
-         CH(1,K,3) = TR2-TR3
-         CH(2,K,1) = TI2+TI3
-         CH(2,K,3) = TI2-TI3
-         CH(1,K,2) = TR1+TR4
-         CH(1,K,4) = TR1-TR4
-         CH(2,K,2) = TI1+TI4
-         CH(2,K,4) = TI1-TI4
-  101 CONTINUE
-      RETURN
-  102 DO 104 K=1,L1
-         DO 103 I=2,IDO,2
-            TI1 = CC(I,1,K)-CC(I,3,K)
-            TI2 = CC(I,1,K)+CC(I,3,K)
-            TI3 = CC(I,2,K)+CC(I,4,K)
-            TR4 = CC(I,4,K)-CC(I,2,K)
-            TR1 = CC(I-1,1,K)-CC(I-1,3,K)
-            TR2 = CC(I-1,1,K)+CC(I-1,3,K)
-            TI4 = CC(I-1,2,K)-CC(I-1,4,K)
-            TR3 = CC(I-1,2,K)+CC(I-1,4,K)
-            CH(I-1,K,1) = TR2+TR3
-            CR3 = TR2-TR3
-            CH(I,K,1) = TI2+TI3
-            CI3 = TI2-TI3
-            CR2 = TR1+TR4
-            CR4 = TR1-TR4
-            CI2 = TI1+TI4
-            CI4 = TI1-TI4
-            CH(I-1,K,2) = WA1(I-1)*CR2-WA1(I)*CI2
-            CH(I,K,2) = WA1(I-1)*CI2+WA1(I)*CR2
-            CH(I-1,K,3) = WA2(I-1)*CR3-WA2(I)*CI3
-            CH(I,K,3) = WA2(I-1)*CI3+WA2(I)*CR3
-            CH(I-1,K,4) = WA3(I-1)*CR4-WA3(I)*CI4
-            CH(I,K,4) = WA3(I-1)*CI4+WA3(I)*CR4
-  103    CONTINUE
-  104 CONTINUE
-      RETURN
-      END
-
-      SUBROUTINE DPASSB5 (IDO,L1,CC,CH,WA1,WA2,WA3,WA4)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       CC(IDO,5,L1)           ,CH(IDO,L1,5)           ,
-     1                WA1(1)     ,WA2(1)     ,WA3(1)     ,WA4(1)
-C     *** TR11=COS(2*PI/5), TI11=SIN(2*PI/5)
-C     *** TR12=COS(4*PI/5), TI12=SIN(4*PI/5)      
-      DATA TR11,TI11,TR12,TI12 /0.3090169943749474241D0,
-     +     0.95105651629515357212D0,
-     +     -0.8090169943749474241D0,0.58778525229247312917D0/
-      IF (IDO .NE. 2) GO TO 102
-      DO 101 K=1,L1
-         TI5 = CC(2,2,K)-CC(2,5,K)
-         TI2 = CC(2,2,K)+CC(2,5,K)
-         TI4 = CC(2,3,K)-CC(2,4,K)
-         TI3 = CC(2,3,K)+CC(2,4,K)
-         TR5 = CC(1,2,K)-CC(1,5,K)
-         TR2 = CC(1,2,K)+CC(1,5,K)
-         TR4 = CC(1,3,K)-CC(1,4,K)
-         TR3 = CC(1,3,K)+CC(1,4,K)
-         CH(1,K,1) = CC(1,1,K)+TR2+TR3
-         CH(2,K,1) = CC(2,1,K)+TI2+TI3
-         CR2 = CC(1,1,K)+TR11*TR2+TR12*TR3
-         CI2 = CC(2,1,K)+TR11*TI2+TR12*TI3
-         CR3 = CC(1,1,K)+TR12*TR2+TR11*TR3
-         CI3 = CC(2,1,K)+TR12*TI2+TR11*TI3
-         CR5 = TI11*TR5+TI12*TR4
-         CI5 = TI11*TI5+TI12*TI4
-         CR4 = TI12*TR5-TI11*TR4
-         CI4 = TI12*TI5-TI11*TI4
-         CH(1,K,2) = CR2-CI5
-         CH(1,K,5) = CR2+CI5
-         CH(2,K,2) = CI2+CR5
-         CH(2,K,3) = CI3+CR4
-         CH(1,K,3) = CR3-CI4
-         CH(1,K,4) = CR3+CI4
-         CH(2,K,4) = CI3-CR4
-         CH(2,K,5) = CI2-CR5
-  101 CONTINUE
-      RETURN
-  102 DO 104 K=1,L1
-         DO 103 I=2,IDO,2
-            TI5 = CC(I,2,K)-CC(I,5,K)
-            TI2 = CC(I,2,K)+CC(I,5,K)
-            TI4 = CC(I,3,K)-CC(I,4,K)
-            TI3 = CC(I,3,K)+CC(I,4,K)
-            TR5 = CC(I-1,2,K)-CC(I-1,5,K)
-            TR2 = CC(I-1,2,K)+CC(I-1,5,K)
-            TR4 = CC(I-1,3,K)-CC(I-1,4,K)
-            TR3 = CC(I-1,3,K)+CC(I-1,4,K)
-            CH(I-1,K,1) = CC(I-1,1,K)+TR2+TR3
-            CH(I,K,1) = CC(I,1,K)+TI2+TI3
-            CR2 = CC(I-1,1,K)+TR11*TR2+TR12*TR3
-            CI2 = CC(I,1,K)+TR11*TI2+TR12*TI3
-            CR3 = CC(I-1,1,K)+TR12*TR2+TR11*TR3
-            CI3 = CC(I,1,K)+TR12*TI2+TR11*TI3
-            CR5 = TI11*TR5+TI12*TR4
-            CI5 = TI11*TI5+TI12*TI4
-            CR4 = TI12*TR5-TI11*TR4
-            CI4 = TI12*TI5-TI11*TI4
-            DR3 = CR3-CI4
-            DR4 = CR3+CI4
-            DI3 = CI3+CR4
-            DI4 = CI3-CR4
-            DR5 = CR2+CI5
-            DR2 = CR2-CI5
-            DI5 = CI2-CR5
-            DI2 = CI2+CR5
-            CH(I-1,K,2) = WA1(I-1)*DR2-WA1(I)*DI2
-            CH(I,K,2) = WA1(I-1)*DI2+WA1(I)*DR2
-            CH(I-1,K,3) = WA2(I-1)*DR3-WA2(I)*DI3
-            CH(I,K,3) = WA2(I-1)*DI3+WA2(I)*DR3
-            CH(I-1,K,4) = WA3(I-1)*DR4-WA3(I)*DI4
-            CH(I,K,4) = WA3(I-1)*DI4+WA3(I)*DR4
-            CH(I-1,K,5) = WA4(I-1)*DR5-WA4(I)*DI5
-            CH(I,K,5) = WA4(I-1)*DI5+WA4(I)*DR5
-  103    CONTINUE
-  104 CONTINUE
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/dfftpack/zfftb1.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/zfftb1.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/zfftf.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/zfftf.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/zfftf.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,9 +0,0 @@
-      SUBROUTINE ZFFTF (N,C,WSAVE)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       C(1)       ,WSAVE(1)
-      IF (N .EQ. 1) RETURN
-      IW1 = N+N+1
-      IW2 = IW1+N+N
-      CALL ZFFTF1 (N,C,WSAVE,WSAVE(IW1),WSAVE(IW2))
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/dfftpack/zfftf.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/zfftf.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/zfftf1.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/zfftf1.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/zfftf1.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,383 +0,0 @@
-      SUBROUTINE ZFFTF1 (N,C,CH,WA,IFAC)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       CH(*)      ,C(*)       ,WA(*)      ,IFAC(*)
-      NF = IFAC(2)
-      NA = 0
-      L1 = 1
-      IW = 1
-      DO 116 K1=1,NF
-         IP = IFAC(K1+2)
-         L2 = IP*L1
-         IDO = N/L2
-         IDOT = IDO+IDO
-         IDL1 = IDOT*L1
-         IF (IP .NE. 4) GO TO 103
-         IX2 = IW+IDOT
-         IX3 = IX2+IDOT
-         IF (NA .NE. 0) GO TO 101
-         CALL DPASSF4 (IDOT,L1,C,CH,WA(IW),WA(IX2),WA(IX3))
-         GO TO 102
-  101    CALL DPASSF4 (IDOT,L1,CH,C,WA(IW),WA(IX2),WA(IX3))
-  102    NA = 1-NA
-         GO TO 115
-  103    IF (IP .NE. 2) GO TO 106
-         IF (NA .NE. 0) GO TO 104
-         CALL DPASSF2 (IDOT,L1,C,CH,WA(IW))
-         GO TO 105
-  104    CALL DPASSF2 (IDOT,L1,CH,C,WA(IW))
-  105    NA = 1-NA
-         GO TO 115
-  106    IF (IP .NE. 3) GO TO 109
-         IX2 = IW+IDOT
-         IF (NA .NE. 0) GO TO 107
-         CALL DPASSF3 (IDOT,L1,C,CH,WA(IW),WA(IX2))
-         GO TO 108
-  107    CALL DPASSF3 (IDOT,L1,CH,C,WA(IW),WA(IX2))
-  108    NA = 1-NA
-         GO TO 115
-  109    IF (IP .NE. 5) GO TO 112
-         IX2 = IW+IDOT
-         IX3 = IX2+IDOT
-         IX4 = IX3+IDOT
-         IF (NA .NE. 0) GO TO 110
-         CALL DPASSF5 (IDOT,L1,C,CH,WA(IW),WA(IX2),WA(IX3),WA(IX4))
-         GO TO 111
-  110    CALL DPASSF5 (IDOT,L1,CH,C,WA(IW),WA(IX2),WA(IX3),WA(IX4))
-  111    NA = 1-NA
-         GO TO 115
-  112    IF (NA .NE. 0) GO TO 113
-         CALL DPASSF (NAC,IDOT,IP,L1,IDL1,C,C,C,CH,CH,WA(IW))
-         GO TO 114
-  113    CALL DPASSF (NAC,IDOT,IP,L1,IDL1,CH,CH,CH,C,C,WA(IW))
-  114    IF (NAC .NE. 0) NA = 1-NA
-  115    L1 = L2
-         IW = IW+(IP-1)*IDOT
-  116 CONTINUE
-      IF (NA .EQ. 0) RETURN
-      N2 = N+N
-      DO 117 I=1,N2
-         C(I) = CH(I)
-  117 CONTINUE
-      RETURN
-      END
-
-      SUBROUTINE DPASSF (NAC,IDO,IP,L1,IDL1,CC,C1,C2,CH,CH2,WA)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       CH(IDO,L1,IP)          ,CC(IDO,IP,L1)          ,
-     1                C1(IDO,L1,IP)          ,WA(1)      ,C2(IDL1,IP),
-     2                CH2(IDL1,IP)
-      IDOT = IDO/2
-      NT = IP*IDL1
-      IPP2 = IP+2
-      IPPH = (IP+1)/2
-      IDP = IP*IDO
-C
-      IF (IDO .LT. L1) GO TO 106
-      DO 103 J=2,IPPH
-         JC = IPP2-J
-         DO 102 K=1,L1
-            DO 101 I=1,IDO
-               CH(I,K,J) = CC(I,J,K)+CC(I,JC,K)
-               CH(I,K,JC) = CC(I,J,K)-CC(I,JC,K)
-  101       CONTINUE
-  102    CONTINUE
-  103 CONTINUE
-      DO 105 K=1,L1
-         DO 104 I=1,IDO
-            CH(I,K,1) = CC(I,1,K)
-  104    CONTINUE
-  105 CONTINUE
-      GO TO 112
-  106 DO 109 J=2,IPPH
-         JC = IPP2-J
-         DO 108 I=1,IDO
-            DO 107 K=1,L1
-               CH(I,K,J) = CC(I,J,K)+CC(I,JC,K)
-               CH(I,K,JC) = CC(I,J,K)-CC(I,JC,K)
-  107       CONTINUE
-  108    CONTINUE
-  109 CONTINUE
-      DO 111 I=1,IDO
-         DO 110 K=1,L1
-            CH(I,K,1) = CC(I,1,K)
-  110    CONTINUE
-  111 CONTINUE
-  112 IDL = 2-IDO
-      INC = 0
-      DO 116 L=2,IPPH
-         LC = IPP2-L
-         IDL = IDL+IDO
-         DO 113 IK=1,IDL1
-            C2(IK,L) = CH2(IK,1)+WA(IDL-1)*CH2(IK,2)
-            C2(IK,LC) = -WA(IDL)*CH2(IK,IP)
-  113    CONTINUE
-         IDLJ = IDL
-         INC = INC+IDO
-         DO 115 J=3,IPPH
-            JC = IPP2-J
-            IDLJ = IDLJ+INC
-            IF (IDLJ .GT. IDP) IDLJ = IDLJ-IDP
-            WAR = WA(IDLJ-1)
-            WAI = WA(IDLJ)
-            DO 114 IK=1,IDL1
-               C2(IK,L) = C2(IK,L)+WAR*CH2(IK,J)
-               C2(IK,LC) = C2(IK,LC)-WAI*CH2(IK,JC)
-  114       CONTINUE
-  115    CONTINUE
-  116 CONTINUE
-      DO 118 J=2,IPPH
-         DO 117 IK=1,IDL1
-            CH2(IK,1) = CH2(IK,1)+CH2(IK,J)
-  117    CONTINUE
-  118 CONTINUE
-      DO 120 J=2,IPPH
-         JC = IPP2-J
-         DO 119 IK=2,IDL1,2
-            CH2(IK-1,J) = C2(IK-1,J)-C2(IK,JC)
-            CH2(IK-1,JC) = C2(IK-1,J)+C2(IK,JC)
-            CH2(IK,J) = C2(IK,J)+C2(IK-1,JC)
-            CH2(IK,JC) = C2(IK,J)-C2(IK-1,JC)
-  119    CONTINUE
-  120 CONTINUE
-      NAC = 1
-      IF (IDO .EQ. 2) RETURN
-      NAC = 0
-      DO 121 IK=1,IDL1
-         C2(IK,1) = CH2(IK,1)
-  121 CONTINUE
-      DO 123 J=2,IP
-         DO 122 K=1,L1
-            C1(1,K,J) = CH(1,K,J)
-            C1(2,K,J) = CH(2,K,J)
-  122    CONTINUE
-  123 CONTINUE
-      IF (IDOT .GT. L1) GO TO 127
-      IDIJ = 0
-      DO 126 J=2,IP
-         IDIJ = IDIJ+2
-         DO 125 I=4,IDO,2
-            IDIJ = IDIJ+2
-            DO 124 K=1,L1
-               C1(I-1,K,J) = WA(IDIJ-1)*CH(I-1,K,J)+WA(IDIJ)*CH(I,K,J)
-               C1(I,K,J) = WA(IDIJ-1)*CH(I,K,J)-WA(IDIJ)*CH(I-1,K,J)
-  124       CONTINUE
-  125    CONTINUE
-  126 CONTINUE
-      RETURN
-  127 IDJ = 2-IDO
-      DO 130 J=2,IP
-         IDJ = IDJ+IDO
-         DO 129 K=1,L1
-            IDIJ = IDJ
-            DO 128 I=4,IDO,2
-               IDIJ = IDIJ+2
-               C1(I-1,K,J) = WA(IDIJ-1)*CH(I-1,K,J)+WA(IDIJ)*CH(I,K,J)
-               C1(I,K,J) = WA(IDIJ-1)*CH(I,K,J)-WA(IDIJ)*CH(I-1,K,J)
-  128       CONTINUE
-  129    CONTINUE
-  130 CONTINUE
-      RETURN
-      END
-
-      SUBROUTINE DPASSF2 (IDO,L1,CC,CH,WA1)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z) 
-      DIMENSION       CC(IDO,2,L1)           ,CH(IDO,L1,2)           ,
-     1                WA1(1)
-      IF (IDO .GT. 2) GO TO 102
-      DO 101 K=1,L1
-         CH(1,K,1) = CC(1,1,K)+CC(1,2,K)
-         CH(1,K,2) = CC(1,1,K)-CC(1,2,K)
-         CH(2,K,1) = CC(2,1,K)+CC(2,2,K)
-         CH(2,K,2) = CC(2,1,K)-CC(2,2,K)
-  101 CONTINUE
-      RETURN
-  102 DO 104 K=1,L1
-         DO 103 I=2,IDO,2
-            CH(I-1,K,1) = CC(I-1,1,K)+CC(I-1,2,K)
-            TR2 = CC(I-1,1,K)-CC(I-1,2,K)
-            CH(I,K,1) = CC(I,1,K)+CC(I,2,K)
-            TI2 = CC(I,1,K)-CC(I,2,K)
-            CH(I,K,2) = WA1(I-1)*TI2-WA1(I)*TR2
-            CH(I-1,K,2) = WA1(I-1)*TR2+WA1(I)*TI2
-  103    CONTINUE
-  104 CONTINUE
-      RETURN
-      END
-
-      SUBROUTINE DPASSF3 (IDO,L1,CC,CH,WA1,WA2)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z) 
-      DIMENSION       CC(IDO,3,L1)           ,CH(IDO,L1,3)           ,
-     1                WA1(1)     ,WA2(1)
-C     *** TAUI IS -SQRT(3)/2 ***
-      DATA TAUR,TAUI /-0.5D0,-0.86602540378443864676D0/
-      IF (IDO .NE. 2) GO TO 102
-      DO 101 K=1,L1
-         TR2 = CC(1,2,K)+CC(1,3,K)
-         CR2 = CC(1,1,K)+TAUR*TR2
-         CH(1,K,1) = CC(1,1,K)+TR2
-         TI2 = CC(2,2,K)+CC(2,3,K)
-         CI2 = CC(2,1,K)+TAUR*TI2
-         CH(2,K,1) = CC(2,1,K)+TI2
-         CR3 = TAUI*(CC(1,2,K)-CC(1,3,K))
-         CI3 = TAUI*(CC(2,2,K)-CC(2,3,K))
-         CH(1,K,2) = CR2-CI3
-         CH(1,K,3) = CR2+CI3
-         CH(2,K,2) = CI2+CR3
-         CH(2,K,3) = CI2-CR3
-  101 CONTINUE
-      RETURN
-  102 DO 104 K=1,L1
-         DO 103 I=2,IDO,2
-            TR2 = CC(I-1,2,K)+CC(I-1,3,K)
-            CR2 = CC(I-1,1,K)+TAUR*TR2
-            CH(I-1,K,1) = CC(I-1,1,K)+TR2
-            TI2 = CC(I,2,K)+CC(I,3,K)
-            CI2 = CC(I,1,K)+TAUR*TI2
-            CH(I,K,1) = CC(I,1,K)+TI2
-            CR3 = TAUI*(CC(I-1,2,K)-CC(I-1,3,K))
-            CI3 = TAUI*(CC(I,2,K)-CC(I,3,K))
-            DR2 = CR2-CI3
-            DR3 = CR2+CI3
-            DI2 = CI2+CR3
-            DI3 = CI2-CR3
-            CH(I,K,2) = WA1(I-1)*DI2-WA1(I)*DR2
-            CH(I-1,K,2) = WA1(I-1)*DR2+WA1(I)*DI2
-            CH(I,K,3) = WA2(I-1)*DI3-WA2(I)*DR3
-            CH(I-1,K,3) = WA2(I-1)*DR3+WA2(I)*DI3
-  103    CONTINUE
-  104 CONTINUE
-      RETURN
-      END
-
-      SUBROUTINE DPASSF4 (IDO,L1,CC,CH,WA1,WA2,WA3)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       CC(IDO,4,L1)           ,CH(IDO,L1,4)           ,
-     1                WA1(1)     ,WA2(1)     ,WA3(1)
-      IF (IDO .NE. 2) GO TO 102
-      DO 101 K=1,L1
-         TI1 = CC(2,1,K)-CC(2,3,K)
-         TI2 = CC(2,1,K)+CC(2,3,K)
-         TR4 = CC(2,2,K)-CC(2,4,K)
-         TI3 = CC(2,2,K)+CC(2,4,K)
-         TR1 = CC(1,1,K)-CC(1,3,K)
-         TR2 = CC(1,1,K)+CC(1,3,K)
-         TI4 = CC(1,4,K)-CC(1,2,K)
-         TR3 = CC(1,2,K)+CC(1,4,K)
-         CH(1,K,1) = TR2+TR3
-         CH(1,K,3) = TR2-TR3
-         CH(2,K,1) = TI2+TI3
-         CH(2,K,3) = TI2-TI3
-         CH(1,K,2) = TR1+TR4
-         CH(1,K,4) = TR1-TR4
-         CH(2,K,2) = TI1+TI4
-         CH(2,K,4) = TI1-TI4
-  101 CONTINUE
-      RETURN
-  102 DO 104 K=1,L1
-         DO 103 I=2,IDO,2
-            TI1 = CC(I,1,K)-CC(I,3,K)
-            TI2 = CC(I,1,K)+CC(I,3,K)
-            TI3 = CC(I,2,K)+CC(I,4,K)
-            TR4 = CC(I,2,K)-CC(I,4,K)
-            TR1 = CC(I-1,1,K)-CC(I-1,3,K)
-            TR2 = CC(I-1,1,K)+CC(I-1,3,K)
-            TI4 = CC(I-1,4,K)-CC(I-1,2,K)
-            TR3 = CC(I-1,2,K)+CC(I-1,4,K)
-            CH(I-1,K,1) = TR2+TR3
-            CR3 = TR2-TR3
-            CH(I,K,1) = TI2+TI3
-            CI3 = TI2-TI3
-            CR2 = TR1+TR4
-            CR4 = TR1-TR4
-            CI2 = TI1+TI4
-            CI4 = TI1-TI4
-            CH(I-1,K,2) = WA1(I-1)*CR2+WA1(I)*CI2
-            CH(I,K,2) = WA1(I-1)*CI2-WA1(I)*CR2
-            CH(I-1,K,3) = WA2(I-1)*CR3+WA2(I)*CI3
-            CH(I,K,3) = WA2(I-1)*CI3-WA2(I)*CR3
-            CH(I-1,K,4) = WA3(I-1)*CR4+WA3(I)*CI4
-            CH(I,K,4) = WA3(I-1)*CI4-WA3(I)*CR4
-  103    CONTINUE
-  104 CONTINUE
-      RETURN
-      END
-
-      SUBROUTINE DPASSF5 (IDO,L1,CC,CH,WA1,WA2,WA3,WA4)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       CC(IDO,5,L1)           ,CH(IDO,L1,5)           ,
-     1                WA1(1)     ,WA2(1)     ,WA3(1)     ,WA4(1)
-C     *** TR11=COS(2*PI/5), TI11=-SIN(2*PI/5)
-C     *** TR12=-COS(4*PI/5), TI12=-SIN(4*PI/5)  
-      DATA TR11,TI11,TR12,TI12 /0.3090169943749474241D0,
-     +     -0.95105651629515357212D0,
-     1     -0.8090169943749474241D0, -0.58778525229247312917D0/
-      IF (IDO .NE. 2) GO TO 102
-      DO 101 K=1,L1
-         TI5 = CC(2,2,K)-CC(2,5,K)
-         TI2 = CC(2,2,K)+CC(2,5,K)
-         TI4 = CC(2,3,K)-CC(2,4,K)
-         TI3 = CC(2,3,K)+CC(2,4,K)
-         TR5 = CC(1,2,K)-CC(1,5,K)
-         TR2 = CC(1,2,K)+CC(1,5,K)
-         TR4 = CC(1,3,K)-CC(1,4,K)
-         TR3 = CC(1,3,K)+CC(1,4,K)
-         CH(1,K,1) = CC(1,1,K)+TR2+TR3
-         CH(2,K,1) = CC(2,1,K)+TI2+TI3
-         CR2 = CC(1,1,K)+TR11*TR2+TR12*TR3
-         CI2 = CC(2,1,K)+TR11*TI2+TR12*TI3
-         CR3 = CC(1,1,K)+TR12*TR2+TR11*TR3
-         CI3 = CC(2,1,K)+TR12*TI2+TR11*TI3
-         CR5 = TI11*TR5+TI12*TR4
-         CI5 = TI11*TI5+TI12*TI4
-         CR4 = TI12*TR5-TI11*TR4
-         CI4 = TI12*TI5-TI11*TI4
-         CH(1,K,2) = CR2-CI5
-         CH(1,K,5) = CR2+CI5
-         CH(2,K,2) = CI2+CR5
-         CH(2,K,3) = CI3+CR4
-         CH(1,K,3) = CR3-CI4
-         CH(1,K,4) = CR3+CI4
-         CH(2,K,4) = CI3-CR4
-         CH(2,K,5) = CI2-CR5
-  101 CONTINUE
-      RETURN
-  102 DO 104 K=1,L1
-         DO 103 I=2,IDO,2
-            TI5 = CC(I,2,K)-CC(I,5,K)
-            TI2 = CC(I,2,K)+CC(I,5,K)
-            TI4 = CC(I,3,K)-CC(I,4,K)
-            TI3 = CC(I,3,K)+CC(I,4,K)
-            TR5 = CC(I-1,2,K)-CC(I-1,5,K)
-            TR2 = CC(I-1,2,K)+CC(I-1,5,K)
-            TR4 = CC(I-1,3,K)-CC(I-1,4,K)
-            TR3 = CC(I-1,3,K)+CC(I-1,4,K)
-            CH(I-1,K,1) = CC(I-1,1,K)+TR2+TR3
-            CH(I,K,1) = CC(I,1,K)+TI2+TI3
-            CR2 = CC(I-1,1,K)+TR11*TR2+TR12*TR3
-            CI2 = CC(I,1,K)+TR11*TI2+TR12*TI3
-            CR3 = CC(I-1,1,K)+TR12*TR2+TR11*TR3
-            CI3 = CC(I,1,K)+TR12*TI2+TR11*TI3
-            CR5 = TI11*TR5+TI12*TR4
-            CI5 = TI11*TI5+TI12*TI4
-            CR4 = TI12*TR5-TI11*TR4
-            CI4 = TI12*TI5-TI11*TI4
-            DR3 = CR3-CI4
-            DR4 = CR3+CI4
-            DI3 = CI3+CR4
-            DI4 = CI3-CR4
-            DR5 = CR2+CI5
-            DR2 = CR2-CI5
-            DI5 = CI2-CR5
-            DI2 = CI2+CR5
-            CH(I-1,K,2) = WA1(I-1)*DR2+WA1(I)*DI2
-            CH(I,K,2) = WA1(I-1)*DI2-WA1(I)*DR2
-            CH(I-1,K,3) = WA2(I-1)*DR3+WA2(I)*DI3
-            CH(I,K,3) = WA2(I-1)*DI3-WA2(I)*DR3
-            CH(I-1,K,4) = WA3(I-1)*DR4+WA3(I)*DI4
-            CH(I,K,4) = WA3(I-1)*DI4-WA3(I)*DR4
-            CH(I-1,K,5) = WA4(I-1)*DR5+WA4(I)*DI5
-            CH(I,K,5) = WA4(I-1)*DI5-WA4(I)*DR5
-  103    CONTINUE
-  104 CONTINUE
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/dfftpack/zfftf1.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/zfftf1.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/zffti.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/zffti.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/zffti.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,9 +0,0 @@
-      SUBROUTINE ZFFTI (N,WSAVE)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       WSAVE(1)
-      IF (N .EQ. 1) RETURN
-      IW1 = N+N+1
-      IW2 = IW1+N+N
-      CALL ZFFTI1 (N,WSAVE(IW1),WSAVE(IW2))
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/dfftpack/zffti.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/zffti.f)

Deleted: trunk/scipy/fftpack/src/dfftpack/zffti1.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/dfftpack/zffti1.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/dfftpack/zffti1.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,63 +0,0 @@
-      SUBROUTINE ZFFTI1 (N,WA,IFAC)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      DIMENSION       WA(*)      ,IFAC(*)    ,NTRYH(4)
-      DATA NTRYH(1),NTRYH(2),NTRYH(3),NTRYH(4)/3,4,2,5/
-      NL = N
-      NF = 0
-      J = 0
-  101 J = J+1
-      IF (J.le.4) GO TO 102
-      GO TO 103
-  102 NTRY = NTRYH(J)
-      GO TO 104
-  103 NTRY = NTRY+2
-  104 NQ = NL/NTRY
-      NR = NL-NTRY*NQ
-      IF (NR.eq.0) GO TO 105
-      GO TO 101
-  105 NF = NF+1
-      IFAC(NF+2) = NTRY
-      NL = NQ
-      IF (NTRY .NE. 2) GO TO 107
-      IF (NF .EQ. 1) GO TO 107
-      DO 106 I=2,NF
-         IB = NF-I+2
-         IFAC(IB+2) = IFAC(IB+1)
-  106 CONTINUE
-      IFAC(3) = 2
-  107 IF (NL .NE. 1) GO TO 104
-      IFAC(1) = N
-      IFAC(2) = NF
-      TPI =  6.28318530717958647692D0
-      ARGH = TPI/FLOAT(N)
-      I = 2
-      L1 = 1
-      DO 110 K1=1,NF
-         IP = IFAC(K1+2)
-         LD = 0
-         L2 = L1*IP
-         IDO = N/L2
-         IDOT = IDO+IDO+2
-         IPM = IP-1
-         DO 109 J=1,IPM
-            I1 = I
-            WA(I-1) = 1.0D0
-            WA(I) = 0.0D0
-            LD = LD+L1
-            FI = 0.0D0
-            ARGLD = FLOAT(LD)*ARGH
-            DO 108 II=4,IDOT,2
-               I = I+2
-               FI = FI+1.D0
-               ARG = FI*ARGLD
-               WA(I-1) = COS(ARG)
-               WA(I) = SIN(ARG)
-  108       CONTINUE
-            IF (IP .LE. 5) GO TO 109
-            WA(I1-1) = WA(I-1)
-            WA(I1) = WA(I)
-  109    CONTINUE
-         L1 = L2
-  110 CONTINUE
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/dfftpack/zffti1.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/dfftpack/zffti1.f)

Modified: trunk/scipy/fftpack/src/drfft.c
===================================================================
--- trunk/scipy/fftpack/src/drfft.c	2008-11-01 14:42:39 UTC (rev 4892)
+++ trunk/scipy/fftpack/src/drfft.c	2008-11-01 14:49:49 UTC (rev 4893)
@@ -20,52 +20,5 @@
         drfft_##name(inout, n, direction, howmany, normalize);\
 }
 
-/* ************** Definition of backend specific functions ********* */
-
-/*
- * To add a backend :
- *  - create a file drfft_name.c, where you define a function drfft_name where
- *  name is the name of your backend. If you do not use the GEN_CACHE macro,
- *  you will need to define a function void destroy_drname_caches(void), 
- *  which can do nothing
- *  - in drfft.c, include the drfft_name.c file, and add the 3 following lines
- *  just after it:
- *  #ifndef WITH_DJBFFT
- *      GEN_PUBLIC_API(name)
- *  #endif
- */
-
-#ifdef WITH_FFTW3
-    #include "drfft_fftw3.c"
-    #ifndef WITH_DJBFFT
-        GEN_PUBLIC_API(fftw3)
-    #endif
-#elif defined WITH_FFTW
-    #include "drfft_fftw.c"
-    #ifndef WITH_DJBFFT
-        GEN_PUBLIC_API(fftw)
-    #endif
-#else /* Use fftpack by default */
-    #include "drfft_fftpack.c"
-    #ifndef WITH_DJBFFT
-        GEN_PUBLIC_API(fftpack)
-    #endif 
-#endif
-
-/* 
- * djbfft must be used at the end, because it needs another backend (defined
- * above) for non 2^n * size 
- */
-#ifdef WITH_DJBFFT
-    #include "drfft_djbfft.c"
-    void destroy_drfft_cache(void)
-    {
-        destroy_drdjbfft_caches();
-        drfft_def_destroy_cache();
-    }
-    void drfft(double *inout, int n, 
-            int direction, int howmany, int normalize)
-    {
-        drfft_djbfft(inout, n, direction, howmany, normalize);
-    }
-#endif
+#include "drfft_fftpack.c"
+GEN_PUBLIC_API(fftpack)

Deleted: trunk/scipy/fftpack/src/drfft_djbfft.c
===================================================================
--- trunk/scipy/fftpack/src/drfft_djbfft.c	2008-11-01 14:42:39 UTC (rev 4892)
+++ trunk/scipy/fftpack/src/drfft_djbfft.c	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,131 +0,0 @@
-/*
- * Last Change: Wed Aug 01 08:00 PM 2007 J
- *
- * Original code by Pearu Peterson.
- */
-
-/*
- * DJBFFT only implements size 2^N !
- *
- * drfft_def and drfft_def_destroy_cache are the functions used for size different
- * than 2^N
- */
-#ifdef WITH_FFTW3
-#define drfft_def drfft_fftw3
-#define drfft_def_destroy_cache destroy_drfftw3_caches
-#elif defined WITH_FFTW
-#define drfft_def drfft_fftw
-#define drfft_def_destroy_cache destroy_drfftw_caches
-#else
-#define drfft_def drfft_fftpack
-#define drfft_def_destroy_cache destroy_drfftpack_caches
-#endif
-
-GEN_CACHE(drdjbfft, (int n)
-	    , unsigned int *f;
-	    double *ptr;, 
-        caches_drdjbfft[i].n == n, 
-        caches_drdjbfft[id].f = (unsigned int *) malloc(sizeof(unsigned int) * (n));
-	    caches_drdjbfft[id].ptr = (double *) malloc(sizeof(double) * n);
-	    fftfreq_rtable(caches_drdjbfft[id].f, n);,
-	    free(caches_drdjbfft[id].f); 
-        free(caches_drdjbfft[id].ptr);, 
-        10)
-
-/**************** ZFFT function **********************/
-static void drfft_djbfft(double * inout,
-			 int n, int direction, int howmany, int normalize)
-{
-    int i;
-    double *ptr = inout;
-    double *ptrc = NULL;
-    unsigned int *f = NULL;
-
-    switch (n) {
-        case 2:;
-        case 4:;
-        case 8:;
-        case 16:;
-        case 32:;
-        case 64:;
-        case 128:;
-        case 256:;
-        case 512:;
-        case 1024:;
-        case 2048:;
-        case 4096:;
-        case 8192:
-        i = get_cache_id_drdjbfft(n);
-        f = caches_drdjbfft[i].f;
-        ptrc = caches_drdjbfft[i].ptr;
-    }
-    if (f == NULL) {
-        drfft_def(inout, n, direction, howmany, normalize);
-    }
-
-    switch (direction) {
-    case 1:
-        for (i = 0; i < howmany; ++i, ptr += n) {
-            if (f != NULL) {
-                COPYSTD2DJB(ptr, ptrc, n);
-                switch (n) {
-#define TMPCASE(N) case N: fftr8_##N(ptrc); break
-                    TMPCASE(2);
-                    TMPCASE(4);
-                    TMPCASE(8);
-                    TMPCASE(16);
-                    TMPCASE(32);
-                    TMPCASE(64);
-                    TMPCASE(128);
-                    TMPCASE(256);
-                    TMPCASE(512);
-                    TMPCASE(1024);
-                    TMPCASE(2048);
-                    TMPCASE(4096);
-                    TMPCASE(8192);
-#undef TMPCASE
-                }
-                COPYDJB2STD(ptrc, ptr, f, n);
-            } 
-        }
-        break;
-
-    case -1:
-        for (i = 0; i < howmany; ++i, ptr += n) {
-            if (f != NULL) {
-                COPYINVSTD2DJB(ptr, ptrc, normalize, f, n);
-                switch (n) {
-
-#define TMPCASE(N)case N:if(normalize)fftr8_scale##N(ptrc);fftr8_un##N(ptrc);break
-                    TMPCASE(2);
-                    TMPCASE(4);
-                    TMPCASE(8);
-                    TMPCASE(16);
-                    TMPCASE(32);
-                    TMPCASE(64);
-                    TMPCASE(128);
-                    TMPCASE(256);
-                    TMPCASE(512);
-                    TMPCASE(1024);
-                    TMPCASE(2048);
-                    TMPCASE(4096);
-                    TMPCASE(8192);
-#undef TMPCASE
-                }
-                COPYINVDJB2STD(ptrc, ptr, n);
-            } 
-        }
-        break;
-
-    default:
-        fprintf(stderr, "drfft: invalid direction=%d\n", direction);
-    }
-
-    if (normalize && f != NULL && direction == 1) {
-        double d = 1.0 / n;
-        ptr = inout;
-        for (i = n * howmany - 1; i >= 0; --i) {
-            (*(ptr++)) *= d;
-        }
-    }
-}

Deleted: trunk/scipy/fftpack/src/drfft_fftw.c
===================================================================
--- trunk/scipy/fftpack/src/drfft_fftw.c	2008-11-01 14:42:39 UTC (rev 4892)
+++ trunk/scipy/fftpack/src/drfft_fftw.c	2008-11-01 14:49:49 UTC (rev 4893)
@@ -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;
-        }
-    }
-}

Deleted: trunk/scipy/fftpack/src/drfft_fftw3.c
===================================================================
--- trunk/scipy/fftpack/src/drfft_fftw3.c	2008-11-01 14:42:39 UTC (rev 4892)
+++ trunk/scipy/fftpack/src/drfft_fftw3.c	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,65 +0,0 @@
-/*
- * Last Change: Wed Aug 01 07:00 PM 2007 J
- *
- * FFTW3 implementation
- *
- * Original code by Pearu Peterson.
- */
-
-GEN_CACHE(drfftw3, (int n, int d, int flags)
-	  , int direction;
-	  int flags;
-	  fftw_plan plan;
-	  double *ptr;, ((caches_drfftw3[i].n == n) &&
-			 (caches_drfftw3[i].direction == d) &&
-			 (caches_drfftw3[i].flags == flags))
-	  , caches_drfftw3[id].direction = d;
-	  caches_drfftw3[id].flags = flags;
-	  caches_drfftw3[id].ptr =
-	  (double *) fftw_malloc(sizeof(double) * (n));
-	  caches_drfftw3[id].plan =
-	  fftw_plan_r2r_1d(n, caches_drfftw3[id].ptr, caches_drfftw3[id].ptr,
-			   (d > 0 ? FFTW_R2HC : FFTW_HC2R), flags);,
-	  fftw_destroy_plan(caches_drfftw3[id].plan);
-	  fftw_free(caches_drfftw3[id].ptr);, 10)
-
-static void drfft_fftw3(double *inout, int n, int direction, int
-			howmany, int normalize)
-{
-    int i;
-    double *ptr = inout;
-
-    double *ptrc = NULL;
-    fftw_plan plan = NULL;
-
-    i = get_cache_id_drfftw3(n, direction, FFTW_ESTIMATE);
-    plan = caches_drfftw3[i].plan;
-    ptrc = caches_drfftw3[i].ptr;
-    switch (direction) {
-    case 1:
-        for (i = 0; i < howmany; ++i, ptr += n) {
-            memcpy(ptrc, ptr, sizeof(double) * n);
-            fftw_execute(plan);
-            COPYRFFTW2STD(ptrc, ptr, n);
-        }
-        break;
-
-    case -1:
-        for (i = 0; i < howmany; ++i, ptr += n) {
-            COPYINVRFFTW2STD(ptr, ptrc, n);
-            fftw_execute(plan);
-            memcpy(ptr, ptrc, sizeof(double) * n);
-        }
-        break;
-    default:
-        fprintf(stderr, "drfft: invalid direction=%d\n", direction);
-    }
-
-    if (normalize) {
-        double d = 1.0 / n;
-        ptr = inout;
-        for (i = n * howmany - 1; i >= 0; --i) {
-            (*(ptr++)) *= d;
-        }
-    }
-}

Copied: trunk/scipy/fftpack/src/fftpack (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack)


Property changes on: trunk/scipy/fftpack/src/fftpack
___________________________________________________________________
Name: svn:ignore
   + *.pyc
*.swp
*.pyd
*.so


Deleted: trunk/scipy/fftpack/src/fftpack/cfftb.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/cfftb.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/cfftb.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,8 +0,0 @@
-      SUBROUTINE CFFTB (N,C,WSAVE)
-      DIMENSION       C(*)       ,WSAVE(*)
-      IF (N .EQ. 1) RETURN
-      IW1 = N+N+1
-      IW2 = IW1+N+N
-      CALL CFFTB1 (N,C,WSAVE,WSAVE(IW1),WSAVE(IW2))
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/cfftb.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/cfftb.f)

Deleted: trunk/scipy/fftpack/src/fftpack/cfftb1.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/cfftb1.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/cfftb1.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,368 +0,0 @@
-      SUBROUTINE CFFTB1 (N,C,CH,WA,IFAC)
-      DIMENSION       CH(*)      ,C(*)       ,WA(*)      ,IFAC(*)
-      NF = IFAC(2)
-      NA = 0
-      L1 = 1
-      IW = 1
-      DO 116 K1=1,NF
-         IP = IFAC(K1+2)
-         L2 = IP*L1
-         IDO = N/L2
-         IDOT = IDO+IDO
-         IDL1 = IDOT*L1
-         IF (IP .NE. 4) GO TO 103
-         IX2 = IW+IDOT
-         IX3 = IX2+IDOT
-         IF (NA .NE. 0) GO TO 101
-         CALL PASSB4 (IDOT,L1,C,CH,WA(IW),WA(IX2),WA(IX3))
-         GO TO 102
-  101    CALL PASSB4 (IDOT,L1,CH,C,WA(IW),WA(IX2),WA(IX3))
-  102    NA = 1-NA
-         GO TO 115
-  103    IF (IP .NE. 2) GO TO 106
-         IF (NA .NE. 0) GO TO 104
-         CALL PASSB2 (IDOT,L1,C,CH,WA(IW))
-         GO TO 105
-  104    CALL PASSB2 (IDOT,L1,CH,C,WA(IW))
-  105    NA = 1-NA
-         GO TO 115
-  106    IF (IP .NE. 3) GO TO 109
-         IX2 = IW+IDOT
-         IF (NA .NE. 0) GO TO 107
-         CALL PASSB3 (IDOT,L1,C,CH,WA(IW),WA(IX2))
-         GO TO 108
-  107    CALL PASSB3 (IDOT,L1,CH,C,WA(IW),WA(IX2))
-  108    NA = 1-NA
-         GO TO 115
-  109    IF (IP .NE. 5) GO TO 112
-         IX2 = IW+IDOT
-         IX3 = IX2+IDOT
-         IX4 = IX3+IDOT
-         IF (NA .NE. 0) GO TO 110
-         CALL PASSB5 (IDOT,L1,C,CH,WA(IW),WA(IX2),WA(IX3),WA(IX4))
-         GO TO 111
-  110    CALL PASSB5 (IDOT,L1,CH,C,WA(IW),WA(IX2),WA(IX3),WA(IX4))
-  111    NA = 1-NA
-         GO TO 115
-  112    IF (NA .NE. 0) GO TO 113
-         CALL PASSB (NAC,IDOT,IP,L1,IDL1,C,C,C,CH,CH,WA(IW))
-         GO TO 114
-  113    CALL PASSB (NAC,IDOT,IP,L1,IDL1,CH,CH,CH,C,C,WA(IW))
-  114    IF (NAC .NE. 0) NA = 1-NA
-  115    L1 = L2
-         IW = IW+(IP-1)*IDOT
-  116 CONTINUE
-      IF (NA .EQ. 0) RETURN
-      N2 = N+N
-      DO 117 I=1,N2
-         C(I) = CH(I)
-  117 CONTINUE
-      RETURN
-      END
-      SUBROUTINE PASSB2 (IDO,L1,CC,CH,WA1)
-      DIMENSION       CC(IDO,2,L1)           ,CH(IDO,L1,2)           ,
-     1                WA1(*)
-      IF (IDO .GT. 2) GO TO 102
-      DO 101 K=1,L1
-         CH(1,K,1) = CC(1,1,K)+CC(1,2,K)
-         CH(1,K,2) = CC(1,1,K)-CC(1,2,K)
-         CH(2,K,1) = CC(2,1,K)+CC(2,2,K)
-         CH(2,K,2) = CC(2,1,K)-CC(2,2,K)
-  101 CONTINUE
-      RETURN
-  102 DO 104 K=1,L1
-         DO 103 I=2,IDO,2
-            CH(I-1,K,1) = CC(I-1,1,K)+CC(I-1,2,K)
-            TR2 = CC(I-1,1,K)-CC(I-1,2,K)
-            CH(I,K,1) = CC(I,1,K)+CC(I,2,K)
-            TI2 = CC(I,1,K)-CC(I,2,K)
-            CH(I,K,2) = WA1(I-1)*TI2+WA1(I)*TR2
-            CH(I-1,K,2) = WA1(I-1)*TR2-WA1(I)*TI2
-  103    CONTINUE
-  104 CONTINUE
-      RETURN
-      END
-      SUBROUTINE PASSB3 (IDO,L1,CC,CH,WA1,WA2)
-      DIMENSION       CC(IDO,3,L1)           ,CH(IDO,L1,3)           ,
-     1                WA1(*)     ,WA2(*)
-      DATA TAUR,TAUI /-.5,.866025403784439/
-      IF (IDO .NE. 2) GO TO 102
-      DO 101 K=1,L1
-         TR2 = CC(1,2,K)+CC(1,3,K)
-         CR2 = CC(1,1,K)+TAUR*TR2
-         CH(1,K,1) = CC(1,1,K)+TR2
-         TI2 = CC(2,2,K)+CC(2,3,K)
-         CI2 = CC(2,1,K)+TAUR*TI2
-         CH(2,K,1) = CC(2,1,K)+TI2
-         CR3 = TAUI*(CC(1,2,K)-CC(1,3,K))
-         CI3 = TAUI*(CC(2,2,K)-CC(2,3,K))
-         CH(1,K,2) = CR2-CI3
-         CH(1,K,3) = CR2+CI3
-         CH(2,K,2) = CI2+CR3
-         CH(2,K,3) = CI2-CR3
-  101 CONTINUE
-      RETURN
-  102 DO 104 K=1,L1
-         DO 103 I=2,IDO,2
-            TR2 = CC(I-1,2,K)+CC(I-1,3,K)
-            CR2 = CC(I-1,1,K)+TAUR*TR2
-            CH(I-1,K,1) = CC(I-1,1,K)+TR2
-            TI2 = CC(I,2,K)+CC(I,3,K)
-            CI2 = CC(I,1,K)+TAUR*TI2
-            CH(I,K,1) = CC(I,1,K)+TI2
-            CR3 = TAUI*(CC(I-1,2,K)-CC(I-1,3,K))
-            CI3 = TAUI*(CC(I,2,K)-CC(I,3,K))
-            DR2 = CR2-CI3
-            DR3 = CR2+CI3
-            DI2 = CI2+CR3
-            DI3 = CI2-CR3
-            CH(I,K,2) = WA1(I-1)*DI2+WA1(I)*DR2
-            CH(I-1,K,2) = WA1(I-1)*DR2-WA1(I)*DI2
-            CH(I,K,3) = WA2(I-1)*DI3+WA2(I)*DR3
-            CH(I-1,K,3) = WA2(I-1)*DR3-WA2(I)*DI3
-  103    CONTINUE
-  104 CONTINUE
-      RETURN
-      END
-      SUBROUTINE PASSB4 (IDO,L1,CC,CH,WA1,WA2,WA3)
-      DIMENSION       CC(IDO,4,L1)           ,CH(IDO,L1,4)           ,
-     1                WA1(*)     ,WA2(*)     ,WA3(*)
-      IF (IDO .NE. 2) GO TO 102
-      DO 101 K=1,L1
-         TI1 = CC(2,1,K)-CC(2,3,K)
-         TI2 = CC(2,1,K)+CC(2,3,K)
-         TR4 = CC(2,4,K)-CC(2,2,K)
-         TI3 = CC(2,2,K)+CC(2,4,K)
-         TR1 = CC(1,1,K)-CC(1,3,K)
-         TR2 = CC(1,1,K)+CC(1,3,K)
-         TI4 = CC(1,2,K)-CC(1,4,K)
-         TR3 = CC(1,2,K)+CC(1,4,K)
-         CH(1,K,1) = TR2+TR3
-         CH(1,K,3) = TR2-TR3
-         CH(2,K,1) = TI2+TI3
-         CH(2,K,3) = TI2-TI3
-         CH(1,K,2) = TR1+TR4
-         CH(1,K,4) = TR1-TR4
-         CH(2,K,2) = TI1+TI4
-         CH(2,K,4) = TI1-TI4
-  101 CONTINUE
-      RETURN
-  102 DO 104 K=1,L1
-         DO 103 I=2,IDO,2
-            TI1 = CC(I,1,K)-CC(I,3,K)
-            TI2 = CC(I,1,K)+CC(I,3,K)
-            TI3 = CC(I,2,K)+CC(I,4,K)
-            TR4 = CC(I,4,K)-CC(I,2,K)
-            TR1 = CC(I-1,1,K)-CC(I-1,3,K)
-            TR2 = CC(I-1,1,K)+CC(I-1,3,K)
-            TI4 = CC(I-1,2,K)-CC(I-1,4,K)
-            TR3 = CC(I-1,2,K)+CC(I-1,4,K)
-            CH(I-1,K,1) = TR2+TR3
-            CR3 = TR2-TR3
-            CH(I,K,1) = TI2+TI3
-            CI3 = TI2-TI3
-            CR2 = TR1+TR4
-            CR4 = TR1-TR4
-            CI2 = TI1+TI4
-            CI4 = TI1-TI4
-            CH(I-1,K,2) = WA1(I-1)*CR2-WA1(I)*CI2
-            CH(I,K,2) = WA1(I-1)*CI2+WA1(I)*CR2
-            CH(I-1,K,3) = WA2(I-1)*CR3-WA2(I)*CI3
-            CH(I,K,3) = WA2(I-1)*CI3+WA2(I)*CR3
-            CH(I-1,K,4) = WA3(I-1)*CR4-WA3(I)*CI4
-            CH(I,K,4) = WA3(I-1)*CI4+WA3(I)*CR4
-  103    CONTINUE
-  104 CONTINUE
-      RETURN
-      END
-      SUBROUTINE PASSB5 (IDO,L1,CC,CH,WA1,WA2,WA3,WA4)
-      DIMENSION       CC(IDO,5,L1)           ,CH(IDO,L1,5)           ,
-     1                WA1(*)     ,WA2(*)     ,WA3(*)     ,WA4(*)
-      DATA TR11,TI11,TR12,TI12 /.309016994374947,.951056516295154,
-     1-.809016994374947,.587785252292473/
-      IF (IDO .NE. 2) GO TO 102
-      DO 101 K=1,L1
-         TI5 = CC(2,2,K)-CC(2,5,K)
-         TI2 = CC(2,2,K)+CC(2,5,K)
-         TI4 = CC(2,3,K)-CC(2,4,K)
-         TI3 = CC(2,3,K)+CC(2,4,K)
-         TR5 = CC(1,2,K)-CC(1,5,K)
-         TR2 = CC(1,2,K)+CC(1,5,K)
-         TR4 = CC(1,3,K)-CC(1,4,K)
-         TR3 = CC(1,3,K)+CC(1,4,K)
-         CH(1,K,1) = CC(1,1,K)+TR2+TR3
-         CH(2,K,1) = CC(2,1,K)+TI2+TI3
-         CR2 = CC(1,1,K)+TR11*TR2+TR12*TR3
-         CI2 = CC(2,1,K)+TR11*TI2+TR12*TI3
-         CR3 = CC(1,1,K)+TR12*TR2+TR11*TR3
-         CI3 = CC(2,1,K)+TR12*TI2+TR11*TI3
-         CR5 = TI11*TR5+TI12*TR4
-         CI5 = TI11*TI5+TI12*TI4
-         CR4 = TI12*TR5-TI11*TR4
-         CI4 = TI12*TI5-TI11*TI4
-         CH(1,K,2) = CR2-CI5
-         CH(1,K,5) = CR2+CI5
-         CH(2,K,2) = CI2+CR5
-         CH(2,K,3) = CI3+CR4
-         CH(1,K,3) = CR3-CI4
-         CH(1,K,4) = CR3+CI4
-         CH(2,K,4) = CI3-CR4
-         CH(2,K,5) = CI2-CR5
-  101 CONTINUE
-      RETURN
-  102 DO 104 K=1,L1
-         DO 103 I=2,IDO,2
-            TI5 = CC(I,2,K)-CC(I,5,K)
-            TI2 = CC(I,2,K)+CC(I,5,K)
-            TI4 = CC(I,3,K)-CC(I,4,K)
-            TI3 = CC(I,3,K)+CC(I,4,K)
-            TR5 = CC(I-1,2,K)-CC(I-1,5,K)
-            TR2 = CC(I-1,2,K)+CC(I-1,5,K)
-            TR4 = CC(I-1,3,K)-CC(I-1,4,K)
-            TR3 = CC(I-1,3,K)+CC(I-1,4,K)
-            CH(I-1,K,1) = CC(I-1,1,K)+TR2+TR3
-            CH(I,K,1) = CC(I,1,K)+TI2+TI3
-            CR2 = CC(I-1,1,K)+TR11*TR2+TR12*TR3
-            CI2 = CC(I,1,K)+TR11*TI2+TR12*TI3
-            CR3 = CC(I-1,1,K)+TR12*TR2+TR11*TR3
-            CI3 = CC(I,1,K)+TR12*TI2+TR11*TI3
-            CR5 = TI11*TR5+TI12*TR4
-            CI5 = TI11*TI5+TI12*TI4
-            CR4 = TI12*TR5-TI11*TR4
-            CI4 = TI12*TI5-TI11*TI4
-            DR3 = CR3-CI4
-            DR4 = CR3+CI4
-            DI3 = CI3+CR4
-            DI4 = CI3-CR4
-            DR5 = CR2+CI5
-            DR2 = CR2-CI5
-            DI5 = CI2-CR5
-            DI2 = CI2+CR5
-            CH(I-1,K,2) = WA1(I-1)*DR2-WA1(I)*DI2
-            CH(I,K,2) = WA1(I-1)*DI2+WA1(I)*DR2
-            CH(I-1,K,3) = WA2(I-1)*DR3-WA2(I)*DI3
-            CH(I,K,3) = WA2(I-1)*DI3+WA2(I)*DR3
-            CH(I-1,K,4) = WA3(I-1)*DR4-WA3(I)*DI4
-            CH(I,K,4) = WA3(I-1)*DI4+WA3(I)*DR4
-            CH(I-1,K,5) = WA4(I-1)*DR5-WA4(I)*DI5
-            CH(I,K,5) = WA4(I-1)*DI5+WA4(I)*DR5
-  103    CONTINUE
-  104 CONTINUE
-      RETURN
-      END
-      SUBROUTINE PASSB (NAC,IDO,IP,L1,IDL1,CC,C1,C2,CH,CH2,WA)
-      DIMENSION       CH(IDO,L1,IP)          ,CC(IDO,IP,L1)          ,
-     1                C1(IDO,L1,IP)          ,WA(*)      ,C2(IDL1,IP),
-     2                CH2(IDL1,IP)
-      IDOT = IDO/2
-      NT = IP*IDL1
-      IPP2 = IP+2
-      IPPH = (IP+1)/2
-      IDP = IP*IDO
-C
-      IF (IDO .LT. L1) GO TO 106
-      DO 103 J=2,IPPH
-         JC = IPP2-J
-         DO 102 K=1,L1
-            DO 101 I=1,IDO
-               CH(I,K,J) = CC(I,J,K)+CC(I,JC,K)
-               CH(I,K,JC) = CC(I,J,K)-CC(I,JC,K)
-  101       CONTINUE
-  102    CONTINUE
-  103 CONTINUE
-      DO 105 K=1,L1
-         DO 104 I=1,IDO
-            CH(I,K,1) = CC(I,1,K)
-  104    CONTINUE
-  105 CONTINUE
-      GO TO 112
-  106 DO 109 J=2,IPPH
-         JC = IPP2-J
-         DO 108 I=1,IDO
-            DO 107 K=1,L1
-               CH(I,K,J) = CC(I,J,K)+CC(I,JC,K)
-               CH(I,K,JC) = CC(I,J,K)-CC(I,JC,K)
-  107       CONTINUE
-  108    CONTINUE
-  109 CONTINUE
-      DO 111 I=1,IDO
-         DO 110 K=1,L1
-            CH(I,K,1) = CC(I,1,K)
-  110    CONTINUE
-  111 CONTINUE
-  112 IDL = 2-IDO
-      INC = 0
-      DO 116 L=2,IPPH
-         LC = IPP2-L
-         IDL = IDL+IDO
-         DO 113 IK=1,IDL1
-            C2(IK,L) = CH2(IK,1)+WA(IDL-1)*CH2(IK,2)
-            C2(IK,LC) = WA(IDL)*CH2(IK,IP)
-  113    CONTINUE
-         IDLJ = IDL
-         INC = INC+IDO
-         DO 115 J=3,IPPH
-            JC = IPP2-J
-            IDLJ = IDLJ+INC
-            IF (IDLJ .GT. IDP) IDLJ = IDLJ-IDP
-            WAR = WA(IDLJ-1)
-            WAI = WA(IDLJ)
-            DO 114 IK=1,IDL1
-               C2(IK,L) = C2(IK,L)+WAR*CH2(IK,J)
-               C2(IK,LC) = C2(IK,LC)+WAI*CH2(IK,JC)
-  114       CONTINUE
-  115    CONTINUE
-  116 CONTINUE
-      DO 118 J=2,IPPH
-         DO 117 IK=1,IDL1
-            CH2(IK,1) = CH2(IK,1)+CH2(IK,J)
-  117    CONTINUE
-  118 CONTINUE
-      DO 120 J=2,IPPH
-         JC = IPP2-J
-         DO 119 IK=2,IDL1,2
-            CH2(IK-1,J) = C2(IK-1,J)-C2(IK,JC)
-            CH2(IK-1,JC) = C2(IK-1,J)+C2(IK,JC)
-            CH2(IK,J) = C2(IK,J)+C2(IK-1,JC)
-            CH2(IK,JC) = C2(IK,J)-C2(IK-1,JC)
-  119    CONTINUE
-  120 CONTINUE
-      NAC = 1
-      IF (IDO .EQ. 2) RETURN
-      NAC = 0
-      DO 121 IK=1,IDL1
-         C2(IK,1) = CH2(IK,1)
-  121 CONTINUE
-      DO 123 J=2,IP
-         DO 122 K=1,L1
-            C1(1,K,J) = CH(1,K,J)
-            C1(2,K,J) = CH(2,K,J)
-  122    CONTINUE
-  123 CONTINUE
-      IF (IDOT .GT. L1) GO TO 127
-      IDIJ = 0
-      DO 126 J=2,IP
-         IDIJ = IDIJ+2
-         DO 125 I=4,IDO,2
-            IDIJ = IDIJ+2
-            DO 124 K=1,L1
-               C1(I-1,K,J) = WA(IDIJ-1)*CH(I-1,K,J)-WA(IDIJ)*CH(I,K,J)
-               C1(I,K,J) = WA(IDIJ-1)*CH(I,K,J)+WA(IDIJ)*CH(I-1,K,J)
-  124       CONTINUE
-  125    CONTINUE
-  126 CONTINUE
-      RETURN
-  127 IDJ = 2-IDO
-      DO 130 J=2,IP
-         IDJ = IDJ+IDO
-         DO 129 K=1,L1
-            IDIJ = IDJ
-            DO 128 I=4,IDO,2
-               IDIJ = IDIJ+2
-               C1(I-1,K,J) = WA(IDIJ-1)*CH(I-1,K,J)-WA(IDIJ)*CH(I,K,J)
-               C1(I,K,J) = WA(IDIJ-1)*CH(I,K,J)+WA(IDIJ)*CH(I-1,K,J)
-  128       CONTINUE
-  129    CONTINUE
-  130 CONTINUE
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/cfftb1.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/cfftb1.f)

Deleted: trunk/scipy/fftpack/src/fftpack/cfftf.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/cfftf.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/cfftf.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,8 +0,0 @@
-      SUBROUTINE CFFTF (N,C,WSAVE)
-      DIMENSION       C(*)       ,WSAVE(*)
-      IF (N .EQ. 1) RETURN
-      IW1 = N+N+1
-      IW2 = IW1+N+N
-      CALL CFFTF1 (N,C,WSAVE,WSAVE(IW1),WSAVE(IW2))
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/cfftf.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/cfftf.f)

Deleted: trunk/scipy/fftpack/src/fftpack/cfftf1.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/cfftf1.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/cfftf1.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,368 +0,0 @@
-      SUBROUTINE CFFTF1 (N,C,CH,WA,IFAC)
-      DIMENSION       CH(*)      ,C(*)       ,WA(*)      ,IFAC(*)
-      NF = IFAC(2)
-      NA = 0
-      L1 = 1
-      IW = 1
-      DO 116 K1=1,NF
-         IP = IFAC(K1+2)
-         L2 = IP*L1
-         IDO = N/L2
-         IDOT = IDO+IDO
-         IDL1 = IDOT*L1
-         IF (IP .NE. 4) GO TO 103
-         IX2 = IW+IDOT
-         IX3 = IX2+IDOT
-         IF (NA .NE. 0) GO TO 101
-         CALL PASSF4 (IDOT,L1,C,CH,WA(IW),WA(IX2),WA(IX3))
-         GO TO 102
-  101    CALL PASSF4 (IDOT,L1,CH,C,WA(IW),WA(IX2),WA(IX3))
-  102    NA = 1-NA
-         GO TO 115
-  103    IF (IP .NE. 2) GO TO 106
-         IF (NA .NE. 0) GO TO 104
-         CALL PASSF2 (IDOT,L1,C,CH,WA(IW))
-         GO TO 105
-  104    CALL PASSF2 (IDOT,L1,CH,C,WA(IW))
-  105    NA = 1-NA
-         GO TO 115
-  106    IF (IP .NE. 3) GO TO 109
-         IX2 = IW+IDOT
-         IF (NA .NE. 0) GO TO 107
-         CALL PASSF3 (IDOT,L1,C,CH,WA(IW),WA(IX2))
-         GO TO 108
-  107    CALL PASSF3 (IDOT,L1,CH,C,WA(IW),WA(IX2))
-  108    NA = 1-NA
-         GO TO 115
-  109    IF (IP .NE. 5) GO TO 112
-         IX2 = IW+IDOT
-         IX3 = IX2+IDOT
-         IX4 = IX3+IDOT
-         IF (NA .NE. 0) GO TO 110
-         CALL PASSF5 (IDOT,L1,C,CH,WA(IW),WA(IX2),WA(IX3),WA(IX4))
-         GO TO 111
-  110    CALL PASSF5 (IDOT,L1,CH,C,WA(IW),WA(IX2),WA(IX3),WA(IX4))
-  111    NA = 1-NA
-         GO TO 115
-  112    IF (NA .NE. 0) GO TO 113
-         CALL PASSF (NAC,IDOT,IP,L1,IDL1,C,C,C,CH,CH,WA(IW))
-         GO TO 114
-  113    CALL PASSF (NAC,IDOT,IP,L1,IDL1,CH,CH,CH,C,C,WA(IW))
-  114    IF (NAC .NE. 0) NA = 1-NA
-  115    L1 = L2
-         IW = IW+(IP-1)*IDOT
-  116 CONTINUE
-      IF (NA .EQ. 0) RETURN
-      N2 = N+N
-      DO 117 I=1,N2
-         C(I) = CH(I)
-  117 CONTINUE
-      RETURN
-      END
-      SUBROUTINE PASSF2 (IDO,L1,CC,CH,WA1)
-      DIMENSION       CC(IDO,2,L1)           ,CH(IDO,L1,2)           ,
-     1                WA1(*)
-      IF (IDO .GT. 2) GO TO 102
-      DO 101 K=1,L1
-         CH(1,K,1) = CC(1,1,K)+CC(1,2,K)
-         CH(1,K,2) = CC(1,1,K)-CC(1,2,K)
-         CH(2,K,1) = CC(2,1,K)+CC(2,2,K)
-         CH(2,K,2) = CC(2,1,K)-CC(2,2,K)
-  101 CONTINUE
-      RETURN
-  102 DO 104 K=1,L1
-         DO 103 I=2,IDO,2
-            CH(I-1,K,1) = CC(I-1,1,K)+CC(I-1,2,K)
-            TR2 = CC(I-1,1,K)-CC(I-1,2,K)
-            CH(I,K,1) = CC(I,1,K)+CC(I,2,K)
-            TI2 = CC(I,1,K)-CC(I,2,K)
-            CH(I,K,2) = WA1(I-1)*TI2-WA1(I)*TR2
-            CH(I-1,K,2) = WA1(I-1)*TR2+WA1(I)*TI2
-  103    CONTINUE
-  104 CONTINUE
-      RETURN
-      END
-      SUBROUTINE PASSF3 (IDO,L1,CC,CH,WA1,WA2)
-      DIMENSION       CC(IDO,3,L1)           ,CH(IDO,L1,3)           ,
-     1                WA1(*)     ,WA2(*)
-      DATA TAUR,TAUI /-.5,-.866025403784439/
-      IF (IDO .NE. 2) GO TO 102
-      DO 101 K=1,L1
-         TR2 = CC(1,2,K)+CC(1,3,K)
-         CR2 = CC(1,1,K)+TAUR*TR2
-         CH(1,K,1) = CC(1,1,K)+TR2
-         TI2 = CC(2,2,K)+CC(2,3,K)
-         CI2 = CC(2,1,K)+TAUR*TI2
-         CH(2,K,1) = CC(2,1,K)+TI2
-         CR3 = TAUI*(CC(1,2,K)-CC(1,3,K))
-         CI3 = TAUI*(CC(2,2,K)-CC(2,3,K))
-         CH(1,K,2) = CR2-CI3
-         CH(1,K,3) = CR2+CI3
-         CH(2,K,2) = CI2+CR3
-         CH(2,K,3) = CI2-CR3
-  101 CONTINUE
-      RETURN
-  102 DO 104 K=1,L1
-         DO 103 I=2,IDO,2
-            TR2 = CC(I-1,2,K)+CC(I-1,3,K)
-            CR2 = CC(I-1,1,K)+TAUR*TR2
-            CH(I-1,K,1) = CC(I-1,1,K)+TR2
-            TI2 = CC(I,2,K)+CC(I,3,K)
-            CI2 = CC(I,1,K)+TAUR*TI2
-            CH(I,K,1) = CC(I,1,K)+TI2
-            CR3 = TAUI*(CC(I-1,2,K)-CC(I-1,3,K))
-            CI3 = TAUI*(CC(I,2,K)-CC(I,3,K))
-            DR2 = CR2-CI3
-            DR3 = CR2+CI3
-            DI2 = CI2+CR3
-            DI3 = CI2-CR3
-            CH(I,K,2) = WA1(I-1)*DI2-WA1(I)*DR2
-            CH(I-1,K,2) = WA1(I-1)*DR2+WA1(I)*DI2
-            CH(I,K,3) = WA2(I-1)*DI3-WA2(I)*DR3
-            CH(I-1,K,3) = WA2(I-1)*DR3+WA2(I)*DI3
-  103    CONTINUE
-  104 CONTINUE
-      RETURN
-      END
-      SUBROUTINE PASSF4 (IDO,L1,CC,CH,WA1,WA2,WA3)
-      DIMENSION       CC(IDO,4,L1)           ,CH(IDO,L1,4)           ,
-     1                WA1(*)     ,WA2(*)     ,WA3(*)
-      IF (IDO .NE. 2) GO TO 102
-      DO 101 K=1,L1
-         TI1 = CC(2,1,K)-CC(2,3,K)
-         TI2 = CC(2,1,K)+CC(2,3,K)
-         TR4 = CC(2,2,K)-CC(2,4,K)
-         TI3 = CC(2,2,K)+CC(2,4,K)
-         TR1 = CC(1,1,K)-CC(1,3,K)
-         TR2 = CC(1,1,K)+CC(1,3,K)
-         TI4 = CC(1,4,K)-CC(1,2,K)
-         TR3 = CC(1,2,K)+CC(1,4,K)
-         CH(1,K,1) = TR2+TR3
-         CH(1,K,3) = TR2-TR3
-         CH(2,K,1) = TI2+TI3
-         CH(2,K,3) = TI2-TI3
-         CH(1,K,2) = TR1+TR4
-         CH(1,K,4) = TR1-TR4
-         CH(2,K,2) = TI1+TI4
-         CH(2,K,4) = TI1-TI4
-  101 CONTINUE
-      RETURN
-  102 DO 104 K=1,L1
-         DO 103 I=2,IDO,2
-            TI1 = CC(I,1,K)-CC(I,3,K)
-            TI2 = CC(I,1,K)+CC(I,3,K)
-            TI3 = CC(I,2,K)+CC(I,4,K)
-            TR4 = CC(I,2,K)-CC(I,4,K)
-            TR1 = CC(I-1,1,K)-CC(I-1,3,K)
-            TR2 = CC(I-1,1,K)+CC(I-1,3,K)
-            TI4 = CC(I-1,4,K)-CC(I-1,2,K)
-            TR3 = CC(I-1,2,K)+CC(I-1,4,K)
-            CH(I-1,K,1) = TR2+TR3
-            CR3 = TR2-TR3
-            CH(I,K,1) = TI2+TI3
-            CI3 = TI2-TI3
-            CR2 = TR1+TR4
-            CR4 = TR1-TR4
-            CI2 = TI1+TI4
-            CI4 = TI1-TI4
-            CH(I-1,K,2) = WA1(I-1)*CR2+WA1(I)*CI2
-            CH(I,K,2) = WA1(I-1)*CI2-WA1(I)*CR2
-            CH(I-1,K,3) = WA2(I-1)*CR3+WA2(I)*CI3
-            CH(I,K,3) = WA2(I-1)*CI3-WA2(I)*CR3
-            CH(I-1,K,4) = WA3(I-1)*CR4+WA3(I)*CI4
-            CH(I,K,4) = WA3(I-1)*CI4-WA3(I)*CR4
-  103    CONTINUE
-  104 CONTINUE
-      RETURN
-      END
-      SUBROUTINE PASSF5 (IDO,L1,CC,CH,WA1,WA2,WA3,WA4)
-      DIMENSION       CC(IDO,5,L1)           ,CH(IDO,L1,5)           ,
-     1                WA1(*)     ,WA2(*)     ,WA3(*)     ,WA4(*)
-      DATA TR11,TI11,TR12,TI12 /.309016994374947,-.951056516295154,
-     1-.809016994374947,-.587785252292473/
-      IF (IDO .NE. 2) GO TO 102
-      DO 101 K=1,L1
-         TI5 = CC(2,2,K)-CC(2,5,K)
-         TI2 = CC(2,2,K)+CC(2,5,K)
-         TI4 = CC(2,3,K)-CC(2,4,K)
-         TI3 = CC(2,3,K)+CC(2,4,K)
-         TR5 = CC(1,2,K)-CC(1,5,K)
-         TR2 = CC(1,2,K)+CC(1,5,K)
-         TR4 = CC(1,3,K)-CC(1,4,K)
-         TR3 = CC(1,3,K)+CC(1,4,K)
-         CH(1,K,1) = CC(1,1,K)+TR2+TR3
-         CH(2,K,1) = CC(2,1,K)+TI2+TI3
-         CR2 = CC(1,1,K)+TR11*TR2+TR12*TR3
-         CI2 = CC(2,1,K)+TR11*TI2+TR12*TI3
-         CR3 = CC(1,1,K)+TR12*TR2+TR11*TR3
-         CI3 = CC(2,1,K)+TR12*TI2+TR11*TI3
-         CR5 = TI11*TR5+TI12*TR4
-         CI5 = TI11*TI5+TI12*TI4
-         CR4 = TI12*TR5-TI11*TR4
-         CI4 = TI12*TI5-TI11*TI4
-         CH(1,K,2) = CR2-CI5
-         CH(1,K,5) = CR2+CI5
-         CH(2,K,2) = CI2+CR5
-         CH(2,K,3) = CI3+CR4
-         CH(1,K,3) = CR3-CI4
-         CH(1,K,4) = CR3+CI4
-         CH(2,K,4) = CI3-CR4
-         CH(2,K,5) = CI2-CR5
-  101 CONTINUE
-      RETURN
-  102 DO 104 K=1,L1
-         DO 103 I=2,IDO,2
-            TI5 = CC(I,2,K)-CC(I,5,K)
-            TI2 = CC(I,2,K)+CC(I,5,K)
-            TI4 = CC(I,3,K)-CC(I,4,K)
-            TI3 = CC(I,3,K)+CC(I,4,K)
-            TR5 = CC(I-1,2,K)-CC(I-1,5,K)
-            TR2 = CC(I-1,2,K)+CC(I-1,5,K)
-            TR4 = CC(I-1,3,K)-CC(I-1,4,K)
-            TR3 = CC(I-1,3,K)+CC(I-1,4,K)
-            CH(I-1,K,1) = CC(I-1,1,K)+TR2+TR3
-            CH(I,K,1) = CC(I,1,K)+TI2+TI3
-            CR2 = CC(I-1,1,K)+TR11*TR2+TR12*TR3
-            CI2 = CC(I,1,K)+TR11*TI2+TR12*TI3
-            CR3 = CC(I-1,1,K)+TR12*TR2+TR11*TR3
-            CI3 = CC(I,1,K)+TR12*TI2+TR11*TI3
-            CR5 = TI11*TR5+TI12*TR4
-            CI5 = TI11*TI5+TI12*TI4
-            CR4 = TI12*TR5-TI11*TR4
-            CI4 = TI12*TI5-TI11*TI4
-            DR3 = CR3-CI4
-            DR4 = CR3+CI4
-            DI3 = CI3+CR4
-            DI4 = CI3-CR4
-            DR5 = CR2+CI5
-            DR2 = CR2-CI5
-            DI5 = CI2-CR5
-            DI2 = CI2+CR5
-            CH(I-1,K,2) = WA1(I-1)*DR2+WA1(I)*DI2
-            CH(I,K,2) = WA1(I-1)*DI2-WA1(I)*DR2
-            CH(I-1,K,3) = WA2(I-1)*DR3+WA2(I)*DI3
-            CH(I,K,3) = WA2(I-1)*DI3-WA2(I)*DR3
-            CH(I-1,K,4) = WA3(I-1)*DR4+WA3(I)*DI4
-            CH(I,K,4) = WA3(I-1)*DI4-WA3(I)*DR4
-            CH(I-1,K,5) = WA4(I-1)*DR5+WA4(I)*DI5
-            CH(I,K,5) = WA4(I-1)*DI5-WA4(I)*DR5
-  103    CONTINUE
-  104 CONTINUE
-      RETURN
-      END
-      SUBROUTINE PASSF (NAC,IDO,IP,L1,IDL1,CC,C1,C2,CH,CH2,WA)
-      DIMENSION       CH(IDO,L1,IP)          ,CC(IDO,IP,L1)          ,
-     1                C1(IDO,L1,IP)          ,WA(*)      ,C2(IDL1,IP),
-     2                CH2(IDL1,IP)
-      IDOT = IDO/2
-      NT = IP*IDL1
-      IPP2 = IP+2
-      IPPH = (IP+1)/2
-      IDP = IP*IDO
-C
-      IF (IDO .LT. L1) GO TO 106
-      DO 103 J=2,IPPH
-         JC = IPP2-J
-         DO 102 K=1,L1
-            DO 101 I=1,IDO
-               CH(I,K,J) = CC(I,J,K)+CC(I,JC,K)
-               CH(I,K,JC) = CC(I,J,K)-CC(I,JC,K)
-  101       CONTINUE
-  102    CONTINUE
-  103 CONTINUE
-      DO 105 K=1,L1
-         DO 104 I=1,IDO
-            CH(I,K,1) = CC(I,1,K)
-  104    CONTINUE
-  105 CONTINUE
-      GO TO 112
-  106 DO 109 J=2,IPPH
-         JC = IPP2-J
-         DO 108 I=1,IDO
-            DO 107 K=1,L1
-               CH(I,K,J) = CC(I,J,K)+CC(I,JC,K)
-               CH(I,K,JC) = CC(I,J,K)-CC(I,JC,K)
-  107       CONTINUE
-  108    CONTINUE
-  109 CONTINUE
-      DO 111 I=1,IDO
-         DO 110 K=1,L1
-            CH(I,K,1) = CC(I,1,K)
-  110    CONTINUE
-  111 CONTINUE
-  112 IDL = 2-IDO
-      INC = 0
-      DO 116 L=2,IPPH
-         LC = IPP2-L
-         IDL = IDL+IDO
-         DO 113 IK=1,IDL1
-            C2(IK,L) = CH2(IK,1)+WA(IDL-1)*CH2(IK,2)
-            C2(IK,LC) = -WA(IDL)*CH2(IK,IP)
-  113    CONTINUE
-         IDLJ = IDL
-         INC = INC+IDO
-         DO 115 J=3,IPPH
-            JC = IPP2-J
-            IDLJ = IDLJ+INC
-            IF (IDLJ .GT. IDP) IDLJ = IDLJ-IDP
-            WAR = WA(IDLJ-1)
-            WAI = WA(IDLJ)
-            DO 114 IK=1,IDL1
-               C2(IK,L) = C2(IK,L)+WAR*CH2(IK,J)
-               C2(IK,LC) = C2(IK,LC)-WAI*CH2(IK,JC)
-  114       CONTINUE
-  115    CONTINUE
-  116 CONTINUE
-      DO 118 J=2,IPPH
-         DO 117 IK=1,IDL1
-            CH2(IK,1) = CH2(IK,1)+CH2(IK,J)
-  117    CONTINUE
-  118 CONTINUE
-      DO 120 J=2,IPPH
-         JC = IPP2-J
-         DO 119 IK=2,IDL1,2
-            CH2(IK-1,J) = C2(IK-1,J)-C2(IK,JC)
-            CH2(IK-1,JC) = C2(IK-1,J)+C2(IK,JC)
-            CH2(IK,J) = C2(IK,J)+C2(IK-1,JC)
-            CH2(IK,JC) = C2(IK,J)-C2(IK-1,JC)
-  119    CONTINUE
-  120 CONTINUE
-      NAC = 1
-      IF (IDO .EQ. 2) RETURN
-      NAC = 0
-      DO 121 IK=1,IDL1
-         C2(IK,1) = CH2(IK,1)
-  121 CONTINUE
-      DO 123 J=2,IP
-         DO 122 K=1,L1
-            C1(1,K,J) = CH(1,K,J)
-            C1(2,K,J) = CH(2,K,J)
-  122    CONTINUE
-  123 CONTINUE
-      IF (IDOT .GT. L1) GO TO 127
-      IDIJ = 0
-      DO 126 J=2,IP
-         IDIJ = IDIJ+2
-         DO 125 I=4,IDO,2
-            IDIJ = IDIJ+2
-            DO 124 K=1,L1
-               C1(I-1,K,J) = WA(IDIJ-1)*CH(I-1,K,J)+WA(IDIJ)*CH(I,K,J)
-               C1(I,K,J) = WA(IDIJ-1)*CH(I,K,J)-WA(IDIJ)*CH(I-1,K,J)
-  124       CONTINUE
-  125    CONTINUE
-  126 CONTINUE
-      RETURN
-  127 IDJ = 2-IDO
-      DO 130 J=2,IP
-         IDJ = IDJ+IDO
-         DO 129 K=1,L1
-            IDIJ = IDJ
-            DO 128 I=4,IDO,2
-               IDIJ = IDIJ+2
-               C1(I-1,K,J) = WA(IDIJ-1)*CH(I-1,K,J)+WA(IDIJ)*CH(I,K,J)
-               C1(I,K,J) = WA(IDIJ-1)*CH(I,K,J)-WA(IDIJ)*CH(I-1,K,J)
-  128       CONTINUE
-  129    CONTINUE
-  130 CONTINUE
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/cfftf1.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/cfftf1.f)

Deleted: trunk/scipy/fftpack/src/fftpack/cffti.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/cffti.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/cffti.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,8 +0,0 @@
-      SUBROUTINE CFFTI (N,WSAVE)
-      DIMENSION       WSAVE(*)
-      IF (N .EQ. 1) RETURN
-      IW1 = N+N+1
-      IW2 = IW1+N+N
-      CALL CFFTI1 (N,WSAVE(IW1),WSAVE(IW2))
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/cffti.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/cffti.f)

Deleted: trunk/scipy/fftpack/src/fftpack/cffti1.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/cffti1.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/cffti1.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,62 +0,0 @@
-      SUBROUTINE CFFTI1 (N,WA,IFAC)
-      DIMENSION       WA(*)      ,IFAC(*)    ,NTRYH(4)
-      DATA NTRYH(1),NTRYH(2),NTRYH(3),NTRYH(4)/3,4,2,5/
-      NL = N
-      NF = 0
-      J = 0
-  101 J = J+1
-      IF (J.le.4) GO TO 102
-      GO TO 103
-  102 NTRY = NTRYH(J)
-      GO TO 104
-  103 NTRY = NTRY+2
-  104 NQ = NL/NTRY
-      NR = NL-NTRY*NQ
-      IF (NR.eq.0) GO TO 105
-      GO TO 101
-  105 NF = NF+1
-      IFAC(NF+2) = NTRY
-      NL = NQ
-      IF (NTRY .NE. 2) GO TO 107
-      IF (NF .EQ. 1) GO TO 107
-      DO 106 I=2,NF
-         IB = NF-I+2
-         IFAC(IB+2) = IFAC(IB+1)
-  106 CONTINUE
-      IFAC(3) = 2
-  107 IF (NL .NE. 1) GO TO 104
-      IFAC(1) = N
-      IFAC(2) = NF
-      TPI = 6.28318530717959
-      ARGH = TPI/FLOAT(N)
-      I = 2
-      L1 = 1
-      DO 110 K1=1,NF
-         IP = IFAC(K1+2)
-         LD = 0
-         L2 = L1*IP
-         IDO = N/L2
-         IDOT = IDO+IDO+2
-         IPM = IP-1
-         DO 109 J=1,IPM
-            I1 = I
-            WA(I-1) = 1.
-            WA(I) = 0.
-            LD = LD+L1
-            FI = 0.
-            ARGLD = FLOAT(LD)*ARGH
-            DO 108 II=4,IDOT,2
-               I = I+2
-               FI = FI+1.
-               ARG = FI*ARGLD
-               WA(I-1) = COS(ARG)
-               WA(I) = SIN(ARG)
-  108       CONTINUE
-            IF (IP .LE. 5) GO TO 109
-            WA(I1-1) = WA(I-1)
-            WA(I1) = WA(I)
-  109    CONTINUE
-         L1 = L2
-  110 CONTINUE
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/cffti1.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/cffti1.f)

Deleted: trunk/scipy/fftpack/src/fftpack/cosqb.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/cosqb.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/cosqb.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,42 +0,0 @@
-      SUBROUTINE COSQB (N,X,WSAVE)
-      DIMENSION       X(*)       ,WSAVE(*)
-      DATA TSQRT2 /2.82842712474619/
-      IF (N.lt.2) GO TO 101
-      IF (N.eq.2) GO TO 102
-      GO TO 103
-  101 X(1) = 4.*X(1)
-      RETURN
-  102 X1 = 4.*(X(1)+X(2))
-      X(2) = TSQRT2*(X(1)-X(2))
-      X(1) = X1
-      RETURN
-  103 CALL COSQB1 (N,X,WSAVE,WSAVE(N+1))
-      RETURN
-      END
-      SUBROUTINE COSQB1 (N,X,W,XH)
-      DIMENSION       X(1)       ,W(1)       ,XH(1)
-      NS2 = (N+1)/2
-      NP2 = N+2
-      DO 101 I=3,N,2
-         XIM1 = X(I-1)+X(I)
-         X(I) = X(I)-X(I-1)
-         X(I-1) = XIM1
-  101 CONTINUE
-      X(1) = X(1)+X(1)
-      MODN = MOD(N,2)
-      IF (MODN .EQ. 0) X(N) = X(N)+X(N)
-      CALL RFFTB (N,X,XH)
-      DO 102 K=2,NS2
-         KC = NP2-K
-         XH(K) = W(K-1)*X(KC)+W(KC-1)*X(K)
-         XH(KC) = W(K-1)*X(K)-W(KC-1)*X(KC)
-  102 CONTINUE
-      IF (MODN .EQ. 0) X(NS2+1) = W(NS2)*(X(NS2+1)+X(NS2+1))
-      DO 103 K=2,NS2
-         KC = NP2-K
-         X(K) = XH(K)+XH(KC)
-         X(KC) = XH(K)-XH(KC)
-  103 CONTINUE
-      X(1) = X(1)+X(1)
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/cosqb.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/cosqb.f)

Deleted: trunk/scipy/fftpack/src/fftpack/cosqf.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/cosqf.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/cosqf.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,38 +0,0 @@
-      SUBROUTINE COSQF (N,X,WSAVE)
-      DIMENSION       X(*)       ,WSAVE(*)
-      DATA SQRT2 /1.4142135623731/
-      IF (N.lt.2) GO TO 102
-      IF (N.eq.2) GO TO 101
-      GO TO 103
-  101 TSQX = SQRT2*X(2)
-      X(2) = X(1)-TSQX
-      X(1) = X(1)+TSQX
-  102 RETURN
-  103 CALL COSQF1 (N,X,WSAVE,WSAVE(N+1))
-      RETURN
-      END
-      SUBROUTINE COSQF1 (N,X,W,XH)
-      DIMENSION       X(1)       ,W(1)       ,XH(1)
-      NS2 = (N+1)/2
-      NP2 = N+2
-      DO 101 K=2,NS2
-         KC = NP2-K
-         XH(K) = X(K)+X(KC)
-         XH(KC) = X(K)-X(KC)
-  101 CONTINUE
-      MODN = MOD(N,2)
-      IF (MODN .EQ. 0) XH(NS2+1) = X(NS2+1)+X(NS2+1)
-      DO 102 K=2,NS2
-         KC = NP2-K
-         X(K) = W(K-1)*XH(KC)+W(KC-1)*XH(K)
-         X(KC) = W(K-1)*XH(K)-W(KC-1)*XH(KC)
-  102 CONTINUE
-      IF (MODN .EQ. 0) X(NS2+1) = W(NS2)*XH(NS2+1)
-      CALL RFFTF (N,X,XH)
-      DO 103 I=3,N,2
-         XIM1 = X(I-1)-X(I)
-         X(I) = X(I-1)+X(I)
-         X(I-1) = XIM1
-  103 CONTINUE
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/cosqf.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/cosqf.f)

Deleted: trunk/scipy/fftpack/src/fftpack/cosqi.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/cosqi.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/cosqi.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,12 +0,0 @@
-      SUBROUTINE COSQI (N,WSAVE)
-      DIMENSION       WSAVE(*)
-      DATA PIH /1.57079632679491/
-      DT = PIH/FLOAT(N)
-      FK = 0.
-      DO 101 K=1,N
-         FK = FK+1.
-         WSAVE(K) = COS(FK*DT)
-  101 CONTINUE
-      CALL RFFTI (N,WSAVE(N+1))
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/cosqi.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/cosqi.f)

Deleted: trunk/scipy/fftpack/src/fftpack/cost.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/cost.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/cost.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,44 +0,0 @@
-      SUBROUTINE COST (N,X,WSAVE)
-      DIMENSION       X(*)       ,WSAVE(*)
-      NM1 = N-1
-      NP1 = N+1
-      NS2 = N/2
-      IF (N.lt.2) GO TO 106
-      IF (N.eq.2) GO TO 101
-      GO TO 102
-  101 X1H = X(1)+X(2)
-      X(2) = X(1)-X(2)
-      X(1) = X1H
-      RETURN
-  102 IF (N .GT. 3) GO TO 103
-      X1P3 = X(1)+X(3)
-      TX2 = X(2)+X(2)
-      X(2) = X(1)-X(3)
-      X(1) = X1P3+TX2
-      X(3) = X1P3-TX2
-      RETURN
-  103 C1 = X(1)-X(N)
-      X(1) = X(1)+X(N)
-      DO 104 K=2,NS2
-         KC = NP1-K
-         T1 = X(K)+X(KC)
-         T2 = X(K)-X(KC)
-         C1 = C1+WSAVE(KC)*T2
-         T2 = WSAVE(K)*T2
-         X(K) = T1-T2
-         X(KC) = T1+T2
-  104 CONTINUE
-      MODN = MOD(N,2)
-      IF (MODN .NE. 0) X(NS2+1) = X(NS2+1)+X(NS2+1)
-      CALL RFFTF (NM1,X,WSAVE(N+1))
-      XIM2 = X(2)
-      X(2) = C1
-      DO 105 I=4,N,2
-         XI = X(I)
-         X(I) = X(I-2)-X(I-1)
-         X(I-1) = XIM2
-         XIM2 = XI
-  105 CONTINUE
-      IF (MODN .NE. 0) X(N) = XIM2
-  106 RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/cost.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/cost.f)

Deleted: trunk/scipy/fftpack/src/fftpack/costi.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/costi.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/costi.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,18 +0,0 @@
-      SUBROUTINE COSTI (N,WSAVE)
-      DIMENSION       WSAVE(*)
-      DATA PI /3.14159265358979/
-      IF (N .LE. 3) RETURN
-      NM1 = N-1
-      NP1 = N+1
-      NS2 = N/2
-      DT = PI/FLOAT(NM1)
-      FK = 0.
-      DO 101 K=2,NS2
-         KC = NP1-K
-         FK = FK+1.
-         WSAVE(K) = 2.*SIN(FK*DT)
-         WSAVE(KC) = 2.*COS(FK*DT)
-  101 CONTINUE
-      CALL RFFTI (NM1,WSAVE(N+1))
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/costi.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/costi.f)

Deleted: trunk/scipy/fftpack/src/fftpack/doc
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/doc	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/doc	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,866 +0,0 @@
-
-                      FFTPACK
-
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-
-                  version 4  april 1985
-
-     a package of fortran subprograms for the fast fourier
-      transform of periodic and other symmetric sequences
-
-                         by
-
-                  paul n swarztrauber
-
-  national center for atmospheric research  boulder,colorado 80307
-
-   which is sponsored by the national science foundation
-
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-
-
-this package consists of programs which perform fast fourier
-transforms for both complex and real periodic sequences and
-certain other symmetric sequences that are listed below.
-
-1.   rffti     initialize  rfftf and rfftb
-2.   rfftf     forward transform of a real periodic sequence
-3.   rfftb     backward transform of a real coefficient array
-
-4.   ezffti    initialize ezfftf and ezfftb
-5.   ezfftf    a simplified real periodic forward transform
-6.   ezfftb    a simplified real periodic backward transform
-
-7.   sinti     initialize sint
-8.   sint      sine transform of a real odd sequence
-
-9.   costi     initialize cost
-10.  cost      cosine transform of a real even sequence
-
-11.  sinqi     initialize sinqf and sinqb
-12.  sinqf     forward sine transform with odd wave numbers
-13.  sinqb     unnormalized inverse of sinqf
-
-14.  cosqi     initialize cosqf and cosqb
-15.  cosqf     forward cosine transform with odd wave numbers
-16.  cosqb     unnormalized inverse of cosqf
-
-17.  cffti     initialize cfftf and cfftb
-18.  cfftf     forward transform of a complex periodic sequence
-19.  cfftb     unnormalized inverse of cfftf
-
-
-******************************************************************
-
-subroutine rffti(n,wsave)
-
-  ****************************************************************
-
-subroutine rffti initializes the array wsave which is used in
-both rfftf and rfftb. the prime factorization of n together with
-a tabulation of the trigonometric functions are computed and
-stored in wsave.
-
-input parameter
-
-n       the length of the sequence to be transformed.
-
-output parameter
-
-wsave   a work array which must be dimensioned at least 2*n+15.
-        the same work array can be used for both rfftf and rfftb
-        as long as n remains unchanged. different wsave arrays
-        are required for different values of n. the contents of
-        wsave must not be changed between calls of rfftf or rfftb.
-
-******************************************************************
-
-subroutine rfftf(n,r,wsave)
-
-******************************************************************
-
-subroutine rfftf computes the fourier coefficients of a real
-perodic sequence (fourier analysis). the transform is defined
-below at output parameter r.
-
-input parameters
-
-n       the length of the array r to be transformed.  the method
-        is most efficient when n is a product of small primes.
-        n may change so long as different work arrays are provided
-
-r       a real array of length n which contains the sequence
-        to be transformed
-
-wsave   a work array which must be dimensioned at least 2*n+15.
-        in the program that calls rfftf. the wsave array must be
-        initialized by calling subroutine rffti(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-        the same wsave array can be used by rfftf and rfftb.
-
-
-output parameters
-
-r       r(1) = the sum from i=1 to i=n of r(i)
-
-        if n is even set l =n/2   , if n is odd set l = (n+1)/2
-
-          then for k = 2,...,l
-
-             r(2*k-2) = the sum from i = 1 to i = n of
-
-                  r(i)*cos((k-1)*(i-1)*2*pi/n)
-
-             r(2*k-1) = the sum from i = 1 to i = n of
-
-                 -r(i)*sin((k-1)*(i-1)*2*pi/n)
-
-        if n is even
-
-             r(n) = the sum from i = 1 to i = n of
-
-                  (-1)**(i-1)*r(i)
-
- *****  note
-             this transform is unnormalized since a call of rfftf
-             followed by a call of rfftb will multiply the input
-             sequence by n.
-
-wsave   contains results which must not be destroyed between
-        calls of rfftf or rfftb.
-
-
-******************************************************************
-
-subroutine rfftb(n,r,wsave)
-
-******************************************************************
-
-subroutine rfftb computes the real perodic sequence from its
-fourier coefficients (fourier synthesis). the transform is defined
-below at output parameter r.
-
-input parameters
-
-n       the length of the array r to be transformed.  the method
-        is most efficient when n is a product of small primes.
-        n may change so long as different work arrays are provided
-
-r       a real array of length n which contains the sequence
-        to be transformed
-
-wsave   a work array which must be dimensioned at least 2*n+15.
-        in the program that calls rfftb. the wsave array must be
-        initialized by calling subroutine rffti(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-        the same wsave array can be used by rfftf and rfftb.
-
-
-output parameters
-
-r       for n even and for i = 1,...,n
-
-             r(i) = r(1)+(-1)**(i-1)*r(n)
-
-                  plus the sum from k=2 to k=n/2 of
-
-                   2.*r(2*k-2)*cos((k-1)*(i-1)*2*pi/n)
-
-                  -2.*r(2*k-1)*sin((k-1)*(i-1)*2*pi/n)
-
-        for n odd and for i = 1,...,n
-
-             r(i) = r(1) plus the sum from k=2 to k=(n+1)/2 of
-
-                  2.*r(2*k-2)*cos((k-1)*(i-1)*2*pi/n)
-
-                 -2.*r(2*k-1)*sin((k-1)*(i-1)*2*pi/n)
-
- *****  note
-             this transform is unnormalized since a call of rfftf
-             followed by a call of rfftb will multiply the input
-             sequence by n.
-
-wsave   contains results which must not be destroyed between
-        calls of rfftb or rfftf.
-
-
-******************************************************************
-
-subroutine ezffti(n,wsave)
-
-******************************************************************
-
-subroutine ezffti initializes the array wsave which is used in
-both ezfftf and ezfftb. the prime factorization of n together with
-a tabulation of the trigonometric functions are computed and
-stored in wsave.
-
-input parameter
-
-n       the length of the sequence to be transformed.
-
-output parameter
-
-wsave   a work array which must be dimensioned at least 3*n+15.
-        the same work array can be used for both ezfftf and ezfftb
-        as long as n remains unchanged. different wsave arrays
-        are required for different values of n.
-
-
-******************************************************************
-
-subroutine ezfftf(n,r,azero,a,b,wsave)
-
-******************************************************************
-
-subroutine ezfftf computes the fourier coefficients of a real
-perodic sequence (fourier analysis). the transform is defined
-below at output parameters azero,a and b. ezfftf is a simplified
-but slower version of rfftf.
-
-input parameters
-
-n       the length of the array r to be transformed.  the method
-        is must efficient when n is the product of small primes.
-
-r       a real array of length n which contains the sequence
-        to be transformed. r is not destroyed.
-
-
-wsave   a work array which must be dimensioned at least 3*n+15.
-        in the program that calls ezfftf. the wsave array must be
-        initialized by calling subroutine ezffti(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-        the same wsave array can be used by ezfftf and ezfftb.
-
-output parameters
-
-azero   the sum from i=1 to i=n of r(i)/n
-
-a,b     for n even b(n/2)=0. and a(n/2) is the sum from i=1 to
-        i=n of (-1)**(i-1)*r(i)/n
-
-        for n even define kmax=n/2-1
-        for n odd  define kmax=(n-1)/2
-
-        then for  k=1,...,kmax
-
-             a(k) equals the sum from i=1 to i=n of
-
-                  2./n*r(i)*cos(k*(i-1)*2*pi/n)
-
-             b(k) equals the sum from i=1 to i=n of
-
-                  2./n*r(i)*sin(k*(i-1)*2*pi/n)
-
-
-******************************************************************
-
-subroutine ezfftb(n,r,azero,a,b,wsave)
-
-******************************************************************
-
-subroutine ezfftb computes a real perodic sequence from its
-fourier coefficients (fourier synthesis). the transform is
-defined below at output parameter r. ezfftb is a simplified
-but slower version of rfftb.
-
-input parameters
-
-n       the length of the output array r.  the method is most
-        efficient when n is the product of small primes.
-
-azero   the constant fourier coefficient
-
-a,b     arrays which contain the remaining fourier coefficients
-        these arrays are not destroyed.
-
-        the length of these arrays depends on whether n is even or
-        odd.
-
-        if n is even n/2    locations are required
-        if n is odd (n-1)/2 locations are required
-
-wsave   a work array which must be dimensioned at least 3*n+15.
-        in the program that calls ezfftb. the wsave array must be
-        initialized by calling subroutine ezffti(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-        the same wsave array can be used by ezfftf and ezfftb.
-
-
-output parameters
-
-r       if n is even define kmax=n/2
-        if n is odd  define kmax=(n-1)/2
-
-        then for i=1,...,n
-
-             r(i)=azero plus the sum from k=1 to k=kmax of
-
-             a(k)*cos(k*(i-1)*2*pi/n)+b(k)*sin(k*(i-1)*2*pi/n)
-
-********************* complex notation **************************
-
-        for j=1,...,n
-
-        r(j) equals the sum from k=-kmax to k=kmax of
-
-             c(k)*exp(i*k*(j-1)*2*pi/n)
-
-        where
-
-             c(k) = .5*cmplx(a(k),-b(k))   for k=1,...,kmax
-
-             c(-k) = conjg(c(k))
-
-             c(0) = azero
-
-                  and i=sqrt(-1)
-
-*************** amplitude - phase notation ***********************
-
-        for i=1,...,n
-
-        r(i) equals azero plus the sum from k=1 to k=kmax of
-
-             alpha(k)*cos(k*(i-1)*2*pi/n+beta(k))
-
-        where
-
-             alpha(k) = sqrt(a(k)*a(k)+b(k)*b(k))
-
-             cos(beta(k))=a(k)/alpha(k)
-
-             sin(beta(k))=-b(k)/alpha(k)
-
-******************************************************************
-
-subroutine sinti(n,wsave)
-
-******************************************************************
-
-subroutine sinti initializes the array wsave which is used in
-subroutine sint. the prime factorization of n together with
-a tabulation of the trigonometric functions are computed and
-stored in wsave.
-
-input parameter
-
-n       the length of the sequence to be transformed.  the method
-        is most efficient when n+1 is a product of small primes.
-
-output parameter
-
-wsave   a work array with at least int(2.5*n+15) locations.
-        different wsave arrays are required for different values
-        of n. the contents of wsave must not be changed between
-        calls of sint.
-
-******************************************************************
-
-subroutine sint(n,x,wsave)
-
-******************************************************************
-
-subroutine sint computes the discrete fourier sine transform
-of an odd sequence x(i). the transform is defined below at
-output parameter x.
-
-sint is the unnormalized inverse of itself since a call of sint
-followed by another call of sint will multiply the input sequence
-x by 2*(n+1).
-
-the array wsave which is used by subroutine sint must be
-initialized by calling subroutine sinti(n,wsave).
-
-input parameters
-
-n       the length of the sequence to be transformed.  the method
-        is most efficient when n+1 is the product of small primes.
-
-x       an array which contains the sequence to be transformed
-
-
-wsave   a work array with dimension at least int(2.5*n+15)
-        in the program that calls sint. the wsave array must be
-        initialized by calling subroutine sinti(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-
-output parameters
-
-x       for i=1,...,n
-
-             x(i)= the sum from k=1 to k=n
-
-                  2*x(k)*sin(k*i*pi/(n+1))
-
-             a call of sint followed by another call of
-             sint will multiply the sequence x by 2*(n+1).
-             hence sint is the unnormalized inverse
-             of itself.
-
-wsave   contains initialization calculations which must not be
-        destroyed between calls of sint.
-
-******************************************************************
-
-subroutine costi(n,wsave)
-
-******************************************************************
-
-subroutine costi initializes the array wsave which is used in
-subroutine cost. the prime factorization of n together with
-a tabulation of the trigonometric functions are computed and
-stored in wsave.
-
-input parameter
-
-n       the length of the sequence to be transformed.  the method
-        is most efficient when n-1 is a product of small primes.
-
-output parameter
-
-wsave   a work array which must be dimensioned at least 3*n+15.
-        different wsave arrays are required for different values
-        of n. the contents of wsave must not be changed between
-        calls of cost.
-
-******************************************************************
-
-subroutine cost(n,x,wsave)
-
-******************************************************************
-
-subroutine cost computes the discrete fourier cosine transform
-of an even sequence x(i). the transform is defined below at output
-parameter x.
-
-cost is the unnormalized inverse of itself since a call of cost
-followed by another call of cost will multiply the input sequence
-x by 2*(n-1). the transform is defined below at output parameter x
-
-the array wsave which is used by subroutine cost must be
-initialized by calling subroutine costi(n,wsave).
-
-input parameters
-
-n       the length of the sequence x. n must be greater than 1.
-        the method is most efficient when n-1 is a product of
-        small primes.
-
-x       an array which contains the sequence to be transformed
-
-wsave   a work array which must be dimensioned at least 3*n+15
-        in the program that calls cost. the wsave array must be
-        initialized by calling subroutine costi(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-
-output parameters
-
-x       for i=1,...,n
-
-            x(i) = x(1)+(-1)**(i-1)*x(n)
-
-             + the sum from k=2 to k=n-1
-
-                 2*x(k)*cos((k-1)*(i-1)*pi/(n-1))
-
-             a call of cost followed by another call of
-             cost will multiply the sequence x by 2*(n-1)
-             hence cost is the unnormalized inverse
-             of itself.
-
-wsave   contains initialization calculations which must not be
-        destroyed between calls of cost.
-
-******************************************************************
-
-subroutine sinqi(n,wsave)
-
-******************************************************************
-
-subroutine sinqi initializes the array wsave which is used in
-both sinqf and sinqb. the prime factorization of n together with
-a tabulation of the trigonometric functions are computed and
-stored in wsave.
-
-input parameter
-
-n       the length of the sequence to be transformed. the method
-        is most efficient when n is a product of small primes.
-
-output parameter
-
-wsave   a work array which must be dimensioned at least 3*n+15.
-        the same work array can be used for both sinqf and sinqb
-        as long as n remains unchanged. different wsave arrays
-        are required for different values of n. the contents of
-        wsave must not be changed between calls of sinqf or sinqb.
-
-******************************************************************
-
-subroutine sinqf(n,x,wsave)
-
-******************************************************************
-
-subroutine sinqf computes the fast fourier transform of quarter
-wave data. that is , sinqf computes the coefficients in a sine
-series representation with only odd wave numbers. the transform
-is defined below at output parameter x.
-
-sinqb is the unnormalized inverse of sinqf since a call of sinqf
-followed by a call of sinqb will multiply the input sequence x
-by 4*n.
-
-the array wsave which is used by subroutine sinqf must be
-initialized by calling subroutine sinqi(n,wsave).
-
-
-input parameters
-
-n       the length of the array x to be transformed.  the method
-        is most efficient when n is a product of small primes.
-
-x       an array which contains the sequence to be transformed
-
-wsave   a work array which must be dimensioned at least 3*n+15.
-        in the program that calls sinqf. the wsave array must be
-        initialized by calling subroutine sinqi(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-
-output parameters
-
-x       for i=1,...,n
-
-             x(i) = (-1)**(i-1)*x(n)
-
-                + the sum from k=1 to k=n-1 of
-
-                2*x(k)*sin((2*i-1)*k*pi/(2*n))
-
-             a call of sinqf followed by a call of
-             sinqb will multiply the sequence x by 4*n.
-             therefore sinqb is the unnormalized inverse
-             of sinqf.
-
-wsave   contains initialization calculations which must not
-        be destroyed between calls of sinqf or sinqb.
-
-******************************************************************
-
-subroutine sinqb(n,x,wsave)
-
-******************************************************************
-
-subroutine sinqb computes the fast fourier transform of quarter
-wave data. that is , sinqb computes a sequence from its
-representation in terms of a sine series with odd wave numbers.
-the transform is defined below at output parameter x.
-
-sinqf is the unnormalized inverse of sinqb since a call of sinqb
-followed by a call of sinqf will multiply the input sequence x
-by 4*n.
-
-the array wsave which is used by subroutine sinqb must be
-initialized by calling subroutine sinqi(n,wsave).
-
-
-input parameters
-
-n       the length of the array x to be transformed.  the method
-        is most efficient when n is a product of small primes.
-
-x       an array which contains the sequence to be transformed
-
-wsave   a work array which must be dimensioned at least 3*n+15.
-        in the program that calls sinqb. the wsave array must be
-        initialized by calling subroutine sinqi(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-
-output parameters
-
-x       for i=1,...,n
-
-             x(i)= the sum from k=1 to k=n of
-
-               4*x(k)*sin((2k-1)*i*pi/(2*n))
-
-             a call of sinqb followed by a call of
-             sinqf will multiply the sequence x by 4*n.
-             therefore sinqf is the unnormalized inverse
-             of sinqb.
-
-wsave   contains initialization calculations which must not
-        be destroyed between calls of sinqb or sinqf.
-
-******************************************************************
-
-subroutine cosqi(n,wsave)
-
-******************************************************************
-
-subroutine cosqi initializes the array wsave which is used in
-both cosqf and cosqb. the prime factorization of n together with
-a tabulation of the trigonometric functions are computed and
-stored in wsave.
-
-input parameter
-
-n       the length of the array to be transformed.  the method
-        is most efficient when n is a product of small primes.
-
-output parameter
-
-wsave   a work array which must be dimensioned at least 3*n+15.
-        the same work array can be used for both cosqf and cosqb
-        as long as n remains unchanged. different wsave arrays
-        are required for different values of n. the contents of
-        wsave must not be changed between calls of cosqf or cosqb.
-
-******************************************************************
-
-subroutine cosqf(n,x,wsave)
-
-******************************************************************
-
-subroutine cosqf computes the fast fourier transform of quarter
-wave data. that is , cosqf computes the coefficients in a cosine
-series representation with only odd wave numbers. the transform
-is defined below at output parameter x
-
-cosqf is the unnormalized inverse of cosqb since a call of cosqf
-followed by a call of cosqb will multiply the input sequence x
-by 4*n.
-
-the array wsave which is used by subroutine cosqf must be
-initialized by calling subroutine cosqi(n,wsave).
-
-
-input parameters
-
-n       the length of the array x to be transformed.  the method
-        is most efficient when n is a product of small primes.
-
-x       an array which contains the sequence to be transformed
-
-wsave   a work array which must be dimensioned at least 3*n+15
-        in the program that calls cosqf. the wsave array must be
-        initialized by calling subroutine cosqi(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-
-output parameters
-
-x       for i=1,...,n
-
-             x(i) = x(1) plus the sum from k=2 to k=n of
-
-                2*x(k)*cos((2*i-1)*(k-1)*pi/(2*n))
-
-             a call of cosqf followed by a call of
-             cosqb will multiply the sequence x by 4*n.
-             therefore cosqb is the unnormalized inverse
-             of cosqf.
-
-wsave   contains initialization calculations which must not
-        be destroyed between calls of cosqf or cosqb.
-
-******************************************************************
-
-subroutine cosqb(n,x,wsave)
-
-******************************************************************
-
-subroutine cosqb computes the fast fourier transform of quarter
-wave data. that is , cosqb computes a sequence from its
-representation in terms of a cosine series with odd wave numbers.
-the transform is defined below at output parameter x.
-
-cosqb is the unnormalized inverse of cosqf since a call of cosqb
-followed by a call of cosqf will multiply the input sequence x
-by 4*n.
-
-the array wsave which is used by subroutine cosqb must be
-initialized by calling subroutine cosqi(n,wsave).
-
-
-input parameters
-
-n       the length of the array x to be transformed.  the method
-        is most efficient when n is a product of small primes.
-
-x       an array which contains the sequence to be transformed
-
-wsave   a work array that must be dimensioned at least 3*n+15
-        in the program that calls cosqb. the wsave array must be
-        initialized by calling subroutine cosqi(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-
-output parameters
-
-x       for i=1,...,n
-
-             x(i)= the sum from k=1 to k=n of
-
-               4*x(k)*cos((2*k-1)*(i-1)*pi/(2*n))
-
-             a call of cosqb followed by a call of
-             cosqf will multiply the sequence x by 4*n.
-             therefore cosqf is the unnormalized inverse
-             of cosqb.
-
-wsave   contains initialization calculations which must not
-        be destroyed between calls of cosqb or cosqf.
-
-******************************************************************
-
-subroutine cffti(n,wsave)
-
-******************************************************************
-
-subroutine cffti initializes the array wsave which is used in
-both cfftf and cfftb. the prime factorization of n together with
-a tabulation of the trigonometric functions are computed and
-stored in wsave.
-
-input parameter
-
-n       the length of the sequence to be transformed
-
-output parameter
-
-wsave   a work array which must be dimensioned at least 4*n+15
-        the same work array can be used for both cfftf and cfftb
-        as long as n remains unchanged. different wsave arrays
-        are required for different values of n. the contents of
-        wsave must not be changed between calls of cfftf or cfftb.
-
-******************************************************************
-
-subroutine cfftf(n,c,wsave)
-
-******************************************************************
-
-subroutine cfftf computes the forward complex discrete fourier
-transform (the fourier analysis). equivalently , cfftf computes
-the fourier coefficients of a complex periodic sequence.
-the transform is defined below at output parameter c.
-
-the transform is not normalized. to obtain a normalized transform
-the output must be divided by n. otherwise a call of cfftf
-followed by a call of cfftb will multiply the sequence by n.
-
-the array wsave which is used by subroutine cfftf must be
-initialized by calling subroutine cffti(n,wsave).
-
-input parameters
-
-
-n      the length of the complex sequence c. the method is
-       more efficient when n is the product of small primes. n
-
-c      a complex array of length n which contains the sequence
-
-wsave   a real work array which must be dimensioned at least 4n+15
-        in the program that calls cfftf. the wsave array must be
-        initialized by calling subroutine cffti(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-        the same wsave array can be used by cfftf and cfftb.
-
-output parameters
-
-c      for j=1,...,n
-
-           c(j)=the sum from k=1,...,n of
-
-                 c(k)*exp(-i*(j-1)*(k-1)*2*pi/n)
-
-                       where i=sqrt(-1)
-
-wsave   contains initialization calculations which must not be
-        destroyed between calls of subroutine cfftf or cfftb
-
-******************************************************************
-
-subroutine cfftb(n,c,wsave)
-
-******************************************************************
-
-subroutine cfftb computes the backward complex discrete fourier
-transform (the fourier synthesis). equivalently , cfftb computes
-a complex periodic sequence from its fourier coefficients.
-the transform is defined below at output parameter c.
-
-a call of cfftf followed by a call of cfftb will multiply the
-sequence by n.
-
-the array wsave which is used by subroutine cfftb must be
-initialized by calling subroutine cffti(n,wsave).
-
-input parameters
-
-
-n      the length of the complex sequence c. the method is
-       more efficient when n is the product of small primes.
-
-c      a complex array of length n which contains the sequence
-
-wsave   a real work array which must be dimensioned at least 4n+15
-        in the program that calls cfftb. the wsave array must be
-        initialized by calling subroutine cffti(n,wsave) and a
-        different wsave array must be used for each different
-        value of n. this initialization does not have to be
-        repeated so long as n remains unchanged thus subsequent
-        transforms can be obtained faster than the first.
-        the same wsave array can be used by cfftf and cfftb.
-
-output parameters
-
-c      for j=1,...,n
-
-           c(j)=the sum from k=1,...,n of
-
-                 c(k)*exp(i*(j-1)*(k-1)*2*pi/n)
-
-                       where i=sqrt(-1)
-
-wsave   contains initialization calculations which must not be
-        destroyed between calls of subroutine cfftf or cfftb
-
-
-
-["send index for vfftpk" describes a vectorized version of fftpack]
-

Copied: trunk/scipy/fftpack/src/fftpack/doc (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/doc)

Deleted: trunk/scipy/fftpack/src/fftpack/rfftb.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/rfftb.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/rfftb.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,6 +0,0 @@
-      SUBROUTINE RFFTB (N,R,WSAVE)
-      DIMENSION       R(*)       ,WSAVE(*)
-      IF (N .EQ. 1) RETURN
-      CALL RFFTB1 (N,R,WSAVE,WSAVE(N+1),WSAVE(2*N+1))
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/rfftb.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/rfftb.f)

Deleted: trunk/scipy/fftpack/src/fftpack/rfftb1.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/rfftb1.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/rfftb1.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,407 +0,0 @@
-      SUBROUTINE RFFTB1 (N,C,CH,WA,IFAC)
-      DIMENSION       CH(*)      ,C(*)       ,WA(*)      ,IFAC(*)
-      NF = IFAC(2)
-      NA = 0
-      L1 = 1
-      IW = 1
-      DO 116 K1=1,NF
-         IP = IFAC(K1+2)
-         L2 = IP*L1
-         IDO = N/L2
-         IDL1 = IDO*L1
-         IF (IP .NE. 4) GO TO 103
-         IX2 = IW+IDO
-         IX3 = IX2+IDO
-         IF (NA .NE. 0) GO TO 101
-         CALL RADB4 (IDO,L1,C,CH,WA(IW),WA(IX2),WA(IX3))
-         GO TO 102
-  101    CALL RADB4 (IDO,L1,CH,C,WA(IW),WA(IX2),WA(IX3))
-  102    NA = 1-NA
-         GO TO 115
-  103    IF (IP .NE. 2) GO TO 106
-         IF (NA .NE. 0) GO TO 104
-         CALL RADB2 (IDO,L1,C,CH,WA(IW))
-         GO TO 105
-  104    CALL RADB2 (IDO,L1,CH,C,WA(IW))
-  105    NA = 1-NA
-         GO TO 115
-  106    IF (IP .NE. 3) GO TO 109
-         IX2 = IW+IDO
-         IF (NA .NE. 0) GO TO 107
-         CALL RADB3 (IDO,L1,C,CH,WA(IW),WA(IX2))
-         GO TO 108
-  107    CALL RADB3 (IDO,L1,CH,C,WA(IW),WA(IX2))
-  108    NA = 1-NA
-         GO TO 115
-  109    IF (IP .NE. 5) GO TO 112
-         IX2 = IW+IDO
-         IX3 = IX2+IDO
-         IX4 = IX3+IDO
-         IF (NA .NE. 0) GO TO 110
-         CALL RADB5 (IDO,L1,C,CH,WA(IW),WA(IX2),WA(IX3),WA(IX4))
-         GO TO 111
-  110    CALL RADB5 (IDO,L1,CH,C,WA(IW),WA(IX2),WA(IX3),WA(IX4))
-  111    NA = 1-NA
-         GO TO 115
-  112    IF (NA .NE. 0) GO TO 113
-         CALL RADBG (IDO,IP,L1,IDL1,C,C,C,CH,CH,WA(IW))
-         GO TO 114
-  113    CALL RADBG (IDO,IP,L1,IDL1,CH,CH,CH,C,C,WA(IW))
-  114    IF (IDO .EQ. 1) NA = 1-NA
-  115    L1 = L2
-         IW = IW+(IP-1)*IDO
-  116 CONTINUE
-      IF (NA .EQ. 0) RETURN
-      DO 117 I=1,N
-         C(I) = CH(I)
-  117 CONTINUE
-      RETURN
-      END
-      SUBROUTINE RADB2 (IDO,L1,CC,CH,WA1)
-      DIMENSION       CC(IDO,2,L1)           ,CH(IDO,L1,2)           ,
-     1                WA1(*)
-      DO 101 K=1,L1
-         CH(1,K,1) = CC(1,1,K)+CC(IDO,2,K)
-         CH(1,K,2) = CC(1,1,K)-CC(IDO,2,K)
-  101 CONTINUE
-      IF (IDO.lt.2) GO TO 107
-      IF (IDO.eq.2) GO TO 105
-      GO TO 102
-  102 IDP2 = IDO+2
-      DO 104 K=1,L1
-         DO 103 I=3,IDO,2
-            IC = IDP2-I
-            CH(I-1,K,1) = CC(I-1,1,K)+CC(IC-1,2,K)
-            TR2 = CC(I-1,1,K)-CC(IC-1,2,K)
-            CH(I,K,1) = CC(I,1,K)-CC(IC,2,K)
-            TI2 = CC(I,1,K)+CC(IC,2,K)
-            CH(I-1,K,2) = WA1(I-2)*TR2-WA1(I-1)*TI2
-            CH(I,K,2) = WA1(I-2)*TI2+WA1(I-1)*TR2
-  103    CONTINUE
-  104 CONTINUE
-      IF (MOD(IDO,2) .EQ. 1) RETURN
-  105 DO 106 K=1,L1
-         CH(IDO,K,1) = CC(IDO,1,K)+CC(IDO,1,K)
-         CH(IDO,K,2) = -(CC(1,2,K)+CC(1,2,K))
-  106 CONTINUE
-  107 RETURN
-      END
-      SUBROUTINE RADB3 (IDO,L1,CC,CH,WA1,WA2)
-      DIMENSION       CC(IDO,3,L1)           ,CH(IDO,L1,3)           ,
-     1                WA1(*)     ,WA2(*)
-      DATA TAUR,TAUI /-.5,.866025403784439/
-      DO 101 K=1,L1
-         TR2 = CC(IDO,2,K)+CC(IDO,2,K)
-         CR2 = CC(1,1,K)+TAUR*TR2
-         CH(1,K,1) = CC(1,1,K)+TR2
-         CI3 = TAUI*(CC(1,3,K)+CC(1,3,K))
-         CH(1,K,2) = CR2-CI3
-         CH(1,K,3) = CR2+CI3
-  101 CONTINUE
-      IF (IDO .EQ. 1) RETURN
-      IDP2 = IDO+2
-      DO 103 K=1,L1
-         DO 102 I=3,IDO,2
-            IC = IDP2-I
-            TR2 = CC(I-1,3,K)+CC(IC-1,2,K)
-            CR2 = CC(I-1,1,K)+TAUR*TR2
-            CH(I-1,K,1) = CC(I-1,1,K)+TR2
-            TI2 = CC(I,3,K)-CC(IC,2,K)
-            CI2 = CC(I,1,K)+TAUR*TI2
-            CH(I,K,1) = CC(I,1,K)+TI2
-            CR3 = TAUI*(CC(I-1,3,K)-CC(IC-1,2,K))
-            CI3 = TAUI*(CC(I,3,K)+CC(IC,2,K))
-            DR2 = CR2-CI3
-            DR3 = CR2+CI3
-            DI2 = CI2+CR3
-            DI3 = CI2-CR3
-            CH(I-1,K,2) = WA1(I-2)*DR2-WA1(I-1)*DI2
-            CH(I,K,2) = WA1(I-2)*DI2+WA1(I-1)*DR2
-            CH(I-1,K,3) = WA2(I-2)*DR3-WA2(I-1)*DI3
-            CH(I,K,3) = WA2(I-2)*DI3+WA2(I-1)*DR3
-  102    CONTINUE
-  103 CONTINUE
-      RETURN
-      END
-      SUBROUTINE RADB4 (IDO,L1,CC,CH,WA1,WA2,WA3)
-      DIMENSION       CC(IDO,4,L1)           ,CH(IDO,L1,4)           ,
-     1                WA1(*)     ,WA2(*)     ,WA3(*)
-      DATA SQRT2 /1.414213562373095/
-      DO 101 K=1,L1
-         TR1 = CC(1,1,K)-CC(IDO,4,K)
-         TR2 = CC(1,1,K)+CC(IDO,4,K)
-         TR3 = CC(IDO,2,K)+CC(IDO,2,K)
-         TR4 = CC(1,3,K)+CC(1,3,K)
-         CH(1,K,1) = TR2+TR3
-         CH(1,K,2) = TR1-TR4
-         CH(1,K,3) = TR2-TR3
-         CH(1,K,4) = TR1+TR4
-  101 CONTINUE
-      IF (IDO.lt.2) GO TO 107
-      IF (IDO.eq.2) GO TO 105
-      GO TO 102
-  102 IDP2 = IDO+2
-      DO 104 K=1,L1
-         DO 103 I=3,IDO,2
-            IC = IDP2-I
-            TI1 = CC(I,1,K)+CC(IC,4,K)
-            TI2 = CC(I,1,K)-CC(IC,4,K)
-            TI3 = CC(I,3,K)-CC(IC,2,K)
-            TR4 = CC(I,3,K)+CC(IC,2,K)
-            TR1 = CC(I-1,1,K)-CC(IC-1,4,K)
-            TR2 = CC(I-1,1,K)+CC(IC-1,4,K)
-            TI4 = CC(I-1,3,K)-CC(IC-1,2,K)
-            TR3 = CC(I-1,3,K)+CC(IC-1,2,K)
-            CH(I-1,K,1) = TR2+TR3
-            CR3 = TR2-TR3
-            CH(I,K,1) = TI2+TI3
-            CI3 = TI2-TI3
-            CR2 = TR1-TR4
-            CR4 = TR1+TR4
-            CI2 = TI1+TI4
-            CI4 = TI1-TI4
-            CH(I-1,K,2) = WA1(I-2)*CR2-WA1(I-1)*CI2
-            CH(I,K,2) = WA1(I-2)*CI2+WA1(I-1)*CR2
-            CH(I-1,K,3) = WA2(I-2)*CR3-WA2(I-1)*CI3
-            CH(I,K,3) = WA2(I-2)*CI3+WA2(I-1)*CR3
-            CH(I-1,K,4) = WA3(I-2)*CR4-WA3(I-1)*CI4
-            CH(I,K,4) = WA3(I-2)*CI4+WA3(I-1)*CR4
-  103    CONTINUE
-  104 CONTINUE
-      IF (MOD(IDO,2) .EQ. 1) RETURN
-  105 CONTINUE
-      DO 106 K=1,L1
-         TI1 = CC(1,2,K)+CC(1,4,K)
-         TI2 = CC(1,4,K)-CC(1,2,K)
-         TR1 = CC(IDO,1,K)-CC(IDO,3,K)
-         TR2 = CC(IDO,1,K)+CC(IDO,3,K)
-         CH(IDO,K,1) = TR2+TR2
-         CH(IDO,K,2) = SQRT2*(TR1-TI1)
-         CH(IDO,K,3) = TI2+TI2
-         CH(IDO,K,4) = -SQRT2*(TR1+TI1)
-  106 CONTINUE
-  107 RETURN
-      END
-      SUBROUTINE RADB5 (IDO,L1,CC,CH,WA1,WA2,WA3,WA4)
-      DIMENSION       CC(IDO,5,L1)           ,CH(IDO,L1,5)           ,
-     1                WA1(*)     ,WA2(*)     ,WA3(*)     ,WA4(*)
-      DATA TR11,TI11,TR12,TI12 /.309016994374947,.951056516295154,
-     1-.809016994374947,.587785252292473/
-      DO 101 K=1,L1
-         TI5 = CC(1,3,K)+CC(1,3,K)
-         TI4 = CC(1,5,K)+CC(1,5,K)
-         TR2 = CC(IDO,2,K)+CC(IDO,2,K)
-         TR3 = CC(IDO,4,K)+CC(IDO,4,K)
-         CH(1,K,1) = CC(1,1,K)+TR2+TR3
-         CR2 = CC(1,1,K)+TR11*TR2+TR12*TR3
-         CR3 = CC(1,1,K)+TR12*TR2+TR11*TR3
-         CI5 = TI11*TI5+TI12*TI4
-         CI4 = TI12*TI5-TI11*TI4
-         CH(1,K,2) = CR2-CI5
-         CH(1,K,3) = CR3-CI4
-         CH(1,K,4) = CR3+CI4
-         CH(1,K,5) = CR2+CI5
-  101 CONTINUE
-      IF (IDO .EQ. 1) RETURN
-      IDP2 = IDO+2
-      DO 103 K=1,L1
-         DO 102 I=3,IDO,2
-            IC = IDP2-I
-            TI5 = CC(I,3,K)+CC(IC,2,K)
-            TI2 = CC(I,3,K)-CC(IC,2,K)
-            TI4 = CC(I,5,K)+CC(IC,4,K)
-            TI3 = CC(I,5,K)-CC(IC,4,K)
-            TR5 = CC(I-1,3,K)-CC(IC-1,2,K)
-            TR2 = CC(I-1,3,K)+CC(IC-1,2,K)
-            TR4 = CC(I-1,5,K)-CC(IC-1,4,K)
-            TR3 = CC(I-1,5,K)+CC(IC-1,4,K)
-            CH(I-1,K,1) = CC(I-1,1,K)+TR2+TR3
-            CH(I,K,1) = CC(I,1,K)+TI2+TI3
-            CR2 = CC(I-1,1,K)+TR11*TR2+TR12*TR3
-            CI2 = CC(I,1,K)+TR11*TI2+TR12*TI3
-            CR3 = CC(I-1,1,K)+TR12*TR2+TR11*TR3
-            CI3 = CC(I,1,K)+TR12*TI2+TR11*TI3
-            CR5 = TI11*TR5+TI12*TR4
-            CI5 = TI11*TI5+TI12*TI4
-            CR4 = TI12*TR5-TI11*TR4
-            CI4 = TI12*TI5-TI11*TI4
-            DR3 = CR3-CI4
-            DR4 = CR3+CI4
-            DI3 = CI3+CR4
-            DI4 = CI3-CR4
-            DR5 = CR2+CI5
-            DR2 = CR2-CI5
-            DI5 = CI2-CR5
-            DI2 = CI2+CR5
-            CH(I-1,K,2) = WA1(I-2)*DR2-WA1(I-1)*DI2
-            CH(I,K,2) = WA1(I-2)*DI2+WA1(I-1)*DR2
-            CH(I-1,K,3) = WA2(I-2)*DR3-WA2(I-1)*DI3
-            CH(I,K,3) = WA2(I-2)*DI3+WA2(I-1)*DR3
-            CH(I-1,K,4) = WA3(I-2)*DR4-WA3(I-1)*DI4
-            CH(I,K,4) = WA3(I-2)*DI4+WA3(I-1)*DR4
-            CH(I-1,K,5) = WA4(I-2)*DR5-WA4(I-1)*DI5
-            CH(I,K,5) = WA4(I-2)*DI5+WA4(I-1)*DR5
-  102    CONTINUE
-  103 CONTINUE
-      RETURN
-      END
-      SUBROUTINE RADBG (IDO,IP,L1,IDL1,CC,C1,C2,CH,CH2,WA)
-      DIMENSION       CH(IDO,L1,IP)          ,CC(IDO,IP,L1)          ,
-     1                C1(IDO,L1,IP)          ,C2(IDL1,IP),
-     2                CH2(IDL1,IP)           ,WA(*)
-      DATA TPI/6.28318530717959/
-      ARG = TPI/FLOAT(IP)
-      DCP = COS(ARG)
-      DSP = SIN(ARG)
-      IDP2 = IDO+2
-      NBD = (IDO-1)/2
-      IPP2 = IP+2
-      IPPH = (IP+1)/2
-      IF (IDO .LT. L1) GO TO 103
-      DO 102 K=1,L1
-         DO 101 I=1,IDO
-            CH(I,K,1) = CC(I,1,K)
-  101    CONTINUE
-  102 CONTINUE
-      GO TO 106
-  103 DO 105 I=1,IDO
-         DO 104 K=1,L1
-            CH(I,K,1) = CC(I,1,K)
-  104    CONTINUE
-  105 CONTINUE
-  106 DO 108 J=2,IPPH
-         JC = IPP2-J
-         J2 = J+J
-         DO 107 K=1,L1
-            CH(1,K,J) = CC(IDO,J2-2,K)+CC(IDO,J2-2,K)
-            CH(1,K,JC) = CC(1,J2-1,K)+CC(1,J2-1,K)
-  107    CONTINUE
-  108 CONTINUE
-      IF (IDO .EQ. 1) GO TO 116
-      IF (NBD .LT. L1) GO TO 112
-      DO 111 J=2,IPPH
-         JC = IPP2-J
-         DO 110 K=1,L1
-            DO 109 I=3,IDO,2
-               IC = IDP2-I
-               CH(I-1,K,J) = CC(I-1,2*J-1,K)+CC(IC-1,2*J-2,K)
-               CH(I-1,K,JC) = CC(I-1,2*J-1,K)-CC(IC-1,2*J-2,K)
-               CH(I,K,J) = CC(I,2*J-1,K)-CC(IC,2*J-2,K)
-               CH(I,K,JC) = CC(I,2*J-1,K)+CC(IC,2*J-2,K)
-  109       CONTINUE
-  110    CONTINUE
-  111 CONTINUE
-      GO TO 116
-  112 DO 115 J=2,IPPH
-         JC = IPP2-J
-         DO 114 I=3,IDO,2
-            IC = IDP2-I
-            DO 113 K=1,L1
-               CH(I-1,K,J) = CC(I-1,2*J-1,K)+CC(IC-1,2*J-2,K)
-               CH(I-1,K,JC) = CC(I-1,2*J-1,K)-CC(IC-1,2*J-2,K)
-               CH(I,K,J) = CC(I,2*J-1,K)-CC(IC,2*J-2,K)
-               CH(I,K,JC) = CC(I,2*J-1,K)+CC(IC,2*J-2,K)
-  113       CONTINUE
-  114    CONTINUE
-  115 CONTINUE
-  116 AR1 = 1.
-      AI1 = 0.
-      DO 120 L=2,IPPH
-         LC = IPP2-L
-         AR1H = DCP*AR1-DSP*AI1
-         AI1 = DCP*AI1+DSP*AR1
-         AR1 = AR1H
-         DO 117 IK=1,IDL1
-            C2(IK,L) = CH2(IK,1)+AR1*CH2(IK,2)
-            C2(IK,LC) = AI1*CH2(IK,IP)
-  117    CONTINUE
-         DC2 = AR1
-         DS2 = AI1
-         AR2 = AR1
-         AI2 = AI1
-         DO 119 J=3,IPPH
-            JC = IPP2-J
-            AR2H = DC2*AR2-DS2*AI2
-            AI2 = DC2*AI2+DS2*AR2
-            AR2 = AR2H
-            DO 118 IK=1,IDL1
-               C2(IK,L) = C2(IK,L)+AR2*CH2(IK,J)
-               C2(IK,LC) = C2(IK,LC)+AI2*CH2(IK,JC)
-  118       CONTINUE
-  119    CONTINUE
-  120 CONTINUE
-      DO 122 J=2,IPPH
-         DO 121 IK=1,IDL1
-            CH2(IK,1) = CH2(IK,1)+CH2(IK,J)
-  121    CONTINUE
-  122 CONTINUE
-      DO 124 J=2,IPPH
-         JC = IPP2-J
-         DO 123 K=1,L1
-            CH(1,K,J) = C1(1,K,J)-C1(1,K,JC)
-            CH(1,K,JC) = C1(1,K,J)+C1(1,K,JC)
-  123    CONTINUE
-  124 CONTINUE
-      IF (IDO .EQ. 1) GO TO 132
-      IF (NBD .LT. L1) GO TO 128
-      DO 127 J=2,IPPH
-         JC = IPP2-J
-         DO 126 K=1,L1
-            DO 125 I=3,IDO,2
-               CH(I-1,K,J) = C1(I-1,K,J)-C1(I,K,JC)
-               CH(I-1,K,JC) = C1(I-1,K,J)+C1(I,K,JC)
-               CH(I,K,J) = C1(I,K,J)+C1(I-1,K,JC)
-               CH(I,K,JC) = C1(I,K,J)-C1(I-1,K,JC)
-  125       CONTINUE
-  126    CONTINUE
-  127 CONTINUE
-      GO TO 132
-  128 DO 131 J=2,IPPH
-         JC = IPP2-J
-         DO 130 I=3,IDO,2
-            DO 129 K=1,L1
-               CH(I-1,K,J) = C1(I-1,K,J)-C1(I,K,JC)
-               CH(I-1,K,JC) = C1(I-1,K,J)+C1(I,K,JC)
-               CH(I,K,J) = C1(I,K,J)+C1(I-1,K,JC)
-               CH(I,K,JC) = C1(I,K,J)-C1(I-1,K,JC)
-  129       CONTINUE
-  130    CONTINUE
-  131 CONTINUE
-  132 CONTINUE
-      IF (IDO .EQ. 1) RETURN
-      DO 133 IK=1,IDL1
-         C2(IK,1) = CH2(IK,1)
-  133 CONTINUE
-      DO 135 J=2,IP
-         DO 134 K=1,L1
-            C1(1,K,J) = CH(1,K,J)
-  134    CONTINUE
-  135 CONTINUE
-      IF (NBD .GT. L1) GO TO 139
-      IS = -IDO
-      DO 138 J=2,IP
-         IS = IS+IDO
-         IDIJ = IS
-         DO 137 I=3,IDO,2
-            IDIJ = IDIJ+2
-            DO 136 K=1,L1
-               C1(I-1,K,J) = WA(IDIJ-1)*CH(I-1,K,J)-WA(IDIJ)*CH(I,K,J)
-               C1(I,K,J) = WA(IDIJ-1)*CH(I,K,J)+WA(IDIJ)*CH(I-1,K,J)
-  136       CONTINUE
-  137    CONTINUE
-  138 CONTINUE
-      GO TO 143
-  139 IS = -IDO
-      DO 142 J=2,IP
-         IS = IS+IDO
-         DO 141 K=1,L1
-            IDIJ = IS
-            DO 140 I=3,IDO,2
-               IDIJ = IDIJ+2
-               C1(I-1,K,J) = WA(IDIJ-1)*CH(I-1,K,J)-WA(IDIJ)*CH(I,K,J)
-               C1(I,K,J) = WA(IDIJ-1)*CH(I,K,J)+WA(IDIJ)*CH(I-1,K,J)
-  140       CONTINUE
-  141    CONTINUE
-  142 CONTINUE
-  143 RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/rfftb1.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/rfftb1.f)

Deleted: trunk/scipy/fftpack/src/fftpack/rfftf.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/rfftf.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/rfftf.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,6 +0,0 @@
-      SUBROUTINE RFFTF (N,R,WSAVE)
-      DIMENSION       R(*)       ,WSAVE(*)
-      IF (N .EQ. 1) RETURN
-      CALL RFFTF1 (N,R,WSAVE,WSAVE(N+1),WSAVE(2*N+1))
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/rfftf.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/rfftf.f)

Deleted: trunk/scipy/fftpack/src/fftpack/rfftf1.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/rfftf1.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/rfftf1.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,403 +0,0 @@
-      SUBROUTINE RFFTF1 (N,C,CH,WA,IFAC)
-      DIMENSION       CH(*)      ,C(*)       ,WA(*)      ,IFAC(*)
-      NF = IFAC(2)
-      NA = 1
-      L2 = N
-      IW = N
-      DO 111 K1=1,NF
-         KH = NF-K1
-         IP = IFAC(KH+3)
-         L1 = L2/IP
-         IDO = N/L2
-         IDL1 = IDO*L1
-         IW = IW-(IP-1)*IDO
-         NA = 1-NA
-         IF (IP .NE. 4) GO TO 102
-         IX2 = IW+IDO
-         IX3 = IX2+IDO
-         IF (NA .NE. 0) GO TO 101
-         CALL RADF4 (IDO,L1,C,CH,WA(IW),WA(IX2),WA(IX3))
-         GO TO 110
-  101    CALL RADF4 (IDO,L1,CH,C,WA(IW),WA(IX2),WA(IX3))
-         GO TO 110
-  102    IF (IP .NE. 2) GO TO 104
-         IF (NA .NE. 0) GO TO 103
-         CALL RADF2 (IDO,L1,C,CH,WA(IW))
-         GO TO 110
-  103    CALL RADF2 (IDO,L1,CH,C,WA(IW))
-         GO TO 110
-  104    IF (IP .NE. 3) GO TO 106
-         IX2 = IW+IDO
-         IF (NA .NE. 0) GO TO 105
-         CALL RADF3 (IDO,L1,C,CH,WA(IW),WA(IX2))
-         GO TO 110
-  105    CALL RADF3 (IDO,L1,CH,C,WA(IW),WA(IX2))
-         GO TO 110
-  106    IF (IP .NE. 5) GO TO 108
-         IX2 = IW+IDO
-         IX3 = IX2+IDO
-         IX4 = IX3+IDO
-         IF (NA .NE. 0) GO TO 107
-         CALL RADF5 (IDO,L1,C,CH,WA(IW),WA(IX2),WA(IX3),WA(IX4))
-         GO TO 110
-  107    CALL RADF5 (IDO,L1,CH,C,WA(IW),WA(IX2),WA(IX3),WA(IX4))
-         GO TO 110
-  108    IF (IDO .EQ. 1) NA = 1-NA
-         IF (NA .NE. 0) GO TO 109
-         CALL RADFG (IDO,IP,L1,IDL1,C,C,C,CH,CH,WA(IW))
-         NA = 1
-         GO TO 110
-  109    CALL RADFG (IDO,IP,L1,IDL1,CH,CH,CH,C,C,WA(IW))
-         NA = 0
-  110    L2 = L1
-  111 CONTINUE
-      IF (NA .EQ. 1) RETURN
-      DO 112 I=1,N
-         C(I) = CH(I)
-  112 CONTINUE
-      RETURN
-      END
-      SUBROUTINE RADF2 (IDO,L1,CC,CH,WA1)
-      DIMENSION       CH(IDO,2,L1)           ,CC(IDO,L1,2)           ,
-     1                WA1(*)
-      DO 101 K=1,L1
-         CH(1,1,K) = CC(1,K,1)+CC(1,K,2)
-         CH(IDO,2,K) = CC(1,K,1)-CC(1,K,2)
-  101 CONTINUE
-      IF (IDO.lt.2) GO TO 107
-      IF (IDO.eq.2) GO TO 105
-      GO TO 102
-  102 IDP2 = IDO+2
-      DO 104 K=1,L1
-         DO 103 I=3,IDO,2
-            IC = IDP2-I
-            TR2 = WA1(I-2)*CC(I-1,K,2)+WA1(I-1)*CC(I,K,2)
-            TI2 = WA1(I-2)*CC(I,K,2)-WA1(I-1)*CC(I-1,K,2)
-            CH(I,1,K) = CC(I,K,1)+TI2
-            CH(IC,2,K) = TI2-CC(I,K,1)
-            CH(I-1,1,K) = CC(I-1,K,1)+TR2
-            CH(IC-1,2,K) = CC(I-1,K,1)-TR2
-  103    CONTINUE
-  104 CONTINUE
-      IF (MOD(IDO,2) .EQ. 1) RETURN
-  105 DO 106 K=1,L1
-         CH(1,2,K) = -CC(IDO,K,2)
-         CH(IDO,1,K) = CC(IDO,K,1)
-  106 CONTINUE
-  107 RETURN
-      END
-      SUBROUTINE RADF3 (IDO,L1,CC,CH,WA1,WA2)
-      DIMENSION       CH(IDO,3,L1)           ,CC(IDO,L1,3)           ,
-     1                WA1(*)     ,WA2(*)
-      DATA TAUR,TAUI /-.5,.866025403784439/
-      DO 101 K=1,L1
-         CR2 = CC(1,K,2)+CC(1,K,3)
-         CH(1,1,K) = CC(1,K,1)+CR2
-         CH(1,3,K) = TAUI*(CC(1,K,3)-CC(1,K,2))
-         CH(IDO,2,K) = CC(1,K,1)+TAUR*CR2
-  101 CONTINUE
-      IF (IDO .EQ. 1) RETURN
-      IDP2 = IDO+2
-      DO 103 K=1,L1
-         DO 102 I=3,IDO,2
-            IC = IDP2-I
-            DR2 = WA1(I-2)*CC(I-1,K,2)+WA1(I-1)*CC(I,K,2)
-            DI2 = WA1(I-2)*CC(I,K,2)-WA1(I-1)*CC(I-1,K,2)
-            DR3 = WA2(I-2)*CC(I-1,K,3)+WA2(I-1)*CC(I,K,3)
-            DI3 = WA2(I-2)*CC(I,K,3)-WA2(I-1)*CC(I-1,K,3)
-            CR2 = DR2+DR3
-            CI2 = DI2+DI3
-            CH(I-1,1,K) = CC(I-1,K,1)+CR2
-            CH(I,1,K) = CC(I,K,1)+CI2
-            TR2 = CC(I-1,K,1)+TAUR*CR2
-            TI2 = CC(I,K,1)+TAUR*CI2
-            TR3 = TAUI*(DI2-DI3)
-            TI3 = TAUI*(DR3-DR2)
-            CH(I-1,3,K) = TR2+TR3
-            CH(IC-1,2,K) = TR2-TR3
-            CH(I,3,K) = TI2+TI3
-            CH(IC,2,K) = TI3-TI2
-  102    CONTINUE
-  103 CONTINUE
-      RETURN
-      END
-      SUBROUTINE RADF4 (IDO,L1,CC,CH,WA1,WA2,WA3)
-      DIMENSION       CC(IDO,L1,4)           ,CH(IDO,4,L1)           ,
-     1                WA1(*)     ,WA2(*)     ,WA3(*)
-      DATA HSQT2 /.7071067811865475/
-      DO 101 K=1,L1
-         TR1 = CC(1,K,2)+CC(1,K,4)
-         TR2 = CC(1,K,1)+CC(1,K,3)
-         CH(1,1,K) = TR1+TR2
-         CH(IDO,4,K) = TR2-TR1
-         CH(IDO,2,K) = CC(1,K,1)-CC(1,K,3)
-         CH(1,3,K) = CC(1,K,4)-CC(1,K,2)
-  101 CONTINUE
-      IF (IDO.lt.2) GO TO 107
-      IF (IDO.eq.2) GO TO 105
-      GO TO 102
-  102 IDP2 = IDO+2
-      DO 104 K=1,L1
-         DO 103 I=3,IDO,2
-            IC = IDP2-I
-            CR2 = WA1(I-2)*CC(I-1,K,2)+WA1(I-1)*CC(I,K,2)
-            CI2 = WA1(I-2)*CC(I,K,2)-WA1(I-1)*CC(I-1,K,2)
-            CR3 = WA2(I-2)*CC(I-1,K,3)+WA2(I-1)*CC(I,K,3)
-            CI3 = WA2(I-2)*CC(I,K,3)-WA2(I-1)*CC(I-1,K,3)
-            CR4 = WA3(I-2)*CC(I-1,K,4)+WA3(I-1)*CC(I,K,4)
-            CI4 = WA3(I-2)*CC(I,K,4)-WA3(I-1)*CC(I-1,K,4)
-            TR1 = CR2+CR4
-            TR4 = CR4-CR2
-            TI1 = CI2+CI4
-            TI4 = CI2-CI4
-            TI2 = CC(I,K,1)+CI3
-            TI3 = CC(I,K,1)-CI3
-            TR2 = CC(I-1,K,1)+CR3
-            TR3 = CC(I-1,K,1)-CR3
-            CH(I-1,1,K) = TR1+TR2
-            CH(IC-1,4,K) = TR2-TR1
-            CH(I,1,K) = TI1+TI2
-            CH(IC,4,K) = TI1-TI2
-            CH(I-1,3,K) = TI4+TR3
-            CH(IC-1,2,K) = TR3-TI4
-            CH(I,3,K) = TR4+TI3
-            CH(IC,2,K) = TR4-TI3
-  103    CONTINUE
-  104 CONTINUE
-      IF (MOD(IDO,2) .EQ. 1) RETURN
-  105 CONTINUE
-      DO 106 K=1,L1
-         TI1 = -HSQT2*(CC(IDO,K,2)+CC(IDO,K,4))
-         TR1 = HSQT2*(CC(IDO,K,2)-CC(IDO,K,4))
-         CH(IDO,1,K) = TR1+CC(IDO,K,1)
-         CH(IDO,3,K) = CC(IDO,K,1)-TR1
-         CH(1,2,K) = TI1-CC(IDO,K,3)
-         CH(1,4,K) = TI1+CC(IDO,K,3)
-  106 CONTINUE
-  107 RETURN
-      END
-      SUBROUTINE RADF5 (IDO,L1,CC,CH,WA1,WA2,WA3,WA4)
-      DIMENSION       CC(IDO,L1,5)           ,CH(IDO,5,L1)           ,
-     1                WA1(*)     ,WA2(*)     ,WA3(*)     ,WA4(*)
-      DATA TR11,TI11,TR12,TI12 /.309016994374947,.951056516295154,
-     1-.809016994374947,.587785252292473/
-      DO 101 K=1,L1
-         CR2 = CC(1,K,5)+CC(1,K,2)
-         CI5 = CC(1,K,5)-CC(1,K,2)
-         CR3 = CC(1,K,4)+CC(1,K,3)
-         CI4 = CC(1,K,4)-CC(1,K,3)
-         CH(1,1,K) = CC(1,K,1)+CR2+CR3
-         CH(IDO,2,K) = CC(1,K,1)+TR11*CR2+TR12*CR3
-         CH(1,3,K) = TI11*CI5+TI12*CI4
-         CH(IDO,4,K) = CC(1,K,1)+TR12*CR2+TR11*CR3
-         CH(1,5,K) = TI12*CI5-TI11*CI4
-  101 CONTINUE
-      IF (IDO .EQ. 1) RETURN
-      IDP2 = IDO+2
-      DO 103 K=1,L1
-         DO 102 I=3,IDO,2
-            IC = IDP2-I
-            DR2 = WA1(I-2)*CC(I-1,K,2)+WA1(I-1)*CC(I,K,2)
-            DI2 = WA1(I-2)*CC(I,K,2)-WA1(I-1)*CC(I-1,K,2)
-            DR3 = WA2(I-2)*CC(I-1,K,3)+WA2(I-1)*CC(I,K,3)
-            DI3 = WA2(I-2)*CC(I,K,3)-WA2(I-1)*CC(I-1,K,3)
-            DR4 = WA3(I-2)*CC(I-1,K,4)+WA3(I-1)*CC(I,K,4)
-            DI4 = WA3(I-2)*CC(I,K,4)-WA3(I-1)*CC(I-1,K,4)
-            DR5 = WA4(I-2)*CC(I-1,K,5)+WA4(I-1)*CC(I,K,5)
-            DI5 = WA4(I-2)*CC(I,K,5)-WA4(I-1)*CC(I-1,K,5)
-            CR2 = DR2+DR5
-            CI5 = DR5-DR2
-            CR5 = DI2-DI5
-            CI2 = DI2+DI5
-            CR3 = DR3+DR4
-            CI4 = DR4-DR3
-            CR4 = DI3-DI4
-            CI3 = DI3+DI4
-            CH(I-1,1,K) = CC(I-1,K,1)+CR2+CR3
-            CH(I,1,K) = CC(I,K,1)+CI2+CI3
-            TR2 = CC(I-1,K,1)+TR11*CR2+TR12*CR3
-            TI2 = CC(I,K,1)+TR11*CI2+TR12*CI3
-            TR3 = CC(I-1,K,1)+TR12*CR2+TR11*CR3
-            TI3 = CC(I,K,1)+TR12*CI2+TR11*CI3
-            TR5 = TI11*CR5+TI12*CR4
-            TI5 = TI11*CI5+TI12*CI4
-            TR4 = TI12*CR5-TI11*CR4
-            TI4 = TI12*CI5-TI11*CI4
-            CH(I-1,3,K) = TR2+TR5
-            CH(IC-1,2,K) = TR2-TR5
-            CH(I,3,K) = TI2+TI5
-            CH(IC,2,K) = TI5-TI2
-            CH(I-1,5,K) = TR3+TR4
-            CH(IC-1,4,K) = TR3-TR4
-            CH(I,5,K) = TI3+TI4
-            CH(IC,4,K) = TI4-TI3
-  102    CONTINUE
-  103 CONTINUE
-      RETURN
-      END
-      SUBROUTINE RADFG (IDO,IP,L1,IDL1,CC,C1,C2,CH,CH2,WA)
-      DIMENSION       CH(IDO,L1,IP)          ,CC(IDO,IP,L1)          ,
-     1                C1(IDO,L1,IP)          ,C2(IDL1,IP),
-     2                CH2(IDL1,IP)           ,WA(*)
-      DATA TPI/6.28318530717959/
-      ARG = TPI/FLOAT(IP)
-      DCP = COS(ARG)
-      DSP = SIN(ARG)
-      IPPH = (IP+1)/2
-      IPP2 = IP+2
-      IDP2 = IDO+2
-      NBD = (IDO-1)/2
-      IF (IDO .EQ. 1) GO TO 119
-      DO 101 IK=1,IDL1
-         CH2(IK,1) = C2(IK,1)
-  101 CONTINUE
-      DO 103 J=2,IP
-         DO 102 K=1,L1
-            CH(1,K,J) = C1(1,K,J)
-  102    CONTINUE
-  103 CONTINUE
-      IF (NBD .GT. L1) GO TO 107
-      IS = -IDO
-      DO 106 J=2,IP
-         IS = IS+IDO
-         IDIJ = IS
-         DO 105 I=3,IDO,2
-            IDIJ = IDIJ+2
-            DO 104 K=1,L1
-               CH(I-1,K,J) = WA(IDIJ-1)*C1(I-1,K,J)+WA(IDIJ)*C1(I,K,J)
-               CH(I,K,J) = WA(IDIJ-1)*C1(I,K,J)-WA(IDIJ)*C1(I-1,K,J)
-  104       CONTINUE
-  105    CONTINUE
-  106 CONTINUE
-      GO TO 111
-  107 IS = -IDO
-      DO 110 J=2,IP
-         IS = IS+IDO
-         DO 109 K=1,L1
-            IDIJ = IS
-            DO 108 I=3,IDO,2
-               IDIJ = IDIJ+2
-               CH(I-1,K,J) = WA(IDIJ-1)*C1(I-1,K,J)+WA(IDIJ)*C1(I,K,J)
-               CH(I,K,J) = WA(IDIJ-1)*C1(I,K,J)-WA(IDIJ)*C1(I-1,K,J)
-  108       CONTINUE
-  109    CONTINUE
-  110 CONTINUE
-  111 IF (NBD .LT. L1) GO TO 115
-      DO 114 J=2,IPPH
-         JC = IPP2-J
-         DO 113 K=1,L1
-            DO 112 I=3,IDO,2
-               C1(I-1,K,J) = CH(I-1,K,J)+CH(I-1,K,JC)
-               C1(I-1,K,JC) = CH(I,K,J)-CH(I,K,JC)
-               C1(I,K,J) = CH(I,K,J)+CH(I,K,JC)
-               C1(I,K,JC) = CH(I-1,K,JC)-CH(I-1,K,J)
-  112       CONTINUE
-  113    CONTINUE
-  114 CONTINUE
-      GO TO 121
-  115 DO 118 J=2,IPPH
-         JC = IPP2-J
-         DO 117 I=3,IDO,2
-            DO 116 K=1,L1
-               C1(I-1,K,J) = CH(I-1,K,J)+CH(I-1,K,JC)
-               C1(I-1,K,JC) = CH(I,K,J)-CH(I,K,JC)
-               C1(I,K,J) = CH(I,K,J)+CH(I,K,JC)
-               C1(I,K,JC) = CH(I-1,K,JC)-CH(I-1,K,J)
-  116       CONTINUE
-  117    CONTINUE
-  118 CONTINUE
-      GO TO 121
-  119 DO 120 IK=1,IDL1
-         C2(IK,1) = CH2(IK,1)
-  120 CONTINUE
-  121 DO 123 J=2,IPPH
-         JC = IPP2-J
-         DO 122 K=1,L1
-            C1(1,K,J) = CH(1,K,J)+CH(1,K,JC)
-            C1(1,K,JC) = CH(1,K,JC)-CH(1,K,J)
-  122    CONTINUE
-  123 CONTINUE
-C
-      AR1 = 1.
-      AI1 = 0.
-      DO 127 L=2,IPPH
-         LC = IPP2-L
-         AR1H = DCP*AR1-DSP*AI1
-         AI1 = DCP*AI1+DSP*AR1
-         AR1 = AR1H
-         DO 124 IK=1,IDL1
-            CH2(IK,L) = C2(IK,1)+AR1*C2(IK,2)
-            CH2(IK,LC) = AI1*C2(IK,IP)
-  124    CONTINUE
-         DC2 = AR1
-         DS2 = AI1
-         AR2 = AR1
-         AI2 = AI1
-         DO 126 J=3,IPPH
-            JC = IPP2-J
-            AR2H = DC2*AR2-DS2*AI2
-            AI2 = DC2*AI2+DS2*AR2
-            AR2 = AR2H
-            DO 125 IK=1,IDL1
-               CH2(IK,L) = CH2(IK,L)+AR2*C2(IK,J)
-               CH2(IK,LC) = CH2(IK,LC)+AI2*C2(IK,JC)
-  125       CONTINUE
-  126    CONTINUE
-  127 CONTINUE
-      DO 129 J=2,IPPH
-         DO 128 IK=1,IDL1
-            CH2(IK,1) = CH2(IK,1)+C2(IK,J)
-  128    CONTINUE
-  129 CONTINUE
-C
-      IF (IDO .LT. L1) GO TO 132
-      DO 131 K=1,L1
-         DO 130 I=1,IDO
-            CC(I,1,K) = CH(I,K,1)
-  130    CONTINUE
-  131 CONTINUE
-      GO TO 135
-  132 DO 134 I=1,IDO
-         DO 133 K=1,L1
-            CC(I,1,K) = CH(I,K,1)
-  133    CONTINUE
-  134 CONTINUE
-  135 DO 137 J=2,IPPH
-         JC = IPP2-J
-         J2 = J+J
-         DO 136 K=1,L1
-            CC(IDO,J2-2,K) = CH(1,K,J)
-            CC(1,J2-1,K) = CH(1,K,JC)
-  136    CONTINUE
-  137 CONTINUE
-      IF (IDO .EQ. 1) RETURN
-      IF (NBD .LT. L1) GO TO 141
-      DO 140 J=2,IPPH
-         JC = IPP2-J
-         J2 = J+J
-         DO 139 K=1,L1
-            DO 138 I=3,IDO,2
-               IC = IDP2-I
-               CC(I-1,J2-1,K) = CH(I-1,K,J)+CH(I-1,K,JC)
-               CC(IC-1,J2-2,K) = CH(I-1,K,J)-CH(I-1,K,JC)
-               CC(I,J2-1,K) = CH(I,K,J)+CH(I,K,JC)
-               CC(IC,J2-2,K) = CH(I,K,JC)-CH(I,K,J)
-  138       CONTINUE
-  139    CONTINUE
-  140 CONTINUE
-      RETURN
-  141 DO 144 J=2,IPPH
-         JC = IPP2-J
-         J2 = J+J
-         DO 143 I=3,IDO,2
-            IC = IDP2-I
-            DO 142 K=1,L1
-               CC(I-1,J2-1,K) = CH(I-1,K,J)+CH(I-1,K,JC)
-               CC(IC-1,J2-2,K) = CH(I-1,K,J)-CH(I-1,K,JC)
-               CC(I,J2-1,K) = CH(I,K,J)+CH(I,K,JC)
-               CC(IC,J2-2,K) = CH(I,K,JC)-CH(I,K,J)
-  142       CONTINUE
-  143    CONTINUE
-  144 CONTINUE
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/rfftf1.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/rfftf1.f)

Deleted: trunk/scipy/fftpack/src/fftpack/rffti.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/rffti.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/rffti.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,6 +0,0 @@
-      SUBROUTINE RFFTI (N,WSAVE)
-      DIMENSION       WSAVE(*)
-      IF (N .EQ. 1) RETURN
-      CALL RFFTI1 (N,WSAVE(N+1),WSAVE(2*N+1))
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/rffti.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/rffti.f)

Deleted: trunk/scipy/fftpack/src/fftpack/rffti1.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/rffti1.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/rffti1.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,59 +0,0 @@
-      SUBROUTINE RFFTI1 (N,WA,IFAC)
-      DIMENSION       WA(*)      ,IFAC(*)    ,NTRYH(4)
-      DATA NTRYH(1),NTRYH(2),NTRYH(3),NTRYH(4)/4,2,3,5/
-      NL = N
-      NF = 0
-      J = 0
-  101 J = J+1
-      IF (J.le.4) GO TO 102
-      GO TO 103
-  102 NTRY = NTRYH(J)
-      GO TO 104
-  103 NTRY = NTRY+2
-  104 NQ = NL/NTRY
-      NR = NL-NTRY*NQ
-      IF (NR.eq.0) GO TO 105
-      GO TO 101
-  105 NF = NF+1
-      IFAC(NF+2) = NTRY
-      NL = NQ
-      IF (NTRY .NE. 2) GO TO 107
-      IF (NF .EQ. 1) GO TO 107
-      DO 106 I=2,NF
-         IB = NF-I+2
-         IFAC(IB+2) = IFAC(IB+1)
-  106 CONTINUE
-      IFAC(3) = 2
-  107 IF (NL .NE. 1) GO TO 104
-      IFAC(1) = N
-      IFAC(2) = NF
-      TPI = 6.28318530717959
-      ARGH = TPI/FLOAT(N)
-      IS = 0
-      NFM1 = NF-1
-      L1 = 1
-      IF (NFM1 .EQ. 0) RETURN
-      DO 110 K1=1,NFM1
-         IP = IFAC(K1+2)
-         LD = 0
-         L2 = L1*IP
-         IDO = N/L2
-         IPM = IP-1
-         DO 109 J=1,IPM
-            LD = LD+L1
-            I = IS
-            ARGLD = FLOAT(LD)*ARGH
-            FI = 0.
-            DO 108 II=3,IDO,2
-               I = I+2
-               FI = FI+1.
-               ARG = FI*ARGLD
-               WA(I-1) = COS(ARG)
-               WA(I) = SIN(ARG)
-  108       CONTINUE
-            IS = IS+IDO
-  109    CONTINUE
-         L1 = L2
-  110 CONTINUE
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/rffti1.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/rffti1.f)

Deleted: trunk/scipy/fftpack/src/fftpack/sinqb.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/sinqb.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/sinqb.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,18 +0,0 @@
-      SUBROUTINE SINQB (N,X,WSAVE)
-      DIMENSION       X(*)       ,WSAVE(*)
-      IF (N .GT. 1) GO TO 101
-      X(1) = 4.*X(1)
-      RETURN
-  101 NS2 = N/2
-      DO 102 K=2,N,2
-         X(K) = -X(K)
-  102 CONTINUE
-      CALL COSQB (N,X,WSAVE)
-      DO 103 K=1,NS2
-         KC = N-K
-         XHOLD = X(K)
-         X(K) = X(KC+1)
-         X(KC+1) = XHOLD
-  103 CONTINUE
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/sinqb.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/sinqb.f)

Deleted: trunk/scipy/fftpack/src/fftpack/sinqf.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/sinqf.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/sinqf.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,16 +0,0 @@
-      SUBROUTINE SINQF (N,X,WSAVE)
-      DIMENSION       X(*)       ,WSAVE(*)
-      IF (N .EQ. 1) RETURN
-      NS2 = N/2
-      DO 101 K=1,NS2
-         KC = N-K
-         XHOLD = X(K)
-         X(K) = X(KC+1)
-         X(KC+1) = XHOLD
-  101 CONTINUE
-      CALL COSQF (N,X,WSAVE)
-      DO 102 K=2,N,2
-         X(K) = -X(K)
-  102 CONTINUE
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/sinqf.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/sinqf.f)

Deleted: trunk/scipy/fftpack/src/fftpack/sinqi.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/sinqi.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/sinqi.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,5 +0,0 @@
-      SUBROUTINE SINQI (N,WSAVE)
-      DIMENSION       WSAVE(*)
-      CALL COSQI (N,WSAVE)
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/sinqi.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/sinqi.f)

Deleted: trunk/scipy/fftpack/src/fftpack/sint.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/sint.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/sint.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,9 +0,0 @@
-      SUBROUTINE SINT (N,X,WSAVE)
-      DIMENSION       X(*)       ,WSAVE(*)
-      NP1 = N+1
-      IW1 = N/2+1
-      IW2 = IW1+NP1
-      IW3 = IW2+NP1
-      CALL SINT1(N,X,WSAVE,WSAVE(IW1),WSAVE(IW2),WSAVE(IW3))
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/sint.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/sint.f)

Deleted: trunk/scipy/fftpack/src/fftpack/sint1.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/sint1.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/sint1.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,42 +0,0 @@
-      SUBROUTINE SINT1(N,WAR,WAS,XH,X,IFAC)
-      DIMENSION WAR(*),WAS(*),X(*),XH(*),IFAC(*)
-      DATA SQRT3 /1.73205080756888/
-      DO 100 I=1,N
-      XH(I) = WAR(I)
-      WAR(I) = X(I)
-  100 CONTINUE
-      IF (N.lt.2) GO TO 101
-      IF (N.eq.2) GO TO 102
-      GO TO 103
-  101 XH(1) = XH(1)+XH(1)
-      GO TO 106
-  102 XHOLD = SQRT3*(XH(1)+XH(2))
-      XH(2) = SQRT3*(XH(1)-XH(2))
-      XH(1) = XHOLD
-      GO TO 106
-  103 NP1 = N+1
-      NS2 = N/2
-      X(1) = 0.
-      DO 104 K=1,NS2
-         KC = NP1-K
-         T1 = XH(K)-XH(KC)
-         T2 = WAS(K)*(XH(K)+XH(KC))
-         X(K+1) = T1+T2
-         X(KC+1) = T2-T1
-  104 CONTINUE
-      MODN = MOD(N,2)
-      IF (MODN .NE. 0) X(NS2+2) = 4.*XH(NS2+1)
-      CALL RFFTF1 (NP1,X,XH,WAR,IFAC)
-      XH(1) = .5*X(1)
-      DO 105 I=3,N,2
-         XH(I-1) = -X(I)
-         XH(I) = XH(I-2)+X(I-1)
-  105 CONTINUE
-      IF (MODN .NE. 0) GO TO 106
-      XH(N) = -X(N+1)
-  106 DO 107 I=1,N
-      X(I) = WAR(I)
-      WAR(I) = XH(I)
-  107 CONTINUE
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/sint1.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/sint1.f)

Deleted: trunk/scipy/fftpack/src/fftpack/sinti.f
===================================================================
--- branches/remove_fft_backends/scipy/fftpack/src/fftpack/sinti.f	2008-11-01 14:28:39 UTC (rev 4890)
+++ trunk/scipy/fftpack/src/fftpack/sinti.f	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,13 +0,0 @@
-      SUBROUTINE SINTI (N,WSAVE)
-      DIMENSION       WSAVE(*)
-      DATA PI /3.14159265358979/
-      IF (N .LE. 1) RETURN
-      NS2 = N/2
-      NP1 = N+1
-      DT = PI/FLOAT(NP1)
-      DO 101 K=1,NS2
-         WSAVE(K) = 2.*SIN(K*DT)
-  101 CONTINUE
-      CALL RFFTI (NP1,WSAVE(NS2+1))
-      RETURN
-      END

Copied: trunk/scipy/fftpack/src/fftpack/sinti.f (from rev 4890, branches/remove_fft_backends/scipy/fftpack/src/fftpack/sinti.f)

Modified: trunk/scipy/fftpack/src/fftpack.h
===================================================================
--- trunk/scipy/fftpack/src/fftpack.h	2008-11-01 14:42:39 UTC (rev 4892)
+++ trunk/scipy/fftpack/src/fftpack.h	2008-11-01 14:49:49 UTC (rev 4893)
@@ -25,42 +25,6 @@
 extern int ispow2le2e30(int n);
 extern int ispow2le2e13(int n);
 
-#ifdef SCIPY_FFTWORK_H
-#define WITH_FFTWORK
-#include "fftwork/fast_header.h"
-#endif
-
-#ifdef SCIPY_DJBFFT_H
-#define WITH_DJBFFT
-#define complex8 complex_double
-#define COMPLEX8_H
-#include <fftfreq.h>
-#include <fftc8.h>
-#include <fftr8.h>
-#endif
-
-#ifdef SCIPY_MKL_H
-#define WITH_MKL
-#include <mkl_dfti.h>
-#endif
-
-#ifdef SCIPY_FFTW3_H
-#define WITH_FFTW3
-#include <fftw3.h>
-#endif
-
-#ifdef SCIPY_DFFTW_H
-#define WITH_FFTW
-#include <dfftw.h>
-#include <drfftw.h>
-#endif
-
-#ifdef SCIPY_FFTW_H
-#define WITH_FFTW
-#include <fftw.h>
-#include <rfftw.h>
-#endif
-
 #if defined(NO_APPEND_FORTRAN)
 #if defined(UPPERCASE_FORTRAN)
 #define F_FUNC(f,F) F
@@ -118,100 +82,4 @@
   nof_in_cache_##name = last_cache_id_##name = 0;\
 }
 
-#define	COPYSTD2DJB(SRC,DEST,N) { \
-  int n2 = (N)/2,k,j; \
-  *(DEST) = *(SRC); \
-  *(DEST+1) = *(SRC+n2); \
-  for (j=(N)/2-1,k=2;j>0;--j,k+=2) { \
-    *(DEST+k) = *(SRC+n2+j); \
-    *(DEST+k+1) = *(SRC+j); \
-  } \
-}
-
-#define	COPYINVDJB2STD(SRC,DEST,N) { \
-  int n2 = (N)/2,k,j; \
-  *(DEST) = *(SRC); \
-  *(DEST+n2) = *(SRC+1); \
-  for (j=(N)/2-1,k=2;j>0;--j,k+=2) { \
-    *(DEST+n2+j) = *(SRC+k); \
-    *(DEST+j) = *(SRC+k+1); \
-  } \
-}
-
-#define	COPYINVDJB2STD2(SRC,DEST,N) { \
-  int n2 = (N)/2,k,j; \
-  *(DEST) = *(SRC); \
-  *(DEST+(N)-1) = *(SRC+(N)-1); \
-  for (j=1,k=1;j<n2;++j,k+=2) { \
-    *(DEST+n2+j-1) = *(SRC+k); \
-    *(DEST+j) = *(SRC+k+1); \
-  } \
-}
-
-#define COPYDJB2STD(SRC,DEST,FRQ,N) { \
-  int n2 = (N)/2,k,j; \
-  *(DEST) = *(SRC); \
-  *(DEST+N-1) = *(SRC+1); \
-  for (k=2;k<N-1;k+=2) { \
-    j = FRQ[k]; \
-    if (j>n2) { \
-      j = 2*(N-j); \
-      *(DEST+j-1) = *(SRC+k); \
-      *(DEST+j) = -*(SRC+k+1); \
-    } else { \
-      j *= 2; \
-      *(DEST+j-1) = *(SRC+k); \
-      *(DEST+j) = *(SRC+k+1); \
-    } \
-  } \
-}
-#define COPYINVSTD2DJB(SRC,DEST,NORMALIZE,FRQ,N) { \
-  int n2 = (N)/2,k,j; \
-  if (NORMALIZE) { \
-    *(DEST) = *(SRC); \
-    *(DEST+1) = *(SRC+N-1); \
-  } else { \
-    *(DEST) = (*(SRC))*0.5; \
-    *(DEST+1) = (*(SRC+N-1))*0.5; \
-  } \
-  for (k=2;k<N-1;k+=2) { \
-    j = FRQ[k]; \
-    if (j>n2) { \
-      j = 2*(N-j); \
-      *(DEST+k) = *(SRC+j-1); \
-      *(DEST+k+1) = -*(SRC+j); \
-    } else { \
-      j *= 2; \
-      *(DEST+k) = *(SRC+j-1); \
-      *(DEST+k+1) = *(SRC+j); \
-    } \
-  } \
-}
-#define COPYRFFTW2STD(SRC,DEST,N) { \
-  int j,n2=(N)/2; \
-  *(DEST) = *(SRC); \
-  for (j=1;j<n2;++j) { \
-    *(DEST+2*j-1) = *(SRC+j); \
-    *(DEST+2*j) = *(SRC+(N)-j); \
-  } \
-  if (N>1) { \
-    *(DEST+2*n2-1) = *(SRC+n2); \
-    if ((N)%2) \
-      *(DEST+2*n2) = *(SRC+(N)-n2); \
-  } \
-}
-#define COPYINVRFFTW2STD(SRC,DEST,N) { \
-  int j,n2=(N)/2; \
-  *(DEST) = *(SRC); \
-  for (j=1;j<n2;++j) { \
-    *(DEST+j) = *(SRC+2*j-1); \
-    *(DEST+(N)-j) = *(SRC+2*j); \
-  } \
-  if (N>1) {\
-    *(DEST+n2) = *(SRC+2*n2-1); \
-    if ((N)%2) \
-      *(DEST+(N)-n2) = *(SRC+2*n2); \
-  } \
-}
-
 #endif

Modified: trunk/scipy/fftpack/src/zfft.c
===================================================================
--- trunk/scipy/fftpack/src/zfft.c	2008-11-01 14:42:39 UTC (rev 4892)
+++ trunk/scipy/fftpack/src/zfft.c	2008-11-01 14:49:49 UTC (rev 4893)
@@ -20,57 +20,5 @@
         zfft_##name(inout, n, direction, howmany, normalize);\
 }
 
-/* ************** Definition of backend specific functions ********* */
-
-/*
- * To add a backend :
- *  - create a file zfft_name.c, where you define a function zfft_name where
- *  name is the name of your backend. If you do not use the GEN_CACHE macro,
- *  you will need to define a function void destroy_zname_caches(void), 
- *  which can do nothing
- *  - in zfft.c, include the zfft_name.c file, and add the 3 following lines
- *  just after it:
- *  #ifndef WITH_DJBFFT
- *      GEN_PUBLIC_API(name)
- *  #endif
- */
-
-#ifdef WITH_FFTW3
-    #include "zfft_fftw3.c"
-    #ifndef WITH_DJBFFT
-        GEN_PUBLIC_API(fftw3)
-    #endif
-#elif defined WITH_FFTW
-    #include "zfft_fftw.c"
-    #ifndef WITH_DJBFFT
-        GEN_PUBLIC_API(fftw)
-    #endif
-#elif defined WITH_MKL
-    #include "zfft_mkl.c"
-    #ifndef WITH_DJBFFT
-        GEN_PUBLIC_API(mkl)
-    #endif
-#else /* Use fftpack by default */
-    #include "zfft_fftpack.c"
-    #ifndef WITH_DJBFFT
-        GEN_PUBLIC_API(fftpack)
-    #endif 
-#endif
-
-/* 
- * djbfft must be used at the end, because it needs another backend (defined
- * above) for non 2^n * size 
- */
-#ifdef WITH_DJBFFT
-    #include "zfft_djbfft.c"
-    void destroy_zfft_cache(void)
-    {
-        destroy_zdjbfft_caches();
-        zfft_def_destroy_cache();
-    }
-    void zfft(complex_double *inout, int n, 
-            int direction, int howmany, int normalize)
-    {
-        zfft_djbfft(inout, n, direction, howmany, normalize);
-    }
-#endif
+#include "zfft_fftpack.c"
+GEN_PUBLIC_API(fftpack)

Deleted: trunk/scipy/fftpack/src/zfft_djbfft.c
===================================================================
--- trunk/scipy/fftpack/src/zfft_djbfft.c	2008-11-01 14:42:39 UTC (rev 4892)
+++ trunk/scipy/fftpack/src/zfft_djbfft.c	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,151 +0,0 @@
-/*
-* DJBFFT only implements size 2^N !
-*
-* zfft_def and zfft_def_destroy_cache are the functions
-* used for size different than 2^N
-*/
-#ifdef WITH_FFTWORK
-#define zfft_def zfft_fftwork
-#define zfft_def_destroy_cache destroy_zfftwork_cache
-#elif defined WITH_FFTW3
-#define zfft_def zfft_fftw3
-#define zfft_def_destroy_cache destroy_zfftw3_caches
-#elif defined WITH_FFTW
-#define zfft_def zfft_fftw
-#define zfft_def_destroy_cache destroy_zfftw_caches
-#else
-#define zfft_def zfft_fftpack
-#define zfft_def_destroy_cache destroy_zfftpack_caches
-#endif
-
-GEN_CACHE(zdjbfft,(int n)
-	  ,unsigned int* f;
-	   double* ptr;
-	  ,caches_zdjbfft[i].n==n
-	  ,caches_zdjbfft[id].f = (unsigned int*)malloc(sizeof(unsigned int)*(n));
-	   caches_zdjbfft[id].ptr = (double*)malloc(sizeof(double)*(2*n));
-	   fftfreq_ctable(caches_zdjbfft[id].f,n);
-           for(i=0;i<n;++i) 
-	     caches_zdjbfft[id].f[i] = (n-caches_zdjbfft[id].f[i])%n;
-	  ,free(caches_zdjbfft[id].f);
-	   free(caches_zdjbfft[id].ptr);
-	  ,10)
-
-/**************** ZFFT function **********************/
-static void zfft_djbfft(complex_double * inout,
-		 int n, int direction, int howmany, int normalize)
-{
-	int i;
-	complex_double *ptr = inout;
-	int j;
-	complex_double *ptrc = NULL;
-	unsigned int *f = NULL;
-
-	switch (n) {
-	case 2:;
-	case 4:;
-	case 8:;
-	case 16:;
-	case 32:;
-	case 64:;
-	case 128:;
-	case 256:;
-	case 512:;
-	case 1024:;
-	case 2048:;
-	case 4096:;
-	case 8192:
-		i = get_cache_id_zdjbfft(n);
-		f = caches_zdjbfft[i].f;
-		ptrc = (complex_double *) caches_zdjbfft[i].ptr;
-	}
-	if (f == 0) {
-                zfft_def(inout, n, direction, howmany, normalize);
-	}
-
-	switch (direction) {
-	case 1:
-		for (i = 0; i < howmany; ++i, ptr += n) {
-			if (f != NULL) {
-				memcpy(ptrc, ptr, 2 * n * sizeof(double));
-				switch (n) {
-#define TMPCASE(N) case N:  fftc8_##N(ptrc); break
-					TMPCASE(2);
-					TMPCASE(4);
-					TMPCASE(8);
-					TMPCASE(16);
-					TMPCASE(32);
-					TMPCASE(64);
-					TMPCASE(128);
-					TMPCASE(256);
-					TMPCASE(512);
-					TMPCASE(1024);
-					TMPCASE(2048);
-					TMPCASE(4096);
-					TMPCASE(8192);
-#undef TMPCASE
-				}
-				for (j = 0; j < n; ++j) {
-					*(ptr + f[j]) = *(ptrc + j);
-				}
-                        }
-
-		}
-		break;
-
-	case -1:
-		for (i = 0; i < howmany; ++i, ptr += n) {
-			if (f != NULL) {
-				for (j = 0; j < n; ++j) {
-					*(ptrc + j) = *(ptr + f[j]);
-				}
-				switch (n) {
-#define TMPCASE(N) case N:  fftc8_un##N(ptrc); break
-					TMPCASE(2);
-					TMPCASE(4);
-					TMPCASE(8);
-					TMPCASE(16);
-					TMPCASE(32);
-					TMPCASE(64);
-					TMPCASE(128);
-					TMPCASE(256);
-					TMPCASE(512);
-					TMPCASE(1024);
-					TMPCASE(2048);
-					TMPCASE(4096);
-					TMPCASE(8192);
-#undef TMPCASE
-				}
-				memcpy(ptr, ptrc, 2 * n * sizeof(double));
-			}
-		}
-		break;
-	default:
-		fprintf(stderr, "zfft: invalid direction=%d\n", direction);
-	}
-
-	if (normalize) {
-		ptr = inout;
-		if (f != NULL) {
-			for (i = 0; i < howmany; ++i, ptr += n) {
-				switch (n) {
-#define TMPCASE(N) case N:  fftc8_scale##N(ptr); break
-					TMPCASE(2);
-					TMPCASE(4);
-					TMPCASE(8);
-					TMPCASE(16);
-					TMPCASE(32);
-					TMPCASE(64);
-					TMPCASE(128);
-					TMPCASE(256);
-					TMPCASE(512);
-					TMPCASE(1024);
-					TMPCASE(2048);
-					TMPCASE(4096);
-					TMPCASE(8192);
-#undef TMPCASE
-				}
-			}
-		}
-	}
-}

Modified: trunk/scipy/fftpack/src/zfft_fftpack.c
===================================================================
--- trunk/scipy/fftpack/src/zfft_fftpack.c	2008-11-01 14:42:39 UTC (rev 4892)
+++ trunk/scipy/fftpack/src/zfft_fftpack.c	2008-11-01 14:49:49 UTC (rev 4893)
@@ -15,9 +15,6 @@
 	int i;
 	complex_double *ptr = inout;
 	double *wsave = NULL;
-	int j;
-	complex_double *ptrc = NULL;
-	unsigned int *f = NULL;
 
 	wsave = caches_zfftpack[get_cache_id_zfftpack(n)].wsave;
 

Deleted: trunk/scipy/fftpack/src/zfft_fftw.c
===================================================================
--- trunk/scipy/fftpack/src/zfft_fftw.c	2008-11-01 14:42:39 UTC (rev 4892)
+++ trunk/scipy/fftpack/src/zfft_fftw.c	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,43 +0,0 @@
-GEN_CACHE(zfftw,(int n,int d)
-	  ,int direction;
-	   fftw_plan plan;
-	  ,((caches_zfftw[i].n==n) && 
-	    (caches_zfftw[i].direction==d))
-	  ,caches_zfftw[id].direction = d;
-	   caches_zfftw[id].plan = fftw_create_plan(n,
-		(d>0?FFTW_FORWARD:FFTW_BACKWARD),
-		FFTW_IN_PLACE|FFTW_ESTIMATE);
-	  ,fftw_destroy_plan(caches_zfftw[id].plan);
-	  ,10)
-
-extern void zfft_fftw(complex_double * inout, int n,
-		      int dir, int howmany, int normalize)
-{
-	int i;
-	complex_double *ptr = inout;
-	fftw_plan plan = NULL;
-	plan = caches_zfftw[get_cache_id_zfftw(n, dir)].plan;
-
-	switch (dir) {
-	case 1:
-		for (i = 0; i < howmany; ++i, ptr += n) {
-			fftw_one(plan, (fftw_complex *) ptr, NULL);
-		}
-		break;
-	case -1:
-		for (i = 0; i < howmany; ++i, ptr += n) {
-			fftw_one(plan, (fftw_complex *) ptr, NULL);
-		}
-		break;
-	default:
-		fprintf(stderr, "zfft: invalid dir=%d\n", dir);
-	}
-
-	if (normalize) {
-		ptr = inout;
-		for (i = n * howmany - 1; i >= 0; --i) {
-			*((double *) (ptr)) /= n;
-			*((double *) (ptr++) + 1) /= n;
-		}
-	}
-}

Deleted: trunk/scipy/fftpack/src/zfft_fftw3.c
===================================================================
--- trunk/scipy/fftpack/src/zfft_fftw3.c	2008-11-01 14:42:39 UTC (rev 4892)
+++ trunk/scipy/fftpack/src/zfft_fftw3.c	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,121 +0,0 @@
-
-/* This cache uses FFTW_MEASURE for the plans, and do not copy the data. */
-GEN_CACHE(zfftw3,(int n,int d)
-	,int direction;
-	fftw_plan plan;
-    fftw_complex *wrk;
-	,((caches_zfftw3[i].n==n) &&
-	    (caches_zfftw3[i].direction==d))
-	,caches_zfftw3[id].direction = d;
-        /* This working buffer is only used to compute the plan: we need it
-           since FFTW_MEASURE destroys its input when computing a plan */
-	    caches_zfftw3[id].wrk = fftw_malloc(n * sizeof(double) * 2); 
-	    caches_zfftw3[id].plan = fftw_plan_dft_1d(n, 
-	        caches_zfftw3[id].wrk,
-	        caches_zfftw3[id].wrk,
-		(d>0?FFTW_FORWARD:FFTW_BACKWARD),
-		FFTW_ESTIMATE | FFTW_UNALIGNED);
-	,
-    fftw_destroy_plan(caches_zfftw3[id].plan);
-	fftw_free(caches_zfftw3[id].wrk);
-	,10)
-
-static void zfft_fftw3(complex_double * inout, int n, int dir, int
-howmany, int normalize)
-{
-	fftw_complex    *ptr = (fftw_complex*)inout;
-    fftw_complex    *ptrm;
-	fftw_plan       plan = NULL;
-    double          factor = 1./n;
-
-	int i;
-
-	plan = caches_zfftw3[get_cache_id_zfftw3(n, dir)].plan;
-
-	switch (dir) {
-	case 1:
-		for (i = 0; i < howmany; ++i, ptr += n) {
-			fftw_execute_dft(plan, ptr, ptr);
-		}
-		break;
-
-	case -1:
-		for (i = 0; i < howmany; ++i, ptr += n) {
-			fftw_execute_dft(plan, ptr, ptr);
-		}
-		break;
-
-	default:
-		fprintf(stderr, "zfft: invalid dir=%d\n", dir);
-	}
-
-	if (normalize) {
-        ptr =(fftw_complex*)inout;
-		for (i = n * howmany - 1; i >= 0; --i) {
-			*((double *) (ptr)) *= factor;
-			*((double *) (ptr++) + 1) *= factor;
-		}
-	}
-}
-#if 0
-GEN_CACHE(zfftw3,(int n,int d)
-	,int direction;
-	fftw_plan plan;
-	fftw_complex* ptr;
-	,((caches_zfftw3[i].n==n) &&
-	    (caches_zfftw3[i].direction==d))
-	,caches_zfftw3[id].direction = d;
-	caches_zfftw3[id].ptr = fftw_malloc(sizeof(fftw_complex)*(n));
-	    caches_zfftw3[id].plan = fftw_plan_dft_1d(n, caches_zfftw3[id].ptr,
-	caches_zfftw3[id].ptr,
-		(d>0?FFTW_FORWARD:FFTW_BACKWARD),
-		FFTW_ESTIMATE);
-	,fftw_destroy_plan(caches_zfftw3[id].plan);
-	fftw_free(caches_zfftw3[id].ptr);
-	,10)
-
-static void zfft_fftw3(complex_double * inout, int n, int dir, int
-howmany, int normalize)
-{
-	complex_double *ptr = inout;
-	fftw_complex *ptrm = NULL;
-	fftw_plan plan = NULL;
-
-	int i;
-
-	plan = caches_zfftw3[get_cache_id_zfftw3(n, dir)].plan;
-
-	switch (dir) {
-	case 1:
-		for (i = 0; i < howmany; ++i, ptr += n) {
-			ptrm =
-			    caches_zfftw3[get_cache_id_zfftw3(n, dir)].ptr;
-			memcpy(ptrm, ptr, sizeof(double) * 2 * n);
-			fftw_execute(plan);
-			memcpy(ptr, ptrm, sizeof(double) * 2 * n);
-		}
-		break;
-
-	case -1:
-		for (i = 0; i < howmany; ++i, ptr += n) {
-			ptrm =
-			    caches_zfftw3[get_cache_id_zfftw3(n, dir)].ptr;
-			memcpy(ptrm, ptr, sizeof(double) * 2 * n);
-			fftw_execute(plan);
-			memcpy(ptr, ptrm, sizeof(double) * 2 * n);
-		}
-		break;
-
-	default:
-		fprintf(stderr, "zfft: invalid dir=%d\n", dir);
-	}
-
-	if (normalize) {
-		ptr = inout;
-		for (i = n * howmany - 1; i >= 0; --i) {
-			*((double *) (ptr)) /= n;
-			*((double *) (ptr++) + 1) /= n;
-		}
-	}
-}
-#endif

Deleted: trunk/scipy/fftpack/src/zfft_mkl.c
===================================================================
--- trunk/scipy/fftpack/src/zfft_mkl.c	2008-11-01 14:42:39 UTC (rev 4892)
+++ trunk/scipy/fftpack/src/zfft_mkl.c	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,42 +0,0 @@
-GEN_CACHE(zmkl,(int n)
-	  ,DFTI_DESCRIPTOR_HANDLE desc_handle;
-	  ,(caches_zmkl[i].n==n)
-      ,DftiCreateDescriptor(&caches_zmkl[id].desc_handle, DFTI_DOUBLE, DFTI_COMPLEX, 1, (long)n); 
-       DftiCommitDescriptor(caches_zmkl[id].desc_handle);
-	  ,DftiFreeDescriptor(&caches_zmkl[id].desc_handle);
-	  ,10)
-
-static void zfft_mkl(complex_double * inout,
-		 int n, int direction, int howmany, int normalize)
-{
-	int i;
-	complex_double *ptr = inout;
-	DFTI_DESCRIPTOR_HANDLE desc_handle;
-	desc_handle = caches_zmkl[get_cache_id_zmkl(n)].desc_handle;
-
-	switch (direction) {
-
-	case 1:
-		for (i = 0; i < howmany; ++i, ptr += n) {
-			DftiComputeForward(desc_handle, (double *) ptr);
-		}
-		break;
-
-	case -1:
-		for (i = 0; i < howmany; ++i, ptr += n) {
-			DftiComputeBackward(desc_handle, (double *) ptr);
-		}
-		break;
-
-	default:
-		fprintf(stderr, "zfft: invalid direction=%d\n", direction);
-	}
-
-	if (normalize) {
-		ptr = inout;
-		for (i = n * howmany - 1; i >= 0; --i) {
-			*((double *) (ptr)) /= n;
-			*((double *) (ptr++) + 1) /= n;
-		}
-	}
-}

Modified: trunk/scipy/fftpack/src/zfftnd.c
===================================================================
--- trunk/scipy/fftpack/src/zfftnd.c	2008-11-01 14:42:39 UTC (rev 4892)
+++ trunk/scipy/fftpack/src/zfftnd.c	2008-11-01 14:49:49 UTC (rev 4893)
@@ -19,27 +19,5 @@
         zfftnd_##name(inout, rank, dims, direction, howmany, normalize);\
 }
 
-#if defined(WITH_FFTW) || defined(WITH_MKL)
-static
-int equal_dims(int rank,int *dims1,int *dims2) {
-  int i;
-  for (i=0;i<rank;++i)
-    if (dims1[i]!=dims2[i])
-      return 0;
-  return 1;
-}
-#endif
-
-#ifdef WITH_FFTW3
-    #include "zfftnd_fftw3.c"
-    GEN_PUBLIC_API(fftw3)
-#elif defined WITH_FFTW
-    #include "zfftnd_fftw.c"
-    GEN_PUBLIC_API(fftw)
-#elif defined WITH_MKL
-    #include "zfftnd_mkl.c"
-    GEN_PUBLIC_API(mkl)
-#else /* Use fftpack by default */
-    #include "zfftnd_fftpack.c"
-    GEN_PUBLIC_API(fftpack)
-#endif
+#include "zfftnd_fftpack.c"
+GEN_PUBLIC_API(fftpack)

Deleted: trunk/scipy/fftpack/src/zfftnd_fftw.c
===================================================================
--- trunk/scipy/fftpack/src/zfftnd_fftw.c	2008-11-01 14:42:39 UTC (rev 4892)
+++ trunk/scipy/fftpack/src/zfftnd_fftw.c	2008-11-01 14:49:49 UTC (rev 4893)
@@ -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;
-	}
-    }
-}

Deleted: trunk/scipy/fftpack/src/zfftnd_fftw3.c
===================================================================
--- trunk/scipy/fftpack/src/zfftnd_fftw3.c	2008-11-01 14:42:39 UTC (rev 4892)
+++ trunk/scipy/fftpack/src/zfftnd_fftw3.c	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,40 +0,0 @@
-/*
- * fftw3 backend for multi dimensional fft
- *
- * Original code by Pearu Peaterson
- *
- * Last Change: Wed Aug 08 02:00 PM 2007 J
- */
-
-/* stub because fftw3 has no cache mechanism (yet) */
-static void destroy_zfftnd_fftw3_caches(void) {}
-
-extern void zfftnd_fftw3(complex_double * inout, int rank,
-			   int *dims, int direction, int howmany,
-			   int normalize)
-{
-    int i, sz;
-    complex_double *ptr = inout;
-
-    fftw_plan plan = NULL;
-    sz = 1;
-    for (i = 0; i < rank; ++i) {
-        sz *= dims[i];
-    }
-    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);
-
-    if (normalize) {
-        ptr = inout;
-        for (i = sz * howmany - 1; i >= 0; --i) {
-            *((double *) (ptr)) /= sz;
-            *((double *) (ptr++) + 1) /= sz;
-        }
-    }
-}

Deleted: trunk/scipy/fftpack/src/zfftnd_mkl.c
===================================================================
--- trunk/scipy/fftpack/src/zfftnd_mkl.c	2008-11-01 14:42:39 UTC (rev 4892)
+++ trunk/scipy/fftpack/src/zfftnd_mkl.c	2008-11-01 14:49:49 UTC (rev 4893)
@@ -1,66 +0,0 @@
-/*
- * MKL backend for multi dimensional fft
- *
- * Original code by David M. Cooke
- *
- * Last Change: Wed Aug 08 03:00 PM 2007 J
- */
-
-static 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(zfftnd_mkl, (int n, int *dims)
-	  , DFTI_DESCRIPTOR_HANDLE desc_handle;
-	  int *dims;
-	  long *ndims;, ((caches_zfftnd_mkl[i].n == n) &&
-			 (equal_dims(n, caches_zfftnd_mkl[i].dims, dims)))
-	  , caches_zfftnd_mkl[id].ndims = convert_dims(n, dims);
-	  caches_zfftnd_mkl[id].n = n;
-	  caches_zfftnd_mkl[id].dims = (int *) malloc(sizeof(int) * n);
-	  memcpy(caches_zfftnd_mkl[id].dims, dims, sizeof(int) * n);
-	  DftiCreateDescriptor(&caches_zfftnd_mkl[id].desc_handle,
-			       DFTI_DOUBLE, DFTI_COMPLEX, (long) n,
-			       caches_zfftnd_mkl[id].ndims);
-	  DftiCommitDescriptor(caches_zfftnd_mkl[id].desc_handle);,
-	  DftiFreeDescriptor(&caches_zfftnd_mkl[id].desc_handle);
-	  free(caches_zfftnd_mkl[id].dims);
-	  free(caches_zfftnd_mkl[id].ndims);, 10)
-
-extern void zfftnd_mkl(complex_double * inout, int rank,
-		       int *dims, int direction, int howmany,
-		       int normalize)
-{
-    int i, sz;
-    complex_double *ptr = inout;
-
-    DFTI_DESCRIPTOR_HANDLE desc_handle;
-    sz = 1;
-    for (i = 0; i < rank; ++i) {
-        sz *= dims[i];
-    }
-
-    desc_handle =
-	caches_zfftnd_mkl[get_cache_id_zfftnd_mkl(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;
-        }
-    }
-}



More information about the Scipy-svn mailing list