U
    b»{j½È  ã                   @   sÔ   d dl Z d dlZd dlZd dlZd dlZd dl mZ d dlmZm	Z	 d dl
mZ d dlmZmZmZ d dlmZmZ d dlmZ d dlmZmZ d	ZG d
d„ deƒZdd„ ZG dd„ de	eƒZG dd„ deeƒZdS )é    N)Útypes)ÚTestCaseÚMemoryLeakMixin)Ú_get_proper_func)Únext_uint32Únext_uint64Únext_double)ÚMT19937Ú	Generator)ÚTypingError)Úrun_in_new_process_cachingÚSerialMixini   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestHelperFuncsc              	   C   s¸   dd„ }dd„ }|   t||tjƒd ƒ d¡ |   t||tjƒd ƒ d¡ |  t¡�}t||tjƒ W 5 Q R X |  dt	|j
ƒ¡ |  t¡�}t||tjƒ W 5 Q R X |  dt	|j
ƒ¡ d S )	Nc                   S   s   dS )Né    © r   r   r   ú\/var/www/html/bwave/python/venv/lib/python3.8/site-packages/numba/tests/test_np_randomgen.pyÚtest_32bit_func   s    zBTestHelperFuncs.test_proper_func_provider.<locals>.test_32bit_funcc                   S   s   dS )Né@   r   r   r   r   r   Útest_64bit_func   s    zBTestHelperFuncs.test_proper_func_provider.<locals>.test_64bit_funcr   r   r   z1Argument dtype is not one of the expected type(s))ÚassertEqualr   ÚnpÚfloat64Úfloat32ÚassertRaisesr   Úint32ÚassertInÚstrÚ	exceptionr   )Úselfr   r   Úraisesr   r   r   Útest_proper_func_provider   s8    
ÿÿÿ
ÿÿÿþþz)TestHelperFuncs.test_proper_func_providerc              	   C   sX   t j d¡}dd„ }tjdd�|ƒ}|  t¡�}||ƒ W 5 Q R X |  dt|j	ƒ¡ d S )Né   c                 S   s   | j dd�S )N)r   )Úloc©Únormal©Úxr   r   r   Ú<lambda>5   ó    z2TestHelperFuncs.test_check_types.<locals>.<lambda>T©Úcachez§Argument loc is not one of the expected type(s): [<class 'numba.core.types.scalars.Float'>, <class 'numba.core.types.scalars.Integer'>, <class 'int'>, <class 'float'>])
r   ÚrandomÚdefault_rngÚnumbaÚnjitr   r   r   r   r   )r   ÚrngÚpy_funcÚ
numba_funcr   r   r   r   Útest_check_types3   s    ûz TestHelperFuncs.test_check_typesc                 C   s  t j d¡}dd„ }t ¡ |ƒ}t ¡ |ƒ}dd„ }t ¡ |ƒ}t  t j¡jt  t j¡jt jft  t j	¡jt  t j	¡jt j	ft  t j
¡jt  t j
¡jt j
ft  t j¡jt  t j¡jt jft  t j¡jt  t j¡jt jft  t j¡jt  t j¡jt jfg}|D ]Ô\}}}	| j|||	d��´ |  t¡�}
|||d ||	ƒ W 5 Q R X |  dt|
jƒ¡ |  t¡�}
||||d |	ƒ W 5 Q R X |  dt|
jƒ¡ |  t¡�}
||||d |	ƒ W 5 Q R X |  dt|
jƒ¡ W 5 Q R X qüt  t j¡jt  t j¡jt j  }}}	|  t¡�}
|||d ||	ƒ W 5 Q R X |  dt|
jƒ¡ t  t j¡jt  t j¡jt j  }}}	|  t¡�}
||||d |	ƒ W 5 Q R X |  dt|
jƒ¡ |  t¡�}
||||d |	ƒ W 5 Q R X |  dt|
jƒ¡ |  t¡�}
||d	d
t jƒ W 5 Q R X |  dt|
jƒ¡ d S )Nr!   c                 S   s   | j |||dd�S )NT©ÚlowÚhighÚdtypeÚendpoint©Úintegers©r&   r4   r5   r6   r   r   r   r'   C   s    z9TestHelperFuncs.test_integers_arg_check.<locals>.<lambda>c                 S   s   | j |||dd�S )NFr3   r8   r:   r   r   r   r'   H   s    ©r4   r5   r6   zlow is out of boundszhigh is out of boundsé   éi   éd   z*low is greater than high in given interval)r   r+   r,   r-   r.   ZiinfoÚuint8ÚminÚmaxÚint8Úuint16Úint16Úuint32r   ÚsubTestr   Ú
ValueErrorr   r   r   Úuint64Úint64)r   r/   r0   r1   Znumba_func_lowZnumba_func_endpoint_falseÚcasesr4   r5   r6   r   r   r   r   Útest_integers_arg_checkA   s‚    ù	þþþ ÿ
þ ÿ
þþþz'TestHelperFuncs.test_integers_arg_checkN)Ú__name__Ú
__module__Ú__qualname__r    r2   rK   r   r   r   r   r      s   r   c                  C   sN   t j d¡} t j d¡}dd„ }tjdd�|ƒ}t  | d¡|| ƒ¡sJt‚d S )Nr!   c                 S   s
   |   d¡S ©Né
   ©r+   r%   r   r   r   r'   –   r(   z(test_generator_caching.<locals>.<lambda>Tr)   rP   )r   r+   r,   r-   r.   ZallcloseÚAssertionError)Únb_rngÚnp_rngr0   r1   r   r   r   Útest_generator_caching“   s
    rU   c                   @   sp  e Zd Zd\dd„Zd]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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d0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Zd<d=„ Zd>d?„ Z d@dA„ Z!dBdC„ Z"dDdE„ Z#dFdG„ Z$dHdI„ Z%dJdK„ Z&dLdM„ Z'dNdO„ Z(dPdQ„ Z)dRdS„ Z*dTdU„ Z+dVdW„ Z,dXdY„ Z-dZd[„ Z.dS )^ÚTestRandomGeneratorsNé   c                 C   sò   t  |¡}|d krd}|d kr<tjj|d�}tjj|d�}nt||ƒƒ}t||ƒƒ}||||ƒ}	| |||¡}
t|	tjƒrŠt 	|	j
tj¡s”t|	tƒrªtjj|
|	||d� ntj |	|
¡ | ¡ d }| ¡ d }|D ]}|  || || ¡ qÔd S )Nr!   ©Úseed)Zmaxulpr6   Ústate)r-   r.   r   r+   r,   r
   r0   Ú
isinstanceZndarrayZ
issubdtyper6   ZfloatingÚfloatZtestingZassert_array_max_ulpZassert_equalÚ__getstate__ÚassertPreciseEqual)r   Zdistribution_funcZbitgen_typerY   Ú	test_sizeÚ
test_dtypeÚulp_precÚnumba_rng_instanceÚnumpy_rng_instanceÚ	numba_resÚ	numpy_resZnumba_gen_stateZnumpy_gen_stateZ
_state_keyr   r   r   Úcheck_numpy_parityœ   s@    
 ÿ ÿÿþ
 ÿ
ÿz'TestRandomGenerators.check_numpy_parityr!   c           
         sb   t jj|d�}t jj|d�}t|jj|ƒ}||jjjƒ}t ‡ fdd„¡}||ƒ}	|  	|	|¡ d S )NrX   c                    s
   ˆ | j ƒS ©N)Úbit_generatorr%   ©Úbitgen_funcr   r   r'   Ë   r(   z?TestRandomGenerators._test_bitgen_func_parity.<locals>.<lambda>)
r   r+   r,   Úgetattrrh   ÚctypesrZ   r-   r.   r^   )
r   Ú	func_namerj   rY   rb   rc   Z
numpy_funcre   r1   rd   r   ri   r   Ú_test_bitgen_func_parityÄ   s    z-TestRandomGenerators._test_bitgen_func_parityc              
   C   s€   t j ¡ }t|ƒD ]h\}}| ¡ }|| ||< |g| }t |¡}	|  t¡�}
|	|Ž  W 5 Q R X |  	d|› d�t
|
jƒ¡ qd S )Nz	Argument z$ is not one of the expected type(s):)r   r+   r,   Ú	enumerateÚcopyr-   r.   r   r   r   r   r   )r   Ú	dist_funcÚarg_listÚ
valid_argsZinvalid_argsr/   ÚidxZ_argÚ	curr_argsÚnb_dist_funcr   r   r   r   Ú_check_invalid_typesÐ   s    



þz)TestRandomGenerators._check_invalid_typesc                 C   sD   t j ¡ }t dd„ ¡}|  |||ƒ¡ |  t|ƒt||ƒƒ¡ d S )Nc                 S   s   | S rg   r   r%   r   r   r   r'   á   r(   zATestRandomGenerators.test_npgen_boxing_unboxing.<locals>.<lambda>)r   r+   r,   r-   r.   r   Úid)r   Úrng_instancer1   r   r   r   Útest_npgen_boxing_unboxingß   s    
z/TestRandomGenerators.test_npgen_boxing_unboxingc                 C   sp   t j ¡ }t dd„ ¡}t dd„ ¡}||ƒ}t ¡  t |¡}~||ƒ t ¡  t |¡}|  	||d ¡ d S )Nc                 S   s   |   ¡ S rg   rQ   r%   r   r   r   r'   ç   r(   zATestRandomGenerators.test_npgen_boxing_refcount.<locals>.<lambda>c                 S   s   | S rg   r   r%   r   r   r   r'   è   r(   r!   )
r   r+   r,   r-   r.   ÚgcZcollectÚsysÚgetrefcountr   )r   ry   Zno_boxZdo_boxÚyZref_1Zref_2r   r   r   Útest_npgen_boxing_refcountå   s    


z/TestRandomGenerators.test_npgen_boxing_refcountc              
   C   sR   dddg}t ttg}t||ƒD ].\}}| j||d�� |  ||¡ W 5 Q R X qd S )Nr   r   r   )Ú_funcÚ
_func_name)r   r   r   ÚziprF   rn   )r   Z
func_namesÚfuncsr€   r�   r   r   r   Útest_bitgen_funcsô   s
    

z&TestRandomGenerators.test_bitgen_funcsc                 C   s†  d dddg}t jt jt jt jt jt jt jt jg}d t	g}dd„ }|  
¡ � | j|d d dd� W 5 Q R X dd„ }|D ]H}|D ]>}|D ]4}| j
|||d	�� |  ||d ||d¡ W 5 Q R X q‚qzqrd dddg}d t	g}d
d„ }|D ]>}|D ]4}| j
||d�� |  ||d |t jd¡ W 5 Q R X qäqÜdd„ }|  
¡ � | j|d d d� W 5 Q R X dd„ }|  |dddddgdddt jdgdddt jdg¡ d S )Nr   ©r>   ©rP   é   é   c                 S   s   |   dd¡S ©Nr   r>   r8   ©r&   Úsizer6   r   r   r   r'     r(   z4TestRandomGenerators.test_integers.<locals>.<lambda>r   ©r_   r`   ra   c                 S   s   | j dd||d�S )NrW   rP   ©r‹   r6   r8   rŠ   r   r   r   r'     s    ©Ú_sizeÚ_dtypeÚ_bitgenc                 S   s   | j dd|tjd�S )NFTr�   )r9   r   Úbool_rŠ   r   r   r   r'     s    ©r�   r‘   c                 S   s   |   t d¡t d¡¡S r‰   )r9   r   r?   rI   rŠ   r   r   r   r'      s    ©r_   r`   c                 S   s   | j |||||d�S )N)r4   r5   r‹   r6   r7   r8   )r&   r4   r5   r‹   r6   r7   r   r   r   r'   &  s    
 ÿr4   r5   r‹   r6   r7   r!   rW   ©r!   Tr&   r%   )r   rI   r   rD   rB   rH   rE   rC   r?   r	   rF   rf   r’   rw   r   ©r   Ú
test_sizesZtest_dtypesÚbitgen_typesrq   r�   r�   r‘   r   r   r   Útest_integersü   sh       ÿ
 ÿÿ   ÿÿ   ÿ
ÿýz"TestRandomGenerators.test_integersc              (      sØ  ddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfdd	t jfd
d	t jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfddt jfg&}d}|D ]J\‰‰ }| j	ˆˆ |d��( ‡ ‡fdd„}|  
|d d ||d¡ W 5 Q R X �qˆd S )NrW   é   r>   r   l   ÿÿÿl   þÿÿÿ l   ÿÿÿÿ l   þÿÿÿl   ÿÿÿÿlüÿÿÿÿÿÿÿl   þÿ l   ÿÿ iþÿÿiÿÿÿi  ðiþÿ  iÿÿ  rP   iþ  iÿ  iðÿÿéþ   éÿ   é   é   iñÿÿÿ)r<   é   r;   c                    s   | j ˆˆ ||d�S ©Nr�   r8   rŠ   ©r5   r4   r   r   r'   d  s    z:TestRandomGenerators.test_integers_cases.<locals>.<lambda>)r   rH   rI   rE   r   rC   rD   r?   rB   rF   rf   )r   rJ   r‹   r6   rq   r   r¡   r   Útest_integers_cases/  sb    





































Ò0   ÿz(TestRandomGenerators.test_integers_casesc                 C   sÊ   d dddg}t jt jg}d tg}dd„ }|  ¡ � | j|d d d� W 5 Q R X dd„ }|D ]F}|D ]<}|D ]2}| j|||d�� |  ||d ||¡ W 5 Q R X qhq`qXd	d„ }|  |d
dgdt jgddg¡ d S )Nr   r…   r†   c                 S   s   |   ¡ S rg   rQ   rŠ   r   r   r   r'   o  r(   z2TestRandomGenerators.test_random.<locals>.<lambda>r”   c                 S   s   | j ||d�S r    rQ   rŠ   r   r   r   r'   t  r(   rŽ   c                 S   s   | j ||d�S r    rQ   rŠ   r   r   r   r'   }  s    r‹   r6   r•   r%   g        ©r   r   r   r	   rF   rf   rw   r–   r   r   r   Útest_randomi  s2    
ÿÿ  ÿ ÿz TestRandomGenerators.test_randomc                 C   sÊ   d dddg}t jt jg}d tg}dd„ }|  ¡ � | j|d d d� W 5 Q R X dd„ }|D ]F}|D ]<}|D ]2}| j|||d�� |  ||d ||¡ W 5 Q R X qhq`qXd	d„ }|  |d
dgdt jgddg¡ d S )Nr   r…   r†   c                 S   s   |   ¡ S rg   ©Zstandard_normalrŠ   r   r   r   r'   ˆ  r(   z;TestRandomGenerators.test_standard_normal.<locals>.<lambda>r”   c                 S   s   | j ||d�S r    r¥   rŠ   r   r   r   r'   �  s    rŽ   c                 S   s   | j ||d�S r    r¥   rŠ   r   r   r   r'   —  s    r‹   r6   r•   r%   r   r£   r–   r   r   r   Útest_standard_normal‚  s2    
ÿÿ  ÿ ÿz)TestRandomGenerators.test_standard_normalc                 C   sÐ   d dddg}t jt jg}d tg}dd„ }|  ¡ � | j|d d d� W 5 Q R X dd„ }|D ]F}|D ]<}|D ]2}| j|||d�� |  ||d ||¡ W 5 Q R X qhq`qXd	d„ }|  |d
ddgddt jgdddg¡ d S )Nr   r…   r†   c                 S   s   |   ¡ S rg   ©Zstandard_exponentialrŠ   r   r   r   r'   ¢  r(   z@TestRandomGenerators.test_standard_exponential.<locals>.<lambda>r”   c                 S   s   | j ||d�S r    r§   rŠ   r   r   r   r'   §  s    rŽ   c                 S   s   | j |||d�S )N)Úmethodr‹   r6   r§   )r&   r¨   r‹   r6   r   r   r   r'   ²  s    r¨   r‹   r6   Úzigr•   r   r%   r£   r–   r   r   r   Útest_standard_exponentialœ  s2    
ÿÿ  ÿ
 ÿz.TestRandomGenerators.test_standard_exponentialc                 C   sx   d dddg}t jt jg}d tg}dd„ }|D ]F}|D ]<}|D ]2}| j|||d�� |  ||d ||¡ W 5 Q R X q<q4q,d S )Nr   r…   r†   c                 S   s   | j ||dd�S )NÚinv)r‹   r6   r¨   r§   rŠ   r   r   r   r'   ¼  s    zDTestRandomGenerators.test_standard_exponential_inv.<locals>.<lambda>rŽ   )r   r   r   r	   rF   rf   r–   r   r   r   Útest_standard_exponential_inv·  s    ÿ  ÿz2TestRandomGenerators.test_standard_exponential_invc                 C   s¦   d dddg}t jt jg}d tg}dd„ }|D ]H}|D ]>}|D ]4}| j|||d�� |  ||d ||t¡ W 5 Q R X q<q4q,dd„ }|  |dd	d
gddt jgdddg¡ d S )Nr   r…   r†   c                 S   s   | j d||d�S )Nç      @©Úshaper‹   r6   ©Zstandard_gammarŠ   r   r   r   r'   Ë  s    z:TestRandomGenerators.test_standard_gamma.<locals>.<lambda>rŽ   c                 S   s   | j |||d�S )Nr®   r°   )r&   r¯   r‹   r6   r   r   r   r'   Õ  s    r¯   r‹   r6   r­   r•   r&   r%   r   )r   r   r   r	   rF   rf   Úadjusted_ulp_precrw   r–   r   r   r   Útest_standard_gammaÆ  s*    ÿ  þ
 ÿz(TestRandomGenerators.test_standard_gammac                 C   sº   d dddg}d t g}dd„ }|  ¡ � | j|d d td� W 5 Q R X dd„ }|D ]<}|D ]2}| j||d�� |  ||d |d t¡ W 5 Q R X qVqNd	d„ }|  |d
ddgdddgdddg¡ d S )Nr   r…   r†   c                 S   s   |   ¡ S rg   r#   rŠ   r   r   r   r'   â  r(   z2TestRandomGenerators.test_normal.<locals>.<lambda>rŒ   c                 S   s   | j dd|d�S )Nç      ø?rŸ   ©r"   Úscaler‹   r#   rŠ   r   r   r   r'   è  r(   r“   c                 S   s   | j |||d�S ©Nr´   r#   ©r&   r"   rµ   r‹   r   r   r   r'   ï  s    r"   rµ   r‹   r³   rŸ   r•   r&   r%   ©r	   rF   rf   r±   rw   ©r   r—   r˜   rq   r�   r‘   r   r   r   Útest_normalÚ  s.    
þ  þ ÿz TestRandomGenerators.test_normalc                 C   sº   d dddg}d t g}dd„ }|  ¡ � | j|d d td� W 5 Q R X dd„ }|D ]<}|D ]2}| j||d�� |  ||d |d t¡ W 5 Q R X qVqNd	d„ }|  |d
ddgdddgdddg¡ d S )Nr   r…   r†   c                 S   s   |   ¡ S rg   ©ÚuniformrŠ   r   r   r   r'   ü  r(   z3TestRandomGenerators.test_uniform.<locals>.<lambda>rŒ   c                 S   s   | j dd|d�S )Nr³   rŸ   ©r4   r5   r‹   r»   rŠ   r   r   r   r'     r(   r“   c                 S   s   | j |||d�S )Nr½   r»   )r&   r4   r5   r‹   r   r   r   r'   	  s    r4   r5   r‹   r³   rŸ   r•   r&   r%   r¸   r¹   r   r   r   Útest_uniformô  s.    
þ  þ ÿz!TestRandomGenerators.test_uniformc                 C   s°   d dddg}d t g}dd„ }|  ¡ � | j|d d d� W 5 Q R X dd„ }|D ]:}|D ]0}| j||d�� |  ||d |d ¡ W 5 Q R X qTqLd	d„ }|  |d
dgddgddg¡ d S )Nr   r…   r†   c                 S   s   |   ¡ S rg   ©ZexponentialrŠ   r   r   r   r'     r(   z7TestRandomGenerators.test_exponential.<locals>.<lambda>r”   c                 S   s   | j d|d�S ©Nr³   ©rµ   r‹   r¿   rŠ   r   r   r   r'     r(   r“   c                 S   s   | j ||d�S ©NrÁ   r¿   ©r&   rµ   r‹   r   r   r   r'   !  s    rµ   r‹   r³   r•   r&   r%   ©r	   rF   rf   rw   r¹   r   r   r   Útest_exponential  s*    
ÿ  ÿ ÿz%TestRandomGenerators.test_exponentialc                 C   sŒ   d dddg}d t g}dd„ }|D ]<}|D ]2}| j||d�� |  ||d |d t¡ W 5 Q R X q(q dd„ }|  |dd	d
gdddgdddg¡ d S )Nr   r…   r†   c                 S   s   | j dd|d�S )Nr­   r³   ©r¯   rµ   r‹   ©ÚgammarŠ   r   r   r   r'   -  s   ÿz1TestRandomGenerators.test_gamma.<locals>.<lambda>r“   c                 S   s   | j |||d�S )NrÆ   rÇ   )r&   r¯   rµ   r‹   r   r   r   r'   5  s    r¯   rµ   r‹   r­   r³   r•   r&   r%   r¸   r¹   r   r   r   Ú
test_gamma&  s"      þ ÿzTestRandomGenerators.test_gammac                 C   sŒ   d dddg}d t g}dd„ }|D ]<}|D ]2}| j||d�� |  ||d |d t¡ W 5 Q R X q(q dd„ }|  |dd	d
gdddgdddg¡ d S )Nr   r…   r†   c                 S   s   | j dd|d�S )Nr³   g      @©ÚaÚbr‹   ©ÚbetarŠ   r   r   r   r'   A  r(   z0TestRandomGenerators.test_beta.<locals>.<lambda>r“   c                 S   s   | j |||d�S )NrÊ   rÍ   )r&   rË   rÌ   r‹   r   r   r   r'   I  r(   rË   rÌ   r‹   r­   r³   r•   r&   r%   r¸   r¹   r   r   r   Ú	test_beta:  s"      þ ÿzTestRandomGenerators.test_betac                 C   sŒ   d dddg}d t g}dd„ }|D ]<}|D ]2}| j||d�� |  ||d |d t¡ W 5 Q R X q(q dd„ }|  |dd	d
gdddgdddg¡ d S )Nr   r…   r†   c                 S   s   | j dd|d�S )Nr<   rŸ   ©ÚdfnumÚdfdenr‹   ©ÚfrŠ   r   r   r   r'   T  r(   z-TestRandomGenerators.test_f.<locals>.<lambda>r“   c                 S   s   | j |||d�S )NrÐ   rÓ   )r&   rÑ   rÒ   r‹   r   r   r   r'   \  s    rÑ   rÒ   r‹   rW   r!   r•   r&   r%   r¸   r¹   r   r   r   Útest_fM  s"      þ ÿzTestRandomGenerators.test_fc                 C   s†   d dddg}d t g}dd„ }|D ]<}|D ]2}| j||d�� |  ||d |d t¡ W 5 Q R X q(q dd„ }|  |dd	gd
dgddg¡ d S )Nr   r…   r†   c                 S   s   | j d|d�S ©Nr<   ©Údfr‹   ©Z	chisquarerŠ   r   r   r   r'   h  r(   z5TestRandomGenerators.test_chisquare.<locals>.<lambda>r“   c                 S   s   | j ||d�S ©Nr×   rÙ   ©r&   rØ   r‹   r   r   r   r'   p  s    rØ   r‹   r<   r•   r&   r%   r¸   r¹   r   r   r   Útest_chisquarea  s"      þ ÿz#TestRandomGenerators.test_chisquarec                 C   sª   d dddg}d t g}dd„ }|  ¡ � | j|d d d� W 5 Q R X dd„ }|D ]:}|D ]0}| j||d�� |  ||d |d ¡ W 5 Q R X qTqLd	d„ }|  |d
gdgdg¡ d S )Nr   r…   r†   c                 S   s   |   ¡ S rg   ©Zstandard_cauchyrŠ   r   r   r   r'   }  r(   z;TestRandomGenerators.test_standard_cauchy.<locals>.<lambda>r”   c                 S   s   | j |d�S ©N©r‹   rÝ   rŠ   r   r   r   r'   ‚  r(   r“   c                 S   s   | j |d�S rÞ   rÝ   )r&   r‹   r   r   r   r'   ‰  r(   r‹   r•   r%   rÄ   r¹   r   r   r   Útest_standard_cauchyu  s*    
ÿ  ÿ
 ÿz)TestRandomGenerators.test_standard_cauchyc                 C   s„   d dddg}d t g}dd„ }|D ]:}|D ]0}| j||d�� |  ||d |d ¡ W 5 Q R X q(q dd„ }|  |dd	gd
dgddg¡ d S )Nr   r…   r†   c                 S   s   | j d|d�S ©Nç      ð?©rË   r‹   ©ZparetorŠ   r   r   r   r'   ”  r(   z2TestRandomGenerators.test_pareto.<locals>.<lambda>r“   c                 S   s   | j ||d�S ©Nrã   rä   ©r&   rË   r‹   r   r   r   r'   ›  r(   rË   r‹   r!   r•   r&   r%   rÄ   r¹   r   r   r   Útest_pareto�  s       ÿ ÿz TestRandomGenerators.test_paretoc                 C   s„   d dddg}d t g}dd„ }|D ]:}|D ]0}| j||d�� |  ||d |d ¡ W 5 Q R X q(q dd„ }|  |dd	gd
dgddg¡ d S )Nr   r…   r†   c                 S   s   | j d|d�S rá   ©ZweibullrŠ   r   r   r   r'   ¦  r(   z3TestRandomGenerators.test_weibull.<locals>.<lambda>r“   c                 S   s   | j ||d�S rå   rè   ræ   r   r   r   r'   ­  r(   rË   r‹   r!   r•   r&   r%   rÄ   r¹   r   r   r   Útest_weibullŸ  s       ÿ ÿz!TestRandomGenerators.test_weibullc                 C   s„   d dddg}d t g}dd„ }|D ]:}|D ]0}| j||d�� |  ||d |d ¡ W 5 Q R X q(q dd„ }|  |dd	gd
dgddg¡ d S )Nr   r…   r†   c                 S   s   | j d|d�S )Nç      è?rã   ©ÚpowerrŠ   r   r   r   r'   ¸  r(   z1TestRandomGenerators.test_power.<locals>.<lambda>r“   c                 S   s   | j ||d�S rå   rë   ræ   r   r   r   r'   ¿  r(   rË   r‹   rê   r•   r&   r%   rÄ   r¹   r   r   r   Ú
test_power±  s       ÿ ÿzTestRandomGenerators.test_powerc                 C   sº   d dddg}d t g}dd„ }|  ¡ � | j|d d td� W 5 Q R X dd„ }|D ]<}|D ]2}| j||d�� |  ||d |d t¡ W 5 Q R X qVqNd	d„ }|  |d
ddgdddgdddg¡ d S )Nr   r…   r†   c                 S   s   |   ¡ S rg   ©ZlaplacerŠ   r   r   r   r'   Ë  r(   z3TestRandomGenerators.test_laplace.<locals>.<lambda>rŒ   c                 S   s   | j dd|d�S ©Nrâ   r³   r´   rî   rŠ   r   r   r   r'   Ñ  s    r“   c                 S   s   | j |||d�S r¶   rî   r·   r   r   r   r'   Ú  s    r"   rµ   r‹   râ   r³   r•   r&   r%   r¸   r¹   r   r   r   Útest_laplaceÃ  s.    
þ  þ ÿz!TestRandomGenerators.test_laplacec                 C   sº   d dddg}d t g}dd„ }|  ¡ � | j|d d td� W 5 Q R X dd„ }|D ]<}|D ]2}| j||d�� |  ||d |d t¡ W 5 Q R X qVqNd	d„ }|  |d
ddgdddgdddg¡ d S )Nr   r…   r†   c                 S   s   |   ¡ S rg   ©ZlogisticrŠ   r   r   r   r'   ç  r(   z4TestRandomGenerators.test_logistic.<locals>.<lambda>rŒ   c                 S   s   | j dd|d�S rï   rñ   rŠ   r   r   r   r'   í  s    r“   c                 S   s   | j |||d�S r¶   rñ   r·   r   r   r   r'   ö  s    r"   rµ   r‹   râ   r³   r•   r&   r%   r¸   r¹   r   r   r   Útest_logisticß  s.    
þ  þ ÿz"TestRandomGenerators.test_logisticc                 C   sº   d dddg}d t g}dd„ }|  ¡ � | j|d d td� W 5 Q R X dd„ }|D ]<}|D ]2}| j||d�� |  ||d |d t¡ W 5 Q R X qVqNd	d„ }|  |d
ddgdddgdddg¡ d S )Nr   r…   r†   c                 S   s   |   ¡ S rg   ©Z	lognormalrŠ   r   r   r   r'     r(   z5TestRandomGenerators.test_lognormal.<locals>.<lambda>rŒ   c                 S   s   | j dd|d�S )Nr­   r³   ©ÚmeanÚsigmar‹   ró   rŠ   r   r   r   r'   	  s    r“   c                 S   s   | j |||d�S )Nrô   ró   )r&   rõ   rö   r‹   r   r   r   r'     s    rõ   rö   r‹   râ   r³   r•   r&   r%   r¸   r¹   r   r   r   Útest_lognormalû  s.    
þ  þ ÿz#TestRandomGenerators.test_lognormalc                 C   s°   d dddg}d t g}dd„ }|  ¡ � | j|d d d� W 5 Q R X dd„ }|D ]:}|D ]0}| j||d�� |  ||d |d ¡ W 5 Q R X qTqLd	d„ }|  |d
dgddgddg¡ d S )Nr   r…   r†   c                 S   s   |   ¡ S rg   ©ZrayleighrŠ   r   r   r   r'     r(   z4TestRandomGenerators.test_rayleigh.<locals>.<lambda>r”   c                 S   s   | j d|d�S rÀ   rø   rŠ   r   r   r   r'   $  r(   r“   c                 S   s   | j ||d�S rÂ   rø   rÃ   r   r   r   r'   +  r(   rµ   r‹   r³   r•   r&   r%   rÄ   r¹   r   r   r   Útest_rayleigh  s*    
ÿ  ÿ ÿz"TestRandomGenerators.test_rayleighc                 C   s†   d dddg}d t g}dd„ }|D ]<}|D ]2}| j||d�� |  ||d |d t¡ W 5 Q R X q(q dd„ }|  |dd	gd
dgddg¡ d S )Nr   r…   r†   c                 S   s   | j d|d�S rÖ   ©Z
standard_trŠ   r   r   r   r'   6  r(   z6TestRandomGenerators.test_standard_t.<locals>.<lambda>r“   c                 S   s   | j ||d�S rÚ   rú   rÛ   r   r   r   r'   >  r(   rØ   r‹   r<   r•   r&   r%   r¸   r¹   r   r   r   Útest_standard_t/  s"      þ ÿz$TestRandomGenerators.test_standard_tc                 C   sŒ   d dddg}d t g}dd„ }|D ]<}|D ]2}| j||d�� |  ||d |d t¡ W 5 Q R X q(q dd„ }|  |dd	d
gdddgdddg¡ d S )Nr   r…   r†   c                 S   s   | j dd|d�S )Nr­   r³   ©rõ   rµ   r‹   ©ZwaldrŠ   r   r   r   r'   I  r(   z0TestRandomGenerators.test_wald.<locals>.<lambda>r“   c                 S   s   | j |||d�S )Nrü   rý   )r&   rõ   rµ   r‹   r   r   r   r'   Q  s    rõ   rµ   r‹   râ   r³   r•   r&   r%   r¸   r¹   r   r   r   Ú	test_waldB  s"      þ ÿzTestRandomGenerators.test_waldc                 C   s†   d dddg}d t g}dd„ }|D ]<}|D ]2}| j||d�� |  ||d |d t¡ W 5 Q R X q(q dd„ }|  |dd	gd
dgddg¡ d S )Nr   r…   r†   c                 S   s   | j d|d�S )Nrê   ©Úpr‹   ©Z	geometricrŠ   r   r   r   r'   ]  r(   z5TestRandomGenerators.test_geometric.<locals>.<lambda>r“   c                 S   s   | j ||d�S ©Nrÿ   r  ©r&   r   r‹   r   r   r   r'   e  r(   r   r‹   rê   r•   r&   r%   r¸   r¹   r   r   r   Útest_geometricV  s"      þ ÿz#TestRandomGenerators.test_geometricc                 C   s„   d dddg}d t g}dd„ }|D ]:}|D ]0}| j||d�� |  ||d |d ¡ W 5 Q R X q(q dd„ }|  |dd	gd
dgddg¡ d S )Nr   r…   r†   c                 S   s   | j d|d�S )Nr³   rã   ©ZzipfrŠ   r   r   r   r'   p  r(   z0TestRandomGenerators.test_zipf.<locals>.<lambda>r“   c                 S   s   | j ||d�S rå   r  ræ   r   r   r   r'   w  r(   rË   r‹   r!   r•   r&   r%   rÄ   r¹   r   r   r   Ú	test_zipfi  s       ÿ ÿzTestRandomGenerators.test_zipfc                 C   s�   d dddg}d t g}dd„ }|D ]:}|D ]0}| j||d�� |  ||d |d ¡ W 5 Q R X q(q dd„ }|  |dd	d
dgddddgddddg¡ d S )Nr   r…   r†   c                 S   s   | j ddd|d�S )Nr   rŸ   rW   ©ÚleftÚmodeÚrightr‹   ©Ú
triangularrŠ   r   r   r   r'   ‚  s    z6TestRandomGenerators.test_triangular.<locals>.<lambda>r“   c                 S   s   | j ||||d�S )Nr  r  )r&   r  r	  r
  r‹   r   r   r   r'   Š  s    r  r	  r
  r‹   r   rŸ   rW   r•   r&   r%   rÄ   r¹   r   r   r   Útest_triangular{  s       ÿ
 
ÿz$TestRandomGenerators.test_triangularc                 C   s†   d dddg}d t g}dd„ }|D ]<}|D ]2}| j||d�� |  ||d |d t¡ W 5 Q R X q(q dd„ }|  |dd	gd
dgddg¡ d S )Nr   r…   r†   c                 S   s   | j d|d�S )Nrž   ©Úlamr‹   ©ZpoissonrŠ   r   r   r   r'   –  r(   z3TestRandomGenerators.test_poisson.<locals>.<lambda>r“   c                 S   s   | j ||d�S )Nr  r  )r&   r  r‹   r   r   r   r'   ž  r(   r  r‹   rž   r•   r&   r%   r¸   r¹   r   r   r   Útest_poisson�  s"      þ ÿz!TestRandomGenerators.test_poissonc                 C   sŒ   d dddg}d t g}dd„ }|D ]<}|D ]2}| j||d�� |  ||d |d t¡ W 5 Q R X q(q dd„ }|  |dd	d
gdddgdddg¡ d S )Nr   r…   r†   c                 S   s   | j dd|d�S )Nr!   gš™™™™™¹?©Únr   r‹   ©Znegative_binomialrŠ   r   r   r   r'   ©  s    z=TestRandomGenerators.test_negative_binomial.<locals>.<lambda>r“   c                 S   s   | j |||d�S )Nr  r  )r&   r  r   r‹   r   r   r   r'   ²  s    r  r   r‹   r!   rê   r•   r&   r%   r¸   r¹   r   r   r   Útest_negative_binomial¢  s"      þ ÿz+TestRandomGenerators.test_negative_binomialc              
      sr   dg}d t g}dddg}t |||¡D ]F\}}‰ | j||ˆ d��& ‡ fdd„}|  ||d |d d¡ W 5 Q R X q&d S )Nr†   r   r!   r<   ©r�   r‘   Ú_axisc                    s   | j |d�}| j|ˆ d� |S )Nrß   ©Úaxis)r+   Úshuffle©r&   r‹   r6   Úarr©r  r   r   rq   Ã  s    z4TestRandomGenerators.test_shuffle.<locals>.dist_func)r	   Ú	itertoolsÚproductrF   rf   )r   r—   r˜   Úaxesr�   r‘   rq   r   r  r   Útest_shuffleº  s    
þ  þz!TestRandomGenerators.test_shufflec                 C   sN   t  g ¡}t  g ¡}dd„ }t |¡}dd„ }|  ||ƒ |ƒ||ƒ |ƒ¡ d S )Nc                 S   s   |   |¡ |S rg   ©r  ©r&   r  r   r   r   rq   Ï  s    
z:TestRandomGenerators.test_shuffle_empty.<locals>.dist_funcc                   S   s   t j d¡S ©Nr!   ©r   r+   r,   r   r   r   r   r'   Ô  r(   z9TestRandomGenerators.test_shuffle_empty.<locals>.<lambda>©r   Úarrayr-   r.   r^   ©r   rË   rÌ   rq   Znb_funcr/   r   r   r   Útest_shuffle_emptyË  s    


z'TestRandomGenerators.test_shuffle_emptyc              	   C   sŽ   |   ¡  dd„ }|  |ddgt dddg¡dgddg¡ tj d	¡}|  t¡�$}t 	|¡|t dddg¡d
ƒ W 5 Q R X |  
dt|jƒ¡ d S )Nc                 S   s   | j ||d� |S ©Nr  r"  ©r&   r  r  r   r   r   rq   Û  s    z:TestRandomGenerators.test_shuffle_check.<locals>.dist_funcr&   r  rŸ   é   rW   r   r!   r<   ú)Axis is out of bounds for the given array©Údisable_leak_checkrw   r   r'  r+   r,   r   Ú
IndexErrorr-   r.   r   r   r   ©r   rq   r/   r   r   r   r   Útest_shuffle_checkØ  s     ÿ(þz'TestRandomGenerators.test_shuffle_checkc              
   C   s´   dg}d t g}dddddg}t |||¡D ]B\}}}| j|||d��" dd	„ }|  ||d |d d¡ W 5 Q R X q*t d
d„ ¡}tj 	¡ }|jdd�}	|	 
¡ }
|||	ƒ |  |	|
¡ d S )Nr†   r   r!   r<   éÿÿÿÿéþÿÿÿr  c                 S   s   | j |d�}| j|dd�S )Nrß   r!   r  )r+   Úpermutationr  r   r   r   rq   ö  s    z8TestRandomGenerators.test_permutation.<locals>.dist_funcc                 S   s
   |   |¡S rg   ©r5  )r/   r  r   r   r   r'   þ  r(   z7TestRandomGenerators.test_permutation.<locals>.<lambda>)rP   r‡   rß   )r	   r  r  rF   rf   r-   r.   r   r+   r,   rp   r^   )r   r—   r˜   r   r�   r‘   r  rq   r/   r  Zarr_cpyr   r   r   Útest_permutationí  s*    þ  þ

z%TestRandomGenerators.test_permutationc              	   C   sÔ   |   ¡  dd„ }|  |ddgt dddg¡dgddg¡ tj d	¡}|  t¡�$}t 	|¡|t dddg¡d
ƒ W 5 Q R X |  
dt|jƒ¡ |  t¡�$}t 	|¡|t dddg¡dƒ W 5 Q R X |  
dt|jƒ¡ d S )Nc                 S   s   | j ||d�S r*  r6  r+  r   r   r   rq     s    zBTestRandomGenerators.test_permutation_exception.<locals>.dist_funcr&   r  rŸ   r,  rW   r   r!   r<   r-  r4  r.  r1  r   r   r   Útest_permutation_exception  s&     ÿ(þ(þz/TestRandomGenerators.test_permutation_exceptionc                 C   sN   t  g ¡}t  g ¡}dd„ }t |¡}dd„ }|  ||ƒ |ƒ||ƒ |ƒ¡ d S )Nc                 S   s
   |   |¡S rg   r6  r#  r   r   r   rq      s    z>TestRandomGenerators.test_permutation_empty.<locals>.dist_funcc                   S   s   t j d¡S r$  r%  r   r   r   r   r'   $  r(   z=TestRandomGenerators.test_permutation_empty.<locals>.<lambda>r&  r(  r   r   r   Útest_permutation_empty  s    


z+TestRandomGenerators.test_permutation_emptyc              
   C   s6  d dddg}d t g}dd„ }t ||¡D ]4\}}| j||d�� |  ||d |d ¡ W 5 Q R X q(dd„ }dd	d
g}|  |dddg|dddg¡ tj ¡ }|g| }t	 
|¡}|  t¡�}	| ¡ }
d|
d< ||
Ž  W 5 Q R X |  dt|	jƒ¡ |  t¡�}	| ¡ }
d|
d< ||
Ž  W 5 Q R X |  dt|	jƒ¡ |  ¡  d S )Nr   r…   r†   c                 S   s   | j dd|d�S ©Nç      @g      4@rß   ©Znoncentral_chisquarerŠ   r   r   r   r'   /  s    z@TestRandomGenerators.test_noncentral_chisquare.<locals>.<lambda>r“   c                 S   s   | j |||d�S )N)rØ   Únoncr‹   r<  )r&   rØ   r=  r‹   r   r   r   r'   6  s    r;  r­   r•   rØ   r=  r‹   r&   r%   r   r!   zdf <= 0r3  r<   únonc < 0)r	   r  r  rF   rf   rw   r   r+   r,   r-   r.   r   rG   rp   r   r   r   r/  ©r   r—   r˜   rq   r�   r‘   rs   r/   rv   r   ru   r   r   r   Útest_noncentral_chisquare(  s<      ÿ
 ÿ


z.TestRandomGenerators.test_noncentral_chisquarec              
   C   s~  d dddg}d t g}dd„ }t ||¡D ]6\}}| j||d�� |  ||d |d t¡ W 5 Q R X q(dd„ }dd	dd
g}|  |ddddg|ddddg¡ tj 	¡ }|g| }t
 |¡}|  t¡�}	| ¡ }
d|
d< ||
Ž  W 5 Q R X |  dt|	jƒ¡ |  t¡�}	| ¡ }
d|
d< ||
Ž  W 5 Q R X |  dt|	jƒ¡ |  t¡�}	| ¡ }
d|
d< ||
Ž  W 5 Q R X |  dt|	jƒ¡ |  ¡  d S )Nr   r…   r†   c                 S   s   | j ddd|d�S r:  ©Znoncentral_frŠ   r   r   r   r'   V  s    z8TestRandomGenerators.test_noncentral_f.<locals>.<lambda>r“   c                 S   s   | j ||||d�S )N)rÑ   rÒ   r=  r‹   rA  )r&   rÑ   rÒ   r=  r‹   r   r   r   r'   ^  s    r;  r­   r•   rÑ   rÒ   r=  r‹   r&   r%   r   r!   z
dfnum <= 0r<   z
dfden <= 0r3  rŸ   r>  )r	   r  r  rF   rf   r±   rw   r   r+   r,   r-   r.   r   rG   rp   r   r   r   r/  r?  r   r   r   Útest_noncentral_fO  sH      þ 
ÿ


z&TestRandomGenerators.test_noncentral_fc              
   C   s  d dddg}d t g}dd„ }t ||¡D ]4\}}| j||d�� |  ||d |d ¡ W 5 Q R X q(dd„ }dd	g}|  |d
dg|ddg¡ tj d¡}|g| }t	 
|¡}ddtjfD ]D}	|  t¡�}
| ¡ }|	|d< ||Ž  W 5 Q R X |  dt|
jƒ¡ q²|  ¡  d S )Nr   r…   r†   c                 S   s   | j d|d�S )Nç333333Ó?rß   ©Z	logseriesrŠ   r   r   r   r'   „  s    z5TestRandomGenerators.test_logseries.<locals>.<lambda>r“   c                 S   s   | j ||d�S r  rD  r  r   r   r   r'   ‹  s    rC  r•   r   r‹   r&   r%   r!   gš™™™™™¹¿zp < 0, p >= 1 or p is NaN)r	   r  r  rF   rf   rw   r   r+   r,   r-   r.   Únanr   rG   rp   r   r   r   r/  )r   r—   r˜   rq   r�   r‘   rs   r/   rv   Ú_pr   ru   r   r   r   Útest_logseries}  s4      ÿ ÿ

z#TestRandomGenerators.test_logseries)NNNNrW   )r!   )/rL   rM   rN   rf   rn   rw   rz   r   r„   r™   r¢   r¤   r¦   rª   r¬   r²   rº   r¾   rÅ   rÉ   rÏ   rÕ   rÜ   rà   rç   ré   rí   rð   rò   r÷   rù   rû   rþ   r  r  r  r  r  r!  r)  r2  r7  r8  r9  r@  rB  rG  r   r   r   r   rV   ›   sb          ý
(
3:'.rV   c                   @   s   e Zd Zdd„ ZdS )ÚTestGeneratorCachingc                 C   sr   t j d¡}t j d¡}tjdd„ dd�}|  | d¡||ƒ¡ |  | d¡||ƒ¡ ttƒ}|  |d d¡ d S )	Nr!   c                 S   s
   |   d¡S rO   rQ   r%   r   r   r   r'   ¥  r(   z=TestGeneratorCaching.test_randomgen_caching.<locals>.<lambda>Tr)   rP   Úexitcoder   )	r   r+   r,   r-   r.   r^   r   rU   r   )r   rS   rT   r1   Úresr   r   r   Útest_randomgen_caching¡  s    z+TestGeneratorCaching.test_randomgen_cachingN)rL   rM   rN   rK  r   r   r   r   rH     s   rH  )r-   Únumpyr   r|   r  r{   r   Znumba.tests.supportr   r   Z!numba.np.random.generator_methodsr   Znumba.np.random.generator_corer   r   r   Znumpy.randomr	   r
   Znumba.core.errorsr   r   r   r±   r   rU   rV   rH  r   r   r   r   Ú<module>   s0   {        