ó
    „ñ:i/! ã                   ó†  • S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
Jr  S SKrS SKrS SKrS SKJrJrJr  S SKJr  S SKJrJrJr  S SKJr  SrS rS	 rS
 rS rS r S r!S r"S r#S r$S r%S r&S r'S r(S r)S r*S r+S r,S r-S r.S r/S r0S r1S r2S r3S  r4\3" S!5      r5\1" S"5      r6\2" S#5      r7\3" S$5      r8\1" S%5      r9\2" S&5      r:S' r;S( r<S) r=S* r>S+ r? " S, S-\5      r@ " S. S/\@5      rA " S0 S1\@5      rB " S2 S3\@5      rC " S4 S5\@5      rD " S6 S7\@5      rE " S8 S9\@5      rF " S: S;\@5      rG\" S<S<S=9S> 5       rHS?rI\" S<S<S=9S@ 5       rJ " SA SB\5      rK " SC SD\K5      rL\Rš                  " \Rœ                  SE:H  SF5       " SG SH\K5      5       rO " SI SJ\5      rP\QSK:X  a  \R¤                  " 5         gg)Lé    N)Údedent)ÚjitÚ
_helperlibÚnjit)Útypes)ÚTestCaseÚcompile_functionÚtag)ÚTypingErrorép  c                  ó,   • [         R                  " 5       $ ©N)r   Úrnd_get_py_state_ptr© ó    ÚZ/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/numba/tests/test_random.pyÚget_py_state_ptrr      ó   € Ü×*Ò*Ó,Ð,r   c                  ó,   • [         R                  " 5       $ r   )r   Úrnd_get_np_state_ptrr   r   r   Úget_np_state_ptrr      r   r   c                 ó@   • [         R                  R                  U 5      $ r   ©ÚnpÚrandomÚrandint©Úas    r   Únumpy_randint1r   #   s   € Ü�9‰9×Ñ˜QÓÐr   c                 ó@   • [         R                  R                  X5      $ r   r   ©r   Úbs     r   Únumpy_randint2r#   &   s   € Ü�9‰9×Ñ˜QÓ"Ð"r   c                 ó.   • [         R                  " X5      $ r   )r   r   r!   s     r   Úrandom_randintr%   )   s   € Ü�>Š>˜!ÓÐr   c                 ó.   • [         R                  " U 5      $ r   ©r   Ú	randranger   s    r   Úrandom_randrange1r)   ,   s   € Ü×Ò˜AÓÐr   c                 ó.   • [         R                  " X5      $ r   r'   r!   s     r   Úrandom_randrange2r+   /   s   € Ü×Ò˜AÓ!Ð!r   c                 ó0   • [         R                  " XU5      $ r   r'   )r   r"   Úcs      r   Úrandom_randrange3r.   2   s   € Ü×Ò˜A !Ó$Ð$r   c                 ó@   • [         R                  R                  U 5      $ r   ©r   r   Úchoicer   s    r   Únumpy_choice1r2   5   s   € Ü�9‰9×Ñ˜AÓÐr   c                 ó<   • [         R                  R                  XS9$ ©N©Úsizer0   ©r   r6   s     r   Únumpy_choice2r8   8   s   € Ü�9‰9×Ñ˜AÐÐ)Ð)r   c                 ó>   • [         R                  R                  XUS9$ )N)r6   Úreplacer0   )r   r6   r:   s      r   Únumpy_choice3r;   ;   s   € Ü�9‰9×Ñ˜A°'ÐÐ:Ð:r   c                 ó@   • [         R                  R                  X5      $ r   ©r   r   Úmultinomial)ÚnÚpvalss     r   Únumpy_multinomial2rA   >   s   € Ü�9‰9× Ñ  Ó*Ð*r   c                 ó>   • [         R                  R                  XUS9$ )N)r@   r6   r=   ©r?   r@   r6   s      r   Únumpy_multinomial3rD   A   s   € Ü�9‰9× Ñ  °dÐ Ð;Ð;r   c                 ó<   • [         R                  R                  XS9$ r4   ©r   r   Ú	dirichlet©Úalphar6   s     r   Únumpy_dirichletrJ   D   s   € Ü�9‰9×Ñ˜uÐÐ0Ð0r   c                 ó@   • [         R                  R                  U 5      $ r   rF   )rI   s    r   Únumpy_dirichlet_defaultrL   G   s   € Ü�9‰9×Ñ˜uÓ%Ð%r   c                 ó>   • [         R                  R                  XUS9$ r4   ©r   r   Únoncentral_chisquare©ÚdfÚnoncr6   s      r   Únumpy_noncentral_chisquarerS   J   s   € Ü�9‰9×)Ñ)¨"¸Ð)Ð>Ð>r   c                 ó@   • [         R                  R                  X5      $ r   rN   )rQ   rR   s     r   Ú"numpy_noncentral_chisquare_defaultrU   M   s   € Ü�9‰9×)Ñ)¨"Ó3Ð3r   c                 ó  • [         R                  R                  U 5        [         R                  R                  X45      n[         R                  R                  U 5        [         R                  R                  X5      nX44$ r   )r   r   ÚseedÚrand©rW   r   r"   ÚexpectedÚgots        r   Únumpy_check_randr\   P   sR   € Ü‡I�I‡N�N�4ÔÜ�y‰y×Ñ  Ó'€HÜ‡I�I‡N�N�4ÔÜ
�)‰)�.‰.˜Ó
€CØˆ=Ðr   c                 ó  • [         R                  R                  U 5        [         R                  R                  X45      n[         R                  R                  U 5        [         R                  R	                  X5      nX44$ r   )r   r   rW   Ústandard_normalÚrandnrY   s        r   Únumpy_check_randnr`   W   sR   € Ü‡I�I‡N�N�4ÔÜ�y‰y×(Ñ(¨!¨Ó0€HÜ‡I�I‡N�N�4ÔÜ
�)‰)�/‰/˜!Ó
€CØˆ=Ðr   c                 ód   • S[        5       -  n[        SU[        5       5      n[        SS9" U5      $ )Nz@def func(%(argstring)s):
        return %(name)s(%(argstring)s)
ÚfuncT©Únopython)Úlocalsr	   Úglobalsr   )ÚnameÚ	argstringÚcodeÚpyfuncs       r   Újit_with_argsrk   ^   s5   € ðäƒhñ€Dô ˜f d¬G«IÓ6€FÜ˜Ò˜fÓ%Ð%r   c                 óÚ   • SR                  U Vs/ s H	  o" SU 3PM     sn5      nSR                  U5      nSU SU  SU S3n[        SU[        5       5      n[        SS	9" U5      $ s  snf )
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Ü˜Ò˜fÓ%Ð%ùò &Is   �A(c                 ó   • [        U S5      $ )NÚ ©rk   ©rg   s    r   Újit_nullaryrz   o   s   € Ü˜˜rÓ"Ð"r   c                 ó   • [        U S5      $ )Nr   rx   ry   s    r   Ú	jit_unaryr|   r   s   € Ü˜˜sÓ#Ð#r   c                 ó   • [        U S5      $ )Nza, brx   ry   s    r   Ú
jit_binaryr~   u   s   € Ü˜˜vÓ&Ð&r   c                 ó   • [        U S5      $ )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                 ó‚   • U R                  5       S   nUSS US   pC[        R                  " X[        U5      45        X44$ )z7
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�   …   sC   € ð 
�‰‹�a‰€BØ�S�b�'˜2˜b™6ˆ%Ü×Ò˜S¬$¨t«*Ð"5Ô6Øˆ;Ðr   c           
      ó    • U R                  5       SS u  p#[        R                  " XU Vs/ s H  n[        U5      PM     sn45        X#4$ s  snf )z6
Copy state of Numpy random *r* to Numba state *ptr*.
r†   é   )Ú	get_stater   r‰   Úint)r‹   rŒ   rŽ   r�   Úxs        r   Ú_copy_np_stater–   Ž   sL   € ð —+‘+“-  !Ð$�K€DÜ×Ò˜S¹4Ó*@º4°a¬3¨q®6¹4Ñ*@Ð"AÔBØˆ;Ðùò +As   «Ac                 óî   • U R                  5       u  pnUS   nUS S n[        U5      S:X  d   eS[        R                  " USS9U4nUc  US-  nOUSU4-  n[        R                  R                  U5        g )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   • SU R                  US-  S5      -  $ )Nç       @ç      ð?)Úgammavariate)r‹   rQ   s     r   Úpy_chisquarer«   §   s   € Ø�—‘  S¡¨#Ó.Ñ.Ð.r   c                 ó<   • [        X5      U-  [        X5      U-  -  $ r   )r«   )r‹   ÚnumÚdenoms      r   Úpy_fr¯   ª   s&   € Ü˜!Ó! EÑ)Ü˜!Ó# cÑ)ñ+ð ,r   c                   ó(   • \ rS rSrSS jrSS jrSrg)ÚBaseTesté¯   c                 óH   • [         R                  " U5      n[        X15        U$ r   )r   ÚRandomr�   ©ÚselfrŒ   rW   r‹   s       r   Ú_follow_cpythonÚBaseTest._follow_cpython±   s   € Ü�MŠM˜$ÓˆÜ�qÔØˆr   c                 óZ   • [         R                  R                  U5      n[        X15        U$ r   )r   r   ÚRandomStater–   rµ   s       r   Ú_follow_numpyÚBaseTest._follow_numpy¶   s#   € Ü�I‰I×!Ñ! $Ó'ˆÜ�qÔØˆr   r   N©é   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r·   r»   Ú__static_attributes__r   r   r   r±   r±   ¯   s   † ô÷
r   r±   c                   óH   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rSrg)ÚTestInternalsé¼   z1
Test low-level internals of the implementation.
c                 ó°  • [         R                  " U5      nUu  p4U R                  U[        5        U R                  U[        5        U R                  [        U5      [        5        US-  [        -  n[        [        5       Vs/ s H  o3S-  PM	     nn[         R                  " XU45        U R                  [         R                  " U5      XT45        g s  snf )Ni§† r’   )
r   Úrnd_get_stateÚassertIsInstancer”   rŠ   ÚassertEqualr�   ÚNÚranger‰   )r¶   rŒ   ÚstateÚirŽ   Újs         r   Ú_check_get_set_stateÚ"TestInternals._check_get_set_stateÁ   s©   € Ü×(Ò(¨Ó-ˆØ‰ˆØ×Ñ˜a¤Ô%Ø×Ñ˜d¤DÔ)Ø×Ñœ˜T›¤AÔ&Ø�‰Zœ1ÑˆÜ$¤QœxÓ(šx˜!�A”™xˆÐ(ä× Ò  ¨$ iÔ0Ø×Ñœ×1Ò1°#Ó6¸¸	ÕBùò )s   ÂCc                 óf  • [         R                  " 5       n[        X!5      u  p4[        U[        S-   S5       H  nUR                  5         M     [
        R                  " U5        UR                  5       S   nUS S US   pCU R                  [
        R                  " U5      S   [        U5      5        g )Nr†   r¾   r‡   )r   r´   r�   rÌ   rË   r   Úrnd_shufflerˆ   rÊ   rÈ   rŠ   )r¶   rŒ   r‹   rŽ   r�   rÎ   r�   s          r   Ú_check_shuffleÚTestInternals._check_shuffleÍ   s‹   € ä�MŠM‹OˆÜ$ QÓ,‰ˆä�uœa !™e QÖ'ˆAØ�H‰HŽJñ (ä×Ò˜sÔ#à�Z‰Z‹\˜!‰_ˆØ˜˜"�g˜r "™vˆeØ×Ñœ×1Ò1°#Ó6°qÑ9¼4À»:ÕFr   c                 ót  • [         R                  R                  5       nS H”  nUR                  [         R                  " U5      5        UR                  5       n[        US   5      nUS   nU[        :X  d   e[        R                  " X5        U R                  [        R                  " U5      Xe45        M–     g )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_initÚTestInternals._check_initÚ   sŒ   € ô �I‰I×!Ñ!Ó#ˆÛ'ˆAà�F‰F”2—9’9˜Q“<Ô Ø—‘“ˆBÜ˜˜1™“;ˆDØ�q‘EˆEØœA“:Ð�:Ü×Ò Ô'Ø×ÑœZ×5Ò5°cÓ:¸U¸MÖJò (r   c                 ól  • / n[        S5       Hv  n[        R                  " US5        [        R                  " U[        R                  " S5      5        UR                  [        [        R                  " U5      S   5      5        Mx     U R                  [        [        U5      5      [        U5      5        g )Né
   r   i   r†   )rÌ   r   rØ   ÚosÚurandomÚappendÚtuplerÈ   rÊ   r�   Úset)r¶   rŒ   ÚstatesrÎ   s       r   Ú_check_perturbÚTestInternals._check_perturbè   s}   € ØˆÜ�r–ˆAä×Ò  QÔ'ä×Ò ¤R§Z¢Z°£_Ô5Ø�M‰Mœ%¤
× 8Ò 8¸Ó =¸aÑ @ÓAÖBñ ð 	×ÑœœS ›[Ó)¬3¨v«;Õ7r   c                 ó6   • U R                  [        5       5        g r   )rÐ   r   ©r¶   s    r   Útest_get_set_stateÚ TestInternals.test_get_set_stateó   s   € Ø×!Ñ!Ô"2Ó"4Õ5r   c                 ó6   • U R                  [        5       5        g r   )rÔ   r   rç   s    r   Útest_shuffleÚTestInternals.test_shuffleö   ó   € Ø×ÑÔ,Ó.Õ/r   c                 ó6   • U R                  [        5       5        g r   )rÚ   r   rç   s    r   Ú	test_initÚTestInternals.test_initù   s   € Ø×ÑÔ)Ó+Õ,r   c                 ó6   • U R                  [        5       5        g r   )rä   r   rç   s    r   Útest_perturbÚTestInternals.test_perturbü   rí   r   r   N)r¿   rÀ   rÁ   rÂ   Ú__doc__rÐ   rÔ   rÚ   rä   rè   rë   rï   rò   rÃ   r   r   r   rÅ   rÅ   ¼   s2   † ñò
CòGòKò	8ò6ò0ò-õ0r   rÅ   c                   ó  • \ rS rSrS rS rS rS rS rS r	S r
S	 r  SUS jr  SUS jrS rS rS rS rS rS rS rS rS rSVS jrS rS rS rS rS rS rS rS rS r S  r!S! r"S" r#S# r$S$ r%S% r&S& r'S' r(S( r)S) r*S* r+S+ r,S, r-S- r.S. r/S/ r0S0 r1S1 r2S2 r3S3 r4S4 r5S5 r6S6 r7S7 r8S8 r9S9 r:S: r;S; r<S< r=S= r>S> r?S? r@S@ rASA rBSB rCSC rDSD rESE rFSF rGSG rHSH rISI rJSJ rKSK rLSL rMSM rNSN rOSO rPSP rQSQ rRSR rSSS rTSTrUg
)WÚ
TestRandomé   c           	      ó,  • [         R                  R                  5       nS Hp  nUR                  [         R                  " U5      5        U" U5        [        [        S-   5       H*  nU R                  U" 5       UR                  SS5      5        M,     Mr     g)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_seedÚ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   • U R                  [        [        5        g r   )rþ   Úrandom_seedÚrandom_randomrç   s    r   Útest_random_randomÚTestRandom.test_random_random  s   € Ø×Ñ¤¬]Õ;r   c                 ó0  • U R                  [        [        5        U R                  [        [        S5      5        U R                  [        [        S5      5        U R                  [        [        S5      5        U R                  [        [        S5      5        g ©Núnp.random.random_sampleúnp.random.ranfúnp.random.sampleznp.random.rand)rþ   Ú
numpy_seedÚnumpy_randomrz   rç   s    r   Útest_numpy_randomÚTestRandom.test_numpy_random  sj   € Ø×Ñ¤
¬LÔ9à×Ñ¤
¬KÐ8QÓ,RÔSØ×Ñ¤
¬KÐ8HÓ,IÔJØ×Ñ¤
¬KÐ8JÓ,KÔLØ×Ñ¤
¬KÐ8HÓ,IÕJr   c           
      ó"  • [         R                  R                  5       nS Hk  nUR                  [         R                  " U5      5        U" U5        [        S5       H,  nU R                  U" U5      UR                  SSU5      5        M.     Mm     g )Nrù   rÝ   rœ   r©   )r   r   rº   rW   r™   rÌ   rú   rû   )r¶   rü   rý   r‹   rÎ   r?   s         r   Ú_check_random_sizedÚ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                 óü   • U R                  [        [        S5      5        U R                  [        [        S5      5        U R                  [        [        S5      5        U R                  [        [        S5      5        g r  )r  r
  r|   rç   s    r   Útest_numpy_random_sizedÚ"TestRandom.test_numpy_random_sized*  sZ   € Ø× Ñ ¤¬YÐ7PÓ-QÔRØ× Ñ ¤¬YÐ7GÓ-HÔIØ× Ñ ¤¬YÐ7IÓ-JÔKØ× Ñ ¤¬YÐ7GÓ-HÕIr   c                 ó  • Sn[        S5        [        U5       Vs/ s H  n[        5       PM     nn[        S5        [        U5       Vs/ s H  n[	        5       PM     nn[        S5        [        S5        [        U5       Vs/ s H  n[        5       [	        5       4PM     nnU R                  U Vs/ s H  ofS   PM	     snU5        U R                  U Vs/ s H  ofS   PM	     snU5        g s  snf s  snf s  snf s  snf s  snf )NrÝ   r†   r¾   r   )r  rÌ   r  r
  r  rú   )r¶   rË   rÎ   Ú
py_numbersÚ
np_numbersÚpairsÚps          r   Útest_independent_generatorsÚ&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-Á	C2ÂC7Â1C<ÃDc                 ó*  • U R                  U5      n[        SS5       H-  nUR                  U5      nU" U5      nU R                  XV5        M/     U R	                  [
        US5        U R	                  [
        US5        U R	                  [
        US5        g)z&
Check a getrandbits()-like function.
r†   éA   i–˜ r‡   N)r·   rÌ   Úgetrandbitsrú   ÚassertRaisesÚOverflowError)r¶   rb   rŒ   r‹   ÚnbitsrZ   r[   s          r   Ú_check_getrandbitsÚTestRandom._check_getrandbits=  s�   € ð
 × Ñ  Ó%ˆÜ˜1˜b–\ˆEØ—}‘} UÓ+ˆHÙ�u“+ˆCØ×#Ñ# HÖ2ñ "ð 	×Ñœ-¨¨rÔ2Ø×Ñœ-¨¨wÔ7Ø×Ñœ-¨¨rÕ2r   c                 óJ   • U R                  [        S5      [        5       5        g )Nzrandom.getrandbits)r!  r|   r   rç   s    r   Útest_random_getrandbitsÚ"TestRandom.test_random_getrandbitsK  ó   € Ø×Ñ¤	Ð*>Ó ?ÔAQÓASÕTr   Nc           	      ó  • [        U5      (       d   eU Hb  n[        U5       V	s/ s H  o‘" U6 PM	     n
n	[        U5       V	s/ s H  n	U(       a  U" USU06OU" U6 PM     nn	U R                  X«XVSU< 3S9  Md     g s  sn	f s  sn	f )Nr›   úfor arguments ©ÚprecÚulpsÚmsg©r�   rÌ   rú   )r¶   rb   rj   ÚargslistÚnitersr*  r+  ÚpydtypeÚargsrÎ   ÚresultsÚ	pyresultss               r   Ú_check_distÚ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¸TÈÚ>BÐ(Dð $ó Fò	 ùÚ:ùò1s   ¥A<ÁBc           
      ó   • [        U5      (       d   eU Hl  n[        U5       V	s/ s H
  o‘" S0 UD6PM     n
n	[        U5       V	s/ s H  n	U(       a  U" S0 UDSU0D6OU" S0 UD6PM      nn	U R                  X«XVSU< 3S9  Mn     g s  sn	f s  sn	f )Nr›   r(  r)  r   r-  )r¶   rb   rj   Ú
kwargslistr/  r*  r+  r0  ÚkwargsrÎ   r2  r3  s               r   Ú_check_dist_kwargsÚTestRandom._check_dist_kwargs]  s¢   € ä�:�‰ÐˆÛ ˆFÜ/4°V¬}Ó=ª}¨!�t‘~˜f”~©}ˆGÐ=ä"'¨¤-ó1Ú"/˜Qö >E™&Ñ9 6Ñ9°Ó9É&ÑJZÐSYÑJZÒZÙ"/ð ð 1à×#Ñ# G¸TÈÚ>DÐ(Fð $ó Hò	 !ùÚ=ùò1s   ¥BÁ%Bc                 óü   • U R                  U5      nUb'  U R                  XR                  / SQ[        S-  S-   S9  Ub  U R                  X%R                  S/5        Ub  U R                  X5R                  S/5        gg)z 
Check a gauss()-like function.
N©©r©   r©   )r¨   ç      à?)g       Àr>  r¾   rÝ   ©r/  ©r>  r   )r»   r4  ÚnormalrË   ©r¶   Úfunc2Úfunc1Úfunc0rŒ   r‹   s         r   Ú_check_gaussÚTestRandom._check_gaussg  s€   € ð
 ×Ñ˜sÓ#ˆØÑØ×Ñ˜U§H¡HÚBÜ$%¨¡F¨R¡Kð ñ 1ð ÑØ×Ñ˜U§H¡H¨v¨hÔ7ØÑØ×Ñ˜U§H¡H¨r¨dÕ3ð r   c                 óN   • U R                  [        S5      S S [        5       5        g )Nr�   ©rF  r~   r   rç   s    r   Útest_random_gaussÚTestRandom.test_random_gaussv  s   € Ø×Ñœ* ^Ó4°d¸DÔBRÓBTÕUr   c                 óN   • U R                  [        S5      S S [        5       5        g )Nzrandom.normalvariaterI  rç   s    r   Útest_random_normalvariateÚ$TestRandom.test_random_normalvariatey  s$   € ð 	×Ñœ*Ð%;Ó<¸dÀDÜ*Ó,õ	.r   c                 ór   • U R                  [        S5      [        S5      [        S5      [	        5       5        g )Nr‚   )rF  r~   r|   rz   r   rç   s    r   Útest_numpy_normalÚTestRandom.test_numpy_normal  s0   € Ø×Ñœ*Ð%7Ó8Ü#Ð$6Ó7Ü%Ð&8Ó9Ü*Ó,õ	.r   c                 óN   • U R                  S S [        S5      [        5       5        g )Núnp.random.standard_normal©rF  rz   r   rç   s    r   Útest_numpy_standard_normalÚ%TestRandom.test_numpy_standard_normal…  s"   € Ø×Ñ˜$ ¤kÐ2MÓ&NÜ*Ó,õ	.r   c                 óN   • U R                  S S [        S5      [        5       5        g )Nznp.random.randnrT  rç   s    r   Útest_numpy_randnÚTestRandom.test_numpy_randn‰  s"   € Ø×Ñ˜$ ¤kÐ2CÓ&DÜ*Ó,õ	.r   c                 óü   • U R                  U5      nUb'  U R                  XR                  / SQ[        S-  S-   S9  Ub  U R                  X%R                  S/5        Ub  U R                  X5R                  S/5        gg)z)
Check a lognormvariate()-like function.
Nr<  r¾   rÝ   r?  r@  r   )r»   r4  Ú	lognormalrË   rB  s         r   Ú_check_lognormvariateÚ TestRandom._check_lognormvariate�  s€   € ð
 ×Ñ˜sÓ#ˆØÑØ×Ñ˜U§K¡KÚBÜ$%¨¡F¨R¡Kð ñ 1ð ÑØ×Ñ˜U§K¡K°&°Ô:ØÑØ×Ñ˜U§K¡K°"°Õ6ð r   c                 óN   • U R                  [        S5      S S [        5       5        g )Nzrandom.lognormvariate)r\  r~   r   rç   s    r   Útest_random_lognormvariateÚ%TestRandom.test_random_lognormvariateœ  s$   € Ø×"Ñ"¤:Ð.EÓ#FØ#'¨Ô/?Ó/Aõ	Cr   c                 ór   • U R                  [        S5      [        S5      [        S5      [	        5       5        g )Núnp.random.lognormal)r\  r~   r|   rz   r   rç   s    r   Útest_numpy_lognormalÚTestRandom.test_numpy_lognormal   s0   € Ø×"Ñ"¤:Ð.CÓ#DÜ#,Ð-BÓ#CÜ#.Ð/DÓ#EÜ#3Ó#5õ	7r   c           	      óÐ  • / n[        S5       HP  n	UR                  U" S5      5        UR                  U" SS5      5        Uc  M7  UR                  U" SSS5      5        MR     U(       a  U R                  U5      R                  n
OU R	                  U5      R
                  n
S Vs/ s H  o»U:  d  M
  UPM     nnU(       a  UOSnU H„  nU R                  XU4/SUS9  U R                  X*SS	U-   4/SUS9  Uc  M4  U R                  U" SS	U-   S
5      U
" SS	U-   S
5      5        U R                  U" S	U-   S	S5      U
" S	U-   S	S5      5        M†     U R                  [        US5        U R                  [        US5        U R                  [        USS5        U R                  [        USS	5        Ub3  U R                  [        USSS5        U R                  [        USSS5        ggs  snf )z$
Check a randrange()-like function.
rÝ   é eÍé   Nr’   )r†   rg  é   éˆ  l        ì            )r/  r0  éþÿÿÿr¾   é   éýÿÿÿr   éûÿÿÿé   r‡   r†   )
rÌ   rà   r»   r   r·   r(   r4  rú   r  Ú
ValueError)r¶   rD  rC  Úfunc3rŒ   Ú	max_widthÚis_numpyÚtprŽ   rÎ   ÚrrÚwÚwidthsr0  Úwidths                  r   Ú_check_randrangeÚ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˜È)Ám—!ÑBˆÐTÞ ‘" dˆÛˆEØ×Ñ˜U¨%¨¨
¸2Ø$+ð ñ -à×Ñ˜U¨"¨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#Â1G#c           	      ó  • [         R                  S4[         R                  S44 He  u  p[        U45      " [        5      n[        X45      " [
        5      n[        XU45      " [        5      nU R                  X4U[        5       US5        Mg     g )Nì            ì        F)	r   Úint64Úint32r   r)   r+   r.   ry  r   )r¶   rt  rr  Úcf1Úcf2Úcf3s         r   Útest_random_randrangeÚ TestRandom.test_random_randrangeÊ  sz   € Ü$Ÿ{™{¨EÐ2´U·[±[À%Ð4HÓI‰MˆBÜ˜�u”+Ô/Ó0ˆCÜ˜�yÔ"Ô#4Ó5ˆCÜ˜ �}Ô%Ô&7Ó8ˆCØ×!Ñ! #¨CÔ1AÓ1CØ"+¨Uö4ò	 Jr   c           
      ó0  • [         R                  [        R                  S4[         R                  [        R                  S44 HP  u  pn[	        U45      " [
        5      n[	        X45      " [        5      nU R                  XES [        5       USU5        MR     g )Nr|  r}  T)	r   r~  r   r  r   r   r#   ry  r   )r¶   rt  Únp_tprr  r€  r�  s         r   Útest_numpy_randintÚTestRandom.test_numpy_randintÒ  sx   € Ü&+§k¡k´2·8±8¸UÐ%CÜ&+§k¡k´2·8±8¸UÐ%Có%EÑ ˆB�yä˜�u”+œnÓ-ˆCÜ˜�y”/¤.Ó1ˆCØ×!Ñ! #¨DÔ2BÓ2DÀiØ"&¨ö/ò	%Er   c                 óš  • / n[        S5       H  nUR                  U" SS5      5        M     U R                  [        U5      [        [	        U5      5      U5        U R                  U5      nS H*  nUS   U:”  a  M  U R                  XR                  U/SS9  M,     U R                  [        USS5        U R                  [        USS5        g	)
z"
Check a randint()-like function.
rÝ   rg  rf  )©r†   rg  )é   ri  )é   rj  r†   r?  é   r¾   N)
rÌ   rà   rÊ   r�   râ   r·   r4  r   r  rp  )r¶   rb   rŒ   rr  rŽ   rÎ   r‹   r1  s           r   Ú_check_randintÚTestRandom._check_randintÚ  s¶   € ð
 ˆÜ�r–ˆAØ�K‰K™˜Q 	Ó*Ö+ñ à×Ñœ˜T›¤C¬¨D«	£N°DÔ9à× Ñ  Ó%ˆÛ=ˆDØ�A‰w˜Ó"ÙØ×Ñ˜T§9¡9¨t¨f¸RÐÓ@ñ >ð
 	×Ñœ* d¨A¨qÔ1Ø×Ñœ* d¨A¨qÕ1r   c                 óÀ   • [         R                  S4[         R                  S44 H6  u  p[        X45      " [        5      nU R                  U[        5       U5        M8     g )Nr|  r}  )r   r~  r  r   r%   rŽ  r   )r¶   rt  rr  Úcfs       r   Útest_random_randintÚTestRandom.test_random_randintí  sL   € Ü$Ÿ{™{¨EÐ2´U·[±[À%Ð4HÓI‰MˆBÜ�r�i”¤Ó0ˆBØ×Ñ Ô$4Ó$6¸	ÖBò Jr   c                 ób   • U R                  U5      nU R                  XR                  / SQ5        g)z"
Check a uniform()-like function.
))ç      ø?ç    €„.A)ç      Àç     @�@)r•  r—  N)r·   r4  rû   ©r¶   rb   rŒ   r‹   s       r   Ú_check_uniformÚTestRandom._check_uniformò  s,   € ð
 × Ñ  Ó%ˆØ×Ñ˜Ÿy™yÚ?õ	Ar   c                 ó`   • U R                  U5      n[        XS5      nU R                  XU5        g)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»   Úgetattrr9  )r¶   rb   rŒ   ÚdistribÚ	paramlistr‹   Údistrib_method_of_numpys          r   Ú_check_any_distrib_kwargsÚ$TestRandom._check_any_distrib_kwargsû  s/   € ð ×Ñ˜sÓ#ˆÜ")¨!Ó"5ÐØ×Ñ ¸yÕIr   c                 óJ   • U R                  [        S5      [        5       5        g )Nzrandom.uniform)rš  r~   r   rç   s    r   Útest_random_uniformÚTestRandom.test_random_uniform  s   € Ø×ÑœJÐ'7Ó8Ô:JÓ:LÕMr   c                 óJ   • U R                  [        S5      [        5       5        g )Núnp.random.uniform)rš  r~   r   rç   s    r   Útest_numpy_uniformÚTestRandom.test_numpy_uniform
  s   € Ø×ÑœJÐ':Ó;Ô=MÓ=OÕPr   c           
      óh   • U R                  [        SSS/5      [        5       SSSS.SS	S.SSS./S
9  g )Nr§  ÚlowÚhighrû   r•  r–  )r«  r¬  r—  r˜  ©rŸ  ©r¡  ru   r   rç   s    r   Útest_numpy_uniform_kwargsÚ$TestRandom.test_numpy_uniform_kwargs  sJ   € Ø×&Ñ&ÜÐ/°%¸°ÓAÜÓØØ"¨CÑ0Ø#¨SÑ1Ø"¨DÑ1ð3ð	 	'ò 	4r   c                 óŒ   • U R                  [        S/ SQ5      [        5       SSSSS.SSSS.SSSS.SSS S.SSS S.SSS S./S	9  g )
Nr§  ©r«  r¬  r6   rû   r•  r–  r   r—  r˜  r­  r®  rç   s    r   Útest_numpy_uniform_empty_sizeÚ(TestRandom.test_numpy_uniform_empty_size  sm   € Ø×&Ñ&ÜÐ/Ò1HÓIÜÓØØ"¨C¸Ñ<Ø#¨S¸"Ñ=Ø"¨D¸"Ñ=Ø"¨C¸Ñ>Ø#¨S¸$Ñ?Ø"¨D¸$Ñ?ðBð	 	'ò 		Cr   c                 ó¢   • U R                  U5      nUb  U R                  XR                  / SQ5        U R                  X$R                  S/5        g)z%
Check a triangular()-like function.
N)©r•  ç      @)r—  r•  )r•  r•  )r•  r·  çš™™™™™@)r·   r4  Ú
triangular)r¶   rC  rq  rŒ   r‹   s        r   Ú_check_triangularÚTestRandom._check_triangular"  sI   € ð
 × Ñ  Ó%ˆØÑØ×Ñ˜U§L¡LÚBôDà×Ñ˜§¡¨Ð.?Õ@r   c                 ó^   • U R                  [        S5      [        S5      [        5       5        g )Nzrandom.triangular)rº  r~   r€   r   rç   s    r   Útest_random_triangularÚ!TestRandom.test_random_triangular-  s'   € Ø×ÑœzÐ*=Ó>Ü*Ð+>Ó?Ü/Ó1õ	3r   c                 ó^   ^• [        S5      mU4S jnU R                  S U[        5       5        g )Núnp.random.triangularc                 ó   >• T" XU5      $ r   r   )Úlr‹   Úmr¹  s      €r   Ú<lambda>Ú2TestRandom.test_numpy_triangular.<locals>.<lambda>4  s   ø€ ©:°a¸AÔ+>r   )r€   rº  r   )r¶   Úfixed_triangularr¹  s     @r   Útest_numpy_triangularÚ TestRandom.test_numpy_triangular2  s+   ø€ Ü Ð!7Ó8ˆ
Ü>ÐØ×Ñ˜tÐ%5Ô7GÓ7IÕJr   c                 óè  • U R                  U5      nUb  U R                  XR                  / SQ5        Ub(  U R                  U" S5      UR                  SS5      5        Ub`  U R	                  [
        USS5        U R	                  [
        USS5        U R	                  [
        USS5        U R	                  [
        USS5        Ub/  U R	                  [
        US5        U R	                  [
        US5        gg)z'
Check a gammavariate()-like function.
N)©r>  ç      @)r©   r•  r¶  r•  r©   rœ   ç      à¿)r·   r4  rª   rú   r  rp  )r¶   rC  rD  rŒ   r‹   s        r   Ú_check_gammavariateÚTestRandom._check_gammavariate7  sÜ   € ð
 × Ñ  Ó%ˆØÑØ×Ñ˜U§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   • U R                  [        S5      S [        5       5        g )Nzrandom.gammavariate)rÍ  r~   r   rç   s    r   Útest_random_gammavariateÚ#TestRandom.test_random_gammavariateL  s    € Ø× Ñ ¤Ð,AÓ!BÀDÜ!1Ó!3õ	5r   c                 ó¦   • U R                  [        S5      [        S5      [        5       5        U R                  S [        S5      [        5       5        g )Núnp.random.gammaúnp.random.standard_gamma)rÍ  r~   r|   r   rç   s    r   Útest_numpy_gammaÚTestRandom.test_numpy_gammaP  sH   € Ø× Ñ ¤Ð,=Ó!>Ü!*Ð+<Ó!=Ü!1Ó!3ô	5ð 	× Ñ  Ü!*Ð+EÓ!FÜ!1Ó!3õ	5r   c                 ó   • U R                  U5      nU R                  XR                  S/5        U R                  [        USS5        U R                  [        USS5        U R                  [        USS5        U R                  [        USS5        g)z&
Check a betavariate()-like function.
rÊ  rœ   r©   rÌ  N)r·   r4  Úbetavariater  rp  r™  s       r   Ú_check_betavariateÚTestRandom._check_betavariateX  sz   € ð
 × Ñ  Ó%ˆØ×Ñ˜Ÿ}™}¨z¨lÔ;à×Ñœ* d¨C°Ô5Ø×Ñœ* d¨C°Ô5Ø×Ñœ* d¨D°#Ô6Ø×Ñœ* d¨C°Õ6r   c                 óJ   • U R                  [        S5      [        5       5        g )Nzrandom.betavariate)rÙ  r~   r   rç   s    r   Útest_random_betavariateÚ"TestRandom.test_random_betavariatee  s   € Ø×Ñ¤
Ð+?Ó @ÔBRÓBTÕUr   c                 óJ   • U R                  [        S5      [        5       5        g )Núnp.random.beta)rÙ  r~   r   rç   s    r   Útest_numpy_betaÚTestRandom.test_numpy_betah  s   € Ø×Ñ¤
Ð+;Ó <Ô>NÓ>PÕQr   c                 ó`   • U R                  U5      nU R                  XR                  S/5        g)z*
Check a vonmisesvariate()-like function.
rÊ  N)r·   r4  Úvonmisesvariater™  s       r   Ú_check_vonmisesvariateÚ!TestRandom._check_vonmisesvariatek  s,   € ð × Ñ  Ó%ˆØ×Ñ˜×0Ñ0°:°,Õ?r   c                 óJ   • U R                  [        S5      [        5       5        g )Nzrandom.vonmisesvariate)rä  r~   r   rç   s    r   Útest_random_vonmisesvariateÚ&TestRandom.test_random_vonmisesvariater  s   € Ø×#Ñ#¤JÐ/GÓ$HÜ$4Ó$6õ	8r   c                 óJ   • U R                  [        S5      [        5       5        g )Núnp.random.vonmises)rä  r~   r   rç   s    r   Útest_numpy_vonmisesÚTestRandom.test_numpy_vonmisesv  s   € Ø×#Ñ#¤JÐ/CÓ$DÜ$4Ó$6õ	8r   c           	      ó®   • U R                  U5      nS H>  n[        S5       H,  nU R                  U" U5      UR                  SU-  5      SS9  M.     M@     g)zq
Check a expovariate()-like function.  Note the second argument
is inversed compared to np.random.exponential().
)gš™™™™™É?r>  r•  r’   r†   Údouble)r*  N)r»   rÌ   rú   Úexponential)r¶   rb   rŒ   r‹   ÚlambdrÎ   s         r   Ú_check_expovariateÚTestRandom._check_expovariatez  sW   € ð
 ×Ñ˜sÓ#ˆÛ$ˆEÜ˜1–X�Ø×'Ñ'©¨U«°Q·]±]À1ÀuÁ9Ó5MØ-5ð (ó 7ó ò %r   c                 óJ   • U R                  [        S5      [        5       5        g )Nzrandom.expovariate)rñ  r|   r   rç   s    r   Útest_random_expovariateÚ"TestRandom.test_random_expovariate…  r&  r   c                 óª   • U R                  U5      nUb  U R                  XR                  / SQ5        Ub  U R                  X$R                  S/5        gg)z&
Check a exponential()-like function.
N)r@  ©r©   ©r•  r   )r»   r4  rï  )r¶   rD  rE  rŒ   r‹   s        r   Ú_check_exponentialÚTestRandom._check_exponentialˆ  sP   € ð ×Ñ˜sÓ#ˆØÑØ×Ñ˜U§M¡MÒ3KÔLØÑØ×Ñ˜U§M¡M°B°4Õ8ð r   c                 ó^   • U R                  [        S5      [        S5      [        5       5        g )Núnp.random.exponential)rù  r|   rz   r   rç   s    r   Útest_numpy_exponentialÚ!TestRandom.test_numpy_exponential’  s'   € Ø×Ñ¤	Ð*AÓ BÜ +Ð,CÓ DÜ 0Ó 2õ	4r   c                 óL   • U R                  S [        S5      [        5       5        g )Núnp.random.standard_exponential)rù  rz   r   rç   s    r   Útest_numpy_standard_exponentialÚ*TestRandom.test_numpy_standard_exponential—  s!   € Ø×Ñ Ü +Ð,LÓ MÜ 0Ó 2õ	4r   c                 ób   • U R                  U5      nU R                  XR                  SS/5        g)z(
Check a paretovariate()-like function.
r@  )r·  N)r·   r4  Úparetovariater™  s       r   Ú_check_paretovariateÚTestRandom._check_paretovariateœ  s-   € ð
 × Ñ  Ó%ˆØ×Ñ˜Ÿ™°¸Ð0@ÕAr   c                 óJ   • U R                  [        S5      [        5       5        g )Nzrandom.paretovariate)r  r|   r   rç   s    r   Útest_random_paretovariateÚ$TestRandom.test_random_paretovariate¤  s   € Ø×!Ñ!¤)Ð,BÓ"CÔEUÓEWÕXr   c                 ó\   ^• [        S5      mU4S jnU R                  U[        5       5        g )Núnp.random.paretoc                 ó   >• T" U 5      S-   $ )Nr©   r   )r   Úparetos    €r   rÄ  Ú.TestRandom.test_numpy_pareto.<locals>.<lambda>©  s   ø€ ¡¨£¨S¢r   )r|   r  r   )r¶   Úfixed_paretor  s     @r   Útest_numpy_paretoÚTestRandom.test_numpy_pareto§  s'   ø€ ÜÐ-Ó.ˆÜ0ˆØ×!Ñ! ,Ô0@Ó0BÕCr   c                 óâ   • U R                  U5      nUb  U R                  XR                  S/5        Ub;  [        S5       H+  nU R	                  U" S5      UR                  SS5      5        M-     gg)z)
Check a weibullvariate()-like function.
NrÊ  r’   rË  r©   )r·   r4  ÚweibullvariaterÌ   rú   )r¶   rC  rD  rŒ   r‹   rÎ   s         r   Ú_check_weibullvariateÚ TestRandom._check_weibullvariate¬  sp   € ð
 × Ñ  Ó%ˆØÑØ×Ñ˜U×$4Ñ$4°z°lÔCØÑÜ˜1–X�Ø×'Ñ'©¨c«
Ø()×(8Ñ(8¸¸cÓ(BöDò ð r   c                 óL   • U R                  [        S5      S [        5       5        g )Nzrandom.weibullvariate)r  r~   r   rç   s    r   Útest_random_weibullvariateÚ%TestRandom.test_random_weibullvariate¹  s!   € Ø×"Ñ"¤:Ð.EÓ#FØ#'Ô)9Ó);õ	=r   c                 óL   • U R                  S [        S5      [        5       5        g )Núnp.random.weibull)r  r|   r   rç   s    r   Útest_numpy_weibullÚTestRandom.test_numpy_weibull½  s    € Ø×"Ñ" 4¬Ð3FÓ)GÜ#3Ó#5õ	7r   c           	      ó°  • [        S5      nU R                  [        5       S5      nU R                  XR                  S/5        S HÆ  nU R                  U" US5      S5        U R                  U" US5      U5        S H‹  nU" X45      nUS:”  a	  X2-
  nS	U-
  nU R                  US5        U R                  X#5        XC-  nS
U-  [        R                  " U5      -  nU R                  X%U-
  XCU45        U R                  X%U-   XCU45        M�     MÈ     U R                  [        USS5        U R                  [        USS5        U R                  [        USS5        g )Núnp.random.binomialr   )é   g      Ð?)éd   éè  é'  rœ   r©   )	g-Cëâ6?çš™™™™™¹?çš™™™™™Ù?g9î”Öÿß?r>  gãˆµø à?çš™™™™™é?çÍÌÌÌÌÌì?ç§èH.ÿï?r>  r†   r’   r‡   rÝ   çš™™™™™¹¿çš™™™™™ñ?)r~   r»   r   r4  ÚbinomialrÊ   ÚassertGreaterEqualÚassertLessEqualÚmathÚsqrtr  rp  )r¶   r*  r‹   r?   r  rZ   Útols          r   Útest_numpy_binomialÚTestRandom.test_numpy_binomialÁ  sE  € äÐ2Ó3ˆØ×ÑÔ/Ó1°1Ó5ˆØ×Ñ˜§:¡:°
¨|Ô<ã#ˆAØ×Ñ™X a¨Ó-¨qÔ1Ø×Ñ™X a¨Ó-¨qÔ1ÛP�Ù˜Q“N�Ø�s“7Ø™�AØ˜A™�AØ×'Ñ'¨¨1Ô-Ø×$Ñ$ QÔ*Ø™5�Ø˜!‘eœdŸiši¨›lÑ*�Ø×'Ñ'¨°c©>¸AÀ!¸9ÔEØ×$Ñ$ Q°3©¸¸q¸	ÖBó Qñ $ð 	×Ñœ* h°°CÔ8Ø×Ñœ* h°°DÔ9Ø×Ñœ* h°°CÕ8r   c                 ó¨   • [        S5      nU R                  [        5       5      nU R                  U[        R
                  " [        U5      SS/5        g )Núnp.random.chisquarerø  ©rË  )r|   r·   r   r4  Ú	functoolsÚpartialr«   )r¶   Ú	chisquarer‹   s      r   Útest_numpy_chisquareÚTestRandom.test_numpy_chisquareÚ  sI   € ÜÐ3Ó4ˆ	Ø× Ñ Ô!1Ó!3Ó4ˆØ×Ñ˜Ü"×*Ò*¬<¸Ó;Ø  &Ð)õ	+r   c                 ó¨   • [        S5      nU R                  [        5       5      nU R                  U[        R
                  " [        U5      SS/5        g )Núnp.random.f©r>  r•  )r•  r%  )r~   r·   r   r4  r5  r6  r¯   )r¶   Úfr‹   s      r   Útest_numpy_fÚTestRandom.test_numpy_fá  sG   € Ü�}Ó%ˆØ× Ñ Ô!1Ó!3Ó4ˆØ×Ñ˜œI×-Ò-¬d°AÓ6Ø$ jÐ1õ	3r   c                 ó"  • [        S5      nU R                  [        US5        U R                  [        US5        U R                  [        US5        Sn[        U5       Vs/ s H
  o1" S5      PM     nnU R	                  US/U-  5        [        U5       Vs/ s H
  o1" S5      PM     nnUR                  S5      nU R                  XRS	-  5        U R                  XR5        U R                  U Vs/ s H  o3S
:”  d  M
  UPM     sn5        [        U5       Vs/ s H
  o1" S5      PM     nnU R                  U Vs/ s H  o3S:”  d  M
  UPM     sn5        [        U5       Vs/ s H
  o1" S5      PM     nnU R                  U Vs/ s H  o3S:”  d  M
  UPM     sn5        [        U5       Vs/ s H
  o1" S5      PM     nnU R                  U Vs/ s H  o3S:”  d  M
  UPM     sn5        g s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf )Núnp.random.geometricg      ð¿rœ   gj¼t“ð?éÈ   r©   r†   r&  r¾   r!  r$  r�  g{®Gáz„?é2   gVçž¯Ò<ì        )
r|   r  rp  rÌ   rú   Úcountr+  Ú
assertLessÚassertFalseÚ
assertTrue)r¶   ÚgeomrË   rÎ   r‹   r?   s         r   Útest_numpy_geometricÚ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ˆØ×Ñ ¨¡6Ô*Ø�‰˜ÔØ×Ñ¡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.Ã;G.ÄG3Ä7	G8ÅG8ÅG=Æ 	HÆHÆ'HÇ		HÇHc                 óˆ   • [        S5      nU R                  [        5       5      nU R                  XR                  SS/5        g )Núnp.random.gumbel©rœ   r©   ©ç      ø¿r·  )r~   r»   r   r4  Úgumbel)r¶   rQ  r‹   s      r   Útest_numpy_gumbelÚTestRandom.test_numpy_gumbelý  s:   € ÜÐ.Ó/ˆØ×ÑÔ/Ó1Ó2ˆØ×Ñ˜§¡¨J¸Ð+DÕEr   c           	      ó`   • U R                  [        SSS/5      [        5       SSSS.SS	S./S
9  g )NrM  ÚlocÚscalerQ  rœ   r©   )rU  rV  rP  r·  ©rž  rŸ  r®  rç   s    r   Útest_numpy_gumbel_kwargsÚ#TestRandom.test_numpy_gumbel_kwargs  sC   € Ø×&Ñ&ÜÐ.°¸Ð0@ÓAÜÓØØ"¨SÑ1Ø#¨cÑ2ð4ð	 	'ò 	5r   c                 ól  • [        S5      nU R                  [        5       5      nU R                  XR                  SS/SS9  [        S5       Vs/ s H  o1" SSS5      PM     nnU R                  [        S U 5       5      U5        U R                  [        R                  " U5      S	5        U R                  [        R                  " U5      S
5        [        S5       Vs/ s H  o1" SSS5      PM     nnU R                  [        S U 5       5      U5        U R                  [        R                  " U5      S5        [        S5       Vs/ s H  o1" SSS5      PM     nnU R                  [        S U 5       5      U5        U R                  [        R                  " U5      S5        g s  snf s  snf s  snf )Núnp.random.hypergeometric©r!  ri  rÝ   )ri  r!  rÝ   é   r?  r   r!  c              3   óB   #   • U  H  oS :¬  =(       a    US:*  v •  M     g7f©r   r   Nr   ©Ú.0r•   s     r   Ú	<genexpr>Ú7TestRandom.test_numpy_hypergeometric.<locals>.<genexpr>  ó   é € Ð;º°A ™F×/ q¨C¡xÔ/ºùó   ‚g      D@g      N@é † c              3   óB   #   • U  H  oS :¬  =(       a    US:*  v •  M     g7fr_  r   r`  s     r   rb  rc    rd  re  ç      $@c              3   óB   #   • U  H  oS :¬  =(       a    US:*  v •  M     g7fr_  r   r`  s     r   rb  rc    rd  re  g     €V@)r€   r»   r   r4  ÚhypergeometricrÌ   rH  Úallr+  r   Úmeanr,  )r¶   Úhgr‹   rÎ   s       r   Útest_numpy_hypergeometricÚ$TestRandom.test_numpy_hypergeometric  sg  € äÐ3Ó4ˆØ×ÑÔ/Ó1Ó2ˆØ×Ñ˜×-Ñ-Ø*Ð,<Ð=Ø "ð 	ñ 	$ô +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,Å	F1c                 ó$  • U R                  [        5       5      nU R                  [        S5      UR                  SS/5        U R                  [        S5      UR                  SS/5        U R                  [        S5      UR                  S/5        g )Núnp.random.laplacerN  rO  ©rœ   ©rP  r   )r»   r   r4  r~   Úlaplacer|   rz   ©r¶   r‹   s     r   Útest_numpy_laplaceÚTestRandom.test_numpy_laplace  s|   € Ø×ÑÔ/Ó1Ó2ˆØ×ÑœÐ$7Ó8¸!¿)¹)Ø$ kÐ2ô	4à×ÑœÐ#6Ó7¸¿¹Ø  'Ð*ô	,à×ÑœÐ%8Ó9¸1¿9¹9ÀrÀdÕKr   c                 ó$  • U R                  [        5       5      nU R                  [        S5      UR                  SS/5        U R                  [        S5      UR                  SS/5        U R                  [        S5      UR                  S/5        g )Núnp.random.logisticrN  rO  rr  rs  r   )r»   r   r4  r~   Úlogisticr|   rz   ru  s     r   Útest_numpy_logisticÚTestRandom.test_numpy_logistic&  s|   € Ø×ÑÔ/Ó1Ó2ˆØ×ÑœÐ$8Ó9¸1¿:¹:Ø$ kÐ2ô	4à×ÑœÐ#7Ó8¸!¿*¹*Ø  'Ð*ô	,à×ÑœÐ%9Ó:¸A¿J¹JÈÈÕMr   c                 ó°  • U R                  [        5       5      n[        S5      nU R                  X!R                  / SQSS9  U R                  [        5       SS9nU R                  [        S5       Vs/ s H
  o2" S5      PM     sn/ S	Q5        U R                  [        US
5        U R                  [        US5        U R                  [        US5        g s  snf )Núnp.random.logseries)©r#  )g®Gáz®ï?)r'  rC  r?  r†   ©rW   rÝ   g{üÿÿÿÿï?)
iÛv�xið- r]  iìË  in‰Ž i¬Íç)l   †&c€iÜ€oirHô iâ  rœ   r(  r)  )	r»   r   r|   r4  Ú	logseriesrÊ   rÌ   r  rp  )r¶   r‹   r�  rÎ   s       r   Útest_numpy_logseriesÚTestRandom.test_numpy_logseries.  sÈ   € Ø×ÑÔ/Ó1Ó2ˆÜÐ3Ó4ˆ	Ø×Ñ˜§K¡KÚ5Ø "ð 	ñ 	$ð
 ×ÑÔ/Ó1¸ÐÐ:ˆØ×Ñ¼eÀB¼iÓHºi¸˜) OÖ4¹iÑHòCô	Dð 	×Ñœ* i°Ô5Ø×Ñœ* i°Ô6Ø×Ñœ* i°Õ5ùò Is   Á2Cc                 ó´   • U R                  [        5       5      n[        S5      nU R                  X!R                  / SQSS9  U R                  [        US5        g )Núnp.random.poisson)rr  r@  ©r¨   )rh  )g     $Œ@rC  r?  r(  )r»   r   r|   r4  Úpoissonr  rp  )r¶   r‹   r‡  s      r   Útest_numpy_poissonÚTestRandom.test_numpy_poisson>  sT   € Ø×ÑÔ/Ó1Ó2ˆÜÐ/Ó0ˆà×Ñ˜§)¡)ÚDØ "ð 	ñ 	$ð 	×Ñœ* g¨tÕ4r   c           	      ó–  • U R                  [        5       S5        [        S5      nU R                  [	        S5       Vs/ s H  o!" SS5      PM     sn/ SQ5        U R                  [	        S5       Vs/ s H  o!" SS5      PM     sn/ SQ5        U R                  [	        S5       Vs/ s H  o!" SS5      PM     sn/ S	Q5        U R                  [	        S5       Vs/ s H  o!" S
S5      PM     sn/ SQ5        [
        R                  " [	        S5       Vs/ s H  nU" SS5      PM     sn5      nU R                  US5        U R                  US5        U R                  [        USS5        U R                  [        USS5        U R                  [        USS5        U R                  [        USS5        g s  snf s  snf s  snf s  snf s  snf )Nr   únp.random.negative_binomialrÝ   r&  )
r¾   r’   r†   rg  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¾   é   r�  r�  r   r   r   r†   r   rC  i Êš;g   |ž˜ Bg   $sî Br>  r‡   r(  r)  )r»   r   r~   rÊ   rÌ   r   rl  ÚassertGreaterrF  r  rp  )r¶   ÚnegbinrÎ   rÃ  s       r   Útest_numpy_negative_binomialÚ'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   ¾F2Á2F7Â&F<ÃGÄGc                 óä   • U R                  [        5       5      n[        S5      nU R                  X!R                  / SQ5        U R                  [        US5        U R                  [        US5        g )Núnp.random.power)r  r@  )r&  )g      @rœ   r(  )r»   r   r|   r4  Úpowerr  rp  )r¶   r‹   r›  s      r   Útest_numpy_powerÚTestRandom.test_numpy_power\  s\   € Ø×ÑÔ/Ó1Ó2ˆÜÐ+Ó,ˆØ×Ñ˜§¡Ú9ô	;à×Ñœ* e¨SÔ1Ø×Ñœ* e¨TÕ2r   c                 ó4  • U R                  [        5       5      n[        S5      n[        S5      nU R	                  X!R
                  / SQ5        U R	                  X1R
                  S/5        U R                  [        US5        U R                  [        US5        g )Núnp.random.rayleigh)r  ©r%  )g      9@)r˜  r   rœ   r(  )r»   r   r|   rz   r4  Úrayleighr  rp  )r¶   r‹   Ú	rayleigh1Ú	rayleigh0s       r   Útest_numpy_rayleighÚTestRandom.test_numpy_rayleighd  s}   € Ø×ÑÔ/Ó1Ó2ˆÜÐ2Ó3ˆ	ÜÐ 4Ó5ˆ	Ø×Ñ˜§J¡JÚ9ô	;à×Ñ˜§J¡J°°Ô5Ø×Ñœ* i°Ô5Ø×Ñœ* i°Õ6r   c                 ó†   • U R                  [        5       5      n[        S5      nU R                  X!R                  S/5        g )Núnp.random.standard_cauchyr   )r»   r   rz   r4  Ústandard_cauchy)r¶   r‹   Úcauchys      r   Útest_numpy_standard_cauchyÚ%TestRandom.test_numpy_standard_cauchyn  s9   € Ø×ÑÔ/Ó1Ó2ˆÜÐ8Ó9ˆØ×Ñ˜×!2Ñ!2°R°DÕ9r   c                 óö   • U R                  [        5       5      n[        S5      n[        R                  " [        S5       Vs/ s H
  o2" S5      PM     sn5      nU R                  [        U5      S5        g s  snf )Núnp.random.standard_tri  rg  r>  )r·   r   r|   r   rl  rÌ   rF  Úabs)r¶   r‹   Ú
standard_trÎ   Úavgs        r   Útest_numpy_standard_tÚ TestRandom.test_numpy_standard_ts  s_   € ð × Ñ Ô!1Ó!3Ó4ˆÜÐ5Ó6ˆ
Ü�gŠg¬e°D¬kÓ:ªk¨�z !–}©kÑ:Ó;ˆà�‰œ˜C› #Õ&ùò ;s   ÁA6c                 óH  • U R                  [        5       5      n[        S5      nU R                  X!R                  SS/5        U R                  [        USS5        U R                  [        USS5        U R                  [        USS5        U R                  [        USS5        g )Núnp.random.waldr=  )r¨   ç      @rœ   r©   r(  )r»   r   r~   r4  Úwaldr  rp  )r¶   r‹   r¶  s      r   Útest_numpy_waldÚTestRandom.test_numpy_wald}  sŠ   € Ø×ÑÔ/Ó1Ó2ˆÜÐ*Ó+ˆØ×Ñ˜Ÿv™v¨
°JÐ'?Ô@Ø×Ñœ* d¨C°Ô5Ø×Ñœ* d¨D°#Ô6Ø×Ñœ* d¨C°Ô5Ø×Ñœ* d¨C°Õ6r   c           	      ó$  • [        SSS/5      nU R                  U[        5       SSSS.SSS./S	9  U R                  [        US
S5        U R                  [        USS5        U R                  [        USS
5        U R                  [        USS5        g )Nr´  rl  rV  r¶  r©   )rl  rV  r¨   rµ  rW  rœ   r(  )ru   r¡  r   r  rp  )r¶   Únumba_versions     r   Útest_numpy_wald_kwargsÚ!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                 óÄ   • U R                  [        5       5      n[        S5      nU R                  X!R                  SS/SS9  S H  nU R                  [        X#5        M     g )Núnp.random.zipfrø  r4  r   r?  )r©   r>  rœ   r(  )r»   r   r|   r4  Úzipfr  rp  )r¶   r‹   r¿  Úvals       r   Útest_numpy_zipfÚTestRandom.test_numpy_zipf’  sY   € Ø×ÑÔ/Ó1Ó2ˆÜÐ)Ó*ˆØ×Ñ˜Ÿv™v¨°Ð'7ÀÐÑDÛ(ˆCØ×Ñœj¨$Ö4ò )r   c                 ó.  • [         R                  " S5      [         R                  " S5      R                  S5      /nU(       a  U R                  U5      nOU R	                  U5      nU H�  n[        S5       Ho  nUR                  5       nUR                  5       n	U" U5        U(       d  [        UR                  5      S:X  d  MM  UR                  U	5        U R                  X‰5        Mq     Mƒ     US   nUR                  5       n
U" [        U
5      5        U R                  [        U5      [        U
5      5        U R                  [        U5      [        U
5      5        U R!                  5          U" [        S5      5        SSS5        g! , (       d  f       g= f)	z-
Check a shuffle()-like function for arrays.
rŒ  é    )rh  r�  r’   r†   r   s   xyzN)r   ÚarangeÚreshaper»   r·   rÌ   Úcopyr�   ÚshapeÚshufflerú   Ú
memoryviewÚassertNotEqualrŠ   rÊ   ÚsortedÚassertTypingError)r¶   rb   rŒ   rs  Úarrsr‹   r   rÎ   r[   rZ   r"   s              r   rÔ   Ú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   Å+FÆ
Fc                 óL   • U R                  [        S5      [        5       S5        g )Nzrandom.shuffleF)rÔ   r|   r   rç   s    r   Útest_random_shuffleÚTestRandom.test_random_shuffle´  s   € Ø×ÑœIÐ&6Ó7Ô9IÓ9KÈUÕSr   c                 óL   • U R                  [        S5      [        5       S5        g )Nznp.random.shuffleT)rÔ   r|   r   rç   s    r   Útest_numpy_shuffleÚTestRandom.test_numpy_shuffle·  s   € Ø×ÑœIÐ&9Ó:Ô<LÓ<NÐPTÕUr   c                 ó   • S[        5       -  n[        5       n[        S5       H¼  n[        R                  " [
        R                  SU/[        R                  [        R                  S9nUR                  5       u  pxUR                  S:w  a,  [        SUR                  < SUR                  5       < S35      eUR                  [        UR                  5       5      5        M¾     U R                  [!        U5      SU5        g	)
z9
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_randomnessÚ$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                 ó(   • U R                  SS5        g )Nr  r   ©rì  rç   s    r   Útest_random_random_startupÚ%TestRandom.test_random_random_startupÎ  s   € Ø×&Ñ& ¸Õ;r   c                 ó(   • U R                  SS5        g )NÚrandom_gaussr=  rï  rç   s    r   Útest_random_gauss_startupÚ$TestRandom.test_random_gauss_startupÑ  ó   € Ø×&Ñ& ~°zÕBr   c                 ó(   • U R                  SS5        g )Nr  r   rï  rç   s    r   Útest_numpy_random_startupÚ$TestRandom.test_numpy_random_startupÔ  s   € Ø×&Ñ& ~°rÕ:r   c                 ó(   • U R                  SS5        g )NÚnumpy_normalr=  rï  rç   s    r   Útest_numpy_gauss_startupÚ#TestRandom.test_numpy_gauss_startup×  rö  r   c                 óò  • [        S5      nU R                  [        5       5      nS Hˆ  n[        R                  " U5      nUR                  5       nU R                  U" U5      UR                  U5      5        U R                  U" U5      UR                  U5      5        U R                  XE5        MŠ     [        R                  " S5      R                  SS5      [        R                  " S5      R                  SSS5      [        R                  " S5      R                  SSSS5      /nU HK  nUR                  5       nU R                  U" U5      UR                  U5      5        U R                  XE5        MM     g )	Nznp.random.permutation)rg  rÝ   r”  rŒ  rÝ   r¾   rg  é   r’   é$   )	r|   r»   r   r   rÅ  rÇ  rú   ÚpermutationrÆ  )r¶   rb   r‹   Úsr   r"   rÎ  s          r   Útest_numpy_random_permutationÚ(TestRandom.test_numpy_random_permutationÚ  s$  € ÜÐ0Ó1ˆØ×ÑÔ/Ó1Ó2ˆÛ ˆAÜ—	’	˜!“ˆAØ—‘“ˆAà×#Ñ#¡D¨£G¨Q¯]©]¸1Ó-=Ô>à×#Ñ#¡D¨£G¨Q¯]©]¸1Ó-=Ô>à×#Ñ# AÖ)ñ !ô —	’	˜"“×%Ñ% a¨Ó+Ü—	’	˜"“×%Ñ% a¨¨AÓ.Ü—	’	˜"“×%Ñ% a¨¨A¨qÓ1ð3ˆó ˆAØ—‘“ˆAØ×#Ñ#¡D¨£G¨Q¯]©]¸1Ó-=Ô>Ø×#Ñ# AÖ)ò r   r   )r’   rî  é   Nr   )Vr¿   rÀ   rÁ   rÂ   rþ   r  r  r  r  r  r!  r$  r4  r9  rF  rJ  rM  rP  rU  rX  r\  r_  rc  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  r0  r8  r>  rJ  rR  rX  rn  rv  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ö      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                   óê   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S&r(g')(ÚTestRandomArraysið  z9
Test array-producing variants of np.random.* functions.
c                 óL   • SU< 3nSR                  SS U 5      n[        X45      $ )Nú
np.random.ú, Úabcd)rp   rk   )r¶   ÚfuncnameÚnargsÚqualnamerh   s        r   Ú_compile_array_distÚ$TestRandomArrays._compile_array_distõ  s)   � Ú%-Ð/ˆØ—I‘I˜f V e˜nÓ-ˆ	Ü˜XÓ1Ð1r   c                 óà  • U R                  U[        U5      S-   5      nU R                  [        5       5      n[	        XA5      nS H†  nX&4-   nU" U6 nU" U6 n	UR
                  [        R
                  " S5      :X  a?  U	R
                  [        R
                  " S5      :X  a  UR                  U	R
                  5      nU R                  X‰SSS9  Mˆ     US-   nU" U6 nU" U6 n	U R                  X‰SSS9  g	)
z=
Check returning an array according to a given distribution.
r†   ©rh  ©r¾   r’   r  r~  rî  rg  ©r*  r+  r   N)	r  r�   r»   r   r�  r›   r   Úastyperú   )
r¶   r  Úscalar_argsÚcfuncr‹   rj   r6   r1  rZ   r[   s
             r   Ú_check_array_distÚ"TestRandomArrays._check_array_distú  sè   € ð ×(Ñ(¨´3°{Ó3CÀaÑ3GÓHˆØ×ÑÔ/Ó1Ó2ˆÜ˜Ó%ˆÛˆDØ Ñ(ˆDÙ˜t�}ˆHÙ˜�,ˆCà—‘¤"§(¢(¨7Ó"3Ó3Ø—I‘I¤§¢¨'Ó!2Ó2Ø#Ÿ?™?¨3¯9©9Ó5�Ø×#Ñ# H¸ÀqÐ#ÓIñ  ð ˜WÑ$ˆÙ˜4�=ˆÙ�TˆlˆØ×Ñ °HÀ1ÐÒEr   c                 ó¾  ^^• U R                  U[        U5      S-   5      nU R                  [        5       5      n[	        US5      mX#-   mUU4S jnUS-   nU" 5       nU" U6 n	U R                  X‰SSS9  S He  n
X*4-   n[        R                  " U
5      nUR                  n[        UR                  5       H  nU" 5       X¼'   M     U" U6 n	U R                  X‰SSS9  Mg     g	)
z~
Check returning an array according to a given gamma distribution,
where we use CPython's implementation rather than NumPy's.
r†   rª   c                  ó   >• T" T6 $ r   r   )Ú_argsrj   Úpyfunc_argss    €€r   rÄ  Ú:TestRandomArrays._check_array_dist_gamma.<locals>.<lambda>  s
   ø€ ¡&¨+Ñ"6r   r   rî  rg  r  r  N)r  r�   r·   r   r�  rú   r   ÚemptyÚflatrÌ   r6   )r¶   r  r  Úextra_pyfunc_argsr  r‹   Úpyrandomr1  rZ   r[   r6   Úexpected_flatÚidxrj   r  s                @@r   Ú_check_array_dist_gammaÚ(TestRandomArrays._check_array_dist_gamma  sâ   ù€ ð
 ×(Ñ(¨´3°{Ó3CÀaÑ3GÓHˆØ× Ñ Ô!1Ó!3Ó4ˆÜ˜˜NÓ+ˆØ!Ñ5ˆÝ6ˆà˜WÑ$ˆÙ“:ˆÙ�TˆlˆØ×Ñ °HÀ1ÐÑEÛˆDØ Ñ(ˆDÜ—x’x “~ˆHØ$ŸM™MˆMÜ˜XŸ]™]Ö+�Ù%-£Z�Ó"ñ ,á˜�,ˆCØ×#Ñ# H¸ÀqÐ#ÓIò  r   c                 ó"  • [         R                  S 5       nU R                  U[        U5      S-   5      nSU< 3nSR	                  SS[        U5       5      n[        XV5      nS Hy  nX(4-   n	U" 5         U" U	6 n
U" 5         [        R                  " XŠR                  S9nUR                  n[        UR                  5       H
  nU" U6 XÍ'   M     U R                  XºS	S
S9  M{     U" 5         US-   n	U" U6 nU" 5         U" U	6 n
U R                  XºS	S
S9  g)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   • [         R                  R                  S5        g )NiÒ  )r   r   rW   r   r   r   ÚresetÚ6TestRandomArrays._check_array_dist_self.<locals>.reset0  s   € ä�I‰I�N‰N˜4Õ r   r†   r	  r
  r  Nr  rš   rî  rg  r  r   )Únumbar   r  r�   rp   rk   r   r  r›   r   rÌ   r6   rú   )r¶   r  r  r)  Ú
array_funcr  rh   Úscalar_funcr6   r1  r[   rZ   r   r$  s                 r   Ú_check_array_dist_selfÚ'TestRandomArrays._check_array_dist_self'  s  € ô 
�‰ñ	!ó 
ð	!ð ×-Ñ-¨h¼¸KÓ8HÈ1Ñ8LÓM‰
â%-Ð/ˆØ—I‘I˜fÐ%6¤c¨+Ó&6Ð7Ó8ˆ	Ü# HÓ8ˆãˆDØ Ñ(ˆDÙŒGÙ˜dÐ#ˆCÙŒGô —x’x ¯I©IÑ6ˆHØ—=‘=ˆDÜ˜XŸ]™]Ö+�Ù'¨Ð5�“	ñ ,à×#Ñ# H¸ÀqÐ#ÓIñ  ñ 	ŒØ˜WÑ$ˆÙ Ð,ˆÙŒÙ˜$ÐˆØ×Ñ °HÀ1ÐÒEr   c                 óŠ  • U R                  SS5      nSu  p#SnU" X#U5      nU R                  U[        R                  5        U R	                  UR
                  U5        U R                  UR                  [        R                  " S5      [        R                  " S5      45        U R                  [        R                  " XR:¬  5      5        U R                  [        R                  " XS:  5      5        X#-   S-  nX2-
  S-  nU R                  UR                  5       Xg-
  5        U R                  UR                  5       Xg-   5        g )	Nr   r’   )r!  r"  ©r]  r]  r  r~  r¾   rŒ  )r  rÉ   r   ÚndarrayrÊ   rÈ  ÚassertInr›   rH  rk  r+  rl  r,  )r¶   r  r«  r¬  r6   Úresrl  r/  s           r   r‡  Ú#TestRandomArrays.test_numpy_randintN  só   € Ø×(Ñ(¨°AÓ6ˆØ‰	ˆØˆÙ�C˜tÓ$ˆØ×Ñ˜c¤2§:¡:Ô.Ø×Ñ˜Ÿ™ DÔ)Ø�‰�c—i‘i¤"§(¢(¨7Ó"3´R·X²X¸gÓ5FÐ!GÔHØ�‰œŸš˜s™zÓ*Ô+Ø�‰œŸš˜s™zÓ*Ô+à‘
˜aÑˆØ‰z˜RÑˆØ×Ñ §¡£
¨D©JÔ7Ø×Ñ˜SŸX™X›Z¨©Õ4r   c                 ó¼  • U R                  SS5      nSnU" U5      nU R                  U[        R                  5        U R	                  UR
                  U5        U R	                  UR                  [        R                  " S5      5        U R                  [        R                  " US:¬  5      5        U R                  [        R                  " US:  5      5        U R                  [        R                  " US:*  5      5        U R                  [        R                  " US:¬  5      5        UR                  5       nU R                  US	5        U R                  US
5        g )Nr   r†   r1  Úfloat64rœ   r©   r#  r&  gÍÌÌÌÌÌÜ?gš™™™™™á?)r  rÉ   r   r2  rÊ   rÈ  r›   rH  rk  Úanyrl  r+  r,  )r¶   r  r6   r4  rl  s        r   Útest_numpy_random_randomÚ)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                 ó(   • U R                  SS5        g )NÚbetarÊ  ©r.  rç   s    r   rà  Ú TestRandomArrays.test_numpy_betar  s   € Ø×#Ñ# F¨JÕ7r   c                 ó(   • U R                  SS5        g )Nr*  )rŒ  r>  ©r  rç   s    r   r0  Ú$TestRandomArrays.test_numpy_binomialu  s   € Ø×Ñ˜z¨9Õ5r   c                 ó(   • U R                  SS5        g )Nr7  rø  r=  rç   s    r   r8  Ú%TestRandomArrays.test_numpy_chisquarex  s   € Ø×#Ñ# K°Õ8r   c                 ó(   • U R                  SS5        g )Nrï  rø  r@  rç   s    r   rý  Ú'TestRandomArrays.test_numpy_exponential{  s   € Ø×Ñ˜}¨fÕ5r   c                 ó(   • U R                  SS5        g )Nr=  r<  r=  rç   s    r   r>  ÚTestRandomArrays.test_numpy_f~  s   € Ø×#Ñ# C¨Õ4r   c                 ó*   • U R                  SSS5        g )NÚgamma)r¨   r©   r   ©r%  rç   s    r   rÕ  Ú!TestRandomArrays.test_numpy_gamma�  s   € Ø×$Ñ$ W¨j¸"Õ=r   c                 ó(   • U R                  SS5        g )NÚ	geometricr÷  r@  rç   s    r   rJ  Ú%TestRandomArrays.test_numpy_geometric„  ó   € Ø×Ñ˜{¨FÕ3r   c                 ó(   • U R                  SS5        g )NrQ  ©r•  r>  r@  rç   s    r   rR  Ú"TestRandomArrays.test_numpy_gumbel‡  ó   € Ø×Ñ˜x¨Õ4r   c                 ó(   • U R                  SS5        g )Nrj  r\  r@  rç   s    r   rn  Ú*TestRandomArrays.test_numpy_hypergeometricŠ  s   € Ø×ÑÐ/Ð1AÕBr   c                 ó(   • U R                  SS5        g )Nrt  rQ  r@  rç   s    r   rv  Ú#TestRandomArrays.test_numpy_laplace�  ó   € Ø×Ñ˜y¨*Õ5r   c                 ó(   • U R                  SS5        g )Nrz  rQ  r@  rç   s    r   r{  Ú$TestRandomArrays.test_numpy_logistic�  s   € Ø×Ñ˜z¨:Õ6r   c                 ó(   • U R                  SS5        g )Nr[  )r•  r¨   r@  rç   s    r   rc  Ú%TestRandomArrays.test_numpy_lognormal“  s   € Ø×Ñ˜{¨JÕ7r   c                 ó(   • U R                  SS5        g )Nr�  r   r@  rç   s    r   r‚  Ú%TestRandomArrays.test_numpy_logseries–  rO  r   c                 ó(   • U R                  SS5        g )NrA  )r>  r¨   r@  rç   s    r   rP  Ú"TestRandomArrays.test_numpy_normal™  rS  r   c                 ó(   • U R                  SS5        g )Nr  r@  r@  rç   s    r   r  Ú"TestRandomArrays.test_numpy_paretoœ  s   € Ø×Ñ˜x¨Õ0r   c                 ó(   • U R                  SS5        g )Nr‡  r   r@  rç   s    r   rˆ  Ú#TestRandomArrays.test_numpy_poissonŸ  s   € Ø×Ñ˜y¨&Õ1r   c                 ó(   • U R                  SS5        g )Nr›  r   r@  rç   s    r   rœ  Ú!TestRandomArrays.test_numpy_power¢  s   € Ø×Ñ˜w¨Õ/r   c                 óœ   • [        SS9" [        5      nU" SSS5      u  p#U R                  UR                  S5        U R	                  X#5        g ©NTrc   é*   r¾   r’   r  )r   r\   rÊ   rÈ  rú   ©r¶   r  rZ   r[   s       r   Útest_numpy_randÚ TestRandomArrays.test_numpy_rand¥  sC   € Ü˜TÒ"Ô#3Ó4ˆÙ˜b ! Q›‰ˆØ×Ñ˜Ÿ™ FÔ+Ø×Ñ Õ.r   c                 óœ   • [        SS9" [        5      nU" SSS5      u  p#U R                  UR                  S5        U R	                  X#5        g rh  )r   r`   rÊ   rÈ  rú   rj  s       r   rX  Ú!TestRandomArrays.test_numpy_randn«  sC   € Ü˜TÒ"Ô#4Ó5ˆÙ˜b ! Q›‰ˆØ×Ñ˜Ÿ™ FÔ+Ø×Ñ Õ.r   c                 ó(   • U R                  SS5        g )Nr¡  r   r@  rç   s    r   r¤  Ú$TestRandomArrays.test_numpy_rayleigh±  s   € Ø×Ñ˜z¨6Õ2r   c                 ó(   • U R                  SS5        g )Nr¨  r   r@  rç   s    r   rª  Ú+TestRandomArrays.test_numpy_standard_cauchy´  ó   € Ø×ÑÐ0°"Õ5r   c                 ó(   • U R                  SS5        g )NÚstandard_exponentialr   r@  rç   s    r   r  Ú0TestRandomArrays.test_numpy_standard_exponential·  s   € Ø×ÑÐ5°rÕ:r   c                 ó*   • U R                  SSS5        g )NÚstandard_gammar†  r÷  rJ  rç   s    r   Útest_numpy_standard_gammaÚ*TestRandomArrays.test_numpy_standard_gammaº  s   € Ø×$Ñ$Ð%5°v¸vÕFr   c                 ó(   • U R                  SS5        g )Nr^   r   r@  rç   s    r   rU  Ú+TestRandomArrays.test_numpy_standard_normal½  rs  r   c                 ó(   • U R                  SS5        g )Nr¹  )r•  r¸  r·  r@  rç   s    r   rÇ  Ú&TestRandomArrays.test_numpy_triangularÀ  s   € Ø×Ñ˜|¨_Õ=r   c                 ó(   • U R                  SS5        g )Nrû   ©r#  r$  r@  rç   s    r   r¨  Ú#TestRandomArrays.test_numpy_uniformÃ  rX  r   c                 ó(   • U R                  SS5        g )Nr¶  r€  r@  rç   s    r   r·  Ú TestRandomArrays.test_numpy_waldÆ  s   € Ø×Ñ˜v zÕ2r   c                 ó(   • U R                  SS5        g )NÚvonmisesrÊ  r=  rç   s    r   rë  Ú$TestRandomArrays.test_numpy_vonmisesÉ  s   € Ø×#Ñ# J°
Õ;r   c                 ó(   • U R                  SS5        g )Nr¿  r4  r@  rç   s    r   rÁ  Ú TestRandomArrays.test_numpy_zipfÌ  s   € Ø×Ñ˜v vÕ.r   r   N))r¿   rÀ   rÁ   rÂ   rô   r  r  r%  r.  r‡  r9  rà  r0  r8  rý  r>  rÕ  rJ  rR  rn  rv  r{  rc  r‚  rP  r  rˆ  rœ  rk  rX  r¤  rª  r  ry  rU  rÇ  r¨  r·  rë  rÁ  rÃ   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                   ót   • \ rS rSrSrSS jrS rS rS rS r	S r
SS	 jrS
 rS rS rS rS rS rS rSrg)ÚTestRandomChoiceiÐ  z
Test np.random.choice.
c                 ó>  • [        U5      n[        U5      nU R                  XT5        U R                  [        U5      [	        U5      5        U(       a&  U R                  [        U5      [        U5      U5        gU R                  [        U5      [        U5      U5        g)z4
Check basic expectations about a batch of samples.
N)râ   r,  rË  rÌ  rŠ   rF  r�   rÊ   )r¶   Úpopr4  r:   ÚspopÚsress         r   Ú_check_resultsÚTestRandomChoice._check_resultsÕ  ss   € ô �3‹xˆÜ�3‹xˆà×Ñ˜TÔ(à×ÑœF 3›K¬¨c«Ô3Þà�O‰OœC ›I¤s¨3£x°Õ5ð ×ÑœS ›Y¬¨C«°#Õ6r   c                 ó  • U R                  [        U5      [        U5      S-  5        [        U5      [        U5      -  n[        R                  " U5      nU H/  nXE   nU R                  XcS-  5        U R	                  XcS-  5        M1     g)ú%
Check distribution of some samples.
r   r>  r¨   N)r+  r�   ÚcollectionsÚCounterr,  )r¶   rŒ  ÚsamplesÚexpected_frequencyr-   Úvaluer?   s          r   r4  ÚTestRandomChoice._check_distæ  sz   € ð
 	×Ñ¤ G£¬c°#«h¸©nÔ=ä  ›\¬C°«HÑ4ÐÜ×Ò Ó(ˆÛˆEØ‘ˆAØ×#Ñ# A¸CÑ'?Ô@Ø× Ñ  ¸Ñ$<Ö=ò r   c                 óŠ   • / n[        U5      U:  a.  U[        U" 5       R                  5      -  n[        U5      U:  a  M.  USU $ )zS
Accumulate array results produced by *func* until they reach
*nresults* elements.
N)r�   rŠ   r   )r¶   rb   Únresultsr4  s       r   Ú_accumulate_array_resultsÚ*TestRandomChoice._accumulate_array_resultsô  sD   € ð
 ˆÜ�#‹h˜Ó!Ø”4™›Ÿ™Ó$Ñ$ˆCô �#‹h˜Õ!à�9�Hˆ~Ðr   c                 ó  • [        SS9" [        5      n[        U5      n[        U5       Vs/ s H
  oS" U5      PM     nnU R	                  X&5        [        US-  5       Vs/ s H
  oS" U5      PM     nnU R                  X'5        gs  snf s  snf )z
Check choice(a) against pop.
Trc   r   N)r   r2   r�   rÌ   r�  r4  )r¶   r   rŒ  r  r?   rÎ   r4  Údists           r   Ú_check_choice_1Ú TestRandomChoice._check_choice_1þ  s|   € ô ˜TÒ"¤=Ó1ˆÜ�‹HˆÜ!& q¤Ó*¢˜Aˆu�QŽx¡ˆÐ*Ø×Ñ˜CÔ%Ü"'¨¨C©¤.Ó1¢.˜Q��a–¡.ˆÐ1Ø×Ñ˜Õ#ùò +ùâ1s   ¬BÁ B
c                 óR   • Sn[        [        U5      5      nU R                  X5        g)z
Test choice(int)
rC  N)rŠ   rÌ   rŸ  ©r¶   r?   rŒ  s      r   Útest_choice_scalar_1Ú%TestRandomChoice.test_choice_scalar_1	  s$   € ð ˆÜ”5˜“8‹nˆØ×Ñ˜QÕ$r   c                 ó^   • [         R                  " S5      S-  S-   nU R                  X5        g)z
Test choice(array)
rC  r¾   r   N)r   rÅ  rŸ  ©r¶   rŒ  s     r   Útest_choice_array_1Ú$TestRandomChoice.test_choice_array_1  ó)   € ô �iŠi˜‹m˜aÑ #Ñ%ˆØ×Ñ˜SÕ&r   c                 ó¼   • [        U5      n[        U" 5       R                  5      nU R                  X%U5        U R	                  XS-  5      nU R                  X&5        g)z@
Check array results produced by *func* and their distribution.
r   N)r�   rŠ   r   r�  r›  r4  )r¶   rb   rŒ  r:   r?   r4  rž  s          r   Ú_check_array_resultsÚ%TestRandomChoice._check_array_results  sO   € ô �‹HˆÜ‘4“6—;‘;ÓˆØ×Ñ˜C gÔ.Ø×-Ñ-¨d¸±GÓ<ˆØ×Ñ˜Õ#r   c                 ó,  ^^^• [        SS9" [        5      m[        U5      nUS-
  SUS-
  S-  4US-  /nU HZ  mT" TT5      n[        T[        5      (       a  TOT4nU R                  UR                  U5        U R                  UUU4S jU5        M\     g)z$
Check choice(a, size) against pop.
Trc   rÝ   r’   r†   c                  ó   >• T" T T5      $ r   r   ©r   r  r6   s   €€€r   rÄ  Ú2TestRandomChoice._check_choice_2.<locals>.<lambda>2  s   ø€ ©e°A°t¬nr   N)r   r8   r�   Ú
isinstancerá   rÊ   rÈ  r«  )	r¶   r   rŒ  r?   Úsizesr4  Úexpected_shaper  r6   s	    `     @@r   Ú_check_choice_2Ú 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   • Sn[         R                  " U5      nU R                  X5        g)z
Test choice(int, size)
rC  N©r   rÅ  r´  r¢  s      r   Útest_choice_scalar_2Ú%TestRandomChoice.test_choice_scalar_24  ó$   € ð ˆÜ�iŠi˜‹lˆØ×Ñ˜QÕ$r   c                 ó^   • [         R                  " S5      S-  S-   nU R                  X5        g)z
Test choice(array, size)
rC  r¾   r   Nr·  r¦  s     r   Útest_choice_array_2Ú$TestRandomChoice.test_choice_array_2<  r©  r   c                 ó6  ^^	^
• [        SS9" [        5      m	[        U5      nUS-
  SUS-
  S-  4/nSS/nU HL  m
S HC  nT	" TT
U5      n[        T
[        5      (       a  T
OT
4nU R                  UR                  U5        ME     MN     U H  m
U R                  UU	U
4S jU5        M     U H  m
U R                  UU	U
4S	 jUS5        M     US-   SUS-  S-   44 H+  m
U R                  [        5         T	" TT
S5        S
S
S
5        M-     g
! , (       d  f       M?  = f)z-
Check choice(a, size, replace) against pop.
Trc   rÝ   r’   r†   F)TFc                  ó   >• T" T TS5      $ )NTr   r¯  s   €€€r   rÄ  Ú2TestRandomChoice._check_choice_3.<locals>.<lambda>W  s   ø€ ©e°A°t¸TÔ.Br   c                  ó   >• T" T TS5      $ )NFr   r¯  s   €€€r   rÄ  rÀ  Z  s   ø€ ©e°A°t¸UÔ.Cr   N)
r   r;   r�   r±  rá   rÊ   rÈ  r«  r  rp  )r¶   r   rŒ  r?   r²  Úreplacesr:   r4  r³  r  r6   s    `       @@r   Ú_check_choice_3Ú 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   Ã1D	Ä	
D	c                 óV   • Sn[         R                  " U5      nU R                  X5        g)z!
Test choice(int, size, replace)
rC  N©r   rÅ  rÃ  r¢  s      r   Útest_choice_scalar_3Ú%TestRandomChoice.test_choice_scalar_3a  rº  r   c                 ó^   • [         R                  " S5      S-  S-   nU R                  X5        g)z#
Test choice(array, size, replace)
rC  r¾   r   NrÆ  r¦  s     r   Útest_choice_array_3Ú$TestRandomChoice.test_choice_array_3i  r©  r   c                 óÈ  • [        SS9S 5       n[        R                  R                  SSS9R	                  [        R
                  5      nUR                  5       nUR                  SU5      nUR                  5       nU" SU5      n[        R                  R                  XF5        [        R                  R                  X#5        [        R                  R                  X%5        g )NTrc   c                 óü   • [         R                  R                  S5        [         R                  " U S4[         R                  5      n[        U 5       H&  n[         R                  R                  USS5      X#'   M(     U$ )Ni9  r¾   F)r   r   rW   r  r  rÌ   r1   )Ún_to_returnÚchoice_arrayrê  rÎ   s       r   Únumba_randsÚ>TestRandomChoice.test_choice_follows_seed.<locals>.numba_randss  sY   € ä�I‰I�N‰N˜4Ô Ü—(’(˜K¨Ð+¬R¯X©XÓ6ˆCÜ˜;Ö'�ÜŸ™×)Ñ)¨,¸¸5ÓA�“ñ (àˆJr   i,  r!  r5   rg  )
r   r   r   r   r  r  rÇ  Úpy_funcÚtestingÚassert_allclose)r¶   rÐ  rÏ  Útmp_nprZ   Útmp_nbr[   s          r   Útest_choice_follows_seedÚ)TestRandomChoice.test_choice_follows_seedp  sµ   € ô 
�dÑ	ñ	ó 
ð	ô —y‘y×(Ñ(¨°4Ð(Ð8×?Ñ?ÄÇÁÓIˆØ×"Ñ"Ó$ˆØ×&Ñ& q¨&Ó1ˆØ×"Ñ"Ó$ˆÙ˜!˜VÓ$ˆÜ
�
‰
×"Ñ" 8Ô1ä
�
‰
×"Ñ" <Ô8Ü
�
‰
×"Ñ" <Õ8r   r   N)T)r¿   rÀ   rÁ   rÂ   rô   r�  r4  r›  rŸ  r£  r§  r«  r´  r¸  r¼  rÃ  rÇ  rÊ  r×  rÃ   r   r   r   rŠ  rŠ  Ð  sN   † ñô7ò">òò	$ò%ò'ô$òCò$%ò'ò&ò<%ò'õ9r   rŠ  c                   ó�   • \ rS rSrSr\R                  " / SQ\R                  S9r\\R                  5       -  rS r
S rS rS rS	rg
)ÚTestRandomMultinomiali†  z
Test np.random.multinomial.
)r†   r†   r†   r¾   r’   r†   rš   c                 ó6  • U R                  U[        R                  5        U R                  UR                  [        U5      45        U R                  UR                  [        R                  " S5      [        R                  " S5      45        U R                  UR                  5       U5        [        X#5       H^  u  pEU R                  US5        U R                  XQ5        [        U5      U-  nU R                  XdS-  5        U R                  XdS-  5        M`     g)r’  r  r~  r   r>  r¨   N)rÉ   r   r2  rÊ   rÈ  r�   r3  r›   ÚsumÚzipr+  r,  rä  )r¶   r?   r@   Úsampler  ÚnexpÚpexps          r   Ú_check_sampleÚ#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Ø×#Ñ# D¨!Ô,Ø× Ñ  Ô)Ü˜“; ‘?ˆDØ×#Ñ# D¨c©'Ô2Ø× Ñ  ¨3¡wÖ/ò *r   c                 ór  • [        SS9" [        5      nSU R                  p2U" X#5      nU R                  X#U5        [	        U5      nU" X#5      nU R                  X#U5        Sn[
        R                  " SSUS-  S/[
        R                  S9nX3R                  5       -  nU" X#5      nU R                  X#U5        g	)
z
Test multinomial(n, pvals)
Trc   r!  i@B r†   r   r   rš   N)	r   rA   r@   rá  rŠ   r   rž   r7  rÜ  )r¶   r  r?   r@   r4  s        r   Útest_multinomial_2Ú(TestRandomMultinomial.test_multinomial_2ž  s§   € ô ˜TÒ"Ô#5Ó6ˆØ˜Ÿ™ˆ5Ù�A‹oˆØ×Ñ˜1 SÔ)ä�U“ˆÙ�A‹oˆØ×Ñ˜1 SÔ)àˆÜ—’˜!˜Q  S¡¨!Ð,´B·J±JÑ?ˆØ—‘“ÑˆÙ�A‹oˆØ×Ñ˜1 SÕ)r   c                 óÎ   • [        SS9" [        5      nSU R                  p2SnU" X#U5      nU R                  UR                  S   U5        U H  nU R                  X#U5        M     g)z'
Test multinomial(n, pvals, size: int)
Trc   r!  rÝ   r   N)r   rD   r@   rÊ   rÈ  rá  ©r¶   r  r?   r@   Úkr4  rÞ  s          r   Útest_multinomial_3_intÚ,TestRandomMultinomial.test_multinomial_3_int±  sb   € ô ˜TÒ"Ô#5Ó6ˆØ˜Ÿ™ˆ5ØˆÙ�A˜aÓ ˆØ×Ñ˜Ÿ™ 1™ qÔ)ÛˆFØ×Ñ˜q¨Ö0ò r   c                 ó
  • [        SS9" [        5      nSU R                  p2SnU" X#U5      nU R                  UR                  SS U5        UR                  SUR                  S   45       H  nU R                  X#U5        M     g)z)
Test multinomial(n, pvals, size: tuple)
Trc   r!  )r’   r�  Nr‡   )r   rD   r@   rÊ   rÈ  rÆ  rá  rç  s          r   Útest_multinomial_3_tupleÚ.TestRandomMultinomial.test_multinomial_3_tuple½  sz   € ô ˜TÒ"Ô#5Ó6ˆØ˜Ÿ™ˆ5ØˆÙ�A˜aÓ ˆØ×Ñ˜Ÿ™ 3 B˜¨Ô+Ø—k‘k 2 s§y¡y°¡}Ð"5Ö6ˆFØ×Ñ˜q¨Ö0ò 7r   r   N)r¿   rÀ   rÁ   rÂ   rô   r   rž   r7  r@   rÜ  rá  rä  ré  rì  rÃ   r   r   r   rÚ  rÚ  †  sB   † ñð �HŠHÒ'¨r¯z©zÑ:€EØ	ˆU�Y‰Y‹[Ñ€Eò0ò *ò&
1õ
1r   rÚ  c                   óf   • \ rS rSr\R
                  " / SQ\R                  S9rS rS r	S r
S rSrg	)
ÚTestRandomDirichletiÊ  )r†   r†   r†   r¾   rš   c                 óð  • U R                  U[        R                  5        U R                  UR                  [        R
                  5        Uc&  U R                  UR                  [        U5      5        Oc[        U5      [        L a(  U R                  UR                  U[        U5      45        O)U R                  UR                  U[        U5      4-   5         [        R                  " U5       H'  nU R                  US5        U R                  US5        M)     Uc   U R                  UR                  5       SSS9  g[        R                  " UR                  SS95       H  nU R                  USSS9  M     g)zCheck output structureNr   r†   rg  )Úplacesr‡   )Úaxis)rÉ   r   r2  rÊ   r›   r7  r6   r�   Útyper”   rÈ  Únditerr+  r,  ÚassertAlmostEqualrÜ  )r¶   rI   r6   rÞ  rÀ  Útotalss         r   rá  Ú!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                 óD  • [        SS9" [        5      nU R                  [        U R                  5      [        R
                  " / SQ[        R                  S9[        R
                  " / SQ[        R                  S94nU H  nU" U5      nU R                  USU5        M      g)ú"
Test dirichlet(alpha, size=None)
Trc   ©r†   r†   r"  r†   rš   ©r†   r†   r•  r†   N)r   rL   rI   rá   r   rž   r7  rá  )r¶   r  ÚalphasrI   r4  s        r   Útest_dirichlet_defaultÚ*TestRandomDirichlet.test_dirichlet_defaultã  sz   € ô ˜TÒ"Ô#:Ó;ˆà�J‰JÜ�$—*‘*ÓÜ�HŠHÒ%¬R¯Z©ZÑ8Ü�HŠH’^¬2¯:©:Ñ6ð	
ˆó ˆEÙ˜“,ˆCØ×Ñ˜u d¨CÖ0ò r   c                 ór  • [        SS9" [        5      nSnU R                  [        U R                  5      [        R
                  " / SQ[        R                  S9[        R
                  " / SQ[        R                  S94n[        R                  " X25       H  u  pEU" XE5      nU R                  XEU5        M!     g)rù  Trc   )N©rÝ   ©rÝ   rÝ   rú  rš   rû  N)
r   rJ   rI   rá   r   rž   r7  Ú	itertoolsÚproductrá  )r¶   r  r²  rü  rI   r6   r4  s          r   Útest_dirichletÚ"TestRandomDirichlet.test_dirichletò  sŠ   € ô ˜TÒ"¤?Ó3ˆØ'ˆà�J‰JÜ�$—*‘*ÓÜ�HŠHÒ%¬R¯Z©ZÑ8Ü�HŠH’^¬2¯:©:Ñ6ð	
ˆô %×,Ò,¨VÖ;‰KˆEÙ˜Ó$ˆCØ×Ñ˜u¨CÖ0ò <r   c           
      óB  • [        SS9" [        5      n[        S5      nU R                  [        5       nU" US5        S S S 5        U R                  S[        WR                  5      5        U R                  nSSSSS	S
[        R                  " S5      [        R                  " S5      44nU HN  nU R                  [        5       nU" X%5        S S S 5        U R                  S[        UR                  5      5        MP     g ! , (       d  f       NÇ= f! , (       d  f       NI= f)NTrc   )r   r†   r†   r†   zdirichlet: alpha must be > 0.0ù              @r•  ©r•  r†   ©r  r†   ©r  r  r’   ro  zGnp.random.dirichlet(): size should be int or tuple of ints or None, got)r   rJ   rá   r  rp  r3  ÚstrÚ	exceptionrI   r   Úint8r~  r   )r¶   r  rI   Úraisesr²  r6   s         r   Útest_dirichlet_exceptionsÚ-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Ô"÷ 0à�M‰Mð-ä�F×$Ñ$Ó%öò ÷ +Õ*ú÷ 0Õ/ús   ´
C?Ã	DÃ?
DÄ
D	r   N)r¿   rÀ   rÁ   rÂ   r   rž   r7  rI   rá  rý  r  r  rÃ   r   r   r   rï  rï  Ê  s*   † Ø�HŠH’\¨¯©Ñ4€Eò<ò,1ò1õ"r   rï  c                   ó,   • \ rS rSrS rS rS rS rSrg)ÚTestRandomNoncentralChiSquarei  c                 óÈ  • Ubš  U R                  U[        R                  5        U R                  UR                  [        R
                  5        [        U[        5      (       a  U R                  UR                  U45        O3U R                  UR                  U5        OU R                  U[        5        [        R                  " U5       H  nU R                  US5        M     g ©Nr   )rÉ   r   r2  rÊ   r›   r7  r±  r”   rÈ  rä  rô  r+  )r¶   r6   rÞ  rÀ  s       r   rá  Ú+TestRandomNoncentralChiSquare._check_sample  s¢   € ð ÑØ×!Ñ! &¬"¯*©*Ô5Ø×Ñ˜VŸ\™\¬2¯:©:Ô6ä˜$¤×$Ñ$Ø× Ñ  §¡°¨wÕ7à× Ñ  §¡¨tÕ4à×"Ñ" 6¬5Ô1ô —9’9˜VÖ$ˆCØ×#Ñ# C¨Ö+ò %r   c                 óð   • [        SS9" [        5      nSnU H[  u  p4U" X45      nU R                  SU5        U" U[        R                  5      nU R                  [        R                  " U5      5        M]     g)z0
Test noncentral_chisquare(df, nonc, size=None)
Trc   ©)r>  r†   rŠ  )rg  r†   )rf  r†   )r†   r"  N)r   rU   rá  r   ÚnanrH  Úisnan)r¶   r  ÚinputsrQ   rR   r4  s         r   Ú!test_noncentral_chisquare_defaultÚ?TestRandomNoncentralChiSquare.test_noncentral_chisquare_default)  sf   € ô ˜TÒ"Ô#EÓFˆð
ˆó ‰HˆBÙ˜“/ˆCØ×Ñ˜t SÔ)Ù˜œBŸF™FÓ#ˆCØ�O‰OœBŸHšH S›MÖ*ò	 r   c                 ó@  • [        SS9" [        5      nSnSn[        R                  " X25       Hm  u  u  pEnU" XEU5      nU R	                  Xg5        U" U[
        R                  U5      nU R                  [
        R                  " U5      R                  5       5        Mo     g)z+
Test noncentral_chisquare(df, nonc, size)
Trc   )NrÝ   r   r  r  N)
r   rS   r  r  rá  r   r  rH  r  rk  )r¶   r  r²  r  rQ   rR   r6   r4  s           r   Útest_noncentral_chisquareÚ7TestRandomNoncentralChiSquare.test_noncentral_chisquare<  sˆ   € ô ˜TÒ"Ô#=Ó>ˆØ+ˆð
ˆô !*× 1Ò 1°&Ö @Ñ‰JˆR˜Ù˜ $Ó'ˆCØ×Ñ˜tÔ)Ù˜œBŸF™F DÓ)ˆCØ�O‰OœBŸHšH S›M×-Ñ-Ó/Ö0ò	 !Ar   c           
      óê  • [        SS9" [        5      nSu  p#U R                  [        5       nU" X#S5        S S S 5        U R	                  S[        WR                  5      5        Su  p#U R                  [        5       nU" X#S5        S S S 5        U R	                  S[        UR                  5      5        Su  p#SS	S
SSS[        R                  " S5      [        R                  " S5      44nU HO  nU R                  [        5       nU" X#U5        S S S 5        U R	                  S[        UR                  5      5        MQ     g ! , (       d  f       GN= f! , (       d  f       NÒ= f! , (       d  f       N[= f)NTrc   )r   r†   r†   zdf <= 0)r†   r‡   znonc < 0)r†   r†   r  r•  r  r	  r
  r’   ro  zRnp.random.noncentral_chisquare(): size should be int or tuple of ints or None, got)r   rS   r  rp  r3  r  r  r   r  r~  r   )r¶   r  rQ   rR   r  r²  r6   s          r   Ú$test_noncentral_chisquare_exceptionsÚBTestRandomNoncentralChiSquare.test_noncentral_chisquare_exceptionsP  s$  € Ü˜TÒ"Ô#=Ó>ˆØ‰ˆØ×ÑœzÔ*¨fÙ�"˜AÔ÷ +à�‰�i¤ V×%5Ñ%5Ó!6Ô7à‰ˆØ×ÑœzÔ*¨fÙ�"˜AÔ÷ +à�‰�j¤# f×&6Ñ&6Ó"7Ô8à‰ˆØ�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!Å$
E2	r   N)	r¿   rÀ   rÁ   rÂ   rá  r  r  r!  rÃ   r   r   r   r  r    s   † ò,ò$+ò&1õ(r   r  T)rd   Únogilc                 ó¤   • U S:w  a  [         R                  " U 5        [        UR                  5       H  n[         R                  " S5      X'   M     g )Nr   rÄ  )r   rW   rÌ   r6   r  )rW   rê  rÎ   s      r   Úpy_extract_randomnessr%  g  s9   € àˆqƒyÜ�Š�DÔÜ�3—8‘8Ž_ˆÜ×#Ò# BÓ'ˆ‹ò r   rD  c                 óÔ   • U S:w  a  [         R                  R                  U 5        Sn[        UR                  5       H(  n[         R                  R                  [        5      X'   M*     g r  )r   r   rW   rÌ   r6   r   Ú_randint_limit)rW   rê  r  rÎ   s       r   Únp_extract_randomnessr(  p  sF   € àˆqƒyÜ
�	‰	�‰�tÔØ	€AÜ�3—8‘8Ž_ˆÜ—‘×"Ñ"¤>Ó2ˆ‹ò r   c                   ó0   • \ rS rSrSrS rS rS rS rSr	g)	ÚConcurrencyBaseTestiz  rf  c                 óJ   • SU R                  S5      4n[        U6   [        U6   g )Nri  r†   )Ú_get_outputr%  r(  )r¶   r1  s     r   ÚsetUpÚConcurrencyBaseTest.setUp‚  s'   € à�D×$Ñ$ QÓ'Ð(ˆÜ˜tÑ$Ü˜tÒ$r   c                 óH   • [         R                  " U[         R                  S9$ )Nrš   )r   Úzerosr™   )r¶   r6   s     r   r,  ÚConcurrencyBaseTest._get_outputˆ  s   € Ü�xŠx˜¤B§I¡IÑ.Ð.r   c                 óî   • SnS[         R                  " S5      -  nSn[         R                  R                  UR	                  5       X$S9  [         R                  R                  UR                  5       X4S9  g)z)
Check statistical properties of output.
r}  rD  r  gš™™™™™©?)ÚrtolN)r   r.  rÓ  rÔ  rl  Ústd)r¶   rê  Úexpected_avgÚexpected_stdr3  s        r   Úcheck_outputÚ ConcurrencyBaseTest.check_output‹  sZ   € ð
 ˆØ¤2§7¢7¨2£;Ñ.ˆØˆÜ
�
‰
×"Ñ" 3§8¡8£:¨|Ð"ÑGÜ
�
‰
×"Ñ" 3§7¡7£9¨lÐ"ÒFr   c                 óØ  • U H  nU R                  U5        M     U(       a  SnO[        U5      nU Vs1 s H  n[        US S 5      iM     nnU Vs1 s H  n[        USS  5      iM     nnU Vs1 s H  o3R                  5       iM     nnU R	                  [        U5      XE5        U R	                  [        U5      XF5        U R	                  [        U5      XG5        g s  snf s  snf s  snf )Nr†   rg  rn  )r7  r�   rá   rÜ  rÊ   )r¶   r2  Úsame_expectedrê  Úexpected_distinctÚheadsÚtailsÚsumss           r   Úcheck_several_outputsÚ)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Õ<ùò 4ùÚ4ùÚ-s   ´CÁC"Á0C'r   N)
r¿   rÀ   rÁ   rÂ   Ú_extract_iterationsr-  r,  r7  r?  rÃ   r   r   r   r*  r*  z  s   † ð !Ðò%ò/ò	Gõ=r   r*  c                   óB   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)ÚTestThreadsi¬  z+
Check the PRNG behaves well with threads.
c                 óp  ^^^• [        US-   5       Vs/ s H  nU R                  U R                  5      PM      snmUUU4S jn[        U5       Vs/ s H  n[        R                  " XT4S9PM     nnU H  nUR                  5         M     U" U5        U H  nUR                  5         M     T$ s  snf s  snf )zW
Run *nthreads* threads extracting randomness with the given *seed*
(no seeding if 0).
r†   c                 ó   >• T" TTU    S9  g )N©rW   rê  r   )rÎ   Úextract_randomnessr2  rW   s    €€€r   ÚtargetÚ.TestThreads.extract_in_threads.<locals>.target¹  s   ø€ á D¨g°a©jÓ9r   )rH  r1  )rÌ   r,  rA  Ú	threadingÚThreadÚstartrp   )	r¶   ÚnthreadsrG  rW   rÎ   rH  ÚthreadsÚthr2  s	     ``    @r   Úextract_in_threadsÚ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.ÁB3c                 óF   • U R                  SUSS9nU R                  USS9  g)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.
r”  ri  r€  T©r:  N©rP  r?  ©r¶   rG  r2  s      r   Úcheck_thread_safetyÚTestThreads.check_thread_safetyÉ  s1   € ð ×)Ñ)¨"Ð.@ÀrÐ)ÐJˆð 	×"Ñ" 7¸$Ð"Ò?r   c                 óF   • U R                  SUSS9nU R                  USS9  g)zh
The PRNG in new threads should be implicitly initialized with
system entropy, if seed() wasn't called.
r�  r   r€  FrS  NrT  rU  s      r   Úcheck_implicit_initializationÚ)TestThreads.check_implicit_initialization×  s1   € ð
 ×)Ñ)¨!Ð-?ÀaÐ)ÐHˆð 	×"Ñ" 7¸%Ð"Ò@r   c                 ó.   • U R                  [        5        g r   )rV  r%  rç   s    r   Útest_py_thread_safetyÚ!TestThreads.test_py_thread_safetyá  ó   € Ø× Ñ Ô!6Õ7r   c                 ó.   • U R                  [        5        g r   )rV  r(  rç   s    r   Útest_np_thread_safetyÚ!TestThreads.test_np_thread_safetyä  r^  r   c                 ó.   • U R                  [        5        g r   ©rY  r%  rç   s    r   Útest_py_implicit_initializationÚ+TestThreads.test_py_implicit_initializationç  ó   € Ø×*Ñ*Ô+@ÕAr   c                 ó.   • U R                  [        5        g r   ©rY  r(  rç   s    r   Útest_np_implicit_initializationÚ+TestThreads.test_np_implicit_initializationê  rf  r   r   N)r¿   rÀ   rÁ   rÂ   rô   rP  rV  rY  r\  r`  rd  ri  rÃ   r   r   r   rC  rC  ¬  s.   † ñòò0@òAò8ò8òBõBr   rC  Úntz(Windows is not affected by fork() issuesc                   ó4   • \ rS rSrSrSrS rS rS rS r	Sr
g	)
ÚTestProcessesiî  z1
Check the PRNG behaves well in child processes.
Fc                 óp  ^ ^^
^• [         R                  " 5       m
/ nUU 4S jmU
U4S jn[        [         S5      (       a  [         R                  " S5      nO[         n[	        U5       Vs/ s H  nUR                  US9PM     nnU H  nUR                  5         M     [	        U5       H!  nUR                  T
R                  SS95        M#     U H  nUR                  5         M     UR                  T" 5       5        U H/  n	[        U	[        5      (       d  M  T R                  SU	< 35        M1     U$ s  snf )	zH
Run *nprocs* processes extracting randomness
without explicit seeding.
c                  óL   >• TR                  TR                  5      n T" SU S9  U $ )Nr   rF  )r,  rA  )rê  rG  r¶   s    €€r   Útarget_innerÚ8TestProcesses.extract_in_processes.<locals>.target_inner  s(   ø€ Ø×"Ñ" 4×#;Ñ#;Ó<ˆCÙ A¨3Ò/ØˆJr   c                  ó€   >•  T" 5       n TR                  U 5        g ! [         a  nTR                  U5        e S nAff = fr   )ÚputÚ	Exception)rê  ÚeÚqrp  s     €€r   rH  Ú2TestProcesses.extract_in_processes.<locals>.target  s:   ø€ ðÙ"“n�Ø—‘�c•
øÜó ð —‘�a”Øûð	ús   ƒ œ
=¦8¸=Úget_contextÚfork)rH  rg  )ÚtimeoutzException in child: )ÚmultiprocessingÚQueueÚhasattrrx  rÌ   ÚProcessrL  rà   Úgetrp   r±  rt  Úfail)r¶   ÚnprocsrG  r2  rH  ÚmpcrÎ   Úprocsr  r4  rv  rp  s   ` `       @@r   Úextract_in_processesÚ"TestProcesses.extract_in_processesù  s  û€ ô
 ×!Ò!Ó#ˆØˆö	ö
	ô ”? M×2Ñ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   Á)D3c                 óH   • U R                  SU5      nU R                  USS9  g)zz
The PRNG in new processes should be implicitly initialized
with system entropy, to avoid reproducing the same sequences.
r¾   FrS  N)r„  r?  rU  s      r   rY  Ú+TestProcesses.check_implicit_initialization)  s,   € ð
 ×+Ñ+¨AÐ/AÓBˆð 	×"Ñ" 7¸%Ð"Ò@r   c                 ó.   • U R                  [        5        g r   rc  rç   s    r   rd  Ú-TestProcesses.test_py_implicit_initialization3  rf  r   c                 ó.   • U R                  [        5        g r   rh  rç   s    r   ri  Ú-TestProcesses.test_np_implicit_initialization6  rf  r   r   N)r¿   rÀ   rÁ   rÂ   rô   Ú_numba_parallel_test_r„  rY  rd  ri  rÃ   r   r   r   rm  rm  î  s'   † ñð "Ðò.ò`AòBõBr   rm  c            	       ó  • \ rS rSr0 SSSSS._SSS	SS
._SSSS._SSSS._SSSS._SSSS._SSSSS._SSSSS._SSSS._SSSSS._SSSSSS._S SSSS._S!SSSS._S"SSSS#._S$S%SS._S&SS'SS(._S)SS%S*._0 S+SSSS,._S-SSSS._S.SSS._S/SSS0._S1SSS._S2SSSS3._S4S5S0_S6S5S0_S7S5S0_S8SSS._S9S5S0_S:S;S<0_S=S5S0_S>S5S0_S?SSS@._SAS5S0_SBSSS._ESSSCSSD.SSSS3.SSSSE.SSSSF.SSS.SSS.SG.ErSH rSI rSJrgK)LÚTestNumPyRandomAPIi:  rß  r©   r¨   r’   )r   r"   r6   r  r†   r“  )r?   r  r6   r3  )rQ   r6   znp.random.choicer¾   r7   znp.random.dirichletr½   rH   rü  )rV  r6   r;  )ÚdfnumÚdfdenr6   rÓ  )rÈ  rV  r6   rA  )r  r6   rM  rœ   )rU  rV  r6   r[  )ÚngoodÚnbadÚnsampler6   rq  ry  rb  )rl  Úsigmar6   r~  r>  znp.random.multinomial)r†   rC   r‹  )r?   r  znp.random.noncentral_chisquarerP   r‚   r  r…  )Úlamr6   rš  znp.random.randintr²  rƒ   r6   r  r  rŸ  r	  r„   rW   r�  r§  r   rÔ  )rÈ  r6   rS  r­  g      @)ÚleftÚmodeÚrightr6   )ÚmuÚkappar6   )rl  rV  r6   )rÀ  r§  rê  r´  r  r¾  c           
      ób  • U R                   R                  5        H‹  u  pSR                  UR                  5        VVs/ s H  u  p4U SU 3PM     snn5      n[        SU SU S35      n0 n[	        US[
        0U5        US   nU" 5         [        U5      R                  S5        M�     g s  snnf )	Nr
  rn   ú7
                def foo():
                    return ro   ú)
                r   Úfoor   )ÚAPI_CALL_TESTSÚitemsrp   r   Úexecr   r   Úcompile)	r¶   Úfnr1  rè  ÚvÚargstrÚtemplaterÂ  rb   s	            r   Útest_call_by_nameÚ$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           
      óR  • U R                   R                  5        GH  u  pSU;  a  M  SUS'   SR                  UR                  5        VVs/ s H  u  p4U SU 3PM     snn5      n[        SU SU S35      n0 n[	        US[
        0U5        US	   nU" 5       n	[        U5      R                  S5      n
U
" 5       n[        U[
        R                  5      (       a(  U R                  UR                  U	R                  5        Mç  U R                  X¹R                  5        GM     g s  snnf )
Nr6   r   r
  rn   rœ  ro   r�  r   rž  )rŸ  r   rp   r   r¡  r   r   r¢  r±  r2  rÊ   rÈ  rÉ   Ú	__class__)r¶   r£  r1  rè  r¤  r¥  r¦  rÂ  rb   Únp_valÚnb_funcÚnb_vals               r   Ú'test_call_distributions_with_empty_sizeÚ: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×.>Ñ.>×?ò5 4ùó
  Es   ÁD#r   N)r¿   rÀ   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“  r5  r-  r{  rÞ   r   rÚ  rÜ  rJ  r  Ú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Š  rÚ  rï  r  r%  r'  r(  r*  rC  ÚskipIfrg   rm  rŽ  r¿   Úmainr   r   r   Ú<module>r¹     sM  ðÛ Û Û Û Û 	Û Û Û 
Û Û Ý ã ã ã ß 'Ñ 'Ý ß ?Ñ ?Ý )ð €ò-ò-ò ò#ò òò"ò%òò*ò;ò+ò<ò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ÓØ‡M‚M…Oð r   