Ë
    èÿæi/! ã                   ó�  — d dl Z d dlZd dlZd dlZd dlZ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Zd dlZd dlZd dlmZmZmZ d dlmZ d dlmZmZmZ d dlmZ dZd„ Zd	„ Zd
„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2d„ Z3d „ Z4 e3d!«      Z5 e1d"«      Z6 e2d#«      Z7 e3d$«      Z8 e1d%«      Z9 e2d&«      Z:d'„ Z;d(„ Z<d)„ Z=d*„ Z>d+„ Z? G d,„ d-e«      Z@ G d.„ d/e@«      ZA G d0„ d1e@«      ZB G d2„ d3e@«      ZC G d4„ d5e@«      ZD G d6„ d7e@«      ZE G d8„ d9e@«      ZF G d:„ d;e@«      ZG ed<d<¬=«      d>„ «       ZHd?ZI ed<d<¬=«      d@„ «       ZJ G dA„ dBe«      ZK G dC„ dDeK«      ZL ejš                  ejœ                  dEk(  dF«       G dG„ dHeK«      «       ZO G dI„ dJe«      ZPeQdKk(  r ej¤                  «        yy)Lé    N)Údedent)ÚjitÚ
_helperlibÚnjit)Útypes)ÚTestCaseÚcompile_functionÚtag)ÚTypingErrorép  c                  ó*   — t        j                  «       S ©N)r   Úrnd_get_py_state_ptr© ó    úl/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_random.pyÚget_py_state_ptrr      ó   € Ü×*Ñ*Ó,Ð,r   c                  ó*   — t        j                  «       S r   )r   Úrnd_get_np_state_ptrr   r   r   Úget_np_state_ptrr      r   r   c                 ó@   — t         j                  j                  | «      S r   ©ÚnpÚrandomÚrandint©Úas    r   Únumpy_randint1r   #   s   € Ü�9‰9×Ñ˜QÓÐr   c                 óB   — t         j                  j                  | |«      S r   r   ©r   Úbs     r   Únumpy_randint2r#   &   s   € Ü�9‰9×Ñ˜Q Ó"Ð"r   c                 ó.   — t        j                  | |«      S r   )r   r   r!   s     r   Úrandom_randintr%   )   s   € Ü�>‰>˜!˜QÓÐr   c                 ó,   — t        j                  | «      S r   ©r   Ú	randranger   s    r   Úrandom_randrange1r)   ,   s   € Ü×Ñ˜AÓÐr   c                 ó.   — t        j                  | |«      S r   r'   r!   s     r   Úrandom_randrange2r+   /   s   € Ü×Ñ˜A˜qÓ!Ð!r   c                 ó0   — t        j                  | ||«      S r   r'   )r   r"   Úcs      r   Úrandom_randrange3r.   2   s   € Ü×Ñ˜A˜q !Ó$Ð$r   c                 ó@   — t         j                  j                  | «      S r   ©r   r   Úchoicer   s    r   Únumpy_choice1r2   5   s   € Ü�9‰9×Ñ˜AÓÐr   c                 óD   — t         j                  j                  | |¬«      S ©N©Úsizer0   ©r   r6   s     r   Únumpy_choice2r8   8   s   € Ü�9‰9×Ñ˜A DÐÓ)Ð)r   c                 óF   — t         j                  j                  | ||¬«      S )N)r6   Úreplacer0   )r   r6   r:   s      r   Únumpy_choice3r;   ;   s   € Ü�9‰9×Ñ˜A D°'ÐÓ:Ð:r   c                 óB   — t         j                  j                  | |«      S r   ©r   r   Úmultinomial)ÚnÚpvalss     r   Únumpy_multinomial2rA   >   s   € Ü�9‰9× Ñ   EÓ*Ð*r   c                 óF   — t         j                  j                  | ||¬«      S )N)r@   r6   r=   ©r?   r@   r6   s      r   Únumpy_multinomial3rD   A   s   € Ü�9‰9× Ñ  ¨%°dÐ Ó;Ð;r   c                 óD   — t         j                  j                  | |¬«      S r4   ©r   r   Ú	dirichlet©Úalphar6   s     r   Únumpy_dirichletrJ   D   s   € Ü�9‰9×Ñ˜u¨4ÐÓ0Ð0r   c                 ó@   — t         j                  j                  | «      S r   rF   )rI   s    r   Únumpy_dirichlet_defaultrL   G   s   € Ü�9‰9×Ñ˜uÓ%Ð%r   c                 óF   — t         j                  j                  | ||¬«      S r4   ©r   r   Únoncentral_chisquare©ÚdfÚnoncr6   s      r   Únumpy_noncentral_chisquarerS   J   s   € Ü�9‰9×)Ñ)¨"¨d¸Ð)Ó>Ð>r   c                 óB   — t         j                  j                  | |«      S r   rN   )rQ   rR   s     r   Ú"numpy_noncentral_chisquare_defaultrU   M   s   € Ü�9‰9×)Ñ)¨"¨dÓ3Ð3r   c                 ó  — t         j                  j                  | «       t         j                  j                  ||f«      }t         j                  j                  | «       t         j                  j                  ||«      }||fS r   )r   r   ÚseedÚrand©rW   r   r"   ÚexpectedÚgots        r   Únumpy_check_randr\   P   sX   € Ü‡I�I‡N�N�4ÔÜ�y‰y×Ñ  A Ó'€HÜ‡I�I‡N�N�4ÔÜ
�)‰)�.‰.˜˜AÓ
€CØ�Sˆ=Ðr   c                 ó  — t         j                  j                  | «       t         j                  j                  ||f«      }t         j                  j                  | «       t         j                  j	                  ||«      }||fS r   )r   r   rW   Ústandard_normalÚrandnrY   s        r   Únumpy_check_randnr`   W   sX   € Ü‡I�I‡N�N�4ÔÜ�y‰y×(Ñ(¨!¨Q¨Ó0€HÜ‡I�I‡N�N�4ÔÜ
�)‰)�/‰/˜!˜QÓ
€CØ�Sˆ=Ðr   c                 ój   — dt        «       z  }t        d|t        «       «      } t        d¬«      |«      S )Nz@def func(%(argstring)s):
        return %(name)s(%(argstring)s)
ÚfuncT©Únopython)Úlocalsr	   Úglobalsr   )ÚnameÚ	argstringÚcodeÚpyfuncs       r   Újit_with_argsrk   ^   s7   € ðäƒhñ€Dô ˜f d¬G«IÓ6€FØŒ3˜Ô˜fÓ%Ð%r   c                 óÜ   — dj                  |D �cg c]	  }|› d|› �‘Œ c}«      }dj                  |«      }d|› d| › d|› d�}t        d|t        «       «      } t        d¬	«      |«      S c c}w )
NÚ,Ú=z	def func(z):
        return Ú(z)
rb   Trc   )Újoinr	   rf   r   )rg   Ú
kwarg_listÚkwÚcall_args_with_kwargsÚ	signatureri   rj   s          r   Újit_with_kwargsru   e   s‡   € àŸH™H¹ZÓ%H¹Z°r¨¨¨A¨b¨T¢l¸ZÑ%HÓIÐØ—‘˜Ó$€IØ˜˜ð $Øˆv�QÐ,Ð-ð .ð€Dô ˜f d¬G«IÓ6€FØŒ3˜Ô˜fÓ%Ð%ùò &Is   �A)c                 ó   — t        | d«      S )NÚ ©rk   ©rg   s    r   Újit_nullaryrz   o   s   € Ü˜˜rÓ"Ð"r   c                 ó   — t        | d«      S )Nr   rx   ry   s    r   Ú	jit_unaryr|   r   s   € Ü˜˜sÓ#Ð#r   c                 ó   — t        | d«      S )Nza, brx   ry   s    r   Ú
jit_binaryr~   u   s   € Ü˜˜vÓ&Ð&r   c                 ó   — t        | d«      S )Nza, b, crx   ry   s    r   Újit_ternaryr€   x   s   € Ü˜˜yÓ)Ð)r   úrandom.gausszrandom.randomzrandom.seedúnp.random.normalúnp.random.randomúnp.random.seedc                 ó†   — | j                  «       d   }|dd |d   }}t        j                  ||t        |«      f«       ||fS )z?
    Copy state of Python random *r* to Numba state *ptr*.
    é   Néÿÿÿÿ)Úgetstater   Úrnd_set_stateÚlist)ÚrÚptrÚmtÚintsÚindexs        r   Ú_copy_py_stater�   …   sI   € ð 
�‰‹�a‰€BØ�S�b�'˜2˜b™6ˆ%€DÜ×Ñ˜S 5¬$¨t«*Ð"5Ô6Ø�ˆ;Ðr   c           
      óž   — | j                  «       dd \  }}t        j                  |||D �cg c]  }t        |«      ‘Œ c}f«       ||fS c c}w )z>
    Copy state of Numpy random *r* to Numba state *ptr*.
    r†   é   )Ú	get_stater   r‰   Úint)r‹   rŒ   rŽ   r�   Úxs        r   Ú_copy_np_stater–   Ž   sR   € ð —+‘+“-  !Ð$�K€Dˆ%Ü×Ñ˜S 5¹4Ó*@¹4°a¬3¨q­6¸4Ñ*@Ð"AÔBØ�ˆ;Ðùò +As   ¬A
c                 óð   — | j                  «       \  }}}|d   }|d d }t        |«      dk(  sJ ‚dt        j                  |d¬«      |f}|€|dz  }n|d|fz  }t        j                  j                  |«       y )Nr‡   r   ÚMT19937Úuint32©Údtype)r   ç        r†   )rˆ   Úlenr   Úarrayr   Ú	set_state)r‹   Ú_verÚmt_stÚ_gauss_nextÚmt_posÚmt_intsÚnp_sts          r   Úsync_to_numpyr¦   –   s‚   € Ø Ÿz™z›|Ñ€Dˆ%�Ø�2‰Y€FØ�C�Rˆj€GÜˆw‹<˜3ÒÐÐàœŸ™ °Ô9¸6ÐB€EØÐØ�Ñ‰à�!�[Ð!Ñ!ˆä‡I�I×Ñ˜Õr   c                 ó2   — d| j                  |dz  d«      z  S )Nç       @ç      ð?)Úgammavariate)r‹   rQ   s     r   Úpy_chisquarer«   §   s   € Ø�—‘  S¡¨#Ó.Ñ.Ð.r   c                 ó@   — t        | |«      |z  t        | |«      |z  z  S r   )r«   )r‹   ÚnumÚdenoms      r   Úpy_fr¯   ª   s*   € Ü˜!˜SÓ! EÑ)Ü˜!˜UÓ# cÑ)ñ+ð ,r   c                   ó   — e Zd Zdd„Zdd„Zy)ÚBaseTestc                 óH   — t        j                  |«      }t        ||«       |S r   )r   ÚRandomr�   ©ÚselfrŒ   rW   r‹   s       r   Ú_follow_cpythonzBaseTest._follow_cpython±   s   € Ü�M‰M˜$ÓˆÜ�q˜#ÔØˆr   c                 ó\   — t         j                  j                  |«      }t        ||«       |S r   )r   r   ÚRandomStater–   r´   s       r   Ú_follow_numpyzBaseTest._follow_numpy¶   s%   € Ü�I‰I×!Ñ! $Ó'ˆÜ�q˜#ÔØˆr   N©é   )Ú__name__Ú
__module__Ú__qualname__r¶   r¹   r   r   r   r±   r±   ¯   s   „ óô
r   r±   c                   ó@   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy
)ÚTestInternalsz9
    Test low-level internals of the implementation.
    c                 ó¬  — t        j                  |«      }|\  }}| j                  |t        «       | j                  |t        «       | j                  t        |«      t        «       |dz  t        z  }t        t        «      D �cg c]  }|dz  ‘Œ	 }}t        j                  |||f«       | j                  t        j                  |«      ||f«       y c c}w )Ni§† r’   )
r   Úrnd_get_stateÚassertIsInstancer”   rŠ   ÚassertEqualr�   ÚNÚranger‰   )rµ   rŒ   ÚstateÚirŽ   Újs         r   Ú_check_get_set_statez"TestInternals._check_get_set_stateÁ   s±   € Ü×(Ñ(¨Ó-ˆØ‰ˆˆ4Ø×Ñ˜a¤Ô%Ø×Ñ˜d¤DÔ)Ø×Ñœ˜T›¤AÔ&Ø�‰Zœ1ÑˆÜ$¤QœxÓ(™x˜!��A“˜xˆÐ(ä× Ñ   q¨$ iÔ0Ø×Ñœ×1Ñ1°#Ó6¸¸D¸	ÕBùò )s   ÂCc                 ób  — t        j                  «       }t        ||«      \  }}t        |t        dz   d«      D ]  }|j                  «        Œ t        j                  |«       |j                  «       d   }|d d |d   }}| j                  t        j                  |«      d   t        |«      «       y )Nr†   r»   r‡   )r   r³   r�   rÆ   rÅ   r   Úrnd_shufflerˆ   rÄ   rÂ   rŠ   )rµ   rŒ   r‹   rŽ   r�   rÈ   r�   s          r   Ú_check_shufflezTestInternals._check_shuffleÍ   s‘   € ä�M‰M‹OˆÜ$ Q¨Ó,‰ˆˆeä�uœa !™e QÖ'ˆAØ�H‰H�Jð (ä×Ñ˜sÔ#à�Z‰Z‹\˜!‰_ˆØ˜˜"�g˜r "™vˆeˆØ×Ñœ×1Ñ1°#Ó6°qÑ9¼4À»:ÕFr   c                 ól  — t         j                  j                  «       }dD ]‘  }|j                  t        j                  |«      «       |j                  «       }t        |d   «      }|d   }|t        k(  sJ ‚t        j                  ||«       | j                  t        j                  |«      ||f«       Œ“ y )N)r   r†   é}   l   ûÿ r†   r»   )r   r   r¸   rW   r™   r“   rŠ   rÅ   r   Úrnd_seedrÄ   rÂ   )rµ   rŒ   r‹   rÈ   ÚstrŽ   r�   s          r   Ú_check_initzTestInternals._check_initÚ   s�   € ô �I‰I×!Ñ!Ó#ˆÛ'ˆAà�F‰F”2—9‘9˜Q“<Ô Ø—‘“ˆBÜ˜˜1™“;ˆDØ�q‘EˆEØœA’:Ð�:Ü×Ñ  QÔ'Ø×ÑœZ×5Ñ5°cÓ:¸UÀD¸MÕJñ (r   c                 ó`  — g }t        d«      D ]q  }t        j                  |d«       t        j                  |t        j                  d«      «       |j                  t        t        j                  |«      d   «      «       Œs | j                  t        t        |«      «      t        |«      «       y )Né
   r   i   r†   )rÆ   r   rÐ   ÚosÚurandomÚappendÚtuplerÂ   rÄ   r�   Úset)rµ   rŒ   ÚstatesrÈ   s       r   Ú_check_perturbzTestInternals._check_perturbè   s}   € ØˆÜ�r–ˆAä×Ñ  QÔ'ä×Ñ ¤R§Z¡Z°£_Ô5Ø�M‰Mœ%¤
× 8Ñ 8¸Ó =¸aÑ @ÓAÕBð ð 	×ÑœœS ›[Ó)¬3¨v«;Õ7r   c                 ó6   — | j                  t        «       «       y r   )rÊ   r   ©rµ   s    r   Útest_get_set_statez TestInternals.test_get_set_stateó   s   € Ø×!Ñ!Ô"2Ó"4Õ5r   c                 ó6   — | j                  t        «       «       y r   )rÍ   r   rÝ   s    r   Útest_shufflezTestInternals.test_shuffleö   ó   € Ø×ÑÔ,Ó.Õ/r   c                 ó6   — | j                  t        «       «       y r   )rÒ   r   rÝ   s    r   Ú	test_initzTestInternals.test_initù   s   € Ø×ÑÔ)Ó+Õ,r   c                 ó6   — | j                  t        «       «       y r   )rÛ   r   rÝ   s    r   Útest_perturbzTestInternals.test_perturbü   rá   r   N)r¼   r½   r¾   Ú__doc__rÊ   rÍ   rÒ   rÛ   rÞ   rà   rã   rå   r   r   r   rÀ   rÀ   ¼   s2   „ ñò
CòGòKò	8ò6ò0ò-ó0r   rÀ   c                   ó   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
	 	 dSd
„Z	 	 dSd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdTd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d „ Z!d!„ Z"d"„ Z#d#„ Z$d$„ Z%d%„ Z&d&„ Z'd'„ Z(d(„ Z)d)„ Z*d*„ Z+d+„ Z,d,„ Z-d-„ Z.d.„ Z/d/„ Z0d0„ Z1d1„ Z2d2„ Z3d3„ Z4d4„ Z5d5„ Z6d6„ Z7d7„ Z8d8„ Z9d9„ Z:d:„ Z;d;„ Z<d<„ Z=d=„ Z>d>„ Z?d?„ Z@d@„ ZAdA„ ZBdB„ ZCdC„ ZDdD„ ZEdE„ ZFdF„ ZGdG„ ZHdH„ ZIdI„ ZJdJ„ ZKdK„ ZLdL„ ZMdM„ ZNdN„ ZOdO„ ZPdP„ ZQdQ„ ZRdR„ ZSy	)UÚ
TestRandomc           	      ó"  — t         j                  j                  «       }dD ]l  }|j                  t        j                  |«      «        ||«       t        t        dz   «      D ])  }| j                   |«       |j                  dd«      «       Œ+ Œn y)z<
        Check seed()- and random()-like functions.
        ©r   r†   rÏ   l   ÿÿ rÔ   rœ   r©   N)	r   r   r¸   rW   r™   rÆ   rÅ   ÚassertPreciseEqualÚuniform)rµ   ÚseedfuncÚ
randomfuncr‹   rÈ   rÉ   s         r   Ú_check_random_seedzTestRandom._check_random_seed  sj   € ô
 �I‰I×!Ñ!Ó#ˆÛ'ˆAà�F‰F”2—9‘9˜Q“<Ô Ù�QŒKäœ1˜r™6–]�Ø×'Ñ'©
«°a·i±iÀÀSÓ6IÕJñ #ñ (r   c                 ó8   — | j                  t        t        «       y r   )rï   Úrandom_seedÚrandom_randomrÝ   s    r   Útest_random_randomzTestRandom.test_random_random  s   € Ø×Ñ¤¬]Õ;r   c                 ó0  — | j                  t        t        «       | j                  t        t        d«      «       | j                  t        t        d«      «       | j                  t        t        d«      «       | j                  t        t        d«      «       y ©Núnp.random.random_sampleúnp.random.ranfúnp.random.sampleznp.random.rand)rï   Ú
numpy_seedÚnumpy_randomrz   rÝ   s    r   Útest_numpy_randomzTestRandom.test_numpy_random  sj   € Ø×Ñ¤
¬LÔ9à×Ñ¤
¬KÐ8QÓ,RÔSØ×Ñ¤
¬KÐ8HÓ,IÔJØ×Ñ¤
¬KÐ8JÓ,KÔLØ×Ñ¤
¬KÐ8HÓ,IÕJr   c           
      ó  — t         j                  j                  «       }dD ]g  }|j                  t        j                  |«      «        ||«       t        d«      D ]+  }| j                   ||«      |j                  dd|«      «       Œ- Œi y )Nrê   rÔ   rœ   r©   )r   r   r¸   rW   r™   rÆ   rë   rì   )rµ   rí   rî   r‹   rÈ   r?   s         r   Ú_check_random_sizedzTestRandom._check_random_sized   sh   € ä�I‰I×!Ñ!Ó#ˆÛ'ˆAà�F‰F”2—9‘9˜Q“<Ô Ù�QŒKÜ˜2–Y�Ø×'Ñ'©
°1«°q·y±yÀÀcÈ1Ó7MÕNñ ñ	 (r   c                 óü   — | j                  t        t        d«      «       | j                  t        t        d«      «       | j                  t        t        d«      «       | j                  t        t        d«      «       y rõ   )rý   rù   r|   rÝ   s    r   Útest_numpy_random_sizedz"TestRandom.test_numpy_random_sized*  sZ   € Ø× Ñ ¤¬YÐ7PÓ-QÔRØ× Ñ ¤¬YÐ7GÓ-HÔIØ× Ñ ¤¬YÐ7IÓ-JÔKØ× Ñ ¤¬YÐ7GÓ-HÕIr   c                 óò  — d}t        d«       t        |«      D �cg c]  }t        «       ‘Œ }}t        d«       t        |«      D �cg c]  }t	        «       ‘Œ }}t        d«       t        d«       t        |«      D �cg c]  }t        «       t	        «       f‘Œ }}| j                  |D �cg c]  }|d   ‘Œ	 c}|«       | j                  |D �cg c]  }|d   ‘Œ	 c}|«       y c c}w c c}w c c}w c c}w c c}w )NrÔ   r†   r»   r   )rñ   rÆ   rò   rù   rú   rë   )rµ   rÅ   rÈ   Ú
py_numbersÚ
np_numbersÚpairsÚps          r   Útest_independent_generatorsz&TestRandom.test_independent_generators0  sÒ   € àˆÜ�AŒÜ/4°Q¬xÓ8©x¨!”m•o¨xˆ
Ð8Ü�1ŒÜ.3°A¬hÓ7©h¨”l•n¨hˆ
Ð7Ü�AŒÜ�1ŒÜ<AÀ!¼HÓE¹H°q”-“/¤<£>Ò2¸HˆÐEØ×Ñ©uÓ 5©u¨!  1£¨uÑ 5°zÔBØ×Ñ©uÓ 5©u¨!  1£¨uÑ 5°zÕBùò 9ùâ7ùò FùÚ 5ùÚ 5s   ›C ÁC%Á<C*Â(C/ÃC4c                 ó(  — | j                  |«      }t        dd«      D ]-  }|j                  |«      } ||«      }| j                  ||«       Œ/ | j	                  t
        |d«       | j	                  t
        |d«       | j	                  t
        |d«       y)z6
        Check a getrandbits()-like function.
        r†   éA   i–˜ r‡   N)r¶   rÆ   Úgetrandbitsrë   ÚassertRaisesÚOverflowError)rµ   rb   rŒ   r‹   ÚnbitsrZ   r[   s          r   Ú_check_getrandbitszTestRandom._check_getrandbits=  sƒ   € ð
 × Ñ  Ó%ˆÜ˜1˜b–\ˆEØ—}‘} UÓ+ˆHÙ�u“+ˆCØ×#Ñ# H¨cÕ2ð "ð 	×Ñœ-¨¨rÔ2Ø×Ñœ-¨¨wÔ7Ø×Ñœ-¨¨rÕ2r   c                 óJ   — | j                  t        d«      t        «       «       y )Nzrandom.getrandbits)r  r|   r   rÝ   s    r   Útest_random_getrandbitsz"TestRandom.test_random_getrandbitsK  ó   € Ø×Ñ¤	Ð*>Ó ?ÔAQÓASÕTr   Nc           	      óò   — t        |«      sJ ‚|D ][  }t        |«      D �	cg c]  }	 ||Ž ‘Œ	 }
}	t        |«      D �	cg c]  }	|r ||d|iŽn ||Ž ‘Œ }}	| j                  |
|||d|›�¬«       Œ] y c c}	w c c}	w )Nr›   úfor arguments ©ÚprecÚulpsÚmsg©r�   rÆ   rë   )rµ   rb   rj   ÚargslistÚnitersr  r  ÚpydtypeÚargsrÈ   ÚresultsÚ	pyresultss               r   Ú_check_distzTestRandom._check_distS  s˜   € ä�8Œ}Ðˆ}ÛˆDÜ,1°&¬MÓ:©M q‘t˜T’{¨MˆGÐ:ä"'¨¤-ó1Ù"/˜Qñ ;B™& $Ð6¨gÒ6ÁvÈtÀ}ÑTØ"/ð ð 1à×#Ñ# G¨Y¸TÉÙ>BÐ(Dð $õ Fñ	 ùÚ:ùò1s
    A/»A4c           
      ó  — t        |«      sJ ‚|D ]e  }t        |«      D �	cg c]
  }	 |di |¤Ž‘Œ }
}	t        |«      D �	cg c]  }	|r |di |¤d|i¤Žn |di |¤Ž‘Œ }}	| j                  |
|||d|›�¬«       Œg y c c}	w c c}	w )Nr›   r  r  r   r  )rµ   rb   rj   Ú
kwargslistr  r  r  r  ÚkwargsrÈ   r  r  s               r   Ú_check_dist_kwargszTestRandom._check_dist_kwargs]  s¢   € ä�:ŒÐˆÛ ˆFÜ/4°V¬}Ó=©}¨!‘t‘~˜f“~¨}ˆGÐ=ä"'¨¤-ó1Ù"/˜Qñ >E™&Ñ9 6Ñ9°Ó9É&ÑJZÐSYÑJZÑZØ"/ð ð 1à×#Ñ# G¨Y¸TÉÙ>DÐ(Fð $õ Hñ	 !ùÚ=ùò1s
    A9¾A>c                 ó  — | j                  |«      }|�+| j                  ||j                  g d¢t        dz  dz   ¬«       |�| j                  ||j                  dg«       |�| j                  ||j                  dg«       yy)z0
        Check a gauss()-like function.
        N©©r©   r©   )r¨   ç      à?)g       Àr%  r»   rÔ   ©r  ©r%  r   )r¹   r  ÚnormalrÅ   ©rµ   Úfunc2Úfunc1Úfunc0rŒ   r‹   s         r   Ú_check_gausszTestRandom._check_gaussg  s†   € ð
 ×Ñ˜sÓ#ˆØÐØ×Ñ˜U A§H¡HÚBÜ$%¨¡F¨R¡Kð ô 1ð ÐØ×Ñ˜U A§H¡H¨v¨hÔ7ØÐØ×Ñ˜U A§H¡H¨r¨dÕ3ð r   c                 óN   — | j                  t        d«      d d t        «       «       y )Nr�   ©r-  r~   r   rÝ   s    r   Útest_random_gausszTestRandom.test_random_gaussv  s   € Ø×Ñœ* ^Ó4°d¸DÔBRÓBTÕUr   c                 óN   — | j                  t        d«      d d t        «       «       y )Nzrandom.normalvariater/  rÝ   s    r   Útest_random_normalvariatez$TestRandom.test_random_normalvariatey  s$   € ð 	×Ñœ*Ð%;Ó<¸dÀDÜ*Ó,õ	.r   c                 ór   — | j                  t        d«      t        d«      t        d«      t	        «       «       y )Nr‚   )r-  r~   r|   rz   r   rÝ   s    r   Útest_numpy_normalzTestRandom.test_numpy_normal  s0   € Ø×Ñœ*Ð%7Ó8Ü#Ð$6Ó7Ü%Ð&8Ó9Ü*Ó,õ	.r   c                 óN   — | j                  d d t        d«      t        «       «       y )Núnp.random.standard_normal©r-  rz   r   rÝ   s    r   Útest_numpy_standard_normalz%TestRandom.test_numpy_standard_normal…  s"   € Ø×Ñ˜$ ¤kÐ2MÓ&NÜ*Ó,õ	.r   c                 óN   — | j                  d d t        d«      t        «       «       y )Nznp.random.randnr7  rÝ   s    r   Útest_numpy_randnzTestRandom.test_numpy_randn‰  s"   € Ø×Ñ˜$ ¤kÐ2CÓ&DÜ*Ó,õ	.r   c                 ó  — | j                  |«      }|�+| j                  ||j                  g d¢t        dz  dz   ¬«       |�| j                  ||j                  dg«       |�| j                  ||j                  dg«       yy)z9
        Check a lognormvariate()-like function.
        Nr#  r»   rÔ   r&  r'  r   )r¹   r  Ú	lognormalrÅ   r)  s         r   Ú_check_lognormvariatez TestRandom._check_lognormvariate�  s†   € ð
 ×Ñ˜sÓ#ˆØÐØ×Ñ˜U A§K¡KÚBÜ$%¨¡F¨R¡Kð ô 1ð ÐØ×Ñ˜U A§K¡K°&°Ô:ØÐØ×Ñ˜U A§K¡K°"°Õ6ð r   c                 óN   — | j                  t        d«      d d t        «       «       y )Nzrandom.lognormvariate)r=  r~   r   rÝ   s    r   Útest_random_lognormvariatez%TestRandom.test_random_lognormvariateœ  s$   € Ø×"Ñ"¤:Ð.EÓ#FØ#'¨Ô/?Ó/Aõ	Cr   c                 ór   — | j                  t        d«      t        d«      t        d«      t	        «       «       y )Núnp.random.lognormal)r=  r~   r|   rz   r   rÝ   s    r   Útest_numpy_lognormalzTestRandom.test_numpy_lognormal   s0   € Ø×"Ñ"¤:Ð.CÓ#DÜ#,Ð-BÓ#CÜ#.Ð/DÓ#EÜ#3Ó#5õ	7r   c           	      ó²  — g }t        d«      D ]M  }	|j                   |d«      «       |j                   |dd«      «       |€Œ5|j                   |ddd«      «       ŒO |r| j                  |«      j                  }
n| j	                  |«      j
                  }
dD �cg c]
  }||k  sŒ	|‘Œ }}|r|nd}|D ]‰  }| j                  ||
|fgd|¬«       | j                  ||
dd	|z   fgd|¬«       |€Œ:| j                   |dd	|z   d
«       |
dd	|z   d
«      «       | j                   |d	|z   d	d«       |
d	|z   d	d«      «       Œ‹ | j                  t        |d«       | j                  t        |d«       | j                  t        |dd«       | j                  t        |dd	«       |�3| j                  t        |ddd«       | j                  t        |ddd«       yyc c}w )z4
        Check a randrange()-like function.
        rÔ   é eÍé   Nr’   )r†   rE  é   éˆ  l        ì            )r  r  éþÿÿÿr»   é   éýÿÿÿr   éûÿÿÿé   r‡   r†   )
rÆ   r×   r¹   r   r¶   r(   r  rë   r	  Ú
ValueError)rµ   r+  r*  Úfunc3rŒ   Ú	max_widthÚis_numpyÚtprŽ   rÈ   ÚrrÚwÚwidthsr  Úwidths                  r   Ú_check_randrangezTestRandom._check_randrange¦  sì  € ð
 ˆÜ�r–ˆAØ�K‰K™˜iÓ(Ô)Ø�K‰K™˜a Ó+Ô,ØÑ Ø—‘™E ! Y°Ó2Õ3ð	 ñ
 Ø×#Ñ# CÓ(×0Ñ0‰Bà×%Ñ% cÓ*×4Ñ4ˆBÙBÓTÑB˜ÀaÈ)Ãm’!ÐBˆÐTÙ ‘" dˆÛˆEØ×Ñ˜U B¨%¨¨
¸2Ø$+ð ô -à×Ñ˜U B¨"¨a°©h¨Ð(8ÀØ$+ð ô -àÑ Ø×'Ñ'©¨b°!°e±)¸QÓ(?Ù(*¨2¨q°5©y¸!Ó(<ô>à×'Ñ'©¨a°%©i¸¸BÓ(?Ù(*¨1¨u©9°a¸Ó(<õ>ð ð 	×Ñœ* e¨QÔ/Ø×Ñœ* e¨RÔ0Ø×Ñœ* e¨Q°Ô2Ø×Ñœ* e¨Q°Ô2ØÐØ×Ñœj¨%°°A°rÔ:Ø×Ñœj¨%°°A°qÕ9ð ùò# Us   Â
GÂ&Gc           	      ó"  — t         j                  dft         j                  dffD ]h  \  }} t        |f«      t        «      } t        ||f«      t
        «      } t        |||f«      t        «      }| j                  |||t        «       |d«       Œj y )Nì            ì        F)	r   Úint64Úint32r   r)   r+   r.   rW  r   )rµ   rR  rP  Úcf1Úcf2Úcf3s         r   Útest_random_randrangez TestRandom.test_random_randrangeÊ  sˆ   € Ü$Ÿ{™{¨EÐ2´U·[±[À%Ð4HÓI‰MˆB�	Ø”$˜�u“+Ô/Ó0ˆCØ"”$˜˜B�yÓ"Ô#4Ó5ˆCØ%”$˜˜B �}Ó%Ô&7Ó8ˆCØ×!Ñ! # s¨CÔ1AÓ1CØ"+¨Uõ4ñ	 Jr   c           
      ó2  — t         j                  t        j                  dft         j                  t        j                  dffD ]R  \  }}} t	        |f«      t
        «      } t	        ||f«      t        «      }| j                  ||d t        «       |d|«       ŒT y )NrY  rZ  T)	r   r[  r   r\  r   r   r#   rW  r   )rµ   rR  Únp_tprP  r]  r^  s         r   Útest_numpy_randintzTestRandom.test_numpy_randintÒ  s‚   € Ü&+§k¡k´2·8±8¸UÐ%CÜ&+§k¡k´2·8±8¸UÐ%Có%EÑ ˆB��yà”$˜�u“+œnÓ-ˆCØ!”$˜˜B�y“/¤.Ó1ˆCØ×!Ñ! # s¨DÔ2BÓ2DÀiØ"&¨õ/ñ	%Er   c                 ó–  — g }t        d«      D ]  }|j                   |dd«      «       Œ | j                  t        |«      t        t	        |«      «      |«       | j                  |«      }dD ]+  }|d   |kD  rŒ| j                  ||j                  |gd¬«       Œ- | j                  t        |dd«       | j                  t        |dd«       y	)
z2
        Check a randint()-like function.
        rÔ   rE  rD  )©r†   rE  )é   rG  )é   rH  r†   r&  é   r»   N)
rÆ   r×   rÄ   r�   rÙ   r¶   r  r   r	  rN  )rµ   rb   rŒ   rP  rŽ   rÈ   r‹   r  s           r   Ú_check_randintzTestRandom._check_randintÚ  s¸   € ð
 ˆÜ�r–ˆAØ�K‰K™˜Q 	Ó*Õ+ð à×Ñœ˜T›¤C¬¨D«	£N°DÔ9à× Ñ  Ó%ˆÛ=ˆDØ�A‰w˜Ò"ØØ×Ñ˜T 1§9¡9¨t¨f¸RÐÕ@ð >ð
 	×Ñœ* d¨A¨qÔ1Ø×Ñœ* d¨A¨qÕ1r   c                 óÀ   — t         j                  dft         j                  dffD ]7  \  }} t        ||f«      t        «      }| j                  |t        «       |«       Œ9 y )NrY  rZ  )r   r[  r\  r   r%   ri  r   )rµ   rR  rP  Úcfs       r   Útest_random_randintzTestRandom.test_random_randintí  sR   € Ü$Ÿ{™{¨EÐ2´U·[±[À%Ð4HÓI‰MˆB�	Ø ”�r˜2�i“¤Ó0ˆBØ×Ñ Ô$4Ó$6¸	ÕBñ Jr   c                 ód   — | j                  |«      }| j                  ||j                  g d¢«       y)z2
        Check a uniform()-like function.
        ))ç      ø?ç    €„.A)ç      Àç     @�@)rn  rp  N)r¶   r  rì   ©rµ   rb   rŒ   r‹   s       r   Ú_check_uniformzTestRandom._check_uniformò  s.   € ð
 × Ñ  Ó%ˆØ×Ñ˜˜qŸy™yÚ?õ	Ar   c                 ód   — | j                  |«      }t        ||«      }| j                  |||«       y)z¿
        Check any numpy distribution function. Does Numba use the same keyword
        argument names as Numpy?
        And given a fixed seed, do they both return the same samples?
        N)r¹   Úgetattrr!  )rµ   rb   rŒ   ÚdistribÚ	paramlistr‹   Údistrib_method_of_numpys          r   Ú_check_any_distrib_kwargsz$TestRandom._check_any_distrib_kwargsû  s4   € ð ×Ñ˜sÓ#ˆÜ")¨!¨WÓ"5ÐØ×Ñ Ð&=¸yÕIr   c                 óJ   — | j                  t        d«      t        «       «       y )Nzrandom.uniform)rs  r~   r   rÝ   s    r   Útest_random_uniformzTestRandom.test_random_uniform  s   € Ø×ÑœJÐ'7Ó8Ô:JÓ:LÕMr   c                 óJ   — | j                  t        d«      t        «       «       y )Núnp.random.uniform)rs  r~   r   rÝ   s    r   Útest_numpy_uniformzTestRandom.test_numpy_uniform
  s   € Ø×ÑœJÐ':Ó;Ô=MÓ=OÕPr   c           
      ón   — | j                  t        dddg«      t        «       ddddœdd	dœdddœg¬
«       y )Nr}  ÚlowÚhighrì   rn  ro  )r€  r�  rp  rq  ©rw  ©ry  ru   r   rÝ   s    r   Útest_numpy_uniform_kwargsz$TestRandom.test_numpy_uniform_kwargs  sJ   € Ø×&Ñ&ÜÐ/°%¸°ÓAÜÓØØ"¨CÑ0Ø#¨SÑ1Ø"¨DÑ1ð3ð	 	'õ 	4r   c                 ó’   — | j                  t        dg d¢«      t        «       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œg¬	«       y )
Nr}  ©r€  r�  r6   rì   rn  ro  r   rp  rq  r‚  rƒ  rÝ   s    r   Útest_numpy_uniform_empty_sizez(TestRandom.test_numpy_uniform_empty_size  sm   € Ø×&Ñ&ÜÐ/Ò1HÓIÜÓØØ"¨C¸Ñ<Ø#¨S¸"Ñ=Ø"¨D¸"Ñ=Ø"¨C¸Ñ>Ø#¨S¸$Ñ?Ø"¨D¸$Ñ?ðBð	 	'õ 		Cr   c                 ó¤   — | j                  |«      }|�| j                  ||j                  g d¢«       | j                  ||j                  dg«       y)z5
        Check a triangular()-like function.
        N)©rn  ç      @)rp  rn  )rn  rn  )rn  rŠ  çš™™™™™@)r¶   r  Ú
triangular)rµ   r*  rO  rŒ   r‹   s        r   Ú_check_triangularzTestRandom._check_triangular"  sM   € ð
 × Ñ  Ó%ˆØÐØ×Ñ˜U A§L¡LÚBôDà×Ñ˜ §¡¨Ð.?Õ@r   c                 ó^   — | j                  t        d«      t        d«      t        «       «       y )Nzrandom.triangular)r�  r~   r€   r   rÝ   s    r   Útest_random_triangularz!TestRandom.test_random_triangular-  s'   € Ø×ÑœzÐ*=Ó>Ü*Ð+>Ó?Ü/Ó1õ	3r   c                 ó\   ‡— t        d«      Šˆfd„}| j                  d |t        «       «       y )Núnp.random.triangularc                 ó   •—  ‰| ||«      S r   r   )Úlr‹   ÚmrŒ  s      €r   Ú<lambda>z2TestRandom.test_numpy_triangular.<locals>.<lambda>4  s   ø€ ©:°a¸¸AÔ+>r   )r€   r�  r   )rµ   Úfixed_triangularrŒ  s     @r   Útest_numpy_triangularz TestRandom.test_numpy_triangular2  s+   ø€ Ü Ð!7Ó8ˆ
Û>ÐØ×Ñ˜tÐ%5Ô7GÓ7IÕJr   c                 óâ  — | j                  |«      }|�| j                  ||j                  g d¢«       |�(| j                   |d«      |j                  dd«      «       |�`| j	                  t
        |dd«       | j	                  t
        |dd«       | j	                  t
        |dd«       | j	                  t
        |dd«       |�/| j	                  t
        |d«       | j	                  t
        |d«       yy)z7
        Check a gammavariate()-like function.
        N)©r%  ç      @)r©   rn  r‰  rn  r©   rœ   ç      à¿)r¶   r  rª   rë   r	  rN  )rµ   r*  r+  rŒ   r‹   s        r   Ú_check_gammavariatezTestRandom._check_gammavariate7  sÞ   € ð
 × Ñ  Ó%ˆØÐØ×Ñ˜U A§N¡NÚAôCàÐØ×#Ñ#¡E¨#£J°·±¸sÀCÓ0HÔIàÐØ×Ñœj¨%°°cÔ:Ø×Ñœj¨%°°cÔ:Ø×Ñœj¨%°°sÔ;Ø×Ñœj¨%°°dÔ;ØÐØ×Ñœj¨%°Ô5Ø×Ñœj¨%°Õ6ð r   c                 óL   — | j                  t        d«      d t        «       «       y )Nzrandom.gammavariate)rœ  r~   r   rÝ   s    r   Útest_random_gammavariatez#TestRandom.test_random_gammavariateL  s    € Ø× Ñ ¤Ð,AÓ!BÀDÜ!1Ó!3õ	5r   c                 ó¦   — | j                  t        d«      t        d«      t        «       «       | j                  d t        d«      t        «       «       y )Núnp.random.gammaúnp.random.standard_gamma)rœ  r~   r|   r   rÝ   s    r   Útest_numpy_gammazTestRandom.test_numpy_gammaP  sH   € Ø× Ñ ¤Ð,=Ó!>Ü!*Ð+<Ó!=Ü!1Ó!3ô	5ð 	× Ñ  Ü!*Ð+EÓ!FÜ!1Ó!3õ	5r   c                 ó"  — | j                  |«      }| j                  ||j                  dg«       | j                  t        |dd«       | j                  t        |dd«       | j                  t        |dd«       | j                  t        |dd«       y)z6
        Check a betavariate()-like function.
        r™  rœ   r©   r›  N)r¶   r  Úbetavariater	  rN  rr  s       r   Ú_check_betavariatezTestRandom._check_betavariateX  s|   € ð
 × Ñ  Ó%ˆØ×Ñ˜˜qŸ}™}¨z¨lÔ;à×Ñœ* d¨C°Ô5Ø×Ñœ* d¨C°Ô5Ø×Ñœ* d¨D°#Ô6Ø×Ñœ* d¨C°Õ6r   c                 óJ   — | j                  t        d«      t        «       «       y )Nzrandom.betavariate)r¥  r~   r   rÝ   s    r   Útest_random_betavariatez"TestRandom.test_random_betavariatee  s   € Ø×Ñ¤
Ð+?Ó @ÔBRÓBTÕUr   c                 óJ   — | j                  t        d«      t        «       «       y )Núnp.random.beta)r¥  r~   r   rÝ   s    r   Útest_numpy_betazTestRandom.test_numpy_betah  s   € Ø×Ñ¤
Ð+;Ó <Ô>NÓ>PÕQr   c                 ób   — | j                  |«      }| j                  ||j                  dg«       y)z:
        Check a vonmisesvariate()-like function.
        r™  N)r¶   r  Úvonmisesvariaterr  s       r   Ú_check_vonmisesvariatez!TestRandom._check_vonmisesvariatek  s.   € ð × Ñ  Ó%ˆØ×Ñ˜˜q×0Ñ0°:°,Õ?r   c                 óJ   — | j                  t        d«      t        «       «       y )Nzrandom.vonmisesvariate)r­  r~   r   rÝ   s    r   Útest_random_vonmisesvariatez&TestRandom.test_random_vonmisesvariater  s   € Ø×#Ñ#¤JÐ/GÓ$HÜ$4Ó$6õ	8r   c                 óJ   — | j                  t        d«      t        «       «       y )Núnp.random.vonmises)r­  r~   r   rÝ   s    r   Útest_numpy_vonmiseszTestRandom.test_numpy_vonmisesv  s   € Ø×#Ñ#¤JÐ/CÓ$DÜ$4Ó$6õ	8r   c           	      ó¬   — | j                  |«      }dD ]>  }t        d«      D ].  }| j                   ||«      |j                  d|z  «      d¬«       Œ0 Œ@ y)z‰
        Check a expovariate()-like function.  Note the second argument
        is inversed compared to np.random.exponential().
        )gš™™™™™É?r%  rn  r’   r†   Údouble)r  N)r¹   rÆ   rë   Úexponential)rµ   rb   rŒ   r‹   ÚlambdrÈ   s         r   Ú_check_expovariatezTestRandom._check_expovariatez  sW   € ð
 ×Ñ˜sÓ#ˆÛ$ˆEÜ˜1–X�Ø×'Ñ'©¨U«°Q·]±]À1ÀuÁ9Ó5MØ-5ð (õ 7ñ ñ %r   c                 óJ   — | j                  t        d«      t        «       «       y )Nzrandom.expovariate)r·  r|   r   rÝ   s    r   Útest_random_expovariatez"TestRandom.test_random_expovariate…  r  r   c                 óª   — | j                  |«      }|�| j                  ||j                  g d¢«       |�| j                  ||j                  dg«       yy)z6
        Check a exponential()-like function.
        N)r'  ©r©   ©rn  r   )r¹   r  rµ  )rµ   r+  r,  rŒ   r‹   s        r   Ú_check_exponentialzTestRandom._check_exponentialˆ  sT   € ð ×Ñ˜sÓ#ˆØÐØ×Ñ˜U A§M¡MÒ3KÔLØÐØ×Ñ˜U A§M¡M°B°4Õ8ð r   c                 ó^   — | j                  t        d«      t        d«      t        «       «       y )Núnp.random.exponential)r½  r|   rz   r   rÝ   s    r   Útest_numpy_exponentialz!TestRandom.test_numpy_exponential’  s'   € Ø×Ñ¤	Ð*AÓ BÜ +Ð,CÓ DÜ 0Ó 2õ	4r   c                 óL   — | j                  d t        d«      t        «       «       y )Núnp.random.standard_exponential)r½  rz   r   rÝ   s    r   Útest_numpy_standard_exponentialz*TestRandom.test_numpy_standard_exponential—  s!   € Ø×Ñ Ü +Ð,LÓ MÜ 0Ó 2õ	4r   c                 ód   — | j                  |«      }| j                  ||j                  ddg«       y)z8
        Check a paretovariate()-like function.
        r'  )rŠ  N)r¶   r  Úparetovariaterr  s       r   Ú_check_paretovariatezTestRandom._check_paretovariateœ  s/   € ð
 × Ñ  Ó%ˆØ×Ñ˜˜qŸ™°¸Ð0@ÕAr   c                 óJ   — | j                  t        d«      t        «       «       y )Nzrandom.paretovariate)rÆ  r|   r   rÝ   s    r   Útest_random_paretovariatez$TestRandom.test_random_paretovariate¤  s   € Ø×!Ñ!¤)Ð,BÓ"CÔEUÓEWÕXr   c                 óZ   ‡— t        d«      Šˆfd„}| j                  |t        «       «       y )Núnp.random.paretoc                 ó   •—  ‰| «      dz   S )Nr©   r   )r   Úparetos    €r   r•  z.TestRandom.test_numpy_pareto.<locals>.<lambda>©  s   ø€ ¡¨£¨S¢r   )r|   rÆ  r   )rµ   Úfixed_paretorÌ  s     @r   Útest_numpy_paretozTestRandom.test_numpy_pareto§  s'   ø€ ÜÐ-Ó.ˆÛ0ˆØ×!Ñ! ,Ô0@Ó0BÕCr   c                 óÜ   — | j                  |«      }|�| j                  ||j                  dg«       |�9t        d«      D ]*  }| j	                   |d«      |j                  dd«      «       Œ, yy)z9
        Check a weibullvariate()-like function.
        Nr™  r’   rš  r©   )r¶   r  ÚweibullvariaterÆ   rë   )rµ   r*  r+  rŒ   r‹   rÈ   s         r   Ú_check_weibullvariatez TestRandom._check_weibullvariate¬  sr   € ð
 × Ñ  Ó%ˆØÐØ×Ñ˜U A×$4Ñ$4°z°lÔCØÐÜ˜1–X�Ø×'Ñ'©¨c«
Ø()×(8Ñ(8¸¸cÓ(BõDñ ð r   c                 óL   — | j                  t        d«      d t        «       «       y )Nzrandom.weibullvariate)rÑ  r~   r   rÝ   s    r   Útest_random_weibullvariatez%TestRandom.test_random_weibullvariate¹  s!   € Ø×"Ñ"¤:Ð.EÓ#FØ#'Ô)9Ó);õ	=r   c                 óL   — | j                  d t        d«      t        «       «       y )Núnp.random.weibull)rÑ  r|   r   rÝ   s    r   Útest_numpy_weibullzTestRandom.test_numpy_weibull½  s    € Ø×"Ñ" 4¬Ð3FÓ)GÜ#3Ó#5õ	7r   c           	      ó¶  — t        d«      }| j                  t        «       d«      }| j                  ||j                  dg«       dD ]É  }| j                   ||d«      d«       | j                   ||d«      |«       dD ]�  } |||«      }|dkD  r
||z
  }d	|z
  }| j                  |d«       | j                  ||«       ||z  }d
|z  t        j                  |«      z  }| j                  |||z
  |||f«       | j                  |||z   |||f«       Œ’ ŒË | j                  t        |dd«       | j                  t        |dd«       | j                  t        |dd«       y )Núnp.random.binomialr   )é   g      Ð?)éd   éè  é'  rœ   r©   )	g-Cëâ6?çš™™™™™¹?çš™™™™™Ù?g9î”Öÿß?r%  gãˆµø à?çš™™™™™é?çÍÌÌÌÌÌì?ç§èH.ÿï?r%  r†   r’   r‡   rÔ   çš™™™™™¹¿çš™™™™™ñ?)r~   r¹   r   r  ÚbinomialrÄ   ÚassertGreaterEqualÚassertLessEqualÚmathÚsqrtr	  rN  )rµ   rä  r‹   r?   r  rZ   Útols          r   Útest_numpy_binomialzTestRandom.test_numpy_binomialÁ  sW  € äÐ2Ó3ˆØ×ÑÔ/Ó1°1Ó5ˆØ×Ñ˜ 1§:¡:°
¨|Ô<ã#ˆAØ×Ñ™X a¨Ó-¨qÔ1Ø×Ñ™X a¨Ó-¨qÔ1ÛP�Ù˜Q “N�Ø�s’7Ø˜A™�AØ˜A™�AØ×'Ñ'¨¨1Ô-Ø×$Ñ$ Q¨Ô*Ø˜q™5�Ø˜!‘eœdŸi™i¨›lÑ*�Ø×'Ñ'¨¨8°c©>¸A¸qÀ!¸9ÔEØ×$Ñ$ Q¨°3©¸¸A¸q¸	ÕBñ Qð $ð 	×Ñœ* h°°CÔ8Ø×Ñœ* h°°DÔ9Ø×Ñœ* h°°CÕ8r   c                 ó¦   — t        d«      }| j                  t        «       «      }| j                  |t	        j
                  t        |«      ddg«       y )Núnp.random.chisquarer¼  ©rš  )r|   r¶   r   r  Ú	functoolsÚpartialr«   )rµ   Ú	chisquarer‹   s      r   Útest_numpy_chisquarezTestRandom.test_numpy_chisquareÚ  sI   € ÜÐ3Ó4ˆ	Ø× Ñ Ô!1Ó!3Ó4ˆØ×Ñ˜Ü"×*Ñ*¬<¸Ó;Ø  &Ð)õ	+r   c                 ó¦   — t        d«      }| j                  t        «       «      }| j                  |t	        j
                  t        |«      ddg«       y )Núnp.random.f©r%  rn  )rn  rß  )r~   r¶   r   r  rî  rï  r¯   )rµ   Úfr‹   s      r   Útest_numpy_fzTestRandom.test_numpy_fá  sG   € Ü�}Ó%ˆØ× Ñ Ô!1Ó!3Ó4ˆØ×Ñ˜œI×-Ñ-¬d°AÓ6Ø$ jÐ1õ	3r   c                 óò  — t        d«      }| j                  t        |d«       | j                  t        |d«       | j                  t        |d«       d}t        |«      D �cg c]
  } |d«      ‘Œ }}| j	                  |dg|z  «       t        |«      D �cg c]
  } |d«      ‘Œ }}|j                  d«      }| j                  ||d	z  «       | j                  ||«       | j                  |D �cg c]
  }|d
kD  sŒ	|‘Œ c}«       t        |«      D �cg c]
  } |d«      ‘Œ }}| j                  |D �cg c]
  }|dkD  sŒ	|‘Œ c}«       t        |«      D �cg c]
  } |d«      ‘Œ }}| j                  |D �cg c]
  }|dkD  sŒ	|‘Œ c}«       t        |«      D �cg c]
  } |d«      ‘Œ }}| j                  |D �cg c]
  }|dkD  sŒ	|‘Œ c}«       y c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )Núnp.random.geometricg      ð¿rœ   gj¼t“ð?éÈ   r©   r†   rà  r»   rÛ  rÞ  rh  g{®Gáz„?é2   gVçž¯Ò<ì        )
r|   r	  rN  rÆ   rë   Úcountrå  Ú
assertLessÚassertFalseÚ
assertTrue)rµ   ÚgeomrÅ   rÈ   r‹   r?   s         r   Útest_numpy_geometriczTestRandom.test_numpy_geometricç  s¾  € ÜÐ.Ó/ˆà×Ñœ* d¨DÔ1Ø×Ñœ* d¨CÔ0Ø×Ñœ* d¨EÔ2àˆÜ % a¤Ó)¡˜1‰T�#�Y ˆÐ)Ø×Ñ  A 3¨¡7Ô+Ü % a¤Ó)¡˜1‰T�#�Y ˆÐ)Ø�G‰G�A‹JˆØ×Ñ  1¨¡6Ô*Ø�‰˜˜1ÔØ×Ñ¡QÓ3¡Q ¨!¨d«(š! QÑ3Ô4Ü % a¤Ó)¡˜1‰T�#�Y ˆÐ)Ø�‰¡AÓ/¡A˜q¨¨Q«š AÑ/Ô0Ü!& q¤Ó*¡˜A‰T�$�Z ˆÐ*Ø�‰¡AÓ0¡A˜q¨¨R«š AÑ0Ô1Ü"'¨¤(Ó+¡(˜Q‰T�%�[ (ˆÐ+Ø�‰¡AÓ3¡A˜q¨¨U«š AÑ3Õ4ùò *ùâ)ùò 4ùÚ)ùÚ/ùÚ*ùÚ0ùÚ+ùÚ3sN   Á GÂGÃ,
GÃ7GÄGÄ/
G Ä:G ÅG%Å2
G*Å=G*ÆG/Æ5
G4Ç G4c                 óŠ   — t        d«      }| j                  t        «       «      }| j                  ||j                  ddg«       y )Núnp.random.gumbel©rœ   r©   ©ç      ø¿rŠ  )r~   r¹   r   r  Úgumbel)rµ   r  r‹   s      r   Útest_numpy_gumbelzTestRandom.test_numpy_gumbelý  s<   € ÜÐ.Ó/ˆØ×ÑÔ/Ó1Ó2ˆØ×Ñ˜ §¡¨J¸Ð+DÕEr   c           	      óf   — | j                  t        dddg«      t        «       ddddœdd	dœg¬
«       y )Nr  ÚlocÚscaler  rœ   r©   )r
  r  r  rŠ  ©rv  rw  rƒ  rÝ   s    r   Útest_numpy_gumbel_kwargsz#TestRandom.test_numpy_gumbel_kwargs  sC   € Ø×&Ñ&ÜÐ.°¸Ð0@ÓAÜÓØØ"¨SÑ1Ø#¨cÑ2ð4ð	 	'õ 	5r   c                 ó`  — t        d«      }| j                  t        «       «      }| j                  ||j                  ddgd¬«       t        d«      D �cg c]  } |ddd«      ‘Œ }}| j                  t        d„ |D «       «      |«       | j                  t        j                  |«      d	«       | j                  t        j                  |«      d
«       t        d«      D �cg c]  } |ddd«      ‘Œ }}| j                  t        d„ |D «       «      |«       | j                  t        j                  |«      d«       t        d«      D �cg c]  } |ddd«      ‘Œ }}| j                  t        d„ |D «       «      |«       | j                  t        j                  |«      d«       y c c}w c c}w c c}w )Núnp.random.hypergeometric©rÛ  rG  rÔ   )rG  rÛ  rÔ   é   r&  rÚ  rÛ  c              3   ó4   K  — | ]  }|d k\  xr |dk  –— Œ y­w©r   rÚ  Nr   ©Ú.0r•   s     r   Ú	<genexpr>z7TestRandom.test_numpy_hypergeometric.<locals>.<genexpr>  ó!   è ø€ Ð;¹°A˜A ™FÒ/ q¨C¡xÓ/¹ùó   ‚g      D@g      N@é † c              3   ó4   K  — | ]  }|d k\  xr |dk  –— Œ y­wr  r   r  s     r   r  z7TestRandom.test_numpy_hypergeometric.<locals>.<genexpr>  r  r  ç      $@c              3   ó4   K  — | ]  }|d k\  xr |dk  –— Œ y­wr  r   r  s     r   r  z7TestRandom.test_numpy_hypergeometric.<locals>.<genexpr>  r  r  g     €V@)r€   r¹   r   r  ÚhypergeometricrÆ   rÿ  Úallrå  r   Úmeanræ  )rµ   Úhgr‹   rÈ   s       r   Útest_numpy_hypergeometricz$TestRandom.test_numpy_hypergeometric  si  € äÐ3Ó4ˆØ×ÑÔ/Ó1Ó2ˆØ×Ñ˜˜Q×-Ñ-Ø*Ð,<Ð=Ø "ð 	ô 	$ô +0°¬*Ó5©* Q‰R��d˜CÕ ¨*ˆÐ5Ø�‰œÑ;¹Ó;Ó;¸QÔ?Ø×Ñ¤§¡¨£
¨DÔ1Ø×ÑœRŸW™W Q›Z¨Ô.Ü,1°#¬JÓ7©J q‰R��f˜cÕ"¨JˆÐ7Ø�‰œÑ;¹Ó;Ó;¸QÔ?Ø×ÑœRŸW™W Q›Z¨Ô.Ü,1°#¬JÓ7©J q‰R�˜˜cÕ"¨JˆÐ7Ø�‰œÑ;¹Ó;Ó;¸QÔ?Ø×Ñ¤§¡¨£
¨DÕ1ùò 6ùò 8ùò 8s   ÁF!ÃF&ÅF+c                 ó$  — | j                  t        «       «      }| j                  t        d«      |j                  ddg«       | j                  t        d«      |j                  ddg«       | j                  t        d«      |j                  dg«       y )Núnp.random.laplacer  r  ©rœ   ©r  r   )r¹   r   r  r~   Úlaplacer|   rz   ©rµ   r‹   s     r   Útest_numpy_laplacezTestRandom.test_numpy_laplace  s|   € Ø×ÑÔ/Ó1Ó2ˆØ×ÑœÐ$7Ó8¸!¿)¹)Ø$ kÐ2ô	4à×ÑœÐ#6Ó7¸¿¹Ø  'Ð*ô	,à×ÑœÐ%8Ó9¸1¿9¹9ÀrÀdÕKr   c                 ó$  — | j                  t        «       «      }| j                  t        d«      |j                  ddg«       | j                  t        d«      |j                  ddg«       | j                  t        d«      |j                  dg«       y )Núnp.random.logisticr  r  r$  r%  r   )r¹   r   r  r~   Úlogisticr|   rz   r'  s     r   Útest_numpy_logisticzTestRandom.test_numpy_logistic&  s|   € Ø×ÑÔ/Ó1Ó2ˆØ×ÑœÐ$8Ó9¸1¿:¹:Ø$ kÐ2ô	4à×ÑœÐ#7Ó8¸!¿*¹*Ø  'Ð*ô	,à×ÑœÐ%9Ó:¸A¿J¹JÈÈÕMr   c                 óº  — | j                  t        «       «      }t        d«      }| j                  ||j                  g d¢d¬«       | j                  t        «       d¬«      }| j                  t        d«      D �cg c]
  } |d«      ‘Œ c}g d	¢«       | j                  t        |d
«       | j                  t        |d«       | j                  t        |d«       y c c}w )Núnp.random.logseries)©rÝ  )g®Gáz®ï?)rá  rú  r&  r†   ©rW   rÔ   g{üÿÿÿÿï?)
iÛv�xið- r  iìË  in‰Ž i¬Íç)l   †&c€iÜ€oirHô iâ  rœ   râ  rã  )	r¹   r   r|   r  Ú	logseriesrÄ   rÆ   r	  rN  )rµ   r‹   r1  rÈ   s       r   Útest_numpy_logserieszTestRandom.test_numpy_logseries.  sÊ   € Ø×ÑÔ/Ó1Ó2ˆÜÐ3Ó4ˆ	Ø×Ñ˜ A§K¡KÚ5Ø "ð 	ô 	$ð
 ×ÑÔ/Ó1¸ÐÓ:ˆØ×Ñ¼eÀB¼iÓH¹i¸™) OÕ4¸iÑHòCô	Dð 	×Ñœ* i°Ô5Ø×Ñœ* i°Ô6Ø×Ñœ* i°Õ5ùò Is   Á9Cc                 ó¼   — | j                  t        «       «      }t        d«      }| j                  ||j                  g d¢d¬«       | j                  t        |d«       y )Núnp.random.poisson)r$  r'  ©r¨   )r  )g     $Œ@rú  r&  râ  )r¹   r   r|   r  Úpoissonr	  rN  )rµ   r‹   r6  s      r   Útest_numpy_poissonzTestRandom.test_numpy_poisson>  sV   € Ø×ÑÔ/Ó1Ó2ˆÜÐ/Ó0ˆà×Ñ˜ !§)¡)ÚDØ "ð 	ô 	$ð 	×Ñœ* g¨tÕ4r   c           	      ó~  — | j                  t        «       d«       t        d«      }| j                  t	        d«      D �cg c]  } |dd«      ‘Œ c}g d¢«       | j                  t	        d«      D �cg c]  } |dd«      ‘Œ c}g d¢«       | j                  t	        d«      D �cg c]  } |dd«      ‘Œ c}g d	¢«       | j                  t	        d«      D �cg c]  } |d
d«      ‘Œ c}g d¢«       t        j                  t	        d«      D �cg c]  } |dd«      ‘Œ c}«      }| j                  |d«       | j                  |d«       | j                  t        |dd«       | j                  t        |dd«       | j                  t        |dd«       | j                  t        |dd«       y c c}w c c}w c c}w c c}w c c}w )Nr   únp.random.negative_binomialrÔ   rà  )
r»   r’   r†   rE  r»   r†   r   r†   r   r   rÝ  )
é7   éG   é8   é9   r<  r<  é"   r:  ée   éC   rÛ  )
ió#  iÀ!  iy#  iL$  iê"  iÍ#  i½#  iF"  i¶"  i�#  ç333333Ó?)
r   r»   é   rh  rh  r   r   r   r†   r   rú  i Êš;g   |ž˜ Bg   $sî Br%  r‡   râ  rã  )r¹   r   r~   rÄ   rÆ   r   r  ÚassertGreaterrý  r	  rN  )rµ   ÚnegbinrÈ   r”  s       r   Útest_numpy_negative_binomialz'TestRandom.test_numpy_negative_binomialG  s�  € Ø×ÑÔ+Ó-¨qÔ1ÜÐ9Ó:ˆØ×Ñ´5¸´9Ó=±9¨a™&  S�/°9Ñ=Ú7ô	9à×Ñ´5¸´9Ó=±9¨a™&  S�/°9Ñ=ÚBô	Dà×Ñ´U¸2´YÓ?±Y°™&  sÕ+°YÑ?ò8ô	9ð 	×Ñ´E¸"´IÓ>±I¨q™&  cÕ*°IÑ>Ú8ô	:ä�G‰GÜ# Bœió)Ù'˜ñ ˜J¨Õ,Ø'ñ)ó *ˆà×Ñ˜1˜jÔ)Ø�‰˜˜:Ô&Ø×Ñœ* f¨a°Ô5Ø×Ñœ* f¨b°#Ô6Ø×Ñœ* f¨b°$Ô7Ø×Ñœ* f¨b°#Õ6ùò! >ùâ=ùâ?ùò ?ùò)s   ¾F&Á0F+Â"F0ÃF5Ä
F:c                 óæ   — | j                  t        «       «      }t        d«      }| j                  ||j                  g d¢«       | j                  t        |d«       | j                  t        |d«       y )Núnp.random.power)r/  r'  )rà  )g      @rœ   râ  )r¹   r   r|   r  Úpowerr	  rN  )rµ   r‹   rH  s      r   Útest_numpy_powerzTestRandom.test_numpy_power\  s^   € Ø×ÑÔ/Ó1Ó2ˆÜÐ+Ó,ˆØ×Ñ˜ §¡Ú9ô	;à×Ñœ* e¨SÔ1Ø×Ñœ* e¨TÕ2r   c                 ó8  — | j                  t        «       «      }t        d«      }t        d«      }| j	                  ||j
                  g d¢«       | j	                  ||j
                  dg«       | j                  t        |d«       | j                  t        |d«       y )Núnp.random.rayleigh)r/  ©rß  )g      9@)rq  r   rœ   râ  )r¹   r   r|   rz   r  Úrayleighr	  rN  )rµ   r‹   Ú	rayleigh1Ú	rayleigh0s       r   Útest_numpy_rayleighzTestRandom.test_numpy_rayleighd  s�   € Ø×ÑÔ/Ó1Ó2ˆÜÐ2Ó3ˆ	ÜÐ 4Ó5ˆ	Ø×Ñ˜ A§J¡JÚ9ô	;à×Ñ˜ A§J¡J°°Ô5Ø×Ñœ* i°Ô5Ø×Ñœ* i°Õ6r   c                 óˆ   — | j                  t        «       «      }t        d«      }| j                  ||j                  dg«       y )Núnp.random.standard_cauchyr   )r¹   r   rz   r  Ústandard_cauchy)rµ   r‹   Úcauchys      r   Útest_numpy_standard_cauchyz%TestRandom.test_numpy_standard_cauchyn  s;   € Ø×ÑÔ/Ó1Ó2ˆÜÐ8Ó9ˆØ×Ñ˜ ×!2Ñ!2°R°DÕ9r   c                 óð   — | j                  t        «       «      }t        d«      }t        j                  t        d«      D �cg c]
  } |d«      ‘Œ c}«      }| j                  t        |«      d«       y c c}w )Núnp.random.standard_trG  rE  r%  )r¶   r   r|   r   r  rÆ   rý  Úabs)rµ   r‹   Ú
standard_trÈ   Úavgs        r   Útest_numpy_standard_tz TestRandom.test_numpy_standard_ts  s_   € ð × Ñ Ô!1Ó!3Ó4ˆÜÐ5Ó6ˆ
Ü�g‰g¬e°D¬kÓ:©k¨‘z !•}¨kÑ:Ó;ˆà�‰œ˜C› #Õ&ùò ;s   ÁA3c                 óJ  — | j                  t        «       «      }t        d«      }| j                  ||j                  ddg«       | j                  t        |dd«       | j                  t        |dd«       | j                  t        |dd«       | j                  t        |dd«       y )Núnp.random.waldr$  )r¨   ç      @rœ   r©   râ  )r¹   r   r~   r  Úwaldr	  rN  )rµ   r‹   r_  s      r   Útest_numpy_waldzTestRandom.test_numpy_wald}  sŒ   € Ø×ÑÔ/Ó1Ó2ˆÜÐ*Ó+ˆØ×Ñ˜˜qŸv™v¨
°JÐ'?Ô@Ø×Ñœ* d¨C°Ô5Ø×Ñœ* d¨D°#Ô6Ø×Ñœ* d¨C°Ô5Ø×Ñœ* d¨C°Õ6r   c           	      ó*  — t        dddg«      }| j                  |t        «       ddddœdddœg¬	«       | j                  t        |d
d«       | j                  t        |dd«       | j                  t        |dd
«       | j                  t        |dd«       y )Nr]  r  r  r_  r©   )r  r  r¨   r^  r  rœ   râ  )ru   ry  r   r	  rN  )rµ   Únumba_versions     r   Útest_numpy_wald_kwargsz!TestRandom.test_numpy_wald_kwargs†  s›   € Ü'Ð(8¸6À7Ð:KÓLˆØ×&Ñ& }Ü'7Ó'9Ø/5Ø;>ÈÑ2MØ;>ÈÑ2Mð2Oð 	'ô 	Pð
 	×Ñœ* m°S¸#Ô>Ø×Ñœ* m°T¸3Ô?Ø×Ñœ* m°S¸#Ô>Ø×Ñœ* m°S¸$Õ?r   c                 óÊ   — | j                  t        «       «      }t        d«      }| j                  ||j                  ddgd¬«       dD ]  }| j                  t        ||«       Œ y )Núnp.random.zipfr¼  rí  rÚ  r&  )r©   r%  rœ   râ  )r¹   r   r|   r  Úzipfr	  rN  )rµ   r‹   rf  Úvals       r   Útest_numpy_zipfzTestRandom.test_numpy_zipf’  s]   € Ø×ÑÔ/Ó1Ó2ˆÜÐ)Ó*ˆØ×Ñ˜˜qŸv™v¨°Ð'7ÀÐÔDÛ(ˆCØ×Ñœj¨$°Õ4ñ )r   c                 ó  — t        j                  d«      t        j                  d«      j                  d«      g}|r| j                  |«      }n| j	                  |«      }|D ]x  }t        d«      D ]h  }|j                  «       }|j                  «       }	 ||«       |st        |j                  «      dk(  sŒF|j                  |	«       | j                  ||	«       Œj Œz |d   }|j                  «       }
 |t        |
«      «       | j                  t        |«      t        |
«      «       | j                  t        |«      t        |
«      «       | j!                  «       5   |t        d«      «       ddd«       y# 1 sw Y   yxY w)	z=
        Check a shuffle()-like function for arrays.
        rg  é    )rF  rh  r’   r†   r   s   xyzN)r   ÚarangeÚreshaper¹   r¶   rÆ   Úcopyr�   ÚshapeÚshufflerë   Ú
memoryviewÚassertNotEqualrŠ   rÄ   ÚsortedÚassertTypingError)rµ   rb   rŒ   rQ  Úarrsr‹   r   rÈ   r[   rZ   r"   s              r   rÍ   zTestRandom._check_shuffle™  s&  € ô —	‘	˜"“œrŸy™y¨›}×4Ñ4°VÓ<Ð=ˆÙØ×"Ñ" 3Ó'‰Aà×$Ñ$ SÓ)ˆAÛˆAÜ˜1–X�Ø—f‘f“h�ØŸ6™6›8�Ù�S”	Ùœs 1§7¡7›|¨qÓ0Ø—I‘I˜hÔ'Ø×+Ñ+¨C°Õ:ñ ð ð �‰GˆØ�F‰F‹HˆÙŒZ˜‹]ÔØ×ÑœD ›G¤T¨!£WÔ-Ø×Ñœ ›¤F¨1£IÔ.à×#Ñ#Õ%Ù”˜FÓ#Ô$÷ &×%Ñ%ús   ÅE5Å5E>c                 óL   — | j                  t        d«      t        «       d«       y )Nzrandom.shuffleF)rÍ   r|   r   rÝ   s    r   Útest_random_shufflezTestRandom.test_random_shuffle´  s   € Ø×ÑœIÐ&6Ó7Ô9IÓ9KÈUÕSr   c                 óL   — | j                  t        d«      t        «       d«       y )Nznp.random.shuffleT)rÍ   r|   r   rÝ   s    r   Útest_numpy_shufflezTestRandom.test_numpy_shuffle·  s   € Ø×ÑœIÐ&9Ó:Ô<LÓ<NÐPTÕUr   c                 óü  — dt        «       z  }t        «       }t        d«      D ]»  }t        j                  t
        j                  d|gt        j                  t        j                  ¬«      }|j                  «       \  }}|j                  dk7  r*t        d|j                  ›d|j                  «       ›d�«      ‚|j                  t        |j                  «       «      «       Œ½ | j                  t!        |«      d|«       y	)
zI
        Check that the state is properly randomized at startup.
        z¡if 1:
            from numba.tests import test_random
            func = getattr(test_random, %(func_name)r)
            print(func(*%(func_args)r))
            r’   z-c)ÚstdoutÚstderrr   zprocess failed with code z: stderr follows
Ú
N)re   rÙ   rÆ   Ú
subprocessÚPopenÚsysÚ
executableÚPIPEÚcommunicateÚ
returncodeÚAssertionErrorÚdecodeÚaddÚfloatÚstriprÄ   r�   )	rµ   Ú	func_nameÚ	func_argsri   ÚnumbersrÈ   ÚpopenÚoutÚerrs	            r   Ú_check_startup_randomnessz$TestRandom._check_startup_randomnessº  sÌ   € ðô “8ñ	ˆô
 “%ˆÜ�q–ˆAÜ×$Ñ$¤c§n¡n°d¸DÐ%AÜ,6¯O©OÄJÇOÁOôUˆEà×(Ñ(Ó*‰HˆC�Ø×Ñ 1Ò$Ý$Ø(-×(8Ó(8¸#¿*¹*½,ð&Hó Ið Ià�K‰Kœ˜cŸi™i›kÓ*Õ+ð ð 	×Ñœ˜W› q¨'Õ2r   c                 ó(   — | j                  dd«       y )Nrò   r   ©r�  rÝ   s    r   Útest_random_random_startupz%TestRandom.test_random_random_startupÎ  s   € Ø×&Ñ& ¸Õ;r   c                 ó(   — | j                  dd«       y )NÚrandom_gaussr$  r‘  rÝ   s    r   Útest_random_gauss_startupz$TestRandom.test_random_gauss_startupÑ  ó   € Ø×&Ñ& ~°zÕBr   c                 ó(   — | j                  dd«       y )Nrú   r   r‘  rÝ   s    r   Útest_numpy_random_startupz$TestRandom.test_numpy_random_startupÔ  s   € Ø×&Ñ& ~°rÕ:r   c                 ó(   — | j                  dd«       y )NÚnumpy_normalr$  r‘  rÝ   s    r   Útest_numpy_gauss_startupz#TestRandom.test_numpy_gauss_startup×  r–  r   c                 óæ  — t        d«      }| j                  t        «       «      }dD ]‡  }t        j                  |«      }|j                  «       }| j                   ||«      |j                  |«      «       | j                   ||«      |j                  |«      «       | j                  ||«       Œ‰ t        j                  d«      j                  dd«      t        j                  d«      j                  ddd«      t        j                  d«      j                  dddd«      g}|D ]K  }|j                  «       }| j                   ||«      |j                  |«      «       | j                  ||«       ŒM y )	Nznp.random.permutation)rE  rÔ   rB  rg  rÔ   r»   rE  é   r’   é$   )	r|   r¹   r   r   rk  rm  rë   Úpermutationrl  )rµ   rb   r‹   Úsr   r"   rt  s          r   Útest_numpy_random_permutationz(TestRandom.test_numpy_random_permutationÚ  s(  € ÜÐ0Ó1ˆØ×ÑÔ/Ó1Ó2ˆÛ ˆAÜ—	‘	˜!“ˆAØ—‘“ˆAà×#Ñ#¡D¨£G¨Q¯]©]¸1Ó-=Ô>à×#Ñ#¡D¨£G¨Q¯]©]¸1Ó-=Ô>à×#Ñ# A qÕ)ð !ô —	‘	˜"“×%Ñ% a¨Ó+Ü—	‘	˜"“×%Ñ% a¨¨AÓ.Ü—	‘	˜"“×%Ñ% a¨¨A¨qÓ1ð3ˆó ˆAØ—‘“ˆAØ×#Ñ#¡D¨£G¨Q¯]©]¸1Ó-=Ô>Ø×#Ñ# A qÕ)ñ r   )r’   r´  é   Nr   )Tr¼   r½   r¾   rï   ró   rû   rý   rÿ   r  r  r  r  r!  r-  r0  r2  r4  r8  r:  r=  r?  rB  rW  r`  rc  ri  rl  rs  ry  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  r!  r(  r,  r2  r7  rE  rI  rP  rU  r[  r`  rc  rh  rÍ   rv  rx  r�  r’  r•  r˜  r›  r¡  r   r   r   rè   rè      sÌ  „ òKò<òKòOòJòCò3òUð :;Ø48óFð CDØ;?óHò4òVò.ò.ò.ò.ò7òCò7ó":òH4ò/ò2ò&Cò
Aò	JòNòQò4ò
Cò	Aò3ò
Kò
7ò*5ò5ò7òVòRò@ò8ò8ò	7òUò9ò4ò
4ò
BòYòDò
Dò=ò7ò9ò2+ò3ò5ò,Fò
5ò2ò&LòNò6ò 5ò7ò*3ò7ò:ò
'ò7ò
@ò5ò%ò6TòVò3ò(<òCò;òCó*r   rè   c                   óâ   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&y%)&ÚTestRandomArrayszA
    Test array-producing variants of np.random.* functions.
    c                 óL   — d|›�}dj                  dd | «      }t        ||«      S )Nú
np.random.ú, Úabcd)rp   rk   )rµ   ÚfuncnameÚnargsÚqualnamerh   s        r   Ú_compile_array_distz$TestRandomArrays._compile_array_distõ  s+   � Ù%-Ð/ˆØ—I‘I˜f V e˜nÓ-ˆ	Ü˜X yÓ1Ð1r   c                 óè  — | j                  |t        |«      dz   «      }| j                  t        «       «      }t	        ||«      }dD ]†  }||fz   } ||Ž } ||Ž }	|j
                  t        j
                  d«      k(  r=|	j
                  t        j
                  d«      k(  r|j                  |	j
                  «      }| j                  ||	dd¬«       Œˆ |dz   } ||Ž } ||Ž }	| j                  ||	dd¬«       y	)
zM
        Check returning an array according to a given distribution.
        r†   ©rF  ©r»   r’   r\  r[  r´  rE  ©r  r  r   N)	r¬  r�   r¹   r   ru  r›   r   Úastyperë   )
rµ   r©  Úscalar_argsÚcfuncr‹   rj   r6   r  rZ   r[   s
             r   Ú_check_array_distz"TestRandomArrays._check_array_distú  sð   € ð ×(Ñ(¨´3°{Ó3CÀaÑ3GÓHˆØ×ÑÔ/Ó1Ó2ˆÜ˜˜HÓ%ˆÛˆDØ $ Ñ(ˆDÙ˜t�}ˆHÙ˜�,ˆCà—‘¤"§(¡(¨7Ó"3Ò3Ø—I‘I¤§¡¨'Ó!2Ò2Ø#Ÿ?™?¨3¯9©9Ó5�Ø×#Ñ# H¨c¸ÀqÐ#ÕIð  ð ˜WÑ$ˆÙ˜4�=ˆÙ�TˆlˆØ×Ñ ¨#°HÀ1ÐÕEr   c                 óÈ  ‡‡— | j                  |t        |«      dz   «      }| j                  t        «       «      }t	        |d«      Š||z   Šˆˆfd„}|dz   } |«       } ||Ž }	| j                  ||	dd¬«       dD ]g  }
||
fz   }t        j                  |
«      }|j                  }t        |j                  «      D ]  } |«       ||<   Œ  ||Ž }	| j                  ||	dd¬«       Œi y	)
z–
        Check returning an array according to a given gamma distribution,
        where we use CPython's implementation rather than NumPy's.
        r†   rª   c                  ó   •—  ‰‰Ž S r   r   )Ú_argsrj   Úpyfunc_argss    €€r   r•  z:TestRandomArrays._check_array_dist_gamma.<locals>.<lambda>  s
   ø€ ¡&¨+Ñ"6r   r   r´  rE  r°  r®  N)r¬  r�   r¶   r   ru  rë   r   ÚemptyÚflatrÆ   r6   )rµ   r©  r²  Úextra_pyfunc_argsr³  r‹   Úpyrandomr  rZ   r[   r6   Úexpected_flatÚidxrj   r¸  s                @@r   Ú_check_array_dist_gammaz(TestRandomArrays._check_array_dist_gamma  sí   ù€ ð
 ×(Ñ(¨´3°{Ó3CÀaÑ3GÓHˆØ× Ñ Ô!1Ó!3Ó4ˆÜ˜˜NÓ+ˆØ!Ð$5Ñ5ˆÜ6ˆà˜WÑ$ˆÙ“:ˆÙ�TˆlˆØ×Ñ ¨#°HÀ1ÐÔEÛˆDØ $ Ñ(ˆDÜ—x‘x “~ˆHØ$ŸM™MˆMÜ˜XŸ]™]Ö+�Ù%-£Z�˜cÒ"ð ,á˜�,ˆCØ×#Ñ# H¨c¸ÀqÐ#ÕIñ  r   c                 ó4  — t         j                  d„ «       }| j                  |t        |«      dz   «      }d|›�}dj	                  ddt        |«       «      }t        ||«      }dD ]  }||fz   }	 |«         ||	Ž }
 |«        t        j                  ||
j                  ¬«      }|j                  }t        |j                  «      D ]
  } ||Ž ||<   Œ | j                  ||
d	d
¬«       Œ�  |«        |dz   }	 ||Ž } |«         ||	Ž }
| j                  ||
d	d
¬«       y)a½  
        Check function returning an array against its scalar implementation.
        Because we use the CPython gamma distribution rather than the NumPy one,
        distributions which use the gamma distribution vary in ways that are
        difficult to compare. Instead, we compile both the array and scalar
        versions and check that the array is filled with the same values as
        we would expect from the scalar version.
        c                  óB   — t         j                  j                  d«       y )NiÒ  )r   r   rW   r   r   r   Úresetz6TestRandomArrays._check_array_dist_self.<locals>.reset0  s   € ä�I‰I�N‰N˜4Õ r   r†   r¦  r§  r¨  Nr®  rš   r´  rE  r°  r   )Únumbar   r¬  r�   rp   rk   r   r¹  r›   rº  rÆ   r6   rë   )rµ   r©  r²  rÂ  Ú
array_funcr«  rh   Úscalar_funcr6   r  r[   rZ   rº  r¾  s                 r   Ú_check_array_dist_selfz'TestRandomArrays._check_array_dist_self'  s)  € ô 
�‰ñ	!ó 
ð	!ð ×-Ñ-¨h¼¸KÓ8HÈ1Ñ8LÓM‰
á%-Ð/ˆØ—I‘I˜fÐ%6¤c¨+Ó&6Ð7Ó8ˆ	Ü# H¨iÓ8ˆãˆDØ $ Ñ(ˆDÙŒGÙ˜dÐ#ˆCÙŒGô —x‘x ¨C¯I©IÔ6ˆHØ—=‘=ˆDÜ˜XŸ]™]Ö+�Ù'¨Ð5��S’	ð ,à×#Ñ# H¨c¸ÀqÐ#ÕIð  ñ 	ŒØ˜WÑ$ˆÙ Ð,ˆÙŒÙ˜$ÐˆØ×Ñ ¨#°HÀ1ÐÕEr   c                 ó’  — | j                  dd«      }d\  }}d} ||||«      }| j                  |t        j                  «       | j	                  |j
                  |«       | j                  |j                  t        j                  d«      t        j                  d«      f«       | j                  t        j                  ||k\  «      «       | j                  t        j                  ||k  «      «       ||z   dz  }||z
  dz  }| j                  |j                  «       ||z
  «       | j                  |j                  «       ||z   «       y )	Nr   r’   )rÛ  rÜ  ©r  r  r\  r[  r»   rg  )r¬  rÃ   r   ÚndarrayrÄ   rn  ÚassertInr›   rÿ  r  rå  r  ræ  )rµ   r³  r€  r�  r6   Úresr  ré  s           r   rc  z#TestRandomArrays.test_numpy_randintN  s  € Ø×(Ñ(¨°AÓ6ˆØ‰	ˆˆTØˆÙ�C˜˜tÓ$ˆØ×Ñ˜c¤2§:¡:Ô.Ø×Ñ˜Ÿ™ DÔ)Ø�‰�c—i‘i¤"§(¡(¨7Ó"3´R·X±X¸gÓ5FÐ!GÔHØ�‰œŸ™˜s c™zÓ*Ô+Ø�‰œŸ™˜s T™zÓ*Ô+à�d‘
˜aÑˆØ�c‰z˜RÑˆØ×Ñ §¡£
¨D°3©JÔ7Ø×Ñ˜SŸX™X›Z¨°©Õ4r   c                 ó²  — | j                  dd«      }d} ||«      }| j                  |t        j                  «       | j	                  |j
                  |«       | j	                  |j                  t        j                  d«      «       | j                  t        j                  |dk\  «      «       | j                  t        j                  |dk  «      «       | j                  t        j                  |dk  «      «       | j                  t        j                  |dk\  «      «       |j                  «       }| j                  |d	«       | j                  |d
«       y )Nr   r†   rÈ  Úfloat64rœ   r©   rÝ  rà  gÍÌÌÌÌÌÜ?gš™™™™™á?)r¬  rÃ   r   rÉ  rÄ   rn  r›   rÿ  r  Úanyr  rå  ræ  )rµ   r³  r6   rË  r  s        r   Útest_numpy_random_randomz)TestRandomArrays.test_numpy_random_random^  sö   € Ø×(Ñ(¨°1Ó5ˆØˆÙ�D‹kˆØ×Ñ˜c¤2§:¡:Ô.Ø×Ñ˜Ÿ™ DÔ)Ø×Ñ˜Ÿ™¤B§H¡H¨YÓ$7Ô8à�‰œŸ™˜s c™zÓ*Ô+Ø�‰œŸ™˜s S™yÓ)Ô*à�‰œŸ™˜s c™zÓ*Ô+Ø�‰œŸ™˜s c™zÓ*Ô+Ø�x‰x‹zˆØ×Ñ  dÔ+Ø×Ñ˜T 4Õ(r   c                 ó(   — | j                  dd«       y )NÚbetar™  ©rÆ  rÝ   s    r   rª  z TestRandomArrays.test_numpy_betar  s   € Ø×#Ñ# F¨JÕ7r   c                 ó(   — | j                  dd«       y )Nrä  )rg  r%  ©r´  rÝ   s    r   rê  z$TestRandomArrays.test_numpy_binomialu  s   € Ø×Ñ˜z¨9Õ5r   c                 ó(   — | j                  dd«       y )Nrð  r¼  rÒ  rÝ   s    r   rñ  z%TestRandomArrays.test_numpy_chisquarex  s   € Ø×#Ñ# K°Õ8r   c                 ó(   — | j                  dd«       y )Nrµ  r¼  rÔ  rÝ   s    r   rÀ  z'TestRandomArrays.test_numpy_exponential{  s   € Ø×Ñ˜}¨fÕ5r   c                 ó(   — | j                  dd«       y )Nrõ  rô  rÒ  rÝ   s    r   rö  zTestRandomArrays.test_numpy_f~  s   € Ø×#Ñ# C¨Õ4r   c                 ó*   — | j                  ddd«       y )NÚgamma)r¨   r©   r   ©r¿  rÝ   s    r   r¢  z!TestRandomArrays.test_numpy_gamma�  s   € Ø×$Ñ$ W¨j¸"Õ=r   c                 ó(   — | j                  dd«       y )NÚ	geometricr»  rÔ  rÝ   s    r   r  z%TestRandomArrays.test_numpy_geometric„  ó   € Ø×Ñ˜{¨FÕ3r   c                 ó(   — | j                  dd«       y )Nr  ©rn  r%  rÔ  rÝ   s    r   r  z"TestRandomArrays.test_numpy_gumbel‡  ó   € Ø×Ñ˜x¨Õ4r   c                 ó(   — | j                  dd«       y )Nr  r  rÔ  rÝ   s    r   r!  z*TestRandomArrays.test_numpy_hypergeometricŠ  s   € Ø×ÑÐ/Ð1AÕBr   c                 ó(   — | j                  dd«       y )Nr&  rß  rÔ  rÝ   s    r   r(  z#TestRandomArrays.test_numpy_laplace�  ó   € Ø×Ñ˜y¨*Õ5r   c                 ó(   — | j                  dd«       y )Nr+  rß  rÔ  rÝ   s    r   r,  z$TestRandomArrays.test_numpy_logistic�  s   € Ø×Ñ˜z¨:Õ6r   c                 ó(   — | j                  dd«       y )Nr<  )rn  r¨   rÔ  rÝ   s    r   rB  z%TestRandomArrays.test_numpy_lognormal“  s   € Ø×Ñ˜{¨JÕ7r   c                 ó(   — | j                  dd«       y )Nr1  rL  rÔ  rÝ   s    r   r2  z%TestRandomArrays.test_numpy_logseries–  rÝ  r   c                 ó(   — | j                  dd«       y )Nr(  )r%  r¨   rÔ  rÝ   s    r   r4  z"TestRandomArrays.test_numpy_normal™  rà  r   c                 ó(   — | j                  dd«       y )NrÌ  r'  rÔ  rÝ   s    r   rÎ  z"TestRandomArrays.test_numpy_paretoœ  s   € Ø×Ñ˜x¨Õ0r   c                 ó(   — | j                  dd«       y )Nr6  rL  rÔ  rÝ   s    r   r7  z#TestRandomArrays.test_numpy_poissonŸ  s   € Ø×Ñ˜y¨&Õ1r   c                 ó(   — | j                  dd«       y )NrH  rL  rÔ  rÝ   s    r   rI  z!TestRandomArrays.test_numpy_power¢  s   € Ø×Ñ˜w¨Õ/r   c                 ó¦   —  t        d¬«      t        «      } |ddd«      \  }}| j                  |j                  d«       | j	                  ||«       y ©NTrc   é*   r»   r’   r¯  )r   r\   rÄ   rn  rë   ©rµ   r³  rZ   r[   s       r   Útest_numpy_randz TestRandomArrays.test_numpy_rand¥  sI   € Ø"”˜TÔ"Ô#3Ó4ˆÙ˜b ! Q›‰ˆ�#Ø×Ñ˜Ÿ™ FÔ+Ø×Ñ ¨#Õ.r   c                 ó¦   —  t        d¬«      t        «      } |ddd«      \  }}| j                  |j                  d«       | j	                  ||«       y rì  )r   r`   rÄ   rn  rë   rî  s       r   r:  z!TestRandomArrays.test_numpy_randn«  sI   € Ø"”˜TÔ"Ô#4Ó5ˆÙ˜b ! Q›‰ˆ�#Ø×Ñ˜Ÿ™ FÔ+Ø×Ñ ¨#Õ.r   c                 ó(   — | j                  dd«       y )NrM  rL  rÔ  rÝ   s    r   rP  z$TestRandomArrays.test_numpy_rayleigh±  s   € Ø×Ñ˜z¨6Õ2r   c                 ó(   — | j                  dd«       y )NrS  r   rÔ  rÝ   s    r   rU  z+TestRandomArrays.test_numpy_standard_cauchy´  ó   € Ø×ÑÐ0°"Õ5r   c                 ó(   — | j                  dd«       y )NÚstandard_exponentialr   rÔ  rÝ   s    r   rÃ  z0TestRandomArrays.test_numpy_standard_exponential·  s   € Ø×ÑÐ5°rÕ:r   c                 ó*   — | j                  ddd«       y )NÚstandard_gammar5  r»  rÚ  rÝ   s    r   Útest_numpy_standard_gammaz*TestRandomArrays.test_numpy_standard_gammaº  s   € Ø×$Ñ$Ð%5°v¸vÕFr   c                 ó(   — | j                  dd«       y )Nr^   r   rÔ  rÝ   s    r   r8  z+TestRandomArrays.test_numpy_standard_normal½  ró  r   c                 ó(   — | j                  dd«       y )NrŒ  )rn  r‹  rŠ  rÔ  rÝ   s    r   r—  z&TestRandomArrays.test_numpy_triangularÀ  s   € Ø×Ñ˜|¨_Õ=r   c                 ó(   — | j                  dd«       y )Nrì   ©rÝ  rÞ  rÔ  rÝ   s    r   r~  z#TestRandomArrays.test_numpy_uniformÃ  rã  r   c                 ó(   — | j                  dd«       y )Nr_  rü  rÔ  rÝ   s    r   r`  z TestRandomArrays.test_numpy_waldÆ  s   € Ø×Ñ˜v zÕ2r   c                 ó(   — | j                  dd«       y )NÚvonmisesr™  rÒ  rÝ   s    r   r²  z$TestRandomArrays.test_numpy_vonmisesÉ  s   € Ø×#Ñ# J°
Õ;r   c                 ó(   — | j                  dd«       y )Nrf  rí  rÔ  rÝ   s    r   rh  z TestRandomArrays.test_numpy_zipfÌ  s   € Ø×Ñ˜v vÕ.r   N)'r¼   r½   r¾   ræ   r¬  r´  r¿  rÆ  rc  rÏ  rª  rê  rñ  rÀ  rö  r¢  r  r  r!  r(  r,  rB  r2  r4  rÎ  r7  rI  rï  r:  rP  rU  rÃ  rø  r8  r—  r~  r`  r²  rh  r   r   r   r¤  r¤  ð  s¼   „ ñò2ò
Fò*Jò0%FòN5ò )ò(8ò6ò9ò6ò5ò>ò4ò5òCò6ò7ò8ò4ò5ò1ò2ò0ò/ò/ò3ò6ò;òGò6ò>ò6ò3ò<ó/r   r¤  c                   óh   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	dd„Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestRandomChoicez 
    Test np.random.choice.
    c                 ó6  — t        |«      }t        |«      }| j                  ||«       | j                  t        |«      t	        |«      «       |r&| j                  t        |«      t        |«      |«       y| j                  t        |«      t        |«      |«       y)zD
        Check basic expectations about a batch of samples.
        N)rÙ   ræ  rq  rr  rŠ   rý  r�   rÄ   )rµ   ÚpoprË  r:   ÚspopÚsress         r   Ú_check_resultszTestRandomChoice._check_resultsÕ  su   € ô �3‹xˆÜ�3‹xˆà×Ñ˜T 4Ô(à×ÑœF 3›K¬¨c«Ô3Ùà�O‰OœC ›I¤s¨3£x°Õ5ð ×ÑœS ›Y¬¨C«°#Õ6r   c                 ó  — | j                  t        |«      t        |«      dz  «       t        |«      t        |«      z  }t        j                  |«      }|D ]1  }||   }| j                  ||dz  «       | j	                  ||dz  «       Œ3 y)ú5
        Check distribution of some samples.
        rÚ  r%  r¨   N)rå  r�   ÚcollectionsÚCounterræ  )rµ   r  ÚsamplesÚexpected_frequencyr-   Úvaluer?   s          r   r  zTestRandomChoice._check_distæ  s‚   € ð
 	×Ñ¤ G£¬c°#«h¸©nÔ=ä  ›\¬C°«HÑ4ÐÜ×Ñ Ó(ˆÛˆEØ�%‘ˆAØ×#Ñ# AÐ'9¸CÑ'?Ô@Ø× Ñ  Ð$6¸Ñ$<Õ=ñ r   c                 ó„   — g }t        |«      |k  r,|t         |«       j                  «      z  }t        |«      |k  rŒ,|d| S )zk
        Accumulate array results produced by *func* until they reach
        *nresults* elements.
        N)r�   rŠ   rº  )rµ   rb   ÚnresultsrË  s       r   Ú_accumulate_array_resultsz*TestRandomChoice._accumulate_array_resultsô  sD   € ð
 ˆÜ�#‹h˜Ò!Ø”4™›Ÿ™Ó$Ñ$ˆCô �#‹h˜Ó!à�9�Hˆ~Ðr   c                 ó   —  t        d¬«      t        «      }t        |«      }t        |«      D �cg c]
  } ||«      ‘Œ }}| j	                  ||«       t        |dz  «      D �cg c]
  } ||«      ‘Œ }}| j                  ||«       yc c}w c c}w )z.
        Check choice(a) against pop.
        Trc   rÚ  N)r   r2   r�   rÆ   r  r  )rµ   r   r  r³  r?   rÈ   rË  Údists           r   Ú_check_choice_1z TestRandomChoice._check_choice_1þ  s‚   € ð #”˜TÔ"¤=Ó1ˆÜ�‹HˆÜ!& q¤Ó*¡˜A‰u�Q�x ˆÐ*Ø×Ñ˜C Ô%Ü"'¨¨C©¤.Ó1¡.˜Q‘�a• .ˆÐ1Ø×Ñ˜˜dÕ#ùò +ùâ1s   ¯BÁ"Bc                 óT   — d}t        t        |«      «      }| j                  ||«       y)z"
        Test choice(int)
        rú  N)rŠ   rÆ   r  ©rµ   r?   r  s      r   Útest_choice_scalar_1z%TestRandomChoice.test_choice_scalar_1	  s&   € ð ˆÜ”5˜“8‹nˆØ×Ñ˜Q Õ$r   c                 ó^   — t        j                  d«      dz  dz   }| j                  ||«       y)z$
        Test choice(array)
        rú  r»   rÚ  N)r   rk  r  ©rµ   r  s     r   Útest_choice_array_1z$TestRandomChoice.test_choice_array_1  ó+   € ô �i‰i˜‹m˜aÑ #Ñ%ˆØ×Ñ˜S #Õ&r   c                 óÂ   — t        |«      }t         |«       j                  «      }| j                  |||«       | j	                  ||dz  «      }| j                  ||«       y)zP
        Check array results produced by *func* and their distribution.
        rÚ  N)r�   rŠ   rº  r  r  r  )rµ   rb   r  r:   r?   rË  r  s          r   Ú_check_array_resultsz%TestRandomChoice._check_array_results  sU   € ô �‹HˆÜ‘4“6—;‘;ÓˆØ×Ñ˜C  gÔ.Ø×-Ñ-¨d°A¸±GÓ<ˆØ×Ñ˜˜dÕ#r   c                 ó"  ‡‡‡—  t        d¬«      t        «      Št        |«      }|dz
  d|dz
  dz  f|dz  g}|D ]S  Š ‰‰‰«      }t        ‰t        «      r‰n‰f}| j                  |j                  |«       | j                  ˆˆˆfd„|«       ŒU y)z4
        Check choice(a, size) against pop.
        Trc   rÔ   r’   r†   c                  ó   •—  ‰‰ ‰«      S r   r   ©r   r³  r6   s   €€€r   r•  z2TestRandomChoice._check_choice_2.<locals>.<lambda>2  s   ø€ ©e°A°t¬nr   N)r   r8   r�   Ú
isinstancerØ   rÄ   rn  r  )	rµ   r   r  r?   ÚsizesrË  Úexpected_shaper³  r6   s	    `     @@r   Ú_check_choice_2z TestRandomChoice._check_choice_2"  sŽ   ú€ ð #”˜TÔ"¤=Ó1ˆÜ�‹Hˆð �R‘˜!˜a !™e¨™\Ð*¨A°©FÐ3ˆãˆDá˜˜4“.ˆCÜ%/°´eÔ%<™TÀ4À'ˆNØ×Ñ˜SŸY™Y¨Ô7à×%Ñ%Õ&<¸cÕBñ r   c                 óV   — d}t        j                  |«      }| j                  ||«       y)z(
        Test choice(int, size)
        rú  N©r   rk  r$  r  s      r   Útest_choice_scalar_2z%TestRandomChoice.test_choice_scalar_24  ó&   € ð ˆÜ�i‰i˜‹lˆØ×Ñ˜Q Õ$r   c                 ó^   — t        j                  d«      dz  dz   }| j                  ||«       y)z*
        Test choice(array, size)
        rú  r»   rÚ  Nr&  r  s     r   Útest_choice_array_2z$TestRandomChoice.test_choice_array_2<  r  r   c                 ó  ‡‡	‡
—  t        d¬«      t        «      Š	t        |«      }|dz
  d|dz
  dz  fg}ddg}|D ]D  Š
dD ]=  } ‰	‰‰
|«      }t        ‰
t        «      r‰
n‰
f}| j                  |j                  |«       Œ? ŒF |D ]  Š
| j                  ˆˆ	ˆ
fd„|«       Œ |D ]  Š
| j                  ˆˆ	ˆ
fd	„|d«       Œ |dz   d|dz  dz   ffD ]*  Š
| j                  t        «      5   ‰	‰‰
d«       d
d
d
«       Œ, y
# 1 sw Y   Œ7xY w)z=
        Check choice(a, size, replace) against pop.
        Trc   rÔ   r’   r†   F)TFc                  ó   •—  ‰‰ ‰d«      S )NTr   r   s   €€€r   r•  z2TestRandomChoice._check_choice_3.<locals>.<lambda>W  s   ø€ ©e°A°t¸TÔ.Br   c                  ó   •—  ‰‰ ‰d«      S )NFr   r   s   €€€r   r•  z2TestRandomChoice._check_choice_3.<locals>.<lambda>Z  s   ø€ ©e°A°t¸UÔ.Cr   N)
r   r;   r�   r!  rØ   rÄ   rn  r  r	  rN  )rµ   r   r  r?   r"  Úreplacesr:   rË  r#  r³  r6   s    `       @@r   Ú_check_choice_3z TestRandomChoice._check_choice_3C  s  ú€ ð #”˜TÔ"¤=Ó1ˆÜ�‹Hˆð �R‘˜!˜a !™e¨™\Ð*Ð+ˆØ˜%�=ˆó ˆDÛ(�Ù˜A˜t WÓ-�Ü)3°D¼%Ô)@¡ÀtÀg�Ø× Ñ  §¡¨NÕ;ñ )ð ó ˆDØ×%Ñ%Õ&BÀCÕHð ó ˆDØ×%Ñ%Õ&CÀSÈ%ÕPð ð ˜‘U˜Q  Q¡¨¡
˜OÓ,ˆDØ×"Ñ"¤:Õ.Ù�a˜˜uÔ%÷ /Ð.ñ -ß.Ð.ús   Ã%C;Ã;D	c                 óV   — d}t        j                  |«      }| j                  ||«       y)z1
        Test choice(int, size, replace)
        rú  N©r   rk  r/  r  s      r   Útest_choice_scalar_3z%TestRandomChoice.test_choice_scalar_3a  r(  r   c                 ó^   — t        j                  d«      dz  dz   }| j                  ||«       y)z3
        Test choice(array, size, replace)
        rú  r»   rÚ  Nr1  r  s     r   Útest_choice_array_3z$TestRandomChoice.test_choice_array_3i  r  r   c                 óÚ  — t        d¬«      d„ «       }t        j                  j                  dd¬«      j	                  t        j
                  «      }|j                  «       }|j                  d|«      }|j                  «       } |d|«      }t        j                  j                  ||«       t        j                  j                  ||«       t        j                  j                  ||«       y )NTrc   c                 óø   — t         j                  j                  d«       t        j                  | dft         j                  «      }t        | «      D ]&  }t         j                  j                  |dd«      ||<   Œ( |S )Ni9  r»   F)r   r   rW   r¹  r\  rÆ   r1   )Ún_to_returnÚchoice_arrayr�  rÈ   s       r   Únumba_randsz>TestRandomChoice.test_choice_follows_seed.<locals>.numba_randss  s[   € ä�I‰I�N‰N˜4Ô Ü—(‘(˜K¨Ð+¬R¯X©XÓ6ˆCÜ˜;Ö'�ÜŸ™×)Ñ)¨,¸¸5ÓA��A’ð (àˆJr   i,  rÛ  r5   rE  )
r   r   r   r   r±  r\  rm  Úpy_funcÚtestingÚassert_allclose)rµ   r9  r8  Útmp_nprZ   Útmp_nbr[   s          r   Útest_choice_follows_seedz)TestRandomChoice.test_choice_follows_seedp  s»   € ô 
�dÔ	ñ	ó 
ð	ô —y‘y×(Ñ(¨°4Ð(Ó8×?Ñ?ÄÇÁÓIˆØ×"Ñ"Ó$ˆØ×&Ñ& q¨&Ó1ˆØ×"Ñ"Ó$ˆÙ˜!˜VÓ$ˆÜ
�
‰
×"Ñ" 8¨SÔ1ä
�
‰
×"Ñ" <°Ô8Ü
�
‰
×"Ñ" <°Õ8r   N)T)r¼   r½   r¾   ræ   r  r  r  r  r  r  r  r$  r'  r*  r/  r2  r4  r?  r   r   r   r  r  Ð  sN   „ ñó7ò">òò	$ò%ò'ó$òCò$%ò'ò&ò<%ò'ó9r   r  c                   óŽ   — e Zd ZdZ ej
                  g d¢ej                  ¬«      Zeej                  «       z  Zd„ Z	d„ Z
d„ Zd„ Zy)	ÚTestRandomMultinomialz%
    Test np.random.multinomial.
    )r†   r†   r†   r»   r’   r†   rš   c                 ó8  — | j                  |t        j                  «       | j                  |j                  t        |«      f«       | j                  |j                  t        j                  d«      t        j                  d«      f«       | j                  |j                  «       |«       t        ||«      D ]a  \  }}| j                  |d«       | j                  ||«       t        |«      |z  }| j                  ||dz  «       | j                  ||dz  «       Œc y)r	  r\  r[  r   r%  r¨   N)rÃ   r   rÉ  rÄ   rn  r�   rÊ  r›   ÚsumÚziprå  ræ  r‡  )rµ   r?   r@   Úsampler  ÚnexpÚpexps          r   Ú_check_samplez#TestRandomMultinomial._check_sampleŽ  sÛ   € ð 	×Ñ˜f¤b§j¡jÔ1Ø×Ñ˜Ÿ™¬¨E«
 }Ô5Ø�‰�f—l‘l¤R§X¡X¨gÓ%6¼¿¹ÀÓ8IÐ$JÔKà×Ñ˜Ÿ™› qÔ)Ü˜5 &Ö)‰GˆAˆtØ×#Ñ# D¨!Ô,Ø× Ñ   qÔ)Ü˜“; ‘?ˆDØ×#Ñ# D¨!¨c©'Ô2Ø× Ñ   q¨3¡wÕ/ñ *r   c                 óŒ  —  t        d¬«      t        «      }d| j                  }} |||«      }| j                  |||«       t	        |«      } |||«      }| j                  |||«       d}t        j                  dd|dz  dgt
        j                  ¬«      }||j                  «       z  } |||«      }| j                  |||«       y	)
z,
        Test multinomial(n, pvals)
        Trc   rÛ  i@B r†   r   rÚ  rš   N)	r   rA   r@   rH  rŠ   r   rž   rÍ  rC  )rµ   r³  r?   r@   rË  s        r   Útest_multinomial_2z(TestRandomMultinomial.test_multinomial_2ž  s¹   € ð #”˜TÔ"Ô#5Ó6ˆØ˜Ÿ™ˆ5ˆÙ�A�u‹oˆØ×Ñ˜1˜e SÔ)ä�U“ˆÙ�A�u‹oˆØ×Ñ˜1˜e SÔ)àˆÜ—‘˜!˜Q  S¡¨!Ð,´B·J±JÔ?ˆØ�—‘“ÑˆÙ�A�u‹oˆØ×Ñ˜1˜e SÕ)r   c                 óÖ   —  t        d¬«      t        «      }d| j                  }}d} ||||«      }| j                  |j                  d   |«       |D ]  }| j                  |||«       Œ y)z7
        Test multinomial(n, pvals, size: int)
        Trc   rÛ  rÔ   r   N)r   rD   r@   rÄ   rn  rH  ©rµ   r³  r?   r@   ÚkrË  rE  s          r   Útest_multinomial_3_intz,TestRandomMultinomial.test_multinomial_3_int±  sj   € ð #”˜TÔ"Ô#5Ó6ˆØ˜Ÿ™ˆ5ˆØˆÙ�A�u˜aÓ ˆØ×Ñ˜Ÿ™ 1™ qÔ)ÛˆFØ×Ñ˜q %¨Õ0ñ r   c                 ó  —  t        d¬«      t        «      }d| j                  }}d} ||||«      }| j                  |j                  dd |«       |j                  d|j                  d   f«      D ]  }| j                  |||«       Œ y)z9
        Test multinomial(n, pvals, size: tuple)
        Trc   rÛ  )r’   rh  Nr‡   )r   rD   r@   rÄ   rn  rl  rH  rL  s          r   Útest_multinomial_3_tuplez.TestRandomMultinomial.test_multinomial_3_tuple½  s‚   € ð #”˜TÔ"Ô#5Ó6ˆØ˜Ÿ™ˆ5ˆØˆÙ�A�u˜aÓ ˆØ×Ñ˜Ÿ™ 3 B˜¨Ô+Ø—k‘k 2 s§y¡y°¡}Ð"5Ö6ˆFØ×Ñ˜q %¨Õ0ñ 7r   N)r¼   r½   r¾   ræ   r   rž   rÍ  r@   rC  rH  rJ  rN  rP  r   r   r   rA  rA  †  sD   „ ñð ˆB�H‰HÒ'¨r¯z©zÔ:€EØ	ˆU�Y‰Y‹[Ñ€Eò0ò *ò&
1ó
1r   rA  c                   ód   — e Zd Z ej                  g d¢ej
                  ¬«      Zd„ Zd„ Zd„ Z	d„ Z
y)ÚTestRandomDirichlet)r†   r†   r†   r»   rš   c                 óð  — | j                  |t        j                  «       | j                  |j                  t        j
                  «       |€&| j                  |j                  t        |«      «       nbt        |«      t        u r(| j                  |j                  |t        |«      f«       n)| j                  |j                  |t        |«      fz   «       	 t        j                  |«      D ]&  }| j                  |d«       | j                  |d«       Œ( |€#| j                  |j                  «       dd¬«       yt        j                  |j                  d¬«      «      D ]  }| j                  |dd¬«       Œ y)zCheck output structureNr   r†   rE  )Úplacesr‡   )Úaxis)rÃ   r   rÉ  rÄ   r›   rÍ  r6   r�   Útyper”   rn  Únditerrå  ræ  ÚassertAlmostEqualrC  )rµ   rI   r6   rE  rg  Útotalss         r   rH  z!TestRandomDirichlet._check_sampleÍ  s   € ð 	×Ñ˜f¤b§j¡jÔ1Ø×Ñ˜Ÿ™¤r§z¡zÔ2Øˆ<Ø×Ñ˜VŸ[™[¬#¨e«*Õ5Ü�$‹Zœ3ÑØ×Ñ˜VŸ\™\¨D´#°e³*Ð+=Õ>à×Ñ˜VŸ\™\¨4´3°u³:°-Ñ+?Ô@à*Ü—9‘9˜VÖ$ˆCØ×#Ñ# C¨Ô+Ø× Ñ   aÕ(ð %ð ˆ<Ø×"Ñ" 6§:¡:£<°¸1Ð"Õ=äŸ)™) F§J¡J°B JÓ$7Ö8�Ø×&Ñ& v¨q¸Ð&Õ;ñ 9r   c                 óN  —  t        d¬«      t        «      }| j                  t        | j                  «      t	        j
                  g d¢t        j                  ¬«      t	        j
                  g d¢t        j                  ¬«      f}|D ]  } ||«      }| j                  |d|«       Œ y)ú2
        Test dirichlet(alpha, size=None)
        Trc   ©r†   r†   rÜ  r†   rš   ©r†   r†   rn  r†   N)r   rL   rI   rØ   r   rž   rÍ  rH  )rµ   r³  ÚalphasrI   rË  s        r   Útest_dirichlet_defaultz*TestRandomDirichlet.test_dirichlet_defaultã  s|   € ð #”˜TÔ"Ô#:Ó;ˆà�J‰JÜ�$—*‘*ÓÜ�H‰HÒ%¬R¯Z©ZÔ8Ü�H‰H’^¬2¯:©:Ô6ð	
ˆó ˆEÙ˜“,ˆCØ×Ñ˜u d¨CÕ0ñ r   c                 ó‚  —  t        d¬«      t        «      }d}| j                  t        | j                  «      t	        j
                  g d¢t        j                  ¬«      t	        j
                  g d¢t        j                  ¬«      f}t        j                  ||«      D ]!  \  }} |||«      }| j                  |||«       Œ# y)r[  Trc   )N©rÔ   ©rÔ   rÔ   r\  rš   r]  N)
r   rJ   rI   rØ   r   rž   rÍ  Ú	itertoolsÚproductrH  )rµ   r³  r"  r^  rI   r6   rË  s          r   Útest_dirichletz"TestRandomDirichlet.test_dirichletò  s”   € ð #”˜TÔ"¤?Ó3ˆØ'ˆà�J‰JÜ�$—*‘*ÓÜ�H‰HÒ%¬R¯Z©ZÔ8Ü�H‰H’^¬2¯:©:Ô6ð	
ˆô %×,Ñ,¨V°UÖ;‰KˆE�4Ù˜˜tÓ$ˆCØ×Ñ˜u d¨CÕ0ñ <r   c           
      ó.  —  t        d¬«      t        «      }t        d«      }| j                  t        «      5 } ||d«       d d d «       | j                  dt        j                  «      «       | j                  }ddddd	d
t        j                  d«      t        j                  d«      ff}|D ]N  }| j                  t        «      5 } |||«       d d d «       | j                  dt        |j                  «      «       ŒP y # 1 sw Y   Œ¿xY w# 1 sw Y   Œ=xY w)NTrc   )r   r†   r†   r†   zdirichlet: alpha must be > 0.0ù              @rn  ©rn  r†   ©rg  r†   ©rg  rg  r’   rM  zGnp.random.dirichlet(): size should be int or tuple of ints or None, got)r   rJ   rØ   r	  rN  rÊ  ÚstrÚ	exceptionrI   r   Úint8r[  r   )rµ   r³  rI   Úraisesr"  r6   s         r   Útest_dirichlet_exceptionsz-TestRandomDirichlet.test_dirichlet_exceptions  sâ   € Ø"”˜TÔ"¤?Ó3ˆÜ�iÓ ˆØ×ÑœzÔ*¨fÙ�%˜ŒO÷ +à�‰Ð6¼¸F×<LÑ<LÓ8MÔNà—
‘
ˆØ�r˜3 ¨'°8¼b¿g¹gÀa»jÌ"Ï(É(ÐSTË+Ð=VÐWˆÛˆDØ×"Ñ"¤;Ô/°6Ù�e˜TÔ"÷ 0à�M‰Mð-ä�F×$Ñ$Ó%õñ ÷ +Ð*ú÷ 0Ð/ús   ·
C?Ã
DÃ?DÄD	N)r¼   r½   r¾   r   rž   rÍ  rI   rH  r_  re  ro  r   r   r   rR  rR  Ê  s,   „ ØˆB�H‰H’\¨¯©Ô4€Eò<ò,1ò1ó"r   rR  c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚTestRandomNoncentralChiSquarec                 ó¶  — |�•| j                  |t        j                  «       | j                  |j                  t        j
                  «       t        |t        «      r| j                  |j                  |f«       n3| j                  |j                  |«       n| j                  |t        «       t        j                  |«      D ]  }| j                  |d«       Œ y ©Nr   )rÃ   r   rÉ  rÄ   r›   rÍ  r!  r”   rn  r‡  rW  rå  )rµ   r6   rE  rg  s       r   rH  z+TestRandomNoncentralChiSquare._check_sample  sŸ   € ð ÐØ×!Ñ! &¬"¯*©*Ô5Ø×Ñ˜VŸ\™\¬2¯:©:Ô6ä˜$¤Ô$Ø× Ñ  §¡°¨wÕ7à× Ñ  §¡¨tÕ4à×"Ñ" 6¬5Ô1ô —9‘9˜VÖ$ˆCØ×#Ñ# C¨Õ+ñ %r   c                 óô   —  t        d¬«      t        «      }d}|D ][  \  }} |||«      }| j                  d|«        ||t        j                  «      }| j                  t        j                  |«      «       Œ] y)z@
        Test noncentral_chisquare(df, nonc, size=None)
        Trc   ©)r%  r†   re  )rE  r†   )r  r†   )r†   rÜ  N)r   rU   rH  r   Únanrÿ  Úisnan)rµ   r³  ÚinputsrQ   rR   rË  s         r   Ú!test_noncentral_chisquare_defaultz?TestRandomNoncentralChiSquare.test_noncentral_chisquare_default)  sl   € ð #”˜TÔ"Ô#EÓFˆð
ˆó ‰HˆB�Ù˜˜D“/ˆCØ×Ñ˜t SÔ)Ù˜œBŸF™FÓ#ˆCØ�O‰OœBŸH™H S›MÕ*ñ	 r   c                 óF  —  t        d¬«      t        «      }d}d}t        j                  ||«      D ]n  \  \  }}} ||||«      }| j	                  ||«        ||t
        j                  |«      }| j                  t        j                  |«      j                  «       «       Œp y)z;
        Test noncentral_chisquare(df, nonc, size)
        Trc   )NrÔ   ra  rb  ru  N)
r   rS   rc  rd  rH  r   rv  rÿ  rw  r  )rµ   r³  r"  rx  rQ   rR   r6   rË  s           r   Útest_noncentral_chisquarez7TestRandomNoncentralChiSquare.test_noncentral_chisquare<  s’   € ð #”˜TÔ"Ô#=Ó>ˆØ+ˆð
ˆô !*× 1Ñ 1°&¸%Ö @Ñ‰JˆR�˜Ù˜˜D $Ó'ˆCØ×Ñ˜t SÔ)Ù˜œBŸF™F DÓ)ˆCØ�O‰OœBŸH™H S›M×-Ñ-Ó/Õ0ñ	 !Ar   c           
      óÖ  —  t        d¬«      t        «      }d\  }}| j                  t        «      5 } |||d«       d d d «       | j	                  dt        j                  «      «       d\  }}| j                  t        «      5 } |||d«       d d d «       | j	                  dt        |j                  «      «       d\  }}dd	d
dddt        j                  d«      t        j                  d«      ff}|D ]O  }| j                  t        «      5 } ||||«       d d d «       | j	                  dt        |j                  «      «       ŒQ y # 1 sw Y   �ŒxY w# 1 sw Y   ŒÆxY w# 1 sw Y   ŒJxY w)NTrc   )r   r†   r†   zdf <= 0)r†   r‡   znonc < 0)r†   r†   rg  rn  rh  ri  rj  r’   rM  zRnp.random.noncentral_chisquare(): size should be int or tuple of ints or None, got)r   rS   r	  rN  rÊ  rk  rl  r   rm  r[  r   )rµ   r³  rQ   rR   rn  r"  r6   s          r   Ú$test_noncentral_chisquare_exceptionszBTestRandomNoncentralChiSquare.test_noncentral_chisquare_exceptionsP  s2  € Ø"”˜TÔ"Ô#=Ó>ˆØ‰ˆˆDØ×ÑœzÔ*¨fÙ�"�d˜AÔ÷ +à�‰�i¤ V×%5Ñ%5Ó!6Ô7à‰ˆˆDØ×ÑœzÔ*¨fÙ�"�d˜AÔ÷ +à�‰�j¤# f×&6Ñ&6Ó"7Ô8à‰ˆˆDØ�r˜3 ¨'°8¼b¿g¹gÀa»jÌ"Ï(É(ÐSTË+Ð=VÐWˆÛˆDØ×"Ñ"¤;Ô/°6Ù�b˜$ Ô%÷ 0à�M‰Mð-ä�F×$Ñ$Ó%õñ ÷ +Ñ*ú÷
 +Ð*ú÷ 0Ð/ús#   ±EÂEÄEÅEÅEÅE(	N)r¼   r½   r¾   rH  ry  r{  r}  r   r   r   rq  rq    s   „ ò,ò$+ò&1ó(r   rq  T)rd   Únogilc                 óœ   — | dk7  rt        j                  | «       t        |j                  «      D ]  }t        j                  d«      ||<   Œ y )Nr   rj  )r   rW   rÆ   r6   r  )rW   r�  rÈ   s      r   Úpy_extract_randomnessr€  g  s;   € àˆq‚yÜ�‰�DÔÜ�3—8‘8Ž_ˆÜ×#Ñ# BÓ'ˆˆAŠñ r   rû  c                 óÐ   — | dk7  rt         j                  j                  | «       d}t        |j                  «      D ](  }t         j                  j                  t        «      ||<   Œ* y rs  )r   r   rW   rÆ   r6   r   Ú_randint_limit)rW   r�  r   rÈ   s       r   Únp_extract_randomnessrƒ  p  sH   € àˆq‚yÜ
�	‰	�‰�tÔØ	€AÜ�3—8‘8Ž_ˆÜ—‘×"Ñ"¤>Ó2ˆˆAŠñ r   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚConcurrencyBaseTestr  c                 óJ   — d| j                  d«      f}t        |Ž  t        |Ž  y )Nrí  r†   )Ú_get_outputr€  rƒ  )rµ   r  s     r   ÚsetUpzConcurrencyBaseTest.setUp‚  s'   € à�D×$Ñ$ QÓ'Ð(ˆÜ˜tÑ$Ü˜tÒ$r   c                 óL   — t        j                  |t         j                  ¬«      S )Nrš   )r   Úzerosr™   )rµ   r6   s     r   r‡  zConcurrencyBaseTest._get_outputˆ  s   € Ü�x‰x˜¤B§I¡IÔ.Ð.r   c                 óü   — d}dt        j                  d«      z  }d}t         j                  j                  |j	                  «       ||¬«       t         j                  j                  |j                  «       ||¬«       y)z9
        Check statistical properties of output.
        rZ  rû  r¢  gš™™™™™©?)ÚrtolN)r   rè  r;  r<  r  Ústd)rµ   r�  Úexpected_avgÚexpected_stdrŒ  s        r   Úcheck_outputz ConcurrencyBaseTest.check_output‹  s^   € ð
 ˆØ¤2§7¡7¨2£;Ñ.ˆØˆÜ
�
‰
×"Ñ" 3§8¡8£:¨|À$Ð"ÔGÜ
�
‰
×"Ñ" 3§7¡7£9¨lÀÐ"ÕFr   c                 óÀ  — |D ]  }| j                  |«       Œ |rd}nt        |«      }|D �ch c]  }t        |d d «      ’Œ }}|D �ch c]  }t        |dd  «      ’Œ }}|D �ch c]  }|j                  «       ’Œ }}| j	                  t        |«      ||«       | j	                  t        |«      ||«       | j	                  t        |«      ||«       y c c}w c c}w c c}w )Nr†   rE  rL  )r�  r�   rØ   rC  rÄ   )rµ   r  Úsame_expectedr�  Úexpected_distinctÚheadsÚtailsÚsumss           r   Úcheck_several_outputsz)ConcurrencyBaseTest.check_several_outputs–  s×   € ó ˆCØ×Ñ˜cÕ"ð ñ
 Ø !Ñä # G£Ðá+2Ó3©7 C”�s˜2˜A�w•¨7ˆÐ3Ù,3Ó4©G S”�s˜2˜3�x•¨GˆÐ4Ù%,Ó-¡W˜c�—‘•	 WˆÐ-Ø×Ñœ˜U›Ð%6¸Ô>Ø×Ñœ˜U›Ð%6¸Ô>Ø×Ñœ˜T›Ð$5°tÕ<ùò 4ùÚ4ùÚ-s   ­CÁCÁ#CN)r¼   r½   r¾   Ú_extract_iterationsrˆ  r‡  r�  r—  r   r   r   r…  r…  z  s   „ ð !Ðò%ò/ò	Gó=r   r…  c                   ó:   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚTestThreadsz3
    Check the PRNG behaves well with threads.
    c                 ó`  ‡‡‡— t        |dz   «      D �cg c]  }| j                  | j                  «      ‘Œ c}Šˆˆˆfd„}t        |«      D �cg c]  }t        j                  ||f¬«      ‘Œ }}|D ]  }|j                  «        Œ  ||«       |D ]  }|j                  «        Œ ‰S c c}w c c}w )zo
        Run *nthreads* threads extracting randomness with the given *seed*
        (no seeding if 0).
        r†   c                 ó    •—  ‰‰‰|    ¬«       y )N©rW   r�  r   )rÈ   Úextract_randomnessr  rW   s    €€€r   Útargetz.TestThreads.extract_in_threads.<locals>.target¹  s   ø€ á D¨g°a©jÖ9r   )rŸ  r  )rÆ   r‡  r˜  Ú	threadingÚThreadÚstartrp   )	rµ   Únthreadsrž  rW   rÈ   rŸ  ÚthreadsÚthr  s	     ``    @r   Úextract_in_threadszTestThreads.extract_in_threads±  s¹   ú€ ô " (¨Q¡,Ô/ó1Ù/�qð ×#Ñ# D×$<Ñ$<Õ=Ø/ñ1ˆö	:ô
 " (œOó-Ù+�qô ×#Ñ#¨6¸¸Ö=Ø+ð 	ð -ó ˆBØ�H‰H�Jð ñ 	ˆxÔÛˆBØ�G‰G�Ið ð ˆùò#1ùò-s   ”"B&ÁB+c                 óR   — | j                  d|d¬«      }| j                  |d¬«       y)zÎ
        When initializing the PRNG the same way, each thread
        should produce the same sequence of random numbers,
        using independent states, regardless of parallel
        execution.
        rB  rí  r0  T©r’  N©r¦  r—  ©rµ   rž  r  s      r   Úcheck_thread_safetyzTestThreads.check_thread_safetyÉ  s1   € ð ×)Ñ)¨"Ð.@ÀrÐ)ÓJˆð 	×"Ñ" 7¸$Ð"Õ?r   c                 óR   — | j                  d|d¬«      }| j                  |d¬«       y)z€
        The PRNG in new threads should be implicitly initialized with
        system entropy, if seed() wasn't called.
        rh  r   r0  Fr¨  Nr©  rª  s      r   Úcheck_implicit_initializationz)TestThreads.check_implicit_initialization×  s1   € ð
 ×)Ñ)¨!Ð-?ÀaÐ)ÓHˆð 	×"Ñ" 7¸%Ð"Õ@r   c                 ó.   — | j                  t        «       y r   )r«  r€  rÝ   s    r   Útest_py_thread_safetyz!TestThreads.test_py_thread_safetyá  ó   € Ø× Ñ Ô!6Õ7r   c                 ó.   — | j                  t        «       y r   )r«  rƒ  rÝ   s    r   Útest_np_thread_safetyz!TestThreads.test_np_thread_safetyä  r°  r   c                 ó.   — | j                  t        «       y r   ©r­  r€  rÝ   s    r   Útest_py_implicit_initializationz+TestThreads.test_py_implicit_initializationç  ó   € Ø×*Ñ*Ô+@ÕAr   c                 ó.   — | j                  t        «       y r   ©r­  rƒ  rÝ   s    r   Útest_np_implicit_initializationz+TestThreads.test_np_implicit_initializationê  r¶  r   N)r¼   r½   r¾   ræ   r¦  r«  r­  r¯  r²  rµ  r¹  r   r   r   rš  rš  ¬  s.   „ ñòò0@òAò8ò8òBóBr   rš  Úntz(Windows is not affected by fork() issuesc                   ó,   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zy)ÚTestProcessesz9
    Check the PRNG behaves well in child processes.
    Fc                 óF  ‡ ‡‡
‡— t        j                  «       Š
g }ˆˆ fd„Šˆ
ˆfd„}t        t         d«      rt        j                  d«      }nt         }t	        |«      D �cg c]  }|j                  |¬«      ‘Œ }}|D ]  }|j                  «        Œ t	        |«      D ]#  }|j                  ‰
j                  d¬«      «       Œ% |D ]  }|j                  «        Œ |j                   ‰«       «       |D ]'  }	t        |	t        «      sŒ‰ j                  d|	›�«       Œ) |S c c}w )	z`
        Run *nprocs* processes extracting randomness
        without explicit seeding.
        c                  óR   •— ‰j                  ‰j                  «      }  ‰d| ¬«       | S )Nr   r�  )r‡  r˜  )r�  rž  rµ   s    €€r   Útarget_innerz8TestProcesses.extract_in_processes.<locals>.target_inner  s(   ø€ Ø×"Ñ" 4×#;Ñ#;Ó<ˆCÙ A¨3Õ/ØˆJr   c                  ó~   •— 	  ‰«       } ‰j                  | «       y # t        $ r}‰j                  |«       ‚ d }~ww xY wr   )ÚputÚ	Exception)r�  ÚeÚqr¿  s     €€r   rŸ  z2TestProcesses.extract_in_processes.<locals>.target  s:   ø€ ðÙ"“n�Ø—‘�c•
øÜò ð —‘�a”Øûð	ús   ƒ œ	<¥7·<Úget_contextÚfork)rŸ  rE  )ÚtimeoutzException in child: )ÚmultiprocessingÚQueueÚhasattrrÅ  rÆ   ÚProcessr¢  r×   Úgetrp   r!  rÂ  Úfail)rµ   Únprocsrž  r  rŸ  ÚmpcrÈ   Úprocsr  rË  rÄ  r¿  s   ` `       @@r   Úextract_in_processesz"TestProcesses.extract_in_processesù  sþ   û€ ô
 ×!Ñ!Ó#ˆØˆõ	õ
	ô ”? MÔ2ä!×-Ñ-¨fÓ5‰Cä!ˆCä œ-ó)Ù'�Qð —‘ F�Õ+Ø'ð 	ð )ãˆAØ�G‰G�Ið ô �v–ˆAØ�N‰N˜1Ÿ5™5¨˜5Ó+Õ,ð ãˆAØ�F‰F�Hð ð
 	�‰‘|“~Ô&ÛˆCÜ˜#œyÕ)Ø—	’	±cÐ;Õ<ð ð ˆùò%)s   Á Dc                 óN   — | j                  d|«      }| j                  |d¬«       y)z’
        The PRNG in new processes should be implicitly initialized
        with system entropy, to avoid reproducing the same sequences.
        r»   Fr¨  N)rÑ  r—  rª  s      r   r­  z+TestProcesses.check_implicit_initialization)  s,   € ð
 ×+Ñ+¨AÐ/AÓBˆð 	×"Ñ" 7¸%Ð"Õ@r   c                 ó.   — | j                  t        «       y r   r´  rÝ   s    r   rµ  z-TestProcesses.test_py_implicit_initialization3  r¶  r   c                 ó.   — | j                  t        «       y r   r¸  rÝ   s    r   r¹  z-TestProcesses.test_np_implicit_initialization6  r¶  r   N)	r¼   r½   r¾   ræ   Ú_numba_parallel_test_rÑ  r­  rµ  r¹  r   r   r   r¼  r¼  î  s'   „ ñð "Ðò.ò`AòBóBr   r¼  c            	       ó  — e Zd Z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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)œ“i d*dddd+œ“d,ddddœ“d-dddœ“d.ddd/œ“d0dddœ“d1dddd2œ“d3d4di“d5d4di“d6d4di“d7dddœ“d8d4di“d9d:d;i“d<d4di“d=d4di“d>ddd?œ“d@d4di“dAdddœ“¥dddBddCœdddd2œddddDœddddEœdddœdddœdFœ¥ZdG„ ZdH„ ZyI)JÚTestNumPyRandomAPIr©  r©   r¨   r’   )r   r"   r6   rØ  r†   rA  )r?   r  r6   rì  )rQ   r6   znp.random.choicer»   r7   znp.random.dirichletrº   rH   r¿  )r  r6   ró  )ÚdfnumÚdfdenr6   r   )rn  r  r6   rø  )r  r6   r  rœ   )r
  r  r6   r  )ÚngoodÚnbadÚnsampler6   r#  r*  rA  )r  Úsigmar6   r.  r%  znp.random.multinomial)r†   rC   r9  )r?   r  znp.random.noncentral_chisquarerP   r‚   rÊ  r4  )Úlamr6   rG  znp.random.randintr†  rƒ   r6   rö   r÷   rK  rø   r„   rW   rh  rR  rÂ  r¡  )rn  r6   r6  rW  g      @)ÚleftÚmodeÚrightr6   )ÚmuÚkappar6   )r  r  r6   )r‘  r}  r±  r]  rÕ  re  c           
      ó\  — | j                   j                  «       D ]‰  \  }}dj                  |j                  «       D ��cg c]  \  }}|› d|› �‘Œ c}}«      }t        d|› d|› d�«      }i }t	        |dt
        i|«       |d   } |«        t        |«      j                  d«       Œ‹ y c c}}w )	Nr§  rn   ú7
                def foo():
                    return ro   ú)
                r   Úfoor   )ÚAPI_CALL_TESTSÚitemsrp   r   Úexecr   r   Úcompile)	rµ   Úfnr  rM  ÚvÚargstrÚtemplater“  rb   s	            r   Útest_call_by_namez$TestNumPyRandomAPI.test_call_by_namer  s²   € ð ×+Ñ+×1Ñ1Ö3‰HˆB�Ø—Y‘Y°t·z±z´|ÔD±|©t¨q°! 1 # Q q c¢
°|ÒDÓEˆFÜð #à˜4˜q  ð )ðó ˆHð ˆAÜ�˜D¤"˜: qÔ)ð
 �U‘8ˆDÙŒFÜ�‹J×Ñ˜rÕ"ñ 4ùÛDs   ¿B(c           
      ó8  — | j                   j                  «       D ]÷  \  }}d|vrŒd|d<   dj                  |j                  «       D ��cg c]  \  }}|› d|› �‘Œ c}}«      }t        d|› d|› d�«      }i }t	        |dt
        i|«       |d	   } |«       }	t        |«      j                  d«      }
 |
«       }t        |t
        j                  «      r'| j                  |j                  |	j                  «       ŒÜ| j                  ||	j                  «       Œù y c c}}w )
Nr6   r   r§  rn   rå  ro   ræ  r   rç  )rè  ré  rp   r   rê  r   r   rë  r!  rÉ  rÄ   rn  rÃ   Ú	__class__)rµ   rì  r  rM  rí  rî  rï  r“  rb   Únp_valÚnb_funcÚnb_vals               r   Ú'test_call_distributions_with_empty_sizez:TestNumPyRandomAPI.test_call_distributions_with_empty_sizeŒ  s  € ð ×+Ñ+×1Ñ1Ö3‰HˆB�Ø˜TÑ!ØàˆD�‰LØ—Y‘Y°t·z±z´|ÔD±|©t¨q°! 1 # Q q c¢
°|ÒDÓEˆFÜð #à˜4˜q  ð )ðó ˆHð ˆAÜ�˜D¤"˜: qÔ)ð �U‘8ˆDÙ“VˆFä˜4“j×(Ñ(¨Ó,ˆGÙ“YˆFä˜&¤"§*¡*Ô-Ø× Ñ  §¡¨v¯|©|Õ<à×%Ñ% f¨f×.>Ñ.>Õ?ñ5 4ùó
  Es   Á	DN)r¼   r½   r¾   rè  rð  rö  r   r   r   r×  r×  :  sÊ  „ ð5?Ð&¨b°rÀ1Ñ(Eð 5?Ø*°!¸#ÀqÑ,Ið5?à+°BÀÑ-Bð5?ð )°¸1Ñ*=ð5?ð ,°tÀQÑ-Gð	5?ð
 .¸ÀQÑ/Gð5?ð $¨r¸BÈÑ%Jð5?ð (°1¸sÈAÑ)Nð5?ð ,°2¸qÑ-Að5?ð )°"¸rÈ1Ñ*Mð5?ð 1¸AÀqØ>?Èñ3Lð5?ð *°2ÀÈAÑ+Nð5?ð +°BÀÈQÑ,Oð5?ð ,°bÀ2ÈqÑ-Qð5?ð ,°3ÀÑ-Bð5?ð  .°QÀÈqÑ/Qð!5?ð" 4¸1À3Ñ5Gñ#5?ð$ 7¸rÈ2ØABñ9Dð%5?ð( )°"¸rÈ1Ñ*Mð)5?ð* )°¸AÑ*>ð+5?ð2 *°2¸qÑ+Að35?ð4 (¨r¸1Ñ)=ð55?ð< *°1¸aÈÑ+Kð=5?ðD )¨6°1¨+ðE5?ðF 0°&¸!°ðG5?ðH '¨°¨ðI5?ðJ +°bÀ!Ñ,DðK5?ðL )¨6°1¨+ðM5?ðN '¨°¨ðO5?ðT 2°F¸A°;ðU5?ðV 7¸À¸ðW5?ðX 1¸BÈÑ2JðY5?ðZ 2°F¸A°;ð[5?ð\ -°RÀÑ.Cñ]5?ð^ 8:À2ÐPRØ78ñ/:à35¸rÈ1Ñ+MØ35ÀÈAÑ,NØ13¸bÈ!Ñ(LØ13¸QÑ+?Ø.0¸!Ñ(<òk5?€Nòn#ó4@r   r×  Ú__main__)Sr
  rî  rç  rÈ  rÕ   r   r}  r  r   rc  Útextwrapr   Únumpyr   ÚunittestrÃ  r   r   r   Ú
numba.corer   Únumba.tests.supportr   r	   r
   Únumba.core.errorsr   rÅ   r   r   r   r#   r%   r)   r+   r.   r2   r8   r;   rA   rD   rJ   rL   rS   rU   r\   r`   rk   ru   rz   r|   r~   r€   r”  rò   rñ   rš  rú   rù   r�   r–   r¦   r«   r¯   r±   rÀ   rè   r¤  r  rA  rR  rq  r€  r‚  rƒ  r…  rš  ÚskipIfrg   r¼  r×  r¼   Úmainr   r   r   Ú<module>r      sQ  ðÛ Û Û Û Û 	Û Û Û 
Û Û Ý ã ã ã ß 'Ñ 'Ý ß ?Ñ ?Ý )ð €ò-ò-ò ò#ò òò"ò%òò*ò;ò+ò<ò1ò&ò?ò4òòò&ò&ò#ò$ò'ò*ñ ˜.Ó)€Ù˜OÓ,€Ù˜Ó&€áÐ,Ó-€ÙÐ-Ó.€ÙÐ'Ó(€
òòòò"/ò,ô

ˆxô 
ôA0�Hô A0ôHm*�ô m*ô`]/�xô ]/ô@s9�xô s9ôlA1˜Hô A1ôHI˜(ô IôVP Hô Pñd ˆd˜$Ôñ(ó  ð(ð €áˆd˜$Ôñ3ó  ð3ô/=˜(ô /=ôd?BÐ%ô ?BðD €‡��—‘˜D‘Ð"LÓMôHBÐ'ó HBó NðHBôVo@˜ô o@ðh ˆzÒØ€H‡M�M…Oð r   