3
���hG � @ sd d Z ddlZddlmZ ddlmZmZ G dd� d�ZG dd� d�ZG d d
� d
�Z G dd� d�Z
dS )
zfTest functions for fftpack.helper module
Copied from fftpack.helper by Pearu Peterson, October 2005
� N)�assert_array_almost_equal)�fft�pic @ s4 e Zd Zdd� Zdd� Zdd� Zdd� Zd d
� ZdS )�TestFFTShiftc
C s� dddddddd d
g }ddd
ddddddg }t tj|�|� t tj|�|� ddddddddddg
}ddddddddddg
}t tj|�|� t tj|�|� d S )Nr � � � � � ������������r r r
r ���r r r
r r r r r
r )r r �fftshift� ifftshift)�self�x�y� r �</tmp/pip-build-5_djhm0z/numpy/numpy/fft/tests/test_helper.py�test_definition
s zTestFFTShift.test_definitionc C s6 x0dD ](}t jj|f�}ttjtj|��|� qW d S )Nr r � �d �� )r r r r r )�np�randomr r r r )r �nr r r r �test_inverse s
zTestFFTShift.test_inversec C s� dddgdddgdd d
gg}ddd
gdddgdddgg}t tj|dd�|� t tj|dd�tj|dd�� t tj|dd�|� t tj|dd�tj|dd�� t tj|�|� t tj|�|� d S )Nr r r r r )�axesr r r
r r r r
r )r r )r )r r )r )r r r r )r �freqsZshiftedr r r �test_axes_keyword s zTestFFTShift.test_axes_keywordc C sv ddgddgddgg}ddgddgddgg}t tj|dd�|� t tj|dd�|� t tj|d d�|� t tj|dgd�|� ddgddgddgg}t tj|dd�|� t tj|dd�|� ddgddgddgg}t tj|d
d�|� t tj|dd�|� t tj|ddgd�|� t tj|ddgd�|� t tj|dd�|� t tj|dd�|� t tj|�|� t tj|�|� dS )z1 Test 2D input, which has uneven dimension sizes r r r r r r
)r N)r )r r )r r )r r r r )r r Z
shift_dim0Z
shift_dim1Zshift_dim_bothr r r �test_uneven_dims) s4
zTestFFTShift.test_uneven_dimsc s� ddl m� ddlm�m�m� m� d� ����fdd� }d� ����fdd� }xntd �D ]b}x\td �D ]P}xJdD ]B}tj j
||�}ttj
||�|||�� ttj||�|||�� qrW qhW qZW dS )z\ Test that the new (>=v1.15) implementation (see #10073) is equal to the original (<=v1.14) r )�
integer_types)�asarray�concatenate�arange�takeNc s� �| �}|j }|dkr$tt|��}nt|��r4|f}|}xD|D ]<}|j| }|d d }�� ||�� |�f�}�|||�}q>W |S )z& How fftshift was implemented in v1.14Nr r )�ndim�list�range�
isinstance�shape) r r �tmpr( r �kr �p2�mylist)r& |