a
    hÝEb  ã                   @   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   ú[/home/ja/django-apps/lartica_env/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   ÚarZaiÚar#   r   r   r   Útest_not_last_axis_success    s    z%TestIRFFTN.test_not_last_axis_successN)r@   rA   rB   rM   r   r   r   r   rH   ž   s   rH   )Ú__doc__Únumpyr   Znumpy.testingr   r   r   r   rC   rG   rH   r   r   r   r   Ú<module>   s   }