U
    HvfO&                     @   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   ?/tmp/pip-unpacked-wheel-96ln3f52/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st 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 )Nhi +2i  B3      l   s'    >9l               fn l    >Uko      q. l   xQ+t0       ! l    dopL?    hR   2 f;               `71Y!l    ("               X l         	 )r8   ihi=ur9   i,2r:   l     r;   l   >9r<   l     fn 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 inputz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   Znumpyr"   rO   r   r   r   r   rR   r   r   r   r   <module>   s*          J