U
    /‰dT  ã                   @   s  d dl mZ d dlZd dlZd dlmZ d dlZd dlZej	dddd„ ƒZ
ej dejejejejejejejejejejejejejejejejejejejejej ej!ej"ej#ej$ej%g¡ej d	d
dg¡dd„ ƒƒZ&dd„ Z'dd„ Z(dd„ Z)dd„ Z*dd„ Z+dS )é    ©ÚfftN©Úassert_allcloseÚmodule)Zscopec                   C   s   t j dd¡S )Ni   é€   )ÚnpÚrandomZrandn© r
   r
   úG/tmp/pip-unpacked-wheel-9gxwnfpp/scipy/fft/tests/test_multithreading.pyÚx	   s    r   ÚfuncÚworkersé   éÿÿÿÿc                 C   s&   || dd}|| |d}t ||ƒ d S )Né   ©r   r   )r   r   r   ÚexpectedÚactualr
   r
   r   Útest_threaded_same   s    	r   c                 C   s   t j | ddS )Nr   r   r   ©r   r
   r
   r   Ú_mt_fft   s    r   c              	      sh   t j ˆ dd}t d¡$}| t‡ fdd„tdƒD ƒ¡}W 5 Q R X |D ]}t||ƒ qFt j ˆ dd d S )Nr   r   c                    s   g | ]}ˆ ‘qS r
   r
   )Ú.0Ú_r   r
   r   Ú
<listcomp>&   s     z0test_mixed_threads_processes.<locals>.<listcomp>é   )r   ÚmultiprocessingZPoolÚmapr   Úranger   )r   ÚexpectÚpÚresÚrr
   r   r   Útest_mixed_threads_processes    s    (r#   c              	   C   st   t  ¡ }tjdg| d tjtdd tj| dd W 5 Q R X tjtdd tj| | d d W 5 Q R X d S )Nr   r   úworkers must not be zero©Úmatchr   úworkers value out of range)ÚosÚ	cpu_countr   ÚifftÚpytestÚraisesÚ
ValueError)r   Úcpusr
   r
   r   Útest_invalid_workers.   s    r/   c               
   C   s°   t  ¡ } t ¡ dkst‚t d¡L t ¡ dks4t‚t d¡ t ¡ | ksPt‚W 5 Q R X t ¡ dksjt‚W 5 Q R X t ¡ dks„t‚t |  ¡ t ¡ dks¢t‚W 5 Q R X d S )Nr   r   r   )r(   r)   r   Zget_workersÚAssertionErrorÚset_workers)r.   r
   r
   r   Útest_set_get_workers:   s    r2   c                
   C   sn   t jtdd t d¡ W 5 Q R X W 5 Q R X t jtdd& t t ¡  d ¡ W 5 Q R X W 5 Q R X d S )Nr$   r%   r   r'   r   )r+   r,   r-   r   r1   r(   r)   r
   r
   r
   r   Útest_set_workers_invalidK   s    r3   ),Zscipyr   Znumpyr   r+   Znumpy.testingr   r   r(   Zfixturer   ÚmarkZparametrizer*   Zfft2Zifft2ZfftnZifftnZrfftZirfftZrfft2Zirfft2ZrfftnZirfftnZhfftZihfftZhfft2Zihfft2ZhfftnZihfftnÚdctZidctZdctnZidctnÚdstZidstZdstnZidstnr   r   r#   r/   r2   r3   r
   r
   r
   r   Ú<module>   sT   

                     û