§
    1@Äj°f  ã                   ó:  — d Z ddlZddlZddlmZ ddlmZmZmZ ddl	m
Z
 ddlmZ ddlmZmZ ddlmZ dd	lmZ  e
d
¦  «        Zej        Z ej        d¦  «        Z ej        d¦  «        Zd„ Z ej        ¦   «         ZdZ ej        ee¦  «        Z ej        e ej         ee¦  «        eeeg¦  «        Z! ej"        e!¦  «        Z# edddg¦  «        Z$ e$dej        ¦  «        Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0 eej1        ¦  «        d„ ¦   «         Z2d„ Z3 eej        ¦  «        d „ ¦   «         Z4 eej5        ¦  «         eej6        ¦  «        d!„ ¦   «         ¦   «         Z7d"„ Z8d#„ Z9d$„ Z: eej;        ¦  «        d%„ ¦   «         Z<d&„ Z= eej>        ¦  «        d'„ ¦   «         Z? eej>        ¦  «        d(„ ¦   «         Z@d)„ ZA eej>        ¦  «        d*„ ¦   «         ZB eejC        ¦  «        d+„ ¦   «         ZD eejE        ¦  «        d,„ ¦   «         ZFd-„ ZG eejH        ¦  «        d.„ ¦   «         ZI eejH        ¦  «        d/„ ¦   «         ZJ eejK        ¦  «        d0„ ¦   «         ZLd1„ ZM eejN        ¦  «        d2„ ¦   «         ZOd3„ ZP eejQ        ¦  «        d4„ ¦   «         ZRd5„ ZS eejT        ¦  «        d6„ ¦   «         ZU eejV        ¦  «        d7„ ¦   «         ZWd8„ ZX eejY        ¦  «        d9„ ¦   «         ZZ eej[        ¦  «        d:„ ¦   «         Z\ eej]        ¦  «        d;„ ¦   «         Z^d<„ Z_dS )=z6
Implement the random and np.random module functions.
é    N)Úir)Ú	intrinsicÚoverloadÚregister_jitable)ÚRegistry©Ú	signature)ÚtypesÚcgutils)ÚNumbaTypeError)Ú
namedtupleÚ
randomimplé    é@   c                 ó6   — t          j        t          | ¦  «        S ©N)r   ÚConstantÚint32_t©Úxs    úIC:\Projects\Historical\venv\Lib\site-packages\numba/cpython/randomimpl.pyÚ	const_intr      s   € ÝŒ;•w Ñ"Ô"Ð"ó    ip  Ú	GuassArgsÚstateÚrandom_functionÚpyc                 ó  — |dv sJ ‚d|z  }t          j        t          d¦  «        }t          j        |j        ||¦  «        }|j                             d¦  «         |j                             d¦  «         |                     |d¦  «        S )z½
    Get a pointer to the given thread-local random state
    (depending on *name*: "py" or "np").
    If the state isn't initialized, it is lazily initialized with
    system entropy.
    )r   ÚnpÚinternalznumba_get_%s_random_state© ÚreadnoneÚnounwind)	r   ÚFunctionTypeÚrnd_state_ptr_tr   Úget_or_insert_functionÚmoduleÚ
attributesÚaddÚcall)ÚcontextÚbuilderÚnameÚ	func_nameÚfntyÚfns         r   Úget_state_ptrr1   2   s‰   € ð Ð+Ð+Ð+Ð+Ð+Ø+¨dÑ2€IÝŒ?�?¨BÑ/Ô/€DÝ	Ô	'¨¬¸¸iÑ	HÔ	H€Bð „M×Ò�jÑ!Ô!Ð!Ø„M×Ò�jÑ!Ô!Ð!Ø�<Š<˜˜BÑÔÐr   c                 ó$   — t          | |d¦  «        S )z@
    Get a pointer to the thread-local Python random state.
    r   ©r1   ©r+   r,   s     r   Úget_py_state_ptrr5   C   s   € õ ˜ '¨4Ñ0Ô0Ð0r   c                 ó$   — t          | |d¦  «        S )zB
    Get a pointer to the thread-local internal random state.
    r    r3   r4   s     r   Úget_internal_state_ptrr7   I   s   € õ ˜ '¨:Ñ6Ô6Ð6r   c                 ó0   — t          j        | |dd¦  «        S ©Nr   ©r   Úgep_inbounds©r,   Ú	state_ptrs     r   Úget_index_ptrr>   P   ó   € ÝÔ ¨°A°qÑ9Ô9Ð9r   c                 ó0   — t          j        | |dd¦  «        S ©Nr   é   r:   r<   s     r   Úget_array_ptrrC   S   r?   r   c                 ó0   — t          j        | |dd¦  «        S )Nr   é   r:   r<   s     r   Úget_has_gauss_ptrrF   V   r?   r   c                 ó0   — t          j        | |dd¦  «        S )Nr   é   r:   r<   s     r   Úget_gauss_ptrrI   Y   r?   r   c                 óÞ   — t          j        t          j        ¦   «         t          f¦  «        }t	          j        | j        j        |d¦  «        }|j        d          	                    d¦  «         |S )z<
    Get the internal function to shuffle the MT taste.
    Únumba_rnd_shuffler   zcaptures(none))
r   r$   ÚVoidTyper%   r   r&   Úfunctionr'   ÚargsÚadd_attribute)r,   r/   r0   s      r   Úget_rnd_shufflerP   \   s]   € õ Œ?�2œ;™=œ=­?Ð*<Ñ=Ô=€DÝ	Ô	'¨Ô(8Ô(?ÀØ(;ñ
=ô 
=€Bà„GˆA„J×ÒÐ-Ñ.Ô.Ð.Ø€Ir   c                 óÀ  — t          ||¦  «        }|                     |¦  «        }|                     d|t          ¦  «        }t	          j        ||¦  «        5  t          |¦  «        }|                     ||f¦  «         |                     t          d¦  «        |¦  «         ddd¦  «         n# 1 swxY w Y   |                     |¦  «        }t          ||¦  «        }|                     t	          j        ||d|¦  «        ¦  «        }|                     |t          d¦  «        ¦  «        }|                     ||¦  «         |                     ||                     |t          d¦  «        ¦  «        ¦  «        }|                     ||                     |                     |t          d¦  «        ¦  «        t          d¦  «        ¦  «        ¦  «        }|                     ||                     |                     |t          d¦  «        ¦  «        t          d	¦  «        ¦  «        ¦  «        }|                     ||                     |t          d
¦  «        ¦  «        ¦  «        }|S )zB
    Get the next int32 generated by the PRNG at *state_ptr*.
    ú>=r   NrB   é   é   l   €VX: é   l     Œ_ é   )r>   ÚloadÚicmp_unsignedÚN_constr   Úif_unlikelyrP   r*   Ústorer   rC   r;   r)   ÚxorÚlshrÚand_Úshl)	r+   r,   r=   ÚidxptrÚidxÚneed_reshuffler0   Ú	array_ptrÚys	            r   Úget_next_int32re   g   s0  € õ ˜7 IÑ.Ô.€FØ
�,Š,�vÑ
Ô
€CØ×*Ò*¨4°µgÑ>Ô>€NÝ	Ô	˜W nÑ	5Ô	5ð ,ð ,Ý˜WÑ%Ô%ˆØ�Š�R˜)˜Ñ&Ô&Ð&Ø�Š•i ‘l”l FÑ+Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð �,Š,�vÑ
Ô
€CÝ˜g yÑ1Ô1€IØ�Š•WÔ)¨'°9¸aÀÑEÔEÑFÔF€AØ
�+Š+�c�9 Q™<œ<Ñ
(Ô
(€CØ‡M‚M�#�vÑÔÐà�Š�A�w—|’| A¥y°¡}¤}Ñ5Ô5Ñ6Ô6€AØ�Š�A�w—|’| G§K¢K°µ9¸Q±<´<Ñ$@Ô$@Ý$-¨jÑ$9Ô$9ñ;ô ;ñ 	<ô 	<€Aà�Š�A�w—|’| G§K¢K°µ9¸R±=´=Ñ$AÔ$AÝ$-¨jÑ$9Ô$9ñ;ô ;ñ 	<ô 	<€Aà�Š�A�w—|’| A¥y°¡}¤}Ñ5Ô5Ñ6Ô6€AØ€Hs   ÁA
B-Â-B1Â4B1c                 ó  — |                      t          | ||¦  «        t          d¦  «        ¦  «        }|                      t          | ||¦  «        t          d¦  «        ¦  «        }|                     |t          ¦  «        }|                     |t          ¦  «        }|                     |                     ||                     |t          j	        t          d¦  «        ¦  «        ¦  «        t          j	        t          d¦  «        ¦  «        S )zC
    Get the next double generated by the PRNG at *state_ptr*.
    é   é   g      �Ag      @C)
r]   re   r   ÚuitofpÚdoubleÚfdivÚfaddÚfmulr   r   )r+   r,   r=   ÚaÚbs        r   Úget_next_doublerp   €   sÇ   € ð
 	�Š•^ G¨W°iÑ@Ô@Å)ÈAÁ,Ä,ÑOÔO€AØ�Š•^ G¨W°iÑ@Ô@Å)ÈAÁ,Ä,ÑOÔO€Að 	�Š�q�&Ñ!Ô!€AØ�Š�q�&Ñ!Ô!€AØ�<Š<Ø�Š�Q˜Ÿš Q­¬µF¸JÑ(GÔ(GÑHÔHÑIÔIÝ
Œ•FÐ.Ñ/Ô/ñ1ô 1ð 1r   c                 óú  ‡ ‡‡‡‡— t          j        |j        d¦  «        Šˆˆˆ ˆˆfd„}t          j        ‰t          j        t
          d¦  «        ¦  «        }‰                     d|‰¦  «        }‰                     |¦  «        5 \  }}	|5   ||¦  «        }
‰                     ‰ 	                    |
t
          ¦  «        |¦  «         ddd¦  «         n# 1 swxY w Y   |	5  ‰r |‰ 
                    |‰¦  «        ¦  «        }t          ‰ ‰‰¦  «        }
‰s |‰ 
                    |‰¦  «        ¦  «        }‰                     ‰ 	                    |
t
          ¦  «        ‰                     ‰ 	                    |t
          ¦  «        t          j        t
          d¦  «        ¦  «        ¦  «        }‰                     ||¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   ‰                     |¦  «        S )z2
    Get the next integer with width *nbits*.
    r   c                 ó
  •— ‰                      ‰| ¦  «        }t          ‰‰‰¦  «        }| j        j        |j        j        k     r‰                     ||j        ¦  «        }n5| j        j        |j        j        k    r‰                     ||j        ¦  «        }‰rY‰                     t          j        |j        d¦  «        ¦  «        }‰ 	                    ||¦  «        }‰ 
                    ||¦  «        S ‰ 	                    ||¦  «        S r9   )Úsubre   ÚtypeÚwidthÚzextÚtruncÚnot_r   r   r]   r^   )	ÚnbitsÚshiftrd   Úmaskr,   Úc32r+   Úis_numpyr=   s	       €€€€€r   Úget_shifted_intz%get_next_int.<locals>.get_shifted_int”   sá   ø€ Ø—’˜C Ñ'Ô'ˆÝ˜7 G¨YÑ7Ô7ˆð Œ:Ô˜aœfœlÒ*Ð*Ø—L’L ¨¬Ñ/Ô/ˆEˆEØŒZÔ ¤¤Ò,Ð,Ø—M’M %¨¬Ñ0Ô0ˆEàð 	*à—<’<¥¤¨A¬F°AÑ 6Ô 6Ñ7Ô7ˆDØ—<’<  eÑ,Ô,ˆDØ—<’<  4Ñ(Ô(Ð(ð —<’<  5Ñ)Ô)Ð)r   r   ú<=N)r   r   rt   r   Úalloca_once_valueÚint64_trX   Úif_elser[   rv   rs   re   r)   r_   rW   )r+   r,   r=   ry   r}   r~   ÚretÚis_32bÚifsmallÚiflargeÚlowÚhighÚtotalr|   s   ``` `        @r   Úget_next_intrŠ   �   s­  øøøøø€ õ Œ+�e”j "Ñ
%Ô
%€Cð*ð *ð *ð *ð *ð *ð *ð *ð *õ& Ô
# G­R¬[½À!Ñ-DÔ-DÑ
EÔ
E€Cà×"Ò" 4¨°Ñ4Ô4€FØ	�Š˜Ñ	 Ô	 ð &Ñ$6 W¨gØð 	;ð 	;Ø!�/ %Ñ(Ô(ˆCØ�MŠM˜'Ÿ,š, s­GÑ4Ô4°cÑ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð ð 	&ð 	&àð @à&� w§{¢{°5¸#Ñ'>Ô'>Ñ?Ô?�Ý  ¨'°9Ñ=Ô=ˆCØð @à&� w§{¢{°5¸#Ñ'>Ô'>Ñ?Ô?�Ø—K’KØ—’˜S¥'Ñ*Ô*Ø—’˜GŸLšL¨­wÑ7Ô7ÝœK­°Ñ4Ô4ñ6ô 6ñ7ô 7ˆEð �MŠM˜% Ñ%Ô%Ð%ð	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð	&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð& �<Š<˜ÑÔÐs[   ÂGÂ;CÃGÃC	ÃGÃC	ÃGÃCGÆ:GÇG
	Ç
GÇG
	ÇGÇG!Ç$G!c                 ó‚   ‡— t          | t          j        ¦  «        r#t          t	          d¦  «        ¦  «        Šˆfd„}|S d S )Nr   c                 ó   •—  ‰| ¦  «        S r   r!   )rn   r0   s    €r   Úimplzseed_impl.<locals>.implÄ   s   ø€ Ø�2�a‘5”5ˆLr   )Ú
isinstancer
   ÚIntegerr   Ú
_seed_impl)rn   r�   r0   s     @r   Ú	seed_implr‘   À   sT   ø€ å�!•U”]Ñ#Ô#ð Ý�j¨Ñ.Ô.Ñ/Ô/ˆð	ð 	ð 	ð 	ð 	àˆð	ð r   c                 ó4   ‡ ‡— t           ˆ fd„¦   «         Šˆfd„S )Nc                 óZ   •— ˆfd„}t          t          j        t          j        ¦  «        |fS )Nc                 ó>  •— |\  }t          j        t          j        ¦   «         t          t          f¦  «        }t          j        |j        j        |d¦  «        }| 	                    |t          | |‰¦  «        |f¦  «         |                      t          j        d ¦  «        S )NÚnumba_rnd_init)r   r$   rL   r%   r   r   r&   rM   r'   r*   r1   Úget_constantr
   Únone)r+   r,   ÚsigrN   Ú
seed_valuer/   r0   Ú
state_types          €r   Úcodegenz*_seed_impl.<locals>._impl.<locals>.codegenÌ   s�   ø€ Ø‰KˆJÝ”?¥2¤;¡=¤=µ?ÅGÐ2LÑMÔMˆDÝÔ/°Ô0@Ô0GÈØ0@ñBô BˆBà�LŠL˜�m¨G°W¸jÑIÔIØ(ð*ñ +ô +ð +à×'Ò'­¬
°DÑ9Ô9Ð9r   )r	   r
   ÚvoidÚuint32)ÚtypingcontextÚseedr›   rš   s      €r   Ú_implz_seed_impl.<locals>._implÊ   s7   ø€ ð	:ð 	:ð 	:ð 	:ð 	:õ �œ¥U¤\Ñ2Ô2°GÐ;Ð;r   c                 ó   •—  ‰| ¦  «        S r   r!   )rŸ   r    s    €r   ú<lambda>z_seed_impl.<locals>.<lambda>Õ   s   ø€ ˜˜˜d™œ€ r   ©r   )rš   r    s   `@r   r�   r�   É   s8   øø€ Ýð	<ð 	<ð 	<ð 	<ñ „Yð	<ð $Ð#Ð#Ð#Ð#r   c                  ó.   ‡ — t           d„ ¦   «         Š ˆ fd„S )Nc                 ó>   — d„ }t          t          j        ¦  «        |fS )Nc                 óF   — t          | |d¦  «        }t          | ||¦  «        S ©Nr   )r1   rp   )r+   r,   r˜   rN   r=   s        r   r›   z+random_impl.<locals>._impl.<locals>.codegenÜ   s%   € Ý% g¨w¸Ñ=Ô=ˆIÝ" 7¨G°YÑ?Ô?Ð?r   )r	   r
   rj   )rž   r›   s     r   r    zrandom_impl.<locals>._implÚ   s+   € ð	@ð 	@ð 	@õ �œÑ&Ô&¨Ð/Ð/r   c                  ó   •—  ‰ ¦   «         S r   r!   ©r    s   €r   r¢   zrandom_impl.<locals>.<lambda>à   s   ø€ �5�5‘7”7€ r   r£   r©   s   @r   Úrandom_implrª   Ø   s*   ø€ åð0ð 0ñ „Yð0ð
 ˆ?ˆ?ˆ?Ðr   c                 óÎ   ‡— t          | t          j        t          j        f¦  «        r;t          |t          j        t          j        f¦  «        rt          d„ ¦   «         Šˆfd„S d S d S )Nc                 ó    — t          |¦  «        }t          |¦  «        }t          t          j        ||¦  «        t	          t
          ||¦  «        fS r   )Ú_double_preprocessorr	   r
   Úfloat64Ú_gauss_implÚcpython_guass_args)rž   ÚmuÚsigmaÚloc_preprocessorÚscale_preprocessors        r   r    zgauss_impl.<locals>._implè   sM   € å3°BÑ7Ô7ÐÝ!5°eÑ!<Ô!<ÐÝ�Uœ]¨B°Ñ6Ô6ÝÕ1Ð3CÐEWÑXÔXðYð Yr   c                 ó   •—  ‰| |¦  «        S r   r!   ©r±   r²   r    s     €r   r¢   zgauss_impl.<locals>.<lambda>î   s   ø€    r¨5Ñ!1Ô!1€ r   ©rŽ   r
   ÚFloatr�   r   r¶   s     @r   Ú
gauss_implr¹   ã   s€   ø€ õ �"•u”{¥E¤MÐ2Ñ3Ô3ð 2½
Ø•E”K¥¤Ð/ñ91ô 91ð 2å	ð	Yð 	Yñ 
Œð	Yð
 2Ð1Ð1Ð1Ð1ð2ð 2ð 2ð 2r   c                 ó   ‡ — ˆ fd„}|S )Nc                  óä   •— 	 d ‰¦   «         z  dz
  } d ‰¦   «         z  dz
  }| | z  ||z  z   }|dk     r|dk    rnŒ9t          j        dt          j        |¦  «        z  |z  ¦  «        }|| z  ||z  fS )zG
        Compute a pair of numbers on the normal distribution.
        Tç       @ç      ð?ç        g       À)ÚmathÚsqrtÚlog)Úx1Úx2Úr2ÚfÚ_randoms       €r   Úcompute_gauss_pairz,_gauss_pair_impl.<locals>.compute_gauss_pairó   s�   ø€ ð	Ø�w�w‘y”y‘ 3Ñ&ˆBØ�w�w‘y”y‘ 3Ñ&ˆBØ�B‘˜˜B™‘ˆBØ�CŠxˆx˜B #šI˜IØð	õ ŒI�d�TœX b™\œ\Ñ)¨BÑ.Ñ/Ô/ˆØ�2‰v�q˜2‘vˆ~Ðr   r!   )rÆ   rÇ   s   ` r   Ú_gauss_pair_implrÈ   ò   s$   ø€ ðð ð ð ð ð Ðr   c                 ó   ‡ ‡‡— ˆˆˆ fd„}|S )Nc                 óš  •— |j         }|                      |¦  «        }‰j        }t          | |‰j        ¦  «        }t          j        ||d¬¦  «        }t          ||¦  «        }	t          ||¦  «        }
t          j	        || 
                    |
¦  «        ¦  «        }|                     |¦  «        5 \  }}|5  |                     | 
                    |	¦  «        |¦  «         |                     t          d¦  «        |
¦  «         d d d ¦  «         n# 1 swxY w Y   |5  |                      |t          |¦  «        t!          t#          j        |d¦  «        ¦  «        d¦  «        }t          j        ||d¦  «        \  }}|                     ||	¦  «         |                     ||¦  «         |                     t          d¦  «        |
¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |\  }}|                      ‰||¦  «        |                      ‰||¦  «        | 
                    |¦  «        ¦  «        ¦  «        S )NÚresult©r-   r   rE   r!   rB   )Úreturn_typeÚget_data_typer   r1   r   r   Úalloca_oncerI   rF   Úis_truerW   r‚   r[   r   Úcompile_internalrÈ   r	   r
   ÚUniTupleÚunpack_tuplerl   rm   )r+   r,   r˜   rN   ÚtyÚlltyrÆ   r=   rƒ   Ú	gauss_ptrÚhas_gauss_ptrÚ	has_gaussÚthenÚ	otherwiseÚpairÚfirstÚsecondr±   r²   r³   r´   Ú
state_argss                      €€€r   r    z_gauss_impl.<locals>._impl  sá  ø€ àŒ_ˆØ×$Ò$ RÑ(Ô(ˆØÔ,ˆå! '¨7°JÔ4DÑEÔEˆ	åÔ! '¨4°hÐ?Ñ?Ô?ˆå! '¨9Ñ5Ô5ˆ	Ý)¨'°9Ñ=Ô=ˆÝ”O G¨W¯\ª\¸-Ñ-HÔ-HÑIÔIˆ	Ø�_Š_˜YÑ'Ô'ð 	;Ñ+<¨D°)Øð ;ð ;à—’˜gŸlšl¨9Ñ5Ô5°sÑ;Ô;Ð;Ø—’�i¨™lœl¨MÑ:Ô:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð ð ;ð ;ð ×/Ò/°Ý0@ÀÑ0IÔ0IÝ09½%¼.ÈÈQÑ:OÔ:OÑ0PÔ0PØ02ñ4ô 4�õ
 !(Ô 4°W¸dÀAÑ FÔ F‘��vØ—’˜e YÑ/Ô/Ð/Ø—’˜f cÑ*Ô*Ð*Ø—’�i¨™lœl¨MÑ:Ô:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð$ ‰	ˆˆEØ�|Š|Ð,Ð,¨W°bÑ9Ô9Ø#ŸLšLÐ);Ð);¸GÀUÑ)KÔ)KØ)0¯ª°cÑ):Ô):ñ<ô <ñ=ô =ð 	=s\   Â/G,Â5ADÄG,ÄD	ÄG,ÄD	ÄG,ÄB.GÇ	G,ÇG	ÇG,ÇG	ÇG,Ç,G0Ç3G0r!   )rÞ   r³   r´   r    s   ``` r   r¯   r¯     s0   øøø€ ð"=ð "=ð "=ð "=ð "=ð "=ð "=ðF €Lr   c                 ó  ‡— t           j                             ¦   «         Št          | t          j        ¦  «        r| j        rˆfd„S ˆfd„S t          | t          j        ¦  «        r| j        dk    rˆfd„S d„ S t          d| z  ¦  «        ‚)Nc                 ó0   •— |                       |‰¦  «        S r   )Úsitofp©r,   ÚvrÔ   s     €r   r¢   z&_double_preprocessor.<locals>.<lambda>0  ó   ø€  g§n¢n°Q¸Ñ&;Ô&;€ r   c                 ó0   •— |                       |‰¦  «        S r   )ri   râ   s     €r   r¢   z&_double_preprocessor.<locals>.<lambda>2  rä   r   r   c                 ó0   •— |                       |‰¦  «        S r   )Úfpextrâ   s     €r   r¢   z&_double_preprocessor.<locals>.<lambda>5  s   ø€  g§m¢m°A°rÑ&:Ô&:€ r   c                 ó   — |S r   r!   )Ú_builderrã   s     r   r¢   z&_double_preprocessor.<locals>.<lambda>7  s   €  q€ r   z(Cannot convert {} to floating point type)	r   r
   Ú
DoubleTyperŽ   r�   Úsignedr¸   Úbitwidthr   )ÚvaluerÔ   s    @r   r­   r­   +  s¡   ø€ Ý	Œ×	Ò	Ñ	Ô	€Bå�%�œÑ'Ô'ð QØŒ<ð 	<Ø;Ð;Ð;Ð;Ð;à;Ð;Ð;Ð;Ð;Ý	�E�5œ;Ñ	'Ô	'ð QØŒ>˜RÒÐØ:Ð:Ð:Ð:Ð:à(Ð(Ð(åÐGÈ%ÑOÑPÔPÐPr   c                 óf   ‡— t          | t          j        ¦  «        rt          d„ ¦   «         Šˆfd„S d S )Nc                 ó@   — d„ }t          t          j        |¦  «        |fS )Nc                 ó¬  — |\  }|                      d|t          d¦  «        ¦  «        }|                      d|t          d¦  «        ¦  «        }t          j        ||                     ||¦  «        ¦  «        5  d}| j                             |t          |f¦  «         d d d ¦  «         n# 1 swxY w Y   t          | |d¦  «        }t          | |||d¦  «        S )NrR   éA   ú==r   z getrandbits() limited to 64 bitsr   F)
rX   r   r   rZ   Úor_Ú	call_convÚreturn_user_excÚOverflowErrorr1   rŠ   )	r+   r,   r˜   rN   ry   Ú	too_largeÚ	too_smallÚmsgr=   s	            r   r›   z0getrandbits_impl.<locals>._impl.<locals>.codegenA  s  € Ø‘�à#×1Ò1°$¸½yÈ¹}¼}ÑMÔM�	Ø#×1Ò1°$¸½yÈ¹|¼|ÑLÔL�	ÝÔ(¨°'·+²+¸iØ>Gñ3Iô 3Iñ Jô Jð >ð >à<�CØÔ%×5Ò5°g½}Ø7:°fñ>ô >ð >ð>ð >ð >ñ >ô >ð >ð >ð >ð >ð >ð >øøøð >ð >ð >ð >õ
 *¨'°7¸DÑAÔA�	Ý# G¨W°iÀÈÑNÔNÐNs   Á6%B'Â'B+Â.B+)r	   r
   Úuint64)rž   Úkr›   s      r   r    zgetrandbits_impl.<locals>._impl?  s-   € ðOð Oð Oõ �Uœ\¨1Ñ-Ô-¨wÐ6Ð6r   c                 ó   •—  ‰| ¦  «        S r   r!   ©rû   r    s    €r   r¢   z"getrandbits_impl.<locals>.<lambda>N  s   ø€ ˜˜˜q™œ€ r   )rŽ   r
   r�   r   rý   s    @r   Úgetrandbits_implrþ   <  sK   ø€ å�!•U”]Ñ#Ô#ð "Ý	ð	7ð 	7ñ 
Œð	7ð "Ð!Ð!Ð!Ð!ð!"ð "r   c                 ój  ‡ ‡‡‡‡‡‡‡— t          ‰ ‰‰¦  «        Št          j        ‰d¦  «        }t          j        ‰d¦  «        }	t          j        ‰‰d¬¦  «        }
‰                     ‰                     ||¦  «        |
¦  «         ‰                     ‰                     d||¦  «        ¦  «        5  ‰ 	                    ‰ 	                    ‰ 
                    |
¦  «        |¦  «        |	¦  «        }‰                     ||¦  «        Š‰                     ‰|
¦  «         d d d ¦  «         n# 1 swxY w Y   ‰                     ‰                     d||	¦  «        ¦  «        5  ‰                     ‰ 	                    ‰ 
                    |
¦  «        |¦  «        |	¦  «        }‰                     ||¦  «        Š‰                     ‰|
¦  «         d d d ¦  «         n# 1 swxY w Y   ‰ 
                    |
¦  «        Št          j        ‰‰                     d‰|¦  «        ¦  «        5  d}‰ j                             ‰t          |f¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        ‰‰t          j        j        g¦  «        }t          j        ‰j        j        |d	‰z  ¦  «        }‰d
k    r‰                     ‰|	¦  «        n‰}‰                     ‰                     ||t          j        g¦  «        t0          ¦  «        Š‰                     t          j        t0          ‰j        ¦  «        ‰¦  «        Št          j        ‰‰d¬¦  «        Šˆˆ ˆˆˆˆˆˆfd„}‰d
k    rš‰                     ‰                     d‰|	¦  «        ¦  «        5 \  }}|5  ‰                     |‰¦  «         d d d ¦  «         n# 1 swxY w Y   |5   |¦   «          d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   n
 |¦   «          ‰ 	                    |‰                     ‰ 
                    ‰¦  «        |¦  «        ¦  «        S )Nr   rB   ÚnrÌ   ú<ú>r   zempty range for randrange()zllvm.ctlz.%sr   Úrc                  ó¼  •— ‰                      d¦  «        } ‰                      d¦  «        }‰                     | ¦  «         ‰                     | ¦  «         t          ‰‰‰
‰‰	dk    ¦  «        }‰                     |‰¦  «        }‰                     d|‰¦  «        }‰                     || |¦  «         ‰                     |¦  «         ‰                     |‰¦  «         d S )NÚwhilez	while.endr   rR   )Úappend_basic_blockÚbranchÚposition_at_endrŠ   rw   Úicmp_signedÚcbranchr[   )ÚbbwhileÚbbendr  r÷   r,   r+   r   ry   Úrptrr   r=   rÔ   s       €€€€€€€€r   Úget_numz _randrange_impl.<locals>.get_num|  sÖ   ø€ Ø×,Ò,¨WÑ5Ô5ˆØ×*Ò*¨;Ñ7Ô7ˆØ�Š�wÑÔÐà×Ò Ñ(Ô(Ð(Ý˜ '¨9°e¸UÀdº]ÑKÔKˆØ�MŠM˜!˜RÑ Ô ˆØ×'Ò'¨¨a°Ñ3Ô3ˆ	Ø�Š˜	 7¨EÑ2Ô2Ð2à×Ò Ñ&Ô&Ð&Ø�Š�a˜ÑÔÐÐÐr   rò   )r1   r   r   r   rÏ   r[   rs   Úif_thenr	  r)   rW   ÚsdivrZ   rô   rõ   Ú
ValueErrorr$   Útrue_bitrt   r&   rM   r'   rw   r*   r   ru   r‚   Úmul)r+   r,   ÚstartÚstopÚsteprÔ   rë   r   ÚzeroÚoneÚnptrÚwrù   r/   r0   Únm1r  Úis_oneÚ
is_not_oner   ry   r  r=   s   ``   ` `           @@@@r   Ú_randrange_implr  Q  sl  øøøøøøøø€ Ý˜g w°Ñ6Ô6€IÝŒ;�r˜1ÑÔ€DÝ
Œ+�b˜!Ñ
Ô
€CÝÔ˜w¨°Ð5Ñ5Ô5€Dð ‡M‚M�'—+’+˜d EÑ*Ô*¨DÑ1Ô1Ð1à	�Š˜×,Ò,¨S°$¸Ñ=Ô=Ñ	>Ô	>ð ð à�KŠK˜Ÿš G§L¢L°Ñ$6Ô$6¸Ñ=Ô=¸sÑCÔCˆØ�LŠL˜˜DÑ!Ô!ˆØ�Š�a˜ÑÔÐð	ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð
 
�Š˜×,Ò,¨S°$¸Ñ<Ô<Ñ	=Ô	=ð ð à�KŠK˜Ÿš G§L¢L°Ñ$6Ô$6¸Ñ=Ô=¸sÑCÔCˆØ�LŠL˜˜DÑ!Ô!ˆØ�Š�a˜ÑÔÐð	ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð 	�Š�TÑÔ€AÝ	Ô	˜W g×&9Ò&9¸$ÀÀ4Ñ&HÔ&HÑ	IÔ	Ið Gð Gà+ˆØÔ×)Ò)¨'µ:À¸vÑFÔFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gõ
 Œ?˜2 ¥GÔ$4Ô$9Ð:Ñ;Ô;€DÝ	Ô	'¨Ô(8Ô(?ÀØ(6¸Ñ(;ñ
=ô 
=€Bð "'¨$¢ ˆ'�+Š+�a˜Ñ
Ô
Ð
°A€CØ�MŠM˜'Ÿ,š, r¨CµÔ1AÐ+BÑCÔCÅWÑMÔM€EØ�KŠK�œ¥G¨R¬XÑ6Ô6¸Ñ>Ô>€EåÔ˜w¨°Ð5Ñ5Ô5€Dðð ð ð ð ð ð ð ð ð ð ð ð �‚}€}à�_Š_˜W×0Ò0°°q¸#Ñ>Ô>Ñ?Ô?ð 	ÑCWÀFÈJØð *ð *Ø—’˜d DÑ)Ô)Ð)ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *àð ð Ø�‘	”	�	ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	øð 	ˆ‰	Œ	ˆ	à�;Š;�u˜gŸkšk¨'¯,ª,°tÑ*<Ô*<¸dÑCÔCÑDÔDÐDs’   Â/A*D%Ä%D)Ä,D)ÅA*GÇGÇGÈ%IÉIÉIÍ>O"ÎN'ÎO"Î'N+	Î+O"Î.N+	Î/O"Î4OÎ?O"ÏO	ÏO"ÏO	ÏO"Ï"O&Ï)O&c                 ó@   — t          | t          j        ¦  «        rd„ S d S )Nc                 ó.   — t          j        d| d¦  «        S rA   ©ÚrandomÚ	randrange©r  s    r   r¢   z"randrange_impl_1.<locals>.<lambda>š  s   € �VÔ-¨a°¸Ñ:Ô:€ r   ©rŽ   r
   r�   r$  s    r   Úrandrange_impl_1r&  —  s)   € å�%�œÑ'Ô'ð ;Ø:Ð:Ð:ð;ð ;r   c                 óx   — t          | t          j        ¦  «        rt          |t          j        ¦  «        rd„ S d S d S )Nc                 ó.   — t          j        | |d¦  «        S ©NrB   r!  ©r  r  s     r   r¢   z"randrange_impl_2.<locals>.<lambda>   s   € ¥6Ô#3°E¸4ÀÑ#CÔ#C€ r   r%  r*  s     r   Úrandrange_impl_2r+  �  sL   € å�%�œÑ'Ô'ð D­J°t½U¼]Ñ,KÔ,Kð DØCÐCÐCðDð Dð Dð Dr   c                 óp   — |j         | k    r)|j        rt          j        j        nt          j        j        S d„ S )Nc                 ó   — |S r   r!   )ré   rã   Ú_tys      r   r¢   z)_randrange_preprocessor.<locals>.<lambda>¨  s   € ¨€ r   )rì   rë   r   Ú	IRBuilderÚsextrv   )rì   rÔ   s     r   Ú_randrange_preprocessorr1  £  s;   € Ø	„{�hÒÐØ%'¤Yð '•”Ô!Ð!Ý”\Ô&ð	(ð *Ð)Ð)r   c                 ó8  ‡‡‡‡‡‡	‡
— t          | t          j        ¦  «        rôt          |t          j        ¦  «        rÜt          |t          j        ¦  «        rÄt          | j        |j        |j        ¦  «        Št          | j        |j        |j        ¦  «        }t          j                             |‰¦  «        Št          j        |¦  «        Št          || ¦  «        Št          ||¦  «        Š
t          ||¦  «        Š	t          ˆˆˆˆˆ	ˆ
fd„¦   «         Šˆfd„S d S d S d S )Nc                 ó>   •— ˆˆˆˆ	ˆ
fd„}t          ‰|||¦  «        |fS )Nc           
      óŠ   •— |\  }}} ‰	||‰¦  «        } ‰||‰¦  «        } ‰
||‰¦  «        }t          | ||||‰‰d¦  «        S r§   )r  )r+   r,   r˜   rN   r  r  r  Ú	llvm_typerë   Ústart_preprocessorÚstep_preprocessorÚstop_preprocessors          €€€€€r   r›   z0randrange_impl_3.<locals>._impl.<locals>.codegenº  sq   ø€ Ø$(Ñ!��t˜Tà*Ð*¨7°E¸9ÑEÔE�Ø(Ð(¨°$¸	ÑBÔB�Ø(Ð(¨°$¸	ÑBÔB�Ý& w°¸ÀÀdØ'0°&¸$ñ@ô @ð @r   r   )rž   r  r  r  r›   Úint_tyr5  rë   r6  r7  r8  s        €€€€€€r   r    zrandrange_impl_3.<locals>._impl¸  sT   ø€ ð@ð @ð @ð @ð @ð @ð @ð @ð @õ ˜V U¨D°$Ñ7Ô7¸Ð@Ð@r   c                 ó   •—  ‰| ||¦  «        S r   r!   )r  r  r  r    s      €r   r¢   z"randrange_impl_3.<locals>.<lambda>Ã  s   ø€ ¨¨¨u°d¸DÑ)AÔ)A€ r   )rŽ   r
   r�   Úmaxrë   rì   Úfrom_bitwidthr   ÚIntTyper1  r   )r  r  r  rì   r    r9  r5  rë   r6  r7  r8  s       @@@@@@@r   Úrandrange_impl_3r>  «  sG  øøøøøøø€ å�5�%œ-Ñ(Ô(ð B­Z¸½e¼mÑ-LÔ-Lð BÝ�$�œÑ&Ô&ðBå�U”\ 4¤;°´Ñ<Ô<ˆÝ�u”~ t¤}°d´mÑDÔDˆÝ”×,Ò,¨X°vÑ>Ô>ˆÝ”J˜xÑ(Ô(ˆ	å4°X¸uÑEÔEÐÝ3°H¸dÑCÔCÐÝ3°H¸dÑCÔCÐå	ð		Að 		Að 		Að 		Að 		Að 		Að 		Að 		Að 		Añ 
Œð		Að BÐAÐAÐAÐAð-Bð Bð Bð Bð Bð Br   c                 óx   — t          | t          j        ¦  «        rt          |t          j        ¦  «        rd„ S d S d S )Nc                 ó4   — t          j        | |dz   d¦  «        S r)  r!  ©rn   ro   s     r   r¢   z randint_impl_1.<locals>.<lambda>É  s   € �FÔ,¨Q°°A±°qÑ9Ô9€ r   r%  rA  s     r   Úrandint_impl_1rB  Æ  sF   € å�!•U”]Ñ#Ô#ð :­
°1µe´mÑ(DÔ(Dð :Ø9Ð9Ð9ð:ð :ð :ð :r   c                 óÎ   ‡— t          | t          j        t          j        f¦  «        r;t          |t          j        t          j        f¦  «        rt          d„ ¦   «         Šˆfd„S d S d S )Nc                 ó–   — t          |¦  «        }t          |¦  «        }t          t          j        ||¦  «        t	          d||¦  «        fS r§   )r­   r	   r
   r®   Úuniform_impl)rž   rn   ro   Úlow_preprocessorÚhigh_preprocessors        r   r    zuniform_impl2.<locals>._implÑ  sN   € å3°AÑ6Ô6ÐÝ 4°QÑ 7Ô 7ÐÝ�Uœ]¨A¨qÑ1Ô1µ<ØÐ&Ð(9ñ4;ô 4;ð ;ð ;r   c                 ó   •—  ‰| |¦  «        S r   r!   ©rn   ro   r    s     €r   r¢   zuniform_impl2.<locals>.<lambda>×  s   ø€ ˜E˜E ! Q™KœK€ r   r·   rI  s     @r   Úuniform_impl2rJ  Í  s{   ø€ å�!•e”k¥5¤=Ð1Ñ2Ô2ð (µzØ•”�Uœ]Ð+ñ8-ô 8-ð (å	ð	;ð 	;ñ 
Œð	;ð
 (Ð'Ð'Ð'Ð'ð(ð (ð (ð (r   c                 ó   ‡ ‡‡— ˆˆˆ fd„}|S )Nc                 ó  •— t          | |‰¦  «        }|\  }} ‰	||¦  «        } ‰
||¦  «        }|                     ||¦  «        }t          | ||¦  «        }|                     ||                     ||¦  «        ¦  «        S r   )r1   Úfsubrp   rl   rm   )r+   r,   r˜   rN   r=   rn   ro   ru   r  Úa_preprocessorÚb_preprocessorr   s            €€€r   r�   zuniform_impl.<locals>.implÜ  s…   ø€ Ý! '¨7°EÑ:Ô:ˆ	Ø‰ˆˆ1ØˆN˜7 AÑ&Ô&ˆØˆN˜7 AÑ&Ô&ˆØ—’˜Q Ñ"Ô"ˆÝ˜G W¨iÑ8Ô8ˆØ�|Š|˜A˜wŸ|š|¨E°1Ñ5Ô5Ñ6Ô6Ð6r   r!   )r   rN  rO  r�   s   ``` r   rE  rE  Û  s/   øøø€ ð7ð 7ð 7ð 7ð 7ð 7ð 7ð €Kr   c                 ó¬   — d„ }t          | t          j        t          j        f¦  «        r(t          |t          j        t          j        f¦  «        r|S d S d S )Nc                 óŠ   — t          j         ¦   «         }d}||k    r	d|z
  }|| }} | || z
  t          j        ||z  ¦  «        z  z   S )Nç      à?r½   ©r"  r¿   rÀ   )r‡   rˆ   ÚuÚcs       r   r    z triangular_impl_2.<locals>._implê  sO   € ÝŒM‰OŒOˆØˆØˆqŠ5ˆ5Ø�a‘ˆAØ˜c�ˆCØ�d˜S‘j¥D¤I¨a°!©eÑ$4Ô$4Ñ4Ñ4Ð4r   ©rŽ   r
   r¸   r�   )r‡   rˆ   r    s      r   Útriangular_impl_2rW  è  sf   € ð5ð 5ð 5õ �#�œ¥U¤]Ð3Ñ4Ô4ð ½Ø•5”;¥¤Ð.ñ:0ô :0ð àˆðð ð ð r   c                 óü   — t          | t          j        t          j        f¦  «        rQt          |t          j        t          j        f¦  «        r-t          |t          j        t          j        f¦  «        r	d„ }|S d S d S d S )Nc                 ó¶   — || k    r| S t          j         ¦   «         }|| z
  || z
  z  }||k    rd|z
  }d|z
  }|| }} | || z
  t          j        ||z  ¦  «        z  z   S )Nr½   rS  )r‡   rˆ   ÚmoderT  rU  s        r   r    z triangular_impl_3.<locals>._implü  ss   € Ø�sŠ{ˆ{Ø�
Ý”‘”ˆAØ˜‘  s¡
Ñ+ˆAØ�1ŠuˆuØ˜!‘G�Ø˜!‘G�Ø  #�T�Ø˜$ ™*­¬	°!°a±%Ñ(8Ô(8Ñ8Ñ8Ð8r   rV  )r‡   rˆ   rZ  r    s       r   Útriangular_impl_3r[  ÷  s‹   € å�3�œ¥e¤mÐ4Ñ5Ô5ð ½*Ø•5”;¥¤Ð.ñ;0ô ;0ð å�$�œ¥e¤mÐ4Ñ5Ô5ðð		9ð 		9ð 		9ð ˆðð ð ð ð ð r   c                 óÔ   — t          | t          j        t          j        f¦  «        r?t          |t          j        t          j        f¦  «        rt	          t
          j        ¦  «        S d S d S r   )rŽ   r
   r¸   r�   Ú_gammavariate_implr"  ©ÚalphaÚbetas     r   Úgammavariate_implra  
  s`   € å�%�%œ+¥u¤}Ð5Ñ6Ô6ð 1½:Ø•5”;¥¤Ð.ñ<0ô <0ð 1å!¥&¤-Ñ0Ô0Ð0ð1ð 1ð 1ð 1r   c                 ó   ‡ — ˆ fd„}|S )Nc                 ó’  •— dt          j        d¦  «        z   }| dk    s|dk    rt          d¦  «        ‚| dk    rÒt          j        d| z  dz
  ¦  «        }| t          j        d¦  «        z
  }| |z   }	  ‰¦   «         }d|cxk     rd	k     sn Œd ‰¦   «         z
  }t          j        |d|z
  z  ¦  «        |z  }| t          j        |¦  «        z  }	||z  |z  }
|||z  z   |	z
  }||z   d|
z  z
  dk    s|t          j        |
¦  «        k    r|	|z  S Œ›| dk    r#t          j        d ‰¦   «         z
  ¦  «         |z  S 	  ‰¦   «         }t           j        | z   t           j        z  }||z  }|dk    r	|d| z  z  }	nt          j        ||z
  | z  ¦  «         }	 ‰¦   «         }|dk    r||	| dz
  z  k    rnn|t          j        |	 ¦  «        k    rnŒŽ|	|z  S )
z1Gamma distribution.  Taken from CPython.
        r½   g      @r¾   z*gammavariate: alpha and beta must be > 0.0r¼   g      @rB   gH¯¼šò×z>gËPÊÿÿï?)r¿   rÁ   r  rÀ   ÚexpÚe)r_  r`  ÚSG_MAGICCONSTÚainvÚbbbÚcccÚu1Úu2rã   r   Úzr  rT  ro   ÚprÆ   s                  €r   r    z!_gammavariate_impl.<locals>._impl  s"  ø€ ð �dœh s™mœmÑ+ˆð
 �CŠ<ˆ<˜4 3š;˜;ÝÐIÑJÔJÐJà�3Š;ˆ;õ ”9˜S 5™[¨3Ñ.Ñ/Ô/ˆDØ�$œ( 3™-œ-Ñ'ˆCØ˜$‘,ˆCð
$Ø�W‘Y”Y�Ø˜bÐ+Ð+Ò+Ð+ 8Ò+Ð+Ð+Ð+ØØ˜7˜7™9œ9‘_�Ý”H˜R  R¡™[Ñ)Ô)¨$Ñ.�Ø�$œ( 1™+œ+Ñ%�Ø�r‘E˜"‘H�Ø˜˜A™‘I˜a‘K�Ø�}Ñ$ s¨1¡uÑ,°Ò3Ð3°q½D¼HÀQ¹K¼KÒ7GÐ7GØ˜t™8�Oð
$ð �cŠ\ˆ\õ
 ”H˜S 7 7¡9¤9™_Ñ-Ô-Ð-°Ñ4Ð4ðØ�G‘I”I�Ý”V˜e‘^¥T¤VÑ+�Ø�a‘C�Ø˜’8�8Ø˜c %™iÑ(�A�Aåœ 1 Q¡3¨¡+Ñ.Ô.Ð.�AØ�W‘Y”Y�Ø�s’7�7Ø˜Q 5¨3¡;Ñ/Ò/Ð/Øð 0à�4œ8 Q B™<œ<Ò'Ð'Øðð �t‘8ˆOr   r!   ©rÆ   r    s   ` r   r]  r]    s$   ø€ ð6ð 6ð 6ð 6ð 6ðn €Lr   c                 óÔ   — t          | t          j        t          j        f¦  «        r?t          |t          j        t          j        f¦  «        rt	          t
          j        ¦  «        S d S d S r   )rŽ   r
   r¸   r�   Ú_betavariate_implr"  Úgammavariater^  s     r   Úbetavariate_implrr  L  sa   € å�%�%œ+¥u¤}Ð5Ñ6Ô6ð 6½:Ø•5”;¥¤Ð.ñ<0ô <0ð 6å ¥Ô!4Ñ5Ô5Ð5ð6ð 6ð 6ð 6r   c                 ó   ‡ — ˆ fd„}|S )Nc                 óP   •—  ‰| d¦  «        }|dk    rdS || ‰|d¦  «        z   z  S )z0Beta distribution.  Taken from CPython.
        r½   r¾   r!   )r_  r`  rd   Úgammas      €r   r    z _betavariate_impl.<locals>._implT  s>   ø€ ð
 ˆE�%˜ÑÔˆØ�Š8ˆ8Ø�3à˜˜E˜E $¨™OœOÑ+Ñ,Ð,r   r!   )ru  r    s   ` r   rp  rp  S  s#   ø€ ð	-ð 	-ð 	-ð 	-ð 	-ð €Lr   c                 óD   — t          | t          j        ¦  «        rd„ }|S d S )Nc                 óZ   — t          j        dt          j        ¦   «         z
  ¦  «         | z  S )z;Exponential distribution.  Taken from CPython.
            r½   )r¿   rÁ   r"  )Úlambds    r   r    zexpovariate_impl.<locals>._implf  s'   € õ ”H˜S¥6¤=¡?¤?Ñ2Ñ3Ô3Ð3°eÑ;Ð;r   ©rŽ   r
   r¸   )rx  r    s     r   Úexpovariate_implrz  c  s6   € å�%�œÑ%Ô%ð ð	<ð 	<ð 	<ð ˆðð r   c                 óŠ   ‡— t          | t          j        ¦  «        sd}t          |¦  «        ‚| j        dk    rˆfd„}nˆfd„}|S )Nz1The argument to shuffle() should be a buffer typerB   c                 ó˜   •— | j         d         dz
  }|dk    r2 ‰|dz   ¦  «        }| |         | |         c| |<   | |<   |dz  }|dk    °0d S d S rA   )Úshape©r   ÚiÚjÚrands      €r   r�   zdo_shuffle_impl.<locals>.imply  sc   ø€ Ø”˜”
˜Q‘ˆAØ�a’%�%Ø�D˜˜Q™‘K”K�Ø˜qœT 1 Q¤4�
��!‘�a˜‘dØ�Q‘�ð �a’%�%�%�%�%�%r   c                 óà   •— | j         d         dz
  }|dk    rV ‰|dz   ¦  «        }| |                              ¦   «         | |                              ¦   «         c| |<   | |<   |dz  }|dk    °Td S d S rA   )r}  Úcopyr~  s      €r   r�   zdo_shuffle_impl.<locals>.impl€  ss   ø€ Ø”˜”
˜Q‘ˆAØ�a’%�%Ø�D˜˜Q™‘K”K�Ø˜qœTŸYšY™[œ[¨!¨A¬$¯)ª)©+¬+�
��!‘�a˜‘dØ�Q‘�ð �a’%�%�%�%�%�%r   )rŽ   r
   ÚBufferr   Úndim)r   r�  rù   r�   s    `  r   Údo_shuffle_implr†  r  ss   ø€ å�a�œÑ&Ô&ð "ØAˆÝ˜SÑ!Ô!Ð!à„v�‚{€{ð	ð 	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð €Kr   c                 ó6   — t          | t          j        ¦  «        S r   )r†  r"  r#  r   s    r   Úshuffle_implrˆ  ‰  s   € å˜1�fÔ.Ñ/Ô/Ð/r   c                 óÊ   ‡— t          | t          j        ¦  «        rEt          |t          j        ¦  «        r-t          t	          t
          j        ¦  «        ¦  «        Šˆfd„S d S d S )Nc                 ó   •—  ‰| |¦  «        S r   r!   ©r±   r²   r0   s     €r   r¢   z%lognormvariate_impl.<locals>.<lambda>’  s   ø€    B¨¡¤€ r   )rŽ   r
   r¸   r   Ú_lognormvariate_implr"  Úgaussr‹  s     @r   Úlognormvariate_implrŽ  Ž  se   ø€ å�"•e”kÑ"Ô"ð /¥z°%½¼Ñ'EÔ'Eð /ÝÕ2µ6´<Ñ@Ô@ÑAÔAˆØ.Ð.Ð.Ð.Ð.ð/ð /ð /ð /r   c                 ó   ‡ — ˆ fd„S )Nc                 ó@   •— t          j         ‰| |¦  «        ¦  «        S r   )r¿   rd  )r±   r²   Ú_gausss     €r   r¢   z&_lognormvariate_impl.<locals>.<lambda>–  s   ø€ �TœX f f¨R°Ñ&7Ô&7Ñ8Ô8€ r   r!   )r‘  s   `r   rŒ  rŒ  •  s   ø€ Ø8Ð8Ð8Ð8Ð8r   c                 óD   — t          | t          j        ¦  «        rd„ }|S d S )Nc                 óD   — dt          j         ¦   «         z
  }d|d| z  z  z  S )z)Pareto distribution.  Taken from CPython.r½   )r"  )r_  rT  s     r   r    z!paretovariate_impl.<locals>._implœ  s(   € ð •f”m‘o”oÑ%ˆAØ˜˜s 5™yÑ)Ñ)Ð)r   ry  )r_  r    s     r   Úparetovariate_implr”  ™  s6   € å�%�œÑ%Ô%ð ð	*ð 	*ð 	*ð ˆðð r   c                 ó¬   — t          | t          j        t          j        f¦  «        r+t          |t          j        t          j        f¦  «        rd„ }|S d S d S )Nc                 ój   — dt          j         ¦   «         z
  }| t          j        |¦  «         d|z  z  z  S )z*Weibull distribution.  Taken from CPython.r½   )r"  r¿   rÁ   )r_  r`  rT  s      r   r    z"weibullvariate_impl.<locals>._impl«  s2   € ð •f”m‘o”oÑ%ˆAØ�TœX a™[œ[˜L¨c°$©hÑ7Ñ7Ð7r   rV  )r_  r`  r    s      r   Úweibullvariate_implr—  §  sf   € å�%�%œ+¥u¤}Ð5Ñ6Ô6ð ½:Ø•5”;¥¤Ð.ñ<0ô <0ð ð	8ð 	8ð 	8ð ˆðð ð ð r   c                 ó¤   — t          | t          j        ¦  «        r3t          |t          j        ¦  «        rt          t          j        ¦  «        S d S d S r   )rŽ   r
   r¸   Ú_vonmisesvariate_implr"  )r±   Úkappas     r   Úvonmisesvariate_implr›  ´  sM   € å�"•e”kÑ"Ô"ð 4¥z°%½¼Ñ'EÔ'Eð 4Ý$¥V¤]Ñ3Ô3Ð3ð4ð 4ð 4ð 4r   c                 ó   ‡ — ˆ fd„}|S )Nc                 óD  •— |dk    rdt           j        z   ‰¦   «         z  S d|z  }|t          j        d||z  z   ¦  «        z   }	  ‰¦   «         }t          j        t           j        |z  ¦  «        }|||z   z  } ‰¦   «         }|d||z  z
  k     s|d|z
  t          j        |¦  «        z  k    rnŒid|z  }||z   d||z  z   z  }	 ‰¦   «         }
|
dk    r(| t          j        |	¦  «        z   dt           j        z  z  }n'| t          j        |	¦  «        z
  dt           j        z  z  }|S )z¤Circular data distribution.  Taken from CPython.
        Note the algorithm in Python 2.6 and Numpy is different:
        http://bugs.python.org/issue17141
        g�íµ ÷Æ°>r¼   rR  r½   )r¿   ÚpirÀ   Úcosrd  Úacos)r±   rš  Úsr  rj  rl  Údrk  ÚqrÅ   Úu3ÚthetarÆ   s               €r   r    z$_vonmisesvariate_impl.<locals>._impl»  s3  ø€ ð �DŠ=ˆ=Ø�œ‘= 7 7¡9¤9Ñ,Ð,à�%‰KˆØ•”	˜#  A¡™+Ñ&Ô&Ñ&ˆð	Ø�‘”ˆBÝ”�œ 2™Ñ&Ô&ˆAà�Q˜‘U‘ˆAØ�‘”ˆBØ�C˜!˜a™%‘KÒÐ 2¨#°©'µT´X¸a±[´[Ñ)@Ò#@Ð#@Øð	ð �!‰GˆØ�‰U�s˜Q ™U‘{Ñ#ˆØˆW‰YŒYˆØ�Š8ˆ8Ø�$œ) A™,œ,Ñ&¨3µ´©=Ñ9ˆEˆEà�$œ) A™,œ,Ñ&¨3µ´©=Ñ9ˆEàˆr   r!   rn  s   ` r   r™  r™  º  s$   ø€ ð&ð &ð &ð &ð &ðP €Lr   )`Ú__doc__r¿   r"  Úllvmliter   Únumba.core.extendingr   r   r   Únumba.core.imputilsr   Únumba.core.typingr	   Ú
numba.corer
   r   Únumba.core.errorsr   Úcollectionsr   ÚregistryÚlowerr=  r   r�   r   rê   rj   ÚNr   rY   ÚLiteralStructTypeÚ	ArrayTypeÚrnd_state_tÚPointerTyper%   r   r°   r1   r5   r7   r>   rC   rF   rI   rP   re   rp   rŠ   rŸ   r‘   r�   rª   r�  Únormalvariater¹   rÈ   r¯   r­   Úgetrandbitsrþ   r  r#  r&  r+  r1  r>  ÚrandintrB  ÚuniformrJ  rE  Ú
triangularrW  r[  rq  ra  r]  Úbetavariaterr  rp  Úexpovariaterz  r†  Úshufflerˆ  ÚlognormvariaterŽ  rŒ  Úparetovariater”  Úweibullvariater—  Úvonmisesvariater›  r™  r!   r   r   ú<module>rÁ     s$  ððð ð
 €€€Ø €€€à Ð Ð Ð Ð Ð à FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ (Ð (Ð (Ð (Ð (Ð (Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø "Ð "Ð "Ð "Ð "Ð "àˆ8�LÑ!Ô!€ØŒ€à
ˆ"Œ*�R‰.Œ.€Ø
ˆ"Œ*�R‰.Œ.€ð#ð #ð #à	ˆŒ‰Œ€à€Ø
ˆ"Œ+�g˜qÑ
!Ô
!€ð #ˆbÔ"àà€B„L�˜!ÑÔàà
àð$ñ ô €ð !�"”. Ñ-Ô-€àˆJ�{ WÐ.?Ð$@ÑAÔA€	Ø�Y˜t V¤]Ñ3Ô3Ð ð ð  ð  ð"1ð 1ð 1ð7ð 7ð 7ð:ð :ð :ð:ð :ð :ð:ð :ð :ð:ð :ð :ðð ð ðð ð ð21ð 1ð 1ð.ð .ð .ðb 
€ˆ&Œ+ÑÔðð ñ Ôðð$ð $ð $ð 
€ˆ&Œ-ÑÔðð ñ Ôðð 
€ˆ&Œ,ÑÔØ	€ˆ&Ô
ÑÔð	2ð 	2ñ  Ôñ Ôð	2ðð ð ð$$ð $ð $ðNQð Qð Qð" 
€ˆ&Ô
ÑÔð"ð "ñ Ôð"ð(CEð CEð CEðL 
€ˆ&Ô
ÑÔð;ð ;ñ Ôð;ð
 
€ˆ&Ô
ÑÔðDð Dñ ÔðDð
*ð *ð *ð 
€ˆ&Ô
ÑÔðBð Bñ ÔðBð4 
€ˆ&Œ.ÑÔð:ð :ñ Ôð:ð 
€ˆ&Œ.ÑÔð	(ð 	(ñ Ôð	(ð	ð 	ð 	ð 
€ˆ&Ô
ÑÔðð ñ Ôðð 
€ˆ&Ô
ÑÔðð ñ Ôðð$ 
€ˆ&Ô
ÑÔð1ð 1ñ Ôð1ð8ð 8ð 8ðv 
€ˆ&Ô
ÑÔð6ð 6ñ Ôð6ðð ð ð  
€ˆ&Ô
ÑÔðð ñ Ôððð ð ð. 
€ˆ&Œ.ÑÔð0ð 0ñ Ôð0ð 
€ˆ&Ô
Ñ Ô ð/ð /ñ !Ô ð/ð9ð 9ð 9ð 
€ˆ&Ô
ÑÔðð ñ  Ôðð 
€ˆ&Ô
Ñ Ô ð	ð 	ñ !Ô ð	ð 
€ˆ&Ô
 Ñ!Ô!ð4ð 4ñ "Ô!ð4ð
)ð )ð )ð )ð )r   