a
    p=ic                     @   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   sd   g d}g d}t t|| t t|| g d}g d}t t|| t t|| d S )N	r               )	r   r   r   r   r   r   r   r	   r
   
r   r   r   r	   r
   r   r   r   r   )
r   r   r   r   r   r   r   r   r	   r
   r   r   fftshift	ifftshift)selfxy r   l/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/numpy/fft/tests/test_helper.pytest_definition   s    zTestFFTShift.test_definitionc                 C   s2   dD ](}t j|f}ttt|| qd S )N)r   r
   	   d      )nprandomr   r   r   r   )r   nr   r   r   r   test_inverse   s    zTestFFTShift.test_inversec                 C   s   g dg dg dg}g dg dg d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|| t t|| d S )N)r   r   r   )r	   r
   r   )r   r   r   )r   r   r   )r   r   r   )r   r	   r
   r   r   axesr   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|| t t|| d
S )z1 Test 2D input, which has uneven dimension sizes r   r   r   r	   r
      r"   r$   r!   Nr   )r   r%   Z
shift_dim0Z
shift_dim1Zshift_dim_bothr   r   r   test_uneven_dims)   s<    zTestFFTShift.test_uneven_dimsc                    s   ddl mmm m d
 fdd	}d fdd	}tdD ]Z}tdD ]L}d	D ]B}tj||}t	t
||||| t	t
||||| q\qTqHdS )z\ Test that the new (>=v1.15) implementation (see #10073) is equal to the original (<=v1.14) r   )asarrayconcatenatearangetakeNc           	         s~   | }|j }|du r$tt|}nt|tr4|f}|}|D ]<}|j| }|d d } || |f}|||}q<|S )z& How fftshift was implemented in v1.14Nr   r   ndimlistrange
isinstanceintshape	r   r#   tmpr.   r   kr   p2Zmylistr+   r)   r*   r,   r   r   original_fftshiftZ   s    

z>TestFFTShift.test_equal_to_original.<locals>.original_fftshiftc           	         s   | }|j }|du r$tt|}nt|tr4|f}|}|D ]@}|j| }||d d  } || |f}|||}q<|S )z( How ifftshift was implemented in v1.14 Nr   r   r-   r4   r8   r   r   original_ifftshiftj   s    

z?TestFFTShift.test_equal_to_original.<locals>.original_ifftshift   )r   r   Nr$   r!   )N)N)Z
numpy.corer)   r*   r+   r,   r0   r   r   Zrandr   r   r   r   )r   r9   r:   ijZaxes_keywordinpr   r8   r   test_equal_to_originalV   s    z#TestFFTShift.test_equal_to_originalN)__name__
__module____qualname__r   r    r&   r(   r?   r   r   r   r   r      s
   
-r   c                   @   s   e Zd Zdd ZdS )TestFFTFreqc                 C   sp   g d}t dtd | t dt tdt | g d}t dtd | t dt tdt | d S )Nr   r   r   
   )r   r   Zfftfreqr   r   r   r   r   r   r      s    zTestFFTFreq.test_definitionNr@   rA   rB   r   r   r   r   r   rC      s   rC   c                   @   s   e Zd Zdd ZdS )TestRFFTFreqc                 C   sp   g d}t dtd | t dt tdt | g d}t dtd | t dt tdt | d S )N)r   r   r   r	   r
   r   )r   r   r   r	   r
   r'   rD   )r   r   Zrfftfreqr   rE   r   r   r   r      s    zTestRFFTFreq.test_definitionNrF   r   r   r   r   rG      s   rG   c                   @   s   e Zd Zdd ZdS )
TestIRFFTNc                 C   s2   t jd\}}|d|  }d}tj||d d S )N)r   r;          y              ?)r   r"   )r   r   r   Zirfftn)r   araiar#   r   r   r   test_not_last_axis_success   s    z%TestIRFFTN.test_not_last_axis_successN)r@   rA   rB   rN   r   r   r   r   rH      s   rH   )__doc__numpyr   Znumpy.testingr   r   r   r   rC   rG   rH   r   r   r   r   <module>   s   }