o
    EbO&                     @   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   =/usr/lib/python3/dist-packages/scipy/fft/tests/test_helper.pytest_next_fast_len   s   r   c                 C   s   | }|dk rJ 	 t | d\}}|dkrn|} q	td|d dD ]}	 t | |\}}|dkr/n|} q#q | dks@J d||| d S )Nr   FTr   r      z#x={} is not {}-smooth, remainder={})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s!J 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
   )npZrandomZ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!   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   s   i 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dddddddddddddddd }|  D ]\}}tt|d!| qGd S )"Nihihi i=ui+2i,2i  B3l      l     l   s' l   >9l   >9l         l      fn l     fn l    >Uko l     q. l    q. l   xQ+t0 l      ! l     ! l    dopL? l   hRl   hR   2 f;               `71Y!l    ("               X l         	 )r5   l   2 f;r6   l   r7   l    `71Y!r8   l          l   X r9   l   !X Tr.   r0   r   r   r   testnext_fast_len_bigJ   sd   	
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)targetr;   )r   )r"   r   r   r   test_keyword_argso   s   z!TestNextFastLen.test_keyword_argsN)__name__
__module____qualname__r   r%   r2   pytestZmarkZxfailsysmaxsize
ValueErrorr:   r>   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   N   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      



z/Test_init_nd_shape_and_axes.test_py_0d_defaultsc                 C   rG   )Ng      @rH   rJ   r   r   r   test_np_0d_defaults   rN   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   rH   rJ   r   r   r   test_py_1d_defaults      
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!   arangerI   r   r   rJ   r   r   r   test_np_1d_defaults   rR   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   rH   rJ   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   rS   r
   r   )r!   rT   ZreshaperI   r   r   rJ   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!   zerosrI   r   r   rJ   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 )NrX   )r   r]   r   r	   )r   r   r
   r   r	   rY   rZ   rJ   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 )NrX   )r	   r   r   )r	   r   r
   rZ   rJ   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 )NrX   )r   r]   r   )r   r   r   )r   r   r   rZ   rJ   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
   rK   rL   rP   )r!   r[   r   r   )r"   r   rK   rL   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 s#w   Y  ttdd t|d g dd W d    n1 sBw   Y  ttd	d t|d dgd W d    n1 s`w   Y  ttd	d t|d d
gd W d    n1 s~w   Y  ttdd t|d ddgd W d    n1 sw   Y  ttdd t|ddgddggd d W d    n1 sw   Y  ttdd t|g dd d W d    n1 sw   Y  ttdd tt g dg ddgd W d    n	1 sw   Y  ttdd t|dgd d W d    n	1 s$w   Y  ttdd t|d
d d W d    d S 1 sCw   Y  d S )Nr   z-axes must be a scalar or iterable of integers)matchr   r   r	   ra   )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   rP   z1invalid number of data points \(\[0\]\) specifiedz2invalid number of data points \(\[-2\]\) specified)r!   r[   assert_raisesrE   r   )r"   r   r   r   r   test_errors   sZ   

$z'Test_init_nd_shape_and_axes.test_errorsN)r?   r@   rA   rM   rO   rQ   rU   rV   rW   r\   r^   r_   r`   rb   rf   r   r   r   r   rF   t   s    rF   )Zscipy.fft._helperr   r   Znumpy.testingr   r   rB   r   re   Znumpyr!   rC   r   r   r   r   rF   r   r   r   r   <module>   s    J