U
    »mœdO&  ã                   @   sŽ   d dl mZmZ d dlmZmZ d dlmZ d dlZd dl	Z
d dlZddddd	d
dddddgZdd„ Zdd„ ZG dd„ dƒZG dd„ dƒZdS )é    )Únext_fast_lenÚ_init_nd_shape_and_axes)Úassert_equalÚassert_array_equal)ÚraisesNé   é   é   é   é   é   é	   é
   é   i˜  i  c                  C   s   t D ]} tt| ƒ| ƒ qd S )N)Ú_5_smooth_numbersr   r   )Ún© r   úT/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/fft/tests/test_helper.pyÚtest_next_fast_len   s    r   c                 C   s„   | }|dk rdst ‚t| dƒ\}}|dkr,q2|} qtd|d dƒD ]"}t| |ƒ\}}|dkr^qB|} qFqB| dks€t d ||| ¡ƒ‚d S )Nr   Fr   r   é   z#x={} is not {}-smooth, remainder={})ÚAssertionErrorÚdivmodÚrangeÚformat)Úxr   Zx_origÚqÚrÚdr   r   r   Ú_assert_n_smooth   s    
ÿr   c                   @   sN   e Zd Zdd„ Zdd„ Zdd„ Zejje	j
dk ded	d
�dd„ ƒZdd„ ZdS )ÚTestNextFastLenc                 C   s\   t j d¡ dd„ }|ƒ D ]<}t|ƒ}t|dƒ |t|dƒksBt‚t|dƒ}t|dƒ qd S )NiÒ  c                   s   s   t ddƒE d H  dV  d S )Nr   iè  i€y )r   r   r   r   r   Únums/   s    z0TestNextFastLen.test_next_fast_len.<locals>.numsé   FTr
   )ÚnpÚrandomÚseedr   r   r   )Úselfr    r   Úmr   r   r   r   ,   s    


z"TestNextFastLen.test_next_fast_lenc                 C   sL   t jt jt jt jt jt jg}|D ]&}|dƒ}t|ƒ}t|tt	|ƒƒƒ q d S )Ni90  )
r"   Zint16Zint32Zint64Zuint16Zuint32Zuint64r   r   Úint)r%   ZITYPESZitypr   ZtestNr   r   r   Útest_np_integers;   s
    z TestNextFastLen.test_np_integersc                 C   sJ   ddddddddddd	d
ddddœ}|  ¡ D ]\}}tt|dƒ|ƒ q,d S )Nr   r   r   r	   r
   r   r   é   é   é   i   é   é @)r   r   r   r	   r
   r   é   r   é   r)   r*   é   iý  r,   r-   T©Úitemsr   r   ©r%   Zhamsr   Úyr   r   r   Útestnext_fast_len_smallB   s$                 þz'TestNextFastLen.testnext_fast_len_smalll        z$Hamming Numbers too large for 32-bitT)Úreasonr   Ústrictc                 C   sd   dddddddddd	d
ddddddddddddddddddœ}|  ¡ D ]\}}tt|dƒ|ƒ qFd S )NéÀÇhi €„é+‰ë2i  B3ì     €· l   €sö'· ì    >å9ùl         ì      fØn l    >Uk±o ì     øq…. l   ØxQ+t0 ì      ¢!Í l    dopL?Í ì   í…hRì   ‰2 f;Ùì          ì     `71Y!l   à …("ì           ì    ËóX l         	 )r8   iÁÇhiÀ=ur9   i,‰ë2r:   l    €· r;   l   ¡>å9ùr<   l     fØn r=   l    øq…. r>   l     ¢!Í r?   l   ì…hRr@   l   ˆ2 f;ÙrA   l   ÿÿÿÿrB   l    `71Y!rC   l          l   ËóX rD   l   !ËóX Tr1   r3   r   r   r   Útestnext_fast_len_bigJ   s>        äz%TestNextFastLen.testnext_fast_len_bigc                 C   s,   t ddd�dkst‚t ddd�dks(t‚d S )Nr!   T)Úrealé   r.   F)ÚtargetrF   )r   r   )r%   r   r   r   Útest_keyword_argso   s    z!TestNextFastLen.test_keyword_argsN)Ú__name__Ú
__module__Ú__qualname__r   r(   r5   ÚpytestÚmarkZxfailÚsysÚmaxsizeÚ
ValueErrorrE   rI   r   r   r   r   r   *   s    þ
"r   c                   @   sl   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTest_init_nd_shape_and_axesc                 C   sN   t  d¡}d }d }t  g ¡}t  g ¡}t|||ƒ\}}t||ƒ t||ƒ d S )Nr	   ©r"   Úarrayr   r   ©r%   r   ÚshapeÚaxesZshape_expectedZaxes_expectedZ	shape_resZaxes_resr   r   r   Útest_py_0d_defaultsv   s    



z/Test_init_nd_shape_and_axes.test_py_0d_defaultsc                 C   sN   t  d¡}d }d }t  g ¡}t  g ¡}t|||ƒ\}}t||ƒ t||ƒ d S )Ng      @rS   rU   r   r   r   Útest_np_0d_defaultsƒ   s    



z/Test_init_nd_shape_and_axes.test_np_0d_defaultsc                 C   sX   t  dddg¡}d }d }t  dg¡}t  dg¡}t|||ƒ\}}t||ƒ t||ƒ d S )Nr   r   r   r   rS   rU   r   r   r   Útest_py_1d_defaults�   s    
z/Test_init_nd_shape_and_axes.test_py_1d_defaultsc                 C   sV   t  ddd¡}d }d }t  dg¡}t  dg¡}t|||ƒ\}}t||ƒ t||ƒ d S )Nr   r   çš™™™™™¹?r   )r"   ÚarangerT   r   r   rU   r   r   r   Útest_np_1d_defaults�   s    
z/Test_init_nd_shape_and_axes.test_np_1d_defaultsc                 C   sj   t  ddddgddddgg¡}d }d }t  ddg¡}t  d	dg¡}t|||ƒ\}}t||ƒ t||ƒ d S )
Nr   r   r   r	   r
   r   r.   r   r   rS   rU   r   r   r   Útest_py_2d_defaultsª   s    
ÿ
z/Test_init_nd_shape_and_axes.test_py_2d_defaultsc                 C   sb   t  ddd¡ dd¡}d }d }t  ddg¡}t  ddg¡}t|||ƒ\}}t||ƒ t||ƒ d S )Nr   r   r[   r
   r   )r"   r\   ZreshaperT   r   r   rU   r   r   r   Útest_np_2d_defaults¸   s    
z/Test_init_nd_shape_and_axes.test_np_2d_defaultsc                 C   sl   t  dddddg¡}d }d }t  dddddg¡}t  dddddg¡}t|||ƒ\}}t||ƒ t||ƒ d S )Nr   r   r
   r   r	   r   r   ©r"   ÚzerosrT   r   r   rU   r   r   r   Útest_np_5d_defaultsÅ   s    
z/Test_init_nd_shape_and_axes.test_np_5d_defaultsc                 C   sv   t  dddddg¡}dddddg}d }t  dddddg¡}t  d	ddddg¡}t|||ƒ\}}t||ƒ t||ƒ d S ©
Nr   r   r
   r   r	   r   éÿÿÿÿr   r   r`   rU   r   r   r   Útest_np_5d_set_shapeÒ   s    
z0Test_init_nd_shape_and_axes.test_np_5d_set_shapec                 C   sj   t  dddddg¡}d }dddg}t  dddg¡}t  dddg¡}t|||ƒ\}}t||ƒ t||ƒ d S )Nr   r   r
   r   r	   r   r`   rU   r   r   r   Útest_np_5d_set_axesß   s    

z/Test_init_nd_shape_and_axes.test_np_5d_set_axesc                 C   sp   t  dddddg¡}dddg}dd	dg}t  dddg¡}t  dd	dg¡}t|||ƒ\}}t||ƒ t||ƒ d S rc   r`   rU   r   r   r   Útest_np_5d_set_shape_axesì   s    


z5Test_init_nd_shape_and_axes.test_np_5d_set_shape_axesc                 C   s@   t  d¡}t|dd d�\}}t|dddgƒ t|dddgƒ d S )N)r   r   r	   r
   )r
   r
   r
   ©rV   rW   r
   r   r   r   )r"   ra   r   r   )r%   r   rV   rW   r   r   r   Útest_shape_axes_subsetù   s    
z2Test_init_nd_shape_and_axes.test_shape_axes_subsetc              	   C   sÒ  t  d¡}ttdd��  t|d ddgddggd� W 5 Q R X ttdd�� t|d dd	d
dgd� W 5 Q R X ttdd�� t|d dgd� W 5 Q R X ttdd�� t|d dgd� W 5 Q R X ttdd�� t|d ddgd� W 5 Q R X ttdd��  t|ddgddggd d� W 5 Q R X ttdd�� t|dd	d
dgd d� W 5 Q R X ttdd��* tt  ddddg¡dddgdgd� W 5 Q R X ttdd�� t|dgd d� W 5 Q R X ttdd�� t|dd d� W 5 Q R X d S )Nr   z-axes must be a scalar or iterable of integers)Úmatchr   r   r	   rh   g      ð?g       @g      @g      @z$axes exceeds dimensionality of inputéþÿÿÿzall axes must be uniquer   z.shape must be a scalar or iterable of integerszBwhen given, axes and shape arguments have to be of the same lengthz1invalid number of data points \(\[0\]\) specifiedz2invalid number of data points \(\[-2\]\) specified)r"   ra   Úassert_raisesrQ   r   )r%   r   r   r   r   Útest_errors   sH    
$ ÿÿÿ$ ÿ ÿÿÿz'Test_init_nd_shape_and_axes.test_errorsN)rJ   rK   rL   rX   rY   rZ   r]   r^   r_   rb   re   rf   rg   ri   rm   r   r   r   r   rR   t   s   rR   )Zscipy.fft._helperr   r   Znumpy.testingr   r   rM   r   rl   Únumpyr"   rO   r   r   r   r   rR   r   r   r   r   Ú<module>   s*          üJ