}87 & d Z g dZddlZddlmZmZmZmZmZm Z ddl mZ ddl mZ ddlmZ ej ej d Zd Zd Zd ZdddddZd Zd'dZ ee d(d Z ee d(d Z ee d(d Z ee d(d Z ee d(d Z ee d(d Zd)dZddedfdZd'dZ ee d'd Z! ee d'd Z" ee d*d! Z# ee d*d" Z$ ee d'd# Z% ee d*d$ Z& ee d'd% Z' ee d*d& Z(dS )+a} Discrete Fourier Transforms Routines in this module: fft(a, n=None, axis=-1, norm="backward") ifft(a, n=None, axis=-1, norm="backward") rfft(a, n=None, axis=-1, norm="backward") irfft(a, n=None, axis=-1, norm="backward") hfft(a, n=None, axis=-1, norm="backward") ihfft(a, n=None, axis=-1, norm="backward") fftn(a, s=None, axes=None, norm="backward") ifftn(a, s=None, axes=None, norm="backward") rfftn(a, s=None, axes=None, norm="backward") irfftn(a, s=None, axes=None, norm="backward") fft2(a, s=None, axes=(-2,-1), norm="backward") ifft2(a, s=None, axes=(-2, -1), norm="backward") rfft2(a, s=None, axes=(-2,-1), norm="backward") irfft2(a, s=None, axes=(-2, -1), norm="backward") i = inverse transform r = transform of purely real data h = Hermite transform n = n-dimensional transform 2 = 2-dimensional transform (Note: 2D routines are just nD routines with different default behavior.) )fftifftrfftirffthfftihfftrfftnirfftnrfft2irfft2fft2ifft2fftnifftn N)asarrayzerosswapaxes conjugatetakesqrt )_pocketfft_internal)normalize_axis_index) overridesz numpy.fft)modulec t || j }| | j | }d|z }| j | |k rt | j }t d gt | z }|| |k r)t d| ||<