# `scipy.fftpack` interface

This module implements those functions that replace aspects of the `scipy.fftpack` module. This module provides the entire documented namespace of `scipy.fftpack`, but those functions that are not included here are imported directly from `scipy.fftpack`.

The exceptions raised by each of these functions are mostly as per their equivalents in `scipy.fftpack`, though there are some corner cases in which this may not be true.

Some corner (mis)usages of `scipy.fftpack` may not transfer neatly. For example, using `scipy.fftpack.fft2()` with a non 1D array and a 2D shape argument will return without exception whereas `pyfftw.interfaces.scipy_fftpack.fft2()` will raise a ValueError.

pyfftw.interfaces.scipy_fftpack.dct(x, type=2, n=None, axis=- 1, norm=None, overwrite_x=False, planner_effort=None, threads=None, auto_align_input=True, auto_contiguous=True)

  Perform an 1D discrete cosine transform.

  The first three arguments are as per `scipy.fftpack.dct()`; the rest of the arguments are documented in the additional arguments docs.

  Warning: scipy.fftpack is considered legacy, new code should use scipy.fft instead.

pyfftw.interfaces.scipy_fftpack.dctn(x, type=2, shape=None, axes=None, norm=None, overwrite_x=False, planner_effort=None, threads=None, auto_align_input=True, auto_contiguous=True)

  Perform an nD discrete cosine transform.

  The first six arguments are as per `scipy.fftpack.dctn()`; the rest of the arguments are documented in the additional arguments docs.

  Warning: scipy.fftpack is considered legacy, new code should use scipy.fft instead.

pyfftw.interfaces.scipy_fftpack.dst(x, type=2, n=None, axis=- 1, norm=None, overwrite_x=False, planner_effort=None, threads=None, auto_align_input=True, auto_contiguous=True)

  Perform an 1D discrete sine transform.

  The first three arguments are as per `scipy.fftpack.dst()`; the rest of the arguments are documented in the additional arguments docs.

  Warning: scipy.fftpack is considered legacy, new code should use scipy.fft instead.

pyfftw.interfaces.scipy_fftpack.dstn(x, type=2, shape=None, axes=None, norm=None, overwrite_x=False, planner_effort=None, threads=None, auto_align_input=True, auto_contiguous=True)

  Perform an nD discrete sine transform.

  The first six arguments are as per `scipy.fftpack.dstn()`; the rest of the arguments are documented in the additional arguments docs.

  Warning: scipy.fftpack is considered legacy, new code should use scipy.fft instead.

pyfftw.interfaces.scipy_fftpack.fft(x, n=None, axis=- 1, overwrite_x=False, planner_effort=None, threads=None, auto_align_input=True, auto_contiguous=True)

  Perform an 1D FFT.

  The first three arguments are as per `scipy.fftpack.fft()`; the rest of the arguments are documented in the additional argument docs.

  Warning: scipy.fftpack is considered legacy, new code should use scipy.fft instead.

pyfftw.interfaces.scipy_fftpack.fft2(x, shape=None, axes=(- 2, - 1), overwrite_x=False, planner_effort=None, threads=None, auto_align_input=True, auto_contiguous=True)

  Perform a 2D FFT.

  The first three arguments are as per `scipy.fftpack.fft2()`; the rest of the arguments are documented in the additional argument docs.

  Warning: scipy.fftpack is considered legacy, new code should use scipy.fft instead.

pyfftw.interfaces.scipy_fftpack.fftn(x, shape=None, axes=None, overwrite_x=False, planner_effort=None, threads=None, auto_align_input=True, auto_contiguous=True)

  Perform an nD FFT.

  The first three arguments are as per `scipy.fftpack.fftn()`; the rest of the arguments are documented in the additional argument docs.

  Warning: scipy.fftpack is considered legacy, new code should use scipy.fft instead.

pyfftw.interfaces.scipy_fftpack.idct(x, type=2, n=None, axis=- 1, norm=None, overwrite_x=False, planner_effort=None, threads=None, auto_align_input=True, auto_contiguous=True)

  Perform an 1D inverse discrete cosine transform.

  The first three arguments are as per `scipy.fftpack.idct()`; the rest of the arguments are documented in the additional arguments docs.

  Warning: scipy.fftpack is considered legacy, new code should use scipy.fft instead.

pyfftw.interfaces.scipy_fftpack.idctn(x, type=2, shape=None, axes=None, norm=None, overwrite_x=False, planner_effort=None, threads=None, auto_align_input=True, auto_contiguous=True)

  Perform an nD inverse discrete cosine transform.

  The first six arguments are as per `scipy.fftpack.idctn()`; the rest of the arguments are documented in the additional arguments docs.

  Warning: scipy.fftpack is considered legacy, new code should use scipy.fft instead.

pyfftw.interfaces.scipy_fftpack.idst(x, type=2, n=None, axis=- 1, norm=None, overwrite_x=False, planner_effort=None, threads=None, auto_align_input=True, auto_contiguous=True)

  Perform an 1D inverse discrete sine transform.

  The first three arguments are as per `scipy.fftpack.idst()`; the rest of the arguments are documented in the additional arguments docs.

  Warning: scipy.fftpack is considered legacy, new code should use scipy.fft instead.

pyfftw.interfaces.scipy_fftpack.idstn(x, type=2, shape=None, axes=None, norm=None, overwrite_x=False, planner_effort=None, threads=None, auto_align_input=True, auto_contiguous=True)

  Perform an nD inverse discrete sine transform.

  The first six arguments are as per `scipy.fftpack.idstn()`; the rest of the arguments are documented in the additional arguments docs.

  Warning: scipy.fftpack is considered legacy, new code should use scipy.fft instead.

pyfftw.interfaces.scipy_fftpack.ifft(x, n=None, axis=- 1, overwrite_x=False, planner_effort=None, threads=None, auto_align_input=True, auto_contiguous=True)

  Perform an 1D inverse FFT.

  The first three arguments are as per `scipy.fftpack.ifft()`; the rest of the arguments are documented in the additional argument docs.

  Warning: scipy.fftpack is considered legacy, new code should use scipy.fft instead.

pyfftw.interfaces.scipy_fftpack.ifft2(x, shape=None, axes=(- 2, - 1), overwrite_x=False, planner_effort=None, threads=None, auto_align_input=True, auto_contiguous=True)

  Perform a 2D inverse FFT.

  The first three arguments are as per `scipy.fftpack.ifft2()`; the rest of the arguments are documented in the additional argument docs.

  Warning: scipy.fftpack is considered legacy, new code should use scipy.fft instead.

pyfftw.interfaces.scipy_fftpack.ifftn(x, shape=None, axes=None, overwrite_x=False, planner_effort=None, threads=None, auto_align_input=True, auto_contiguous=True)

  Perform an nD inverse FFT.

  The first three arguments are as per `scipy.fftpack.ifftn()`; the rest of the arguments are documented in the additional argument docs.

  Warning: scipy.fftpack is considered legacy, new code should use scipy.fft instead.

pyfftw.interfaces.scipy_fftpack.irfft(x, n=None, axis=- 1, overwrite_x=False, planner_effort=None, threads=None, auto_align_input=True, auto_contiguous=True)

  Perform an 1D inverse real FFT.

  The first three arguments are as per `scipy.fftpack.irfft()`; the rest of the arguments are documented in the additional argument docs.

  Warning: scipy.fftpack is considered legacy, new code should use scipy.fft instead.

pyfftw.interfaces.scipy_fftpack.next_fast_len(target)

  Find the next fast transform length for FFTW.

  FFTW has efficient functions for transforms of length 2**a * 3**b * 5**c * 7**d * 11**e * 13**f, where e + f is either 0 or 1.

  Parameters

    target (int) – Length to start searching from. Must be a positive integer.

  Returns

    out – The first fast length greater than or equal to target.

  Return type

    int

  Examples

  On a particular machine, an FFT of prime length takes 2.1 ms:

      >>> from pyfftw.interfaces import scipy_fftpack
      >>> min_len = 10007  # prime length is worst case for speed
      >>> a = numpy.random.randn(min_len)
      >>> b = scipy_fftpack.fft(a)

  Zero-padding to the next fast length reduces computation time to 406 us, a speedup of ~5 times:

      >>> next_fast_len(min_len)
      10080
      >>> b = scipy_fftpack.fft(a, 10080)

  Rounding up to the next power of 2 is not optimal, taking 598 us to compute, 1.5 times as long as the size selected by next_fast_len.

      >>> b = fftpack.fft(a, 16384)

  Similar speedups will occur for pre-planned FFTs as generated via pyfftw.builders.

pyfftw.interfaces.scipy_fftpack.rfft(x, n=None, axis=- 1, overwrite_x=False, planner_effort=None, threads=None, auto_align_input=True, auto_contiguous=True)

  Perform an 1D real FFT.

  The first three arguments are as per `scipy.fftpack.rfft()`; the rest of the arguments are documented in the additional argument docs.

  Warning: scipy.fftpack is considered legacy, new code should use scipy.fft instead.