3
KdG                 @   sd   d Z ddlZddlmZ ddlmZmZ G dd dZG dd dZG d	d
 d
Z	G dd dZ
dS )zfTest functions for fftpack.helper module

Copied from fftpack.helper by Pearu Peterson, October 2005

    N)assert_array_almost_equal)fftpic               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestFFTShiftc          
   C   s   dddddddd	d
g	}dddddddddg	}t tj|| t tj|| ddddddddddg
}ddddddddddg
}t tj|| t tj|| d S )Nr                  r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   fftshift	ifftshift)selfxy r   O/var/www/html/virt/lib64/python3.6/site-packages/numpy/fft/tests/test_helper.pytest_definition   s    zTestFFTShift.test_definitionc             C   s6   x0dD ](}t jj|f}ttjtj|| qW d S )Nr   r	   	   d      )r   r	   r   r   r   )nprandomr   r   r   r   )r   nr   r   r   r   test_inverse   s    
zTestFFTShift.test_inversec             C   s   dddgdddgdd	d
gg}dddgdddgdddgg}t tj|dd| t tj|ddtj|dd t tj|dd| t tj|ddtj|dd t tj|| t tj|| 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   freqsZshiftedr   r   r   test_axes_keyword   s    zTestFFTShift.test_axes_keywordc             C   sv  ddgddgddgg}ddgddgddgg}t tj|dd| t tj|dd| t tj|d	d| t tj|dgd| ddgddgddgg}t tj|dd| t tj|dd| ddgddgddgg}t tj|d
d| t tj|dd| t tj|ddgd| t tj|ddgd| t tj|dd| t tj|dd| t tj|| t tj|| dS )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_dim1Zshift_dim_bothr   r   r   test_uneven_dims)   s4    



zTestFFTShift.test_uneven_dimsc                s   ddl m ddlmmm m d fdd	}d fdd	}xntd	D ]b}x\td	D ]P}xJdD ]B}tj	j
||}ttj||||| ttj||||| qrW qhW qZW dS )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 }|dkr$tt|}nt|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&   r$   r%   r#   r'   r   r   original_fftshift[   s    


z>TestFFTShift.test_equal_to_original.<locals>.original_fftshiftc       	         s   | }|j }|dkr$tt|}nt|r4|f}|}xH|D ]@}|j| }||d d  } || |f}|||}q>W |S )z( How ifftshift was implemented in v1.14 Nr   r   )r(   r)   r*   r+   r,   )	r   r   r-   r(   r   r.   r   r/   r0   )r&   r$   r%   r#   r'   r   r   original_ifftshiftk   s    


z?TestFFTShift.test_equal_to_original.<locals>.original_ifftshift   r   )N)Nr   r   r   )r   r   Nr4   r5   )Znumpy.compatr#   Z
numpy.corer$   r%   r&   r'   r*   r   r   Zrandr   r   r   r   )r   r1   r2   ijZaxes_keywordinpr   )r&   r$   r%   r#   r'   r   test_equal_to_originalV   s    
z#TestFFTShift.test_equal_to_originalN)__name__
__module____qualname__r   r   r!   r"   r9   r   r   r   r   r      s
   
-r   c               @   s   e Zd Zdd ZdS )TestFFTFreqc          
   C   s   dddddd	d
ddg	}t dtjd | t dt tjdt | ddddddddddg
}t dtjd | t dt tjdt | d S )Nr   r   r   r   r	   r   r
   
   r   r   r   r   r   r   r   r   r   )r   r   Zfftfreqr   )r   r   r   r   r   r      s    zTestFFTFreq.test_definitionN)r:   r;   r<   r   r   r   r   r   r=      s   r=   c               @   s   e Zd Zdd ZdS )TestRFFTFreqc             C   s~   dddddg}t dtjd | t dt tjdt | ddddddg}t dtjd | t dt tjdt | d S )	Nr   r   r   r   r	   r   r
   r>   )r   r   Zrfftfreqr   )r   r   r   r   r   r      s    zTestRFFTFreq.test_definitionN)r:   r;   r<   r   r   r   r   r   r?      s   r?   c               @   s   e Zd Zdd ZdS )
TestIRFFTNc             C   s2   t jjd\}}|d|  }d	}tj||d d S )
Nr   r3          y              ?)r   )r   r3   rA   rB   r   )r   )r   r   r   Zirfftn)r   arZaiar   r   r   r   test_not_last_axis_success   s    z%TestIRFFTN.test_not_last_axis_successN)r:   r;   r<   rE   r   r   r   r   r@      s   r@   )__doc__Znumpyr   Znumpy.testingr   r   r   r   r=   r?   r@   r   r   r   r   <module>   s   ~