o
    Ô­j  ã                   @   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   úX/var/www/html/CropPilot/venv/lib/python3.10/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   ÚfreqsÚ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%   Ú
shift_dim0Ú
shift_dim1Ú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 ]-}tdƒD ]&}d	D ]!}tj ||¡}t	t
 ||¡|||ƒƒ t	t
 ||¡|||ƒƒ q.q*q$d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ƒr|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#   Útmpr2   r   Úkr   Úp2Úmylist©r/   r-   r.   r0   r   r   Úoriginal_fftshiftZ   s   

z>TestFFTShift.test_equal_to_original.<locals>.original_fftshiftc           	         s‚   ˆ| ƒ}|j }|du rtt|ƒƒ}nt|tƒr|f}|}|D ] }|j| }||d d  }ˆˆ ||ƒˆ |ƒfƒ}ˆ|||ƒ}q|S )z( How ifftshift was implemented in v1.14 Nr   r   r1   r8   r=   r   r   Úoriginal_ifftshiftj   s   

z?TestFFTShift.test_equal_to_original.<locals>.original_ifftshifté   )r   r   Nr$   r!   )N)Ú
numpy.corer-   r.   r/   r0   r4   r   r   Úrandr   r   r   r   )r   r>   r?   ÚiÚjÚaxes_keywordÚinpr   r=   r   Útest_equal_to_originalV   s    ÿÿúÿÿz#TestFFTShift.test_equal_to_originalN)Ú__name__Ú
__module__Ú__qualname__r   r    r'   r,   rG   r   r   r   r   r      s    
-r   c                   @   ó   e Zd Zdd„ ZdS )ÚTestFFTFreqc                 C   óp   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   Úfftfreqr   ©r   r   r   r   r   r   Š   ó   zTestFFTFreq.test_definitionN©rH   rI   rJ   r   r   r   r   r   rL   ˆ   ó    rL   c                   @   rK   )ÚTestRFFTFreqc                 C   rM   )N)r   r   r   r	   r
   r   )r   r   r   r	   r
   r(   rN   )r   r   Úrfftfreqr   rP   r   r   r   r   •   rQ   zTestRFFTFreq.test_definitionNrR   r   r   r   r   rT   “   rS   rT   c                   @   rK   )Ú
TestIRFFTNc                 C   s2   t j d¡\}}|d|  }d}tj||d� d S )N)r   r@   é   é    y              ð?)r   r"   )r   r   r   Úirfftn)r   ÚarÚaiÚar#   r   r   r   Útest_not_last_axis_success    s   z%TestIRFFTN.test_not_last_axis_successN)rH   rI   rJ   r]   r   r   r   r   rV   ž   rS   rV   )Ú__doc__Únumpyr   Únumpy.testingr   r   r   r   rL   rT   rV   r   r   r   r   Ú<module>   s    }