3
���hm� � @ s� d Z ddddddddd d
ddd
dgZddlZddlmZmZmZmZmZm Z ddl
mZ ddl
mZ ddlmZ ejejdd�Zdd� Zdd� Zd3dd�Zee�d5dd��Zee�d7dd��Zee�d9d d��Zee�d;d!d��Zee�d=d"d��Zee�d?d#d��Zd@d$d%�Zddedfd&d'�ZdAd(d)�Zee�dBd*d
��Zee�dCd+d��Zee�dGd-d��Z ee�dKd.d��Z!ee�dLd/d��Z"ee�dPd0d ��Z#ee�dQd1d��Z$ee�dUd2d
��Z%dS )Va�
Discrete Fourier Transforms
Routines in this module:
fft(a, n=None, axis=-1)
ifft(a, n=None, axis=-1)
rfft(a, n=None, axis=-1)
irfft(a, n=None, axis=-1)
hfft(a, n=None, axis=-1)
ihfft(a, n=None, axis=-1)
fftn(a, s=None, axes=None)
ifftn(a, s=None, axes=None)
rfftn(a, s=None, axes=None)
irfftn(a, s=None, axes=None)
fft2(a, s=None, axes=(-2,-1))
ifft2(a, s=None, axes=(-2, -1))
rfft2(a, s=None, axes=(-2,-1))
irfft2(a, s=None, axes=(-2, -1))
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.)
�fft�ifft�rfft�irfft�hfft�ihfft�rfftn�irfftn�rfft2�irfft2�fft2�ifft2�fftn�ifftn� N)�asarray�zeros�swapaxes� conjugate�take�sqrt� )�_pocketfft_internal)�normalize_axis_index)� overridesz numpy.fft)�modulec C s t || j�}|d kr| j| }|dk r2td| ��d| }| j| |kr�t| j�}td �gt|� }|| |kr�td|�||< |