a
    ReC&                     @   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g d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   O/var/www/sunrise/env/lib/python3.9/site-packages/scipy/fft/tests/test_helper.pytest_next_fast_len   s    r   c                 C   s   | }|dk rdsJ t | d\}}|dkr,q2|} qtd|d dD ]"}t | |\}}|dkr^qB|} qFqB| dksJ d| d| d|  d S )	Nr   Fr   r      zx=z is not z-smooth, remainder=)divmodrange)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sBJ 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   )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    int16int32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         	 )r9   ihi=ur:   i,2r;   l     r<   l   >9r=   l     fn r>   l    q. r?   l     ! r@   l   hRrA   l   2 f;rB   l   rC   l    `71Y!rD   l          l   X rE   l   !X Tr2   r4   r   r   r   testnext_fast_len_bigJ   s6    z%TestNextFastLen.testnext_fast_len_bigc                 C   s,   t ddddksJ t ddddks(J d S )Nr   T)real   r/   F)targetrG   )r   )r#   r   r   r   test_keyword_argso   s    z!TestNextFastLen.test_keyword_argsN)__name__
__module____qualname__r   r)   r6   pytestmarkZxfailsysmaxsize
ValueErrorrF   rJ   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      @rT   rV   r   r   r   test_np_0d_defaults   s    



z/Test_init_nd_shape_and_axes.test_np_0d_defaultsc                 C   sV   t g d}d }d }t dg}t dg}t|||\}}t|| t|| d S )Nr   r   r   r   r   rT   rV   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    arangerU   r   r   rV   r   r   r   test_np_1d_defaults   s    
z/Test_init_nd_shape_and_axes.test_np_1d_defaultsc                 C   sb   t g dg dg}d }d }t ddg}t ddg}t|||\}}t|| t|| d S )N)r   r   r   r	   )r
   r   r/   r   r   r	   r   r   rT   rV   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reshaperU   r   r   rV   r   r   r   test_np_2d_defaults   s    
z/Test_init_nd_shape_and_axes.test_np_2d_defaultsc                 C   sZ   t g d}d }d }t g d}t g d}t|||\}}t|| t|| d S )Nr   r   r
   r   r	   r   r   r   r   r	   r    zerosrU   r   r   rV   r   r   r   test_np_5d_defaults   s    
z/Test_init_nd_shape_and_axes.test_np_5d_defaultsc                 C   s^   t g d}g d}d }t g d}t g d}t|||\}}t|| t|| d S )Nrb   )r   rg   r   r	   )r   r   r
   r   r	   rc   rd   rV   r   r   r   test_np_5d_set_shape   s    
z0Test_init_nd_shape_and_axes.test_np_5d_set_shapec                 C   s^   t g d}d }g d}t g d}t g d}t|||\}}t|| t|| d S )Nrb   )r	   r   r   )r	   r   r
   rd   rV   r   r   r   test_np_5d_set_axes   s    
z/Test_init_nd_shape_and_axes.test_np_5d_set_axesc                 C   sb   t g d}g d}g d}t g d}t g d}t|||\}}t|| t|| d S )Nrb   )r   rg   r   )r   r   r   )r   r   r   rd   rV   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|g d t|g d d S )N)r   r   r	   r
   )r
   r
   r
   rW   rX   r[   )r    re   r   r   )r#   r   rW   rX   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 d    n1 sF0    Y  ttdd" t|d g dd W d    n1 s0    Y  ttd	d  t|d dgd W d    n1 s0    Y  ttd	d  t|d d
gd W d    n1 s0    Y  ttdd" t|d ddgd W d    n1 s<0    Y  ttdd* t|ddgddggd d W d    n1 s0    Y  ttdd" t|g dd d W d    n1 s0    Y  ttdd. tt g dg ddgd W d    n1 s0    Y  ttdd  t|dgd d W d    n1 sN0    Y  ttdd t|d
d d W d    n1 s0    Y  d S )Nr   z-axes must be a scalar or iterable of integers)matchr   r   r	   rk   )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 length)r   r   r   r   r[   z1invalid number of data points \(\[0\]\) specifiedz2invalid number of data points \(\[-2\]\) specified)r    re   assert_raisesrR   r   )r#   r   r   r   r   test_errors   sF    
80..2:2
&0z'Test_init_nd_shape_and_axes.test_errorsN)rK   rL   rM   rY   rZ   r\   r_   r`   ra   rf   rh   ri   rj   rl   rp   r   r   r   r   rS   t   s   rS   )Zscipy.fft._helperr   r   Znumpy.testingr   r   rN   r   ro   numpyr    rP   r   r   r   r   rS   r   r   r   r   <module>   s   J