B
    0dO&                 @   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    xt D ]} tt| |  qW d S )N)_5_smooth_numbersr   r   )n r   M/var/www/html/venv/lib/python3.7/site-packages/scipy/fft/tests/test_helper.pytest_next_fast_len   s    
r   c             C   s   | }|dk rdst x t| d\}}|dkr.P |} qW x:td|d dD ]&}x t| |\}}|dkrfP |} qNW qHW | 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 }xF| D ]<}t|}t|d |t|dksDtt|d}t|d qW 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   sP   t jt jt jt jt jt jg}x.|D ]&}|d}t|}t|tt	| q"W 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   sN   ddddddddddd	d
dddd}x$|  D ]\}}tt|d| q.W d S )Nr   r   r   r	   r
   r   r            i   i   i @)r   r   r   r	   r
   r      r      r)   r*      i  i   i @T)itemsr   r   )r%   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   sh   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}x$|  D ]\}}tt|d| qHW d S )Nihi i+2i  B3l      l   s' l   >9l         l      fn l    >Uko l     q. l   xQ+t0 l      ! l    dopL? l   hRl   2 f;l          l     `71Y!l    ("l           l    X l         	 )ihihi=ui+2i,2l      l     l   >9l   >9l      fn l     fn l     q. l    q. l      ! l     ! l   hRl   hRl   2 f;l   2 f;l          l   l     `71Y!l    `71Y!l           l          l   X l    X l   !X T)r/   r   r   )r%   r0   r   r1   r   r   r   testnext_fast_len_bigJ   s4    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)targetr6   )r   r   )r%   r   r   r   test_keyword_argso   s    z!TestNextFastLen.test_keyword_argsN)__name__
__module____qualname__r   r(   r2   pytestmarkZxfailsysmaxsize
ValueErrorr5   r9   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axesshape_expectedaxes_expected	shape_res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      @)r"   rC   r   r   )r%   r   rD   rE   rF   rG   rH   rI   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   )r"   rC   r   r   )r%   r   rD   rE   rF   rG   rH   rI   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   g?r   )r"   arangerC   r   r   )r%   r   rD   rE   rF   rG   rH   rI   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   )r"   rC   r   r   )r%   r   rD   rE   rF   rG   rH   rI   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   g?r
   r   )r"   rM   ZreshaperC   r   r   )r%   r   rD   rE   rF   rG   rH   rI   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"   zerosrC   r   r   )r%   r   rD   rE   rF   rG   rH   rI   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"   rQ   rC   r   r   )r%   r   rD   rE   rF   rG   rH   rI   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"   rQ   rC   r   r   )r%   r   rD   rE   rF   rG   rH   rI   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 )
Nr   r   r
   r   r	   r   rS   r   r   )r"   rQ   rC   r   r   )r%   r   rD   rE   rF   rG   rH   rI   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
   )rD   rE   r
   r   r   r   )r"   rQ   r   r   )r%   r   rD   rE   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 Q R X ttdd t|d dd	d
dgd W d Q R X ttdd t|d dgd W d Q R X ttdd t|d dgd W d Q R X ttdd t|d ddgd W d Q R X ttdd  t|ddgddggd d W d Q R X ttdd t|dd	d
dgd d W d Q R X ttdd* tt ddddgdddgdgd W d Q R X ttdd t|dgd d W d Q R X ttdd t|dd d W d Q R X d S )Nr   z-axes must be a scalar or iterable of integers)matchr   r   r	   )rD   rE   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"   rQ   assert_raisesrA   r   )r%   r   r   r   r   test_errors   s8    
$ 


$ 


z'Test_init_nd_shape_and_axes.test_errorsN)r:   r;   r<   rJ   rK   rL   rN   rO   rP   rR   rT   rU   rV   rW   r[   r   r   r   r   rB   t   s   rB   )Zscipy.fft._helperr   r   Znumpy.testingr   r   r=   r   rZ   numpyr"   r?   r   r   r   r   rB   r   r   r   r   <module>   s   J