[Scipy-svn] r4340 - branches/refactor_fft/scipy/fftpack/backends/fftw3

scipy-svn at scipy.org scipy-svn at scipy.org
Thu May 15 08:36:58 EDT 2008


Author: cdavid
Date: 2008-05-15 07:36:52 -0500 (Thu, 15 May 2008)
New Revision: 4340

Added:
   branches/refactor_fft/scipy/fftpack/backends/fftw3/fftw3.pyf
Log:
Add f2py interface for fftw3 backend.

Copied: branches/refactor_fft/scipy/fftpack/backends/fftw3/fftw3.pyf (from rev 4338, branches/refactor_fft/scipy/fftpack/fftpack.pyf)
===================================================================
--- branches/refactor_fft/scipy/fftpack/fftpack.pyf	2008-05-15 12:31:58 UTC (rev 4338)
+++ branches/refactor_fft/scipy/fftpack/backends/fftw3/fftw3.pyf	2008-05-15 12:36:52 UTC (rev 4340)
@@ -0,0 +1,77 @@
+!%f90 -*- f90 -*-
+! Author: Pearu Peterson, August 2002
+
+python module _fftw3
+    interface
+
+       subroutine zfft_fftw3(x,n,direction,howmany,normalize)
+         ! y = fft(x[,n,direction,normalize,overwrite_x])
+         intent(c) zfft_fftw3
+         complex*16 intent(c,in,out,copy,out=y) :: x(*)
+         integer optional,depend(x),intent(c,in) :: n=size(x)
+         check(n>0) n
+         integer depend(x,n),intent(c,hide) :: howmany = size(x)/n
+         check(n*howmany==size(x)) howmany
+         integer optional,intent(c,in) :: direction = 1
+         integer optional,intent(c,in),depend(direction) &
+              :: normalize = (direction<0)
+       end subroutine zfft_fftw3
+
+       subroutine drfft_fftw3(x,n,direction,howmany,normalize)
+         ! y = drfft(x[,n,direction,normalize,overwrite_x])
+         intent(c) drfft_fftw3
+         real*8 intent(c,in,out,copy,out=y) :: x(*)
+         integer optional,depend(x),intent(c,in) :: n=size(x)
+         check(n>0&&n<=size(x)) n
+         integer depend(x,n),intent(c,hide) :: howmany = size(x)/n
+         check(n*howmany==size(x)) howmany
+         integer optional,intent(c,in) :: direction = 1
+         integer optional,intent(c,in),depend(direction) &
+              :: normalize = (direction<0)
+       end subroutine drfft_fftw3
+
+       subroutine zrfft_fftw3(x,n,direction,howmany,normalize)
+         ! y = zrfft(x[,n,direction,normalize,overwrite_x])
+         intent(c) zrfft_fftw3
+         complex*16 intent(c,in,out,overwrite,out=y) :: x(*)
+         integer optional,depend(x),intent(c,in) :: n=size(x)
+         check(n>0&&n<=size(x)) n
+         integer depend(x,n),intent(c,hide) :: howmany = size(x)/n
+         check(n*howmany==size(x)) howmany
+         integer optional,intent(c,in) :: direction = 1
+         integer optional,intent(c,in),depend(direction) &
+              :: normalize = (direction<0)
+       end subroutine zrfft_fftw3
+
+       subroutine zfftnd_fftw3(x,r,s,direction,howmany,normalize,j)
+         ! y = zfftnd(x[,s,direction,normalize,overwrite_x])
+         intent(c) zfftnd_fftw3
+         complex*16 intent(c,in,out,copy,out=y) :: x(*)
+         integer intent(c,hide),depend(x) :: r=old_rank(x)
+         integer intent(c,hide) :: j=0
+         integer optional,depend(r),dimension(r),intent(c,in) &
+              :: s=old_shape(x,j++)
+         check(r>=len(s)) s
+         integer intent(c,hide) :: howmany = 1
+         integer optional,intent(c,in) :: direction = 1
+         integer optional,intent(c,in),depend(direction) :: &
+              normalize = (direction<0)
+         callprotoargument complex_double*,int,int*,int,int,int
+         callstatement {&
+              int i,sz=1,xsz=size(x); &
+              for (i=0;i<r;++i) sz *= s[i]; &
+              howmany = xsz/sz; &
+              if (sz*howmany==xsz) &
+                (*f2py_func)(x,r,s,direction,howmany,normalize); &
+              else {&
+                f2py_success = 0; &
+                PyErr_SetString(_fftw3_error, &
+                  "inconsistency in x.shape and s argument"); &
+                } &
+              }
+       end subroutine zfftnd_fftw3
+
+    end interface 
+end python module _fftw3
+
+! See http://cens.ioc.ee/projects/f2py2e/




More information about the Scipy-svn mailing list