Ë
    èÿæiG?  ã                   ó   — d Z ddlZddlZddlZddlZddlZddlmZ ddl	m
Z
mZ ddlmZ ddlmZmZmZmZ ddlmZ ddlmZ dd	lmZ  e
d
«      Zej4                  Z ej6                   ej8                  d«      «      Zej<                  Zej@                  Z! ej6                   ej8                  d«      «      Z"e"j<                  Z#e"j@                  Z$dZ%dZ&dZ'dZ(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2d„ Z3d„ Z4dhd„Z5 e4ejl                  d«        e4ejn                  d«      Z8ejr                  d k\  r e4ejt                  d!«      Z; e4ejx                  d"«      Z= e4ej|                  d#«      Z? e4ej€                  d$«      ZA e4ej„                  d%«      ZC e4ejˆ                  d&«      ZE e5ejŒ                  d'd(«      ZG e5ej�                  d)d*«      ZI e5ej”                  d+d,«      ZK e5ej˜                  d-d.«      ZM e5ejœ                  d/d0«      ZO e5ej                   d1d2«      ZQ e5ej¤                  d3d4«      ZS e5ej¨                  d5d6«      ZU e5ej¬                  d7d8«      ZW e5ej°                  d9d:«      ZY e5ej´                  d;d<«      Z[ e5ej¸                  d=d>«      Z] e5ej¼                  d?d@«      Z_ e5ejÀ                  dAdB«      Za e5ej€                  dCdD«      ZA e5ejÄ                  dEdFdG«      Zc e5ejÈ                  dHdIdG«      Ze e5ejÌ                  dJdK«      Zg e5ejÐ                  dLdM«      Zi e5ejÔ                  dNdOdG«      Zk e5ejØ                  dPdQ«      Zm eejÜ                  ejÞ                  «      dR„ «       Zp eejÜ                  ejâ                  «      dS„ «       Zr eejæ                  ejÞ                  «      dT„ «       Zt eejæ                  ejâ                  «      dU„ «       Zu eejì                  ejÞ                  «      dV„ «       Zw eejì                  ejâ                  «      dW„ «       Zx eejò                  ejÞ                  ejÞ                  «      dX„ «       Zz eejö                  ejÞ                  «      dY„ «       Z| eejú                  ejÞ                  ejü                  «      dZ„ «       Z ee�j                   e�j                  e�j                  «      d[„ «       Z‚ ee�j                   e�j                  e�j                  «      d\„ «       Z„ ee�j                   ejÞ                  ejÞ                  «      d]„ «       Z… ee�j                  e�j                  e�j                  «      d^„ «       Z‡ ee�j                  e�j                  e�j                  «      d_„ «       Zˆ ee�j                  ejÞ                  ejÞ                  «      d`„ «       Z‰ ee�j                  ejÞ                  «      da„ «       Z‹ e3e�j                  e‹«        ee�j                  ejÞ                  «      db„ «       Z� e3e�j                  e�«        ee�j                  ejÞ                  ejÞ                  «       ee�j                  ejÞ                  ejâ                  «      dc„ «       «       Z� ee�j                   ejÞ                  ejÞ                  «      dd„ «       Z‘de„ Z’ ee’«      df„ «       Z“dg„ Z”  ee�j*                  ejâ                  ejâ                  «      e”«       y)izA
Provide math calls that uses intrinsics or libc math functions.
é    N)ÚConstant)ÚRegistryÚimpl_ret_untracked)Útypeof)ÚtypesÚutilsÚconfigÚcgutils)Úoverload)Ú	signature)Útrailing_zerosÚmathimplÚfloat32Úfloat64iÿÿÿl        l   ÿÿÿÿ l            c                 ó(   — | j                  d||«      S )z<
    Return a condition testing whether *val* is a NaN.
    Úuno)Úfcmp_unordered©ÚbuilderÚvals     úk/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/cpython/mathimpl.pyÚis_nanr   (   s   € ð ×!Ñ! %¨¨cÓ2Ð2ó    c                 óî   — t        |j                  t        d«      «      }t        |j                  t        d«      «      }| j                  d||«      }| j                  d||«      }| j	                  ||«      S )zB
    Return a condition testing whether *val* is an infinite.
    z+infz-infz==)r   ÚtypeÚfloatÚfcmp_orderedÚor_)r   r   Úpos_infÚneg_infÚisposinfÚisneginfs         r   Úis_infr#   .   se   € ô �s—x‘x¤ v£Ó/€GÜ�s—x‘x¤ v£Ó/€GØ×#Ñ# D¨#¨wÓ7€HØ×#Ñ# D¨#¨wÓ7€HØ�;‰;�x Ó*Ð*r   c                 óL   — | j                  ||«      }| j                  d||«      S )z?
    Return a condition testing whether *val* is a finite.
    Úord)Úfsubr   )r   r   Úval_minus_vals      r   Ú	is_finiter(   8   s)   € ð
 —L‘L  cÓ*€MØ×Ñ  }°mÓDÐDr   c                 óº   — |j                   t        j                  j                  «       k(  sJ ‚| j	                  |t        j                  j                  d«      «      S )z1
    Bitcast a double into a 64-bit integer.
    é@   )r   ÚllvmliteÚirÚ
DoubleTypeÚbitcastÚIntTyper   s     r   Úf64_as_int64r0   @   sC   € ð �8‰8”x—{‘{×-Ñ-Ó/Ò/Ð/Ð/Ø�?‰?˜3¤§¡× 3Ñ 3°BÓ 7Ó8Ð8r   c                 óº   — |j                   t        j                  j                  d«      k(  sJ ‚| j	                  |t        j                  j                  «       «      S )z1
    Bitcast a 64-bit integer into a double.
    r*   )r   r+   r,   r/   r.   r-   r   s     r   Úint64_as_f64r2   G   sC   € ð �8‰8”x—{‘{×*Ñ*¨2Ó.Ò.Ð.Ð.Ø�?‰?˜3¤§¡× 6Ñ 6Ó 8Ó9Ð9r   c                 óº   — |j                   t        j                  j                  «       k(  sJ ‚| j	                  |t        j                  j                  d«      «      S )z0
    Bitcast a float into a 32-bit integer.
    é    )r   r+   r,   Ú	FloatTyper.   r/   r   s     r   Úf32_as_int32r6   N   sC   € ð �8‰8”x—{‘{×,Ñ,Ó.Ò.Ð.Ð.Ø�?‰?˜3¤§¡× 3Ñ 3°BÓ 7Ó8Ð8r   c                 óº   — |j                   t        j                  j                  d«      k(  sJ ‚| j	                  |t        j                  j                  «       «      S )z0
    Bitcast a 32-bit integer into a float.
    r4   )r   r+   r,   r/   r.   r5   r   s     r   Úint32_as_f32r8   U   sC   € ð �8‰8”x—{‘{×*Ñ*¨2Ó.Ò.Ð.Ð.Ø�?‰?˜3¤§¡× 5Ñ 5Ó 7Ó8Ð8r   c                 óN   — | j                  t        |j                  d«      |«      S )zB
    Negate real number *val*, with proper handling of zeros.
    g       €)r&   r   r   r   s     r   Únegate_realr:   \   s    € ð
 �<‰<œ §¡¨4Ó0°#Ó6Ð6r   c                 óœ   — | j                   }|j                  ||D �cg c]  }|j                  ‘Œ c}«      }| j                  ||«      S c c}w )z9
    Call a LLVM intrinsic floating-point operation.
    )ÚmoduleÚdeclare_intrinsicr   Úcall)r   ÚnameÚargsÚmodÚaÚintrs         r   Úcall_fp_intrinsicrD   c   sH   € ð �.‰.€CØ× Ñ  ¹Ó'=¹°1¨¯«¸Ñ'=Ó>€DØ�<‰<˜˜dÓ#Ð#ùò (>s   �A	
c                 ó   ‡ — ˆ fd„}|S )zŒ
    Return an implementation factory to convert the single integral input
    argument to a float64, then defer to the *wrapped_impl*.
    c                 ó.  •— |\  }|j                   d   }| j                  |||t        j                  «      }t	        t        j                  t        j                  «      } ‰	| |||f«      }| j                  ||t        j                  |j
                  «      S )Nr   )r@   Úcastr   r   r   Úreturn_type)
Úcontextr   Úsigr@   r   Ú
input_typeÚfpvalÚ	inner_sigÚresÚwrapped_impls
            €r   Úimplementerz2_unary_int_input_wrapper_impl.<locals>.implementerq   sr   ø€ Ø‰ˆØ—X‘X˜a‘[ˆ
Ø—‘˜W c¨:´u·}±}ÓEˆÜœeŸm™m¬U¯]©]Ó;ˆ	Ù˜7 G¨Y¸¸ÓAˆØ�|‰|˜G S¬%¯-©-¸¿¹ÓIÐIr   © )rO   rP   s   ` r   Ú_unary_int_input_wrapper_implrR   l   s   ø€ ô
Jð Ðr   c                 óZ   — t        |«      } t        | t        j                  «      |«       y ©N)rR   Úlowerr   ÚInteger)ÚfnÚ
float_implÚimpls      r   Úunary_math_int_implrZ   {   s!   € Ü(¨Ó4€DØ„Eˆ"Œe�m‰mÓ˜TÕ"r   c                 ód   ‡— t        | t        j                  «      ˆfd„«       }t        | |«       |S )zO
    Implement the math function *fn* using the LLVM intrinsic *intrcode*.
    c                 óN   •— t        |‰|«      }t        | ||j                  |«      S rT   )rD   r   rH   )rI   r   rJ   r@   rN   Úintrcodes        €r   rX   z#unary_math_intr.<locals>.float_implƒ   s&   ø€ ä ¨°4Ó8ˆÜ! '¨7°C·O±OÀSÓIÐIr   )rU   r   ÚFloatrZ   )rW   r]   rX   s    ` r   Úunary_math_intrr_      s6   ø€ ô ˆ2Œu�{‰{ÓóJó ðJô ˜˜JÔ'ØÐr   c                 ó–   ‡‡— |rt         j                  nd}ˆˆfd„} t        | t         j                  «      |«       t	        | |«       |S )a!  
    Register implementations of Python function *fn* using the
    external function named *f32extern* and *f64extern* (for float32
    and float64 inputs, respectively).
    If *int_restype* is true, then the function's return value should be
    integral, otherwise floating-point.
    Nc                 óÆ  •— |\  }|j                   }|j                  d   }| j                  |«      }t        j                  ‰t        j
                  ‰i|   }t        j                  j                  ||g«      }	t        j                  |j                   |	|¬«      }
|j                  |
|f«      }| j                  ||||j                  «      }t        | ||j                  |«      S )z9
        Implement *fn* for a types.Float input.
        r   ©r?   )r<   r@   Úget_value_typer   r   r   r+   r,   ÚFunctionTyper
   Úinsert_pure_functionr>   rG   rH   r   )rI   r   rJ   r@   r   rA   rK   ÚltyÚ	func_nameÚfntyrW   rN   Ú	f32externÚ	f64externs               €€r   rX   z%unary_math_extern.<locals>.float_impl•   sÆ   ø€ ð ‰ˆØ�n‰nˆØ—X‘X˜a‘[ˆ
Ø×$Ñ$ ZÓ0ˆä�M‰M˜9Ü�M‰M˜9ðð ñˆ	ô �{‰{×'Ñ'¨¨c¨UÓ3ˆÜ×)Ñ)¨'¯.©.¸$ÀYÔOˆØ�l‰l˜2 ˜vÓ&ˆØ�l‰l˜7 C¨°S·_±_ÓEˆÜ! '¨7°C·O±OÀSÓIÐIr   )r   Úint64rU   r^   rZ   )rW   ri   rj   Úint_restypeÚ	f_restyperX   s    ``   r   Úunary_math_externrn   ‹   sA   ù€ ñ  +”—’°€IõJð$ „Eˆ"Œe�k‰kÓ˜:Ô&ô ˜˜JÔ'àÐr   z	llvm.fabszllvm.exp)é   é   z	llvm.exp2zllvm.logz
llvm.log10z	llvm.log2zllvm.sinzllvm.cosÚlog1pfÚlog1pÚexpm1fÚexpm1ÚerffÚerfÚerfcfÚerfcÚtanfÚtanÚasinfÚasinÚacosfÚacosÚatanfÚatanÚasinhfÚasinhÚacoshfÚacoshÚatanhfÚatanhÚsinhfÚsinhÚcoshfÚcoshÚtanhfÚtanhÚlog2fÚlog2ÚceilfÚceilTÚfloorfÚfloorÚnumba_gammafÚnumba_gammaÚsqrtfÚsqrtÚtruncfÚtruncÚlgammafÚlgammac                 óR   — |\  }t        ||«      }t        | ||j                  |«      S rT   )r   r   rH   ©rI   r   rJ   r@   r   rN   s         r   Úisnan_float_implr�   Ô   ó*   € à�E€SÜ
�˜#Ó
€CÜ˜g w°·±ÀÓEÐEr   c                 óR   — t         j                  }t        | ||j                  |«      S rT   ©r
   Ú	false_bitr   rH   ©rI   r   rJ   r@   rN   s        r   Úisnan_int_implr£   Ú   ó"   € ä
×
Ñ
€CÜ˜g w°·±ÀÓEÐEr   c                 óR   — |\  }t        ||«      }t        | ||j                  |«      S rT   )r#   r   rH   rœ   s         r   Úisinf_float_implr¦   à   rž   r   c                 óR   — t         j                  }t        | ||j                  |«      S rT   r    r¢   s        r   Úisinf_int_implr¨   æ   r¤   r   c                 óR   — |\  }t        ||«      }t        | ||j                  |«      S rT   )r(   r   rH   rœ   s         r   Úisfinite_float_implrª   ì   s*   € à�E€SÜ
�G˜SÓ
!€CÜ˜g w°·±ÀÓEÐEr   c                 óR   — t         j                  }t        | ||j                  |«      S rT   )r
   Útrue_bitr   rH   r¢   s        r   Úisfinite_int_implr­   ó   s"   € ä
×
Ñ
€CÜ˜g w°·±ÀÓEÐEr   c                 ó  — |d   j                   }|j                  }t        j                  |t        j
                  j                  |||f«      d|j                  z  «      }|j                  ||«      }t        | ||j                  |«      S )Nr   zllvm.copysign.%s)r   r<   r
   Úget_or_insert_functionr+   r,   rd   Úintrinsic_namer>   r   rH   )rI   r   rJ   r@   rf   rA   rW   rN   s           r   Úcopysign_float_implr±   ù   sv   € à
ˆq‰'�,‰,€CØ
�.‰.€CÜ	×	'Ñ	'¨¬X¯[©[×-EÑ-EÀcÈCÐQTÈ:Ó-VØ(:¸S×=OÑ=OÑ(Oó
Q€Bà
�,‰,�r˜4Ó
 €CÜ˜g w°·±ÀÓEÐEr   c                 ó:  — |\  }| j                  |j                  d   «      }| j                  |j                  d   «      }t        j                  ||d¬«      }t
        j                  j                  ||t
        j                  j                  |«      f«      }dddœt        |«         }	t        j                  |j                  ||	«      }
|j                  |
||f«      }t        j                  |||j                  |«      f«      }t        | ||j                  |«      S )Nr   é   Úexprb   Únumba_frexpfÚnumba_frexp©r   Údouble)Úget_data_typer@   rH   r
   Úalloca_oncer+   r,   rd   ÚPointerTypeÚstrr¯   r<   r>   Úmake_anonymous_structÚloadr   )rI   r   rJ   r@   r   ÚflttyÚinttyÚexpptrrh   ÚfnamerW   rN   s               r   Ú
frexp_implrÃ     sö   € à�D€CØ×!Ñ! #§(¡(¨1¡+Ó.€EØ×!Ñ! #§/¡/°!Ñ"4Ó5€EÜ× Ñ  ¨%°eÔ<€FÜ�;‰;×#Ñ# E¨E´8·;±;×3JÑ3JÈ5Ó3QÐ+RÓS€DàØñ
ô ˆe‹*ñ€Eô 
×	'Ñ	'¨¯©¸¸eÓ	D€BØ
�,‰,�r˜C ˜=Ó
)€CÜ
×
'Ñ
'¨°#°w·|±|ÀFÓ7KÐ1LÓ
M€CÜ˜g w°·±ÀÓEÐEr   c                 óT  — |\  }}t        | j                  |j                  «      \  }}t        j                  j                  |||f«      }dddœt        |«         }	t        j                  |j                  ||	¬«      }
|j                  |
||f«      }t        | ||j                  |«      S )NÚnumba_ldexpfÚnumba_ldexpr·   rb   )Úmapr¹   r@   r+   r,   rd   r¼   r
   re   r<   r>   r   rH   )rI   r   rJ   r@   r   r´   r¿   rÀ   rh   rÂ   rW   rN   s               r   Ú
ldexp_implrÈ     s�   € à�H€CˆÜ�w×,Ñ,¨c¯h©hÓ7�L€Eˆ5Ü�;‰;×#Ñ# E¨E°5¨>Ó:€DàØñ
ô ˆe‹*ñ€Eô 
×	%Ñ	% g§n¡n°dÀÔ	G€BØ
�,‰,�r˜C ˜:Ó
&€CÜ˜g w°·±ÀÓEÐEr   c                 óR  — |\  }}|j                  |t        j                  j                  «       «      }|j                  |t        j                  j                  «       «      }t	        t
        j                  t
        j                  t
        j                  «      }t        | ||||f«      S rT   )Úsitofpr+   r,   r-   r   r   r   Úatan2_float_impl©rI   r   rJ   r@   ÚyÚxÚfsigs          r   Úatan2_s64_implrÐ   (  ót   € à�F€QˆØ�‰�qœ(Ÿ+™+×0Ñ0Ó2Ó3€AØ�‰�qœ(Ÿ+™+×0Ñ0Ó2Ó3€AÜ”U—]‘]¤E§M¡M´5·=±=ÓA€DÜ˜G W¨d°Q¸°FÓ;Ð;r   c                 óR  — |\  }}|j                  |t        j                  j                  «       «      }|j                  |t        j                  j                  «       «      }t	        t
        j                  t
        j                  t
        j                  «      }t        | ||||f«      S rT   )Úuitofpr+   r,   r-   r   r   r   rË   rÌ   s          r   Úatan2_u64_implrÔ   0  rÑ   r   c                 ó   — t        |«      dk(  sJ ‚|j                  }|j                  d   }| j                  |«      }t        j
                  dt        j                  di|   }t        j                  j                  |||f«      }t        j                  |j                  ||¬«      }	|j                  |	|«      }
t        | ||j                  |
«      S )Né   r   Úatan2fÚatan2rb   )Úlenr<   r@   rc   r   r   r   r+   r,   rd   r
   re   r>   r   rH   )rI   r   rJ   r@   rA   Útyrf   rg   rh   rW   rN   s              r   rË   rË   8  s´   € äˆt‹9˜Š>Ðˆ>Ø
�.‰.€CØ	�‰�!‰€BØ
×
 Ñ
  Ó
$€Cä�‰�xÜ�‰�wð
ð ñ€Iô �;‰;×#Ñ# C¨#¨s¨Ó4€DÜ	×	%Ñ	% g§n¡n°dÀÔ	K€BØ
�,‰,�r˜4Ó
 €CÜ˜g w°·±ÀÓEÐEr   c                 ó‚  — |\  }}|j                  |t        j                  j                  «       «      }|j                  |t        j                  j                  «       «      }t	        t
        j                  t
        j                  t
        j                  «      }t        | ||||f«      }t        | ||j                  |«      S rT   ©
rÊ   r+   r,   r-   r   r   r   Úhypot_float_implr   rH   ©rI   r   rJ   r@   rÎ   rÍ   rÏ   rN   s           r   Úhypot_s64_implrß   K  óˆ   € à�F€QˆØ�‰�qœ(Ÿ+™+×0Ñ0Ó2Ó3€AØ�‰�qœ(Ÿ+™+×0Ñ0Ó2Ó3€AÜ”U—]‘]¤E§M¡M´5·=±=ÓA€DÜ
˜7 G¨T°A°q°6Ó
:€CÜ˜g w°·±ÀÓEÐEr   c                 ó‚  — |\  }}|j                  |t        j                  j                  «       «      }|j                  |t        j                  j                  «       «      }t	        t
        j                  t
        j                  t
        j                  «      }t        | ||||f«      }t        | ||j                  |«      S rT   rÜ   rÞ   s           r   Úhypot_u64_implrâ   U  rà   r   c                 ó
  ‡‡— |j                   \  }}||cxk(  r|j                  k(  sJ ‚ J ‚|\  }}t        j                  t        j
                  dk(  rdndt        j                  t        j
                  dk(  rdndi|   }t        j                  ||«      Št        j
                  dk(  r+t        j                  dk(  r |t        d«      «      Šˆˆfd„}	nˆfd	„}	| j                  ||	||«      }
t        | ||j                  |
«      S )
NÚwin32Ú_hypotfÚhypotfÚ_hypotÚhypotr4   Úinfc                 ón   •— t        j                  | «      st        j                  |«      r‰S  ‰| |«      S rT   )ÚmathÚisinf)rÎ   rÍ   ré   Ú
plat_hypots     €€r   Ú
hypot_implz$hypot_float_impl.<locals>.hypot_implp  s*   ø€ Ü�z‰z˜!Œ}¤§
¡
¨1¤Ø�
Ù˜a Ó#Ð#r   c                 ó   •—  ‰| |«      S rT   rQ   )rÎ   rÍ   rí   s     €r   rî   z$hypot_float_impl.<locals>.hypot_implu  s   ø€ Ù˜a Ó#Ð#r   )r@   rH   r   r   ÚsysÚplatformr   ÚExternalFunctionr	   ÚMACHINE_BITSr   Úcompile_internalr   )rI   r   rJ   r@   ÚxtyÚytyrÎ   rÍ   rÂ   rî   rN   ré   rí   s              @@r   rÝ   rÝ   _  sç   ù€ à�x‰x�H€CˆØ�#Ô(˜Ÿ™Ò(Ð(Ñ(Ð(Ð(Ø�D€A€qô
 	�‰¤C§L¡L°GÒ$;‘yÀÜ�‰¤3§<¡<°7Ò#:‘xÀðð 
ñ€Eô ×'Ñ'¨¨sÓ3€Jä
‡|�|�wÒ¤6×#6Ñ#6¸"Ò#<Ù”%˜“,Óˆö	$ô
	$ð ×
"Ñ
" 7¨J¸¸TÓ
B€CÜ˜g w°·±ÀÓEÐEr   c                 ó¸   — |\  }| j                  |j                  t        j                  dz  «      }|j	                  ||«      }t        | ||j                  |«      S ©Né´   ©Úget_constantrH   rë   ÚpiÚfmulr   ©rI   r   rJ   r@   rÎ   ÚcoefrN   s          r   Úradians_float_implr   ~  sL   € à
�C€QØ×Ñ §¡´·±¸3±Ó?€DØ
�,‰,�q˜$Ó
€CÜ˜g w°·±ÀÓEÐEr   c                 ó¸   — |\  }| j                  |j                  dt        j                  z  «      }|j	                  ||«      }t        | ||j                  |«      S rø   rú   rþ   s          r   Údegrees_float_implr  ‰  sL   € à
�C€QØ×Ñ §¡°´t·w±w±Ó?€DØ
�,‰,�q˜$Ó
€CÜ˜g w°·±ÀÓEÐEr   c                 óT   — | j                  t        j                  |«      } |||«      S rT   )Úget_functionÚoperatorÚpow)rI   r   rJ   r@   rY   s        r   Úpow_implr  ”  s'   € ð ×Ñ¤§¡¨cÓ2€DÙ�˜ÓÐr   c                 óˆ  — t        |«      dk(  sJ ‚|j                  d   }| j                  |«      }t        j                  dt        j
                  di|   }t        j                  j                  |||f«      }t        j                  |j                  ||¬«      }|j                  ||«      }	t        | ||j                  |	«      S )NrÖ   r   Ú
nextafterfÚ	nextafterrb   )rÙ   r@   rc   r   r   r   r+   r,   rd   r
   re   r<   r>   r   rH   )
rI   r   rJ   r@   rÚ   rf   rg   rh   rW   rN   s
             r   Únextafter_implr  œ  s«   € äˆt‹9˜Š>Ðˆ>Ø	�‰�!‰€BØ
×
 Ñ
  Ó
$€Cä�‰�|Ü�‰�{ð
ð ñ€Iô �;‰;×#Ñ# C¨#¨s¨Ó4€DÜ	×	%Ñ	% g§n¡n°dÀÔ	K€BØ
�,‰,�r˜4Ó
 €CÜ˜g w°·±ÀÓEÐEr   c                  ó   — y)z8Convert integer to unsigned integer of equivalent width.NrQ   ©ÚTs    r   Ú	_unsignedr  ¬  s   € àr   c                 ó°   ‡— | t         j                  v rd„ S | t         j                  v r.t        t         dj	                  | j
                  «      «      Šˆfd„S y )Nc                 ó   — | S rT   rQ   r  s    r   Ú<lambda>z _unsigned_impl.<locals>.<lambda>³  s   € ™r   zuint{}c                 ó   •—  ‰| «      S rT   rQ   ©r  ÚnewTs    €r   r  z _unsigned_impl.<locals>.<lambda>¶  s	   ø€ ™˜aœr   )r   Úunsigned_domainÚsigned_domainÚgetattrÚformatÚbitwidthr  s    @r   Ú_unsigned_implr  °  sI   ø€ àŒE×!Ñ!Ñ!ÙÐØ	
Œe×!Ñ!Ñ	!Ü”u˜hŸo™o¨a¯j©jÓ9Ó:ˆÛ Ð ð 
"r   c                 ó¼   — |j                   \  }}||cxk(  r|j                  k(  sJ ‚ J ‚|\  }}d„ }| j                  ||||«      }	t        | ||j                  |	«      S )Nc                 óè  — t        | «      }| dk(  rt        |«      S |dk(  rt        | «      S t        | «      }t        |«      }t        ||«      }t	        t        t        j                  | |«      «      «      }t	        t        t        j                  ||«      «      «      }||k7  r3||kD  r||}}||z  }t        j                  |t        |«      «      }||k7  rŒ3t        j                   ||«      |«      }|S )zO
        Stein's algorithm, heavily cribbed from Julia implementation.
        r   )r   Úabsr   Úminr  ÚnpÚright_shiftÚ
left_shift)	rB   Úbr  ÚzaÚzbÚkÚuÚvÚrs	            r   Úgcdzgcd_impl.<locals>.gcd¾  s×   € ô �‹GˆØ�Š6œ#˜a›&�=Ø�Š6œ#˜a›&�=Ü˜AÓˆÜ˜AÓˆÜ��B‹Kˆä”cœ"Ÿ.™.¨¨BÓ/Ó0Ó1ˆÜ”cœ"Ÿ.™.¨¨BÓ/Ó0Ó1ˆØ�1ŠfØ�1ŠuØ˜!�1�Ø�‰FˆAÜ—‘˜q¤.°Ó"3Ó4ˆAð	 �1‹fô
 �M‰M™!˜A›$ Ó"ˆØˆr   )r@   rH   rô   r   )
rI   r   rJ   r@   rõ   rö   rÎ   rÍ   r*  rN   s
             r   Úgcd_implr+  ¹  sg   € Ø�x‰x�H€CˆØ�#Ô(˜Ÿ™Ò(Ð(Ñ(Ð(Ð(Ø�D€A€qòð* ×
"Ñ
" 7¨C°°dÓ
;€CÜ˜g w°·±ÀÓEÐEr   )F)–Ú__doc__rë   r  rð   Únumpyr   Úllvmlite.irr+   r   Únumba.core.imputilsr   r   Únumbar   Ú
numba.corer   r   r	   r
   Únumba.core.extendingr   Únumba.core.typingr   Únumba.cpython.unsafe.numbersr   ÚregistryrU   ÚfinfoÚdtypeÚ_NP_FLT_FINFOÚmaxÚFLT_MAXÚtinyÚFLT_MINÚ_NP_DBL_FINFOÚDBL_MAXÚDBL_MINÚFLOAT_ABS_MASKÚFLOAT_SIGN_MASKÚDOUBLE_ABS_MASKÚDOUBLE_SIGN_MASKr   r#   r(   r0   r2   r6   r8   r:   rD   rR   rZ   r_   rn   Úfabsr´   Úexp_implÚversion_infoÚexp2Ú	exp2_implÚlogÚlog_implÚlog10Ú
log10_implrŽ   Ú	log2_implÚsinÚsin_implÚcosÚcos_implrr   Ú
log1p_implrt   Ú
expm1_implrv   Úerf_implrx   Ú	erfc_implrz   Útan_implr|   Ú	asin_implr~   Ú	acos_implr€   Ú	atan_implr‚   Ú
asinh_implr„   Ú
acosh_implr†   Ú
atanh_implrˆ   Ú	sinh_implrŠ   Ú	cosh_implrŒ   Ú	tanh_implr�   Ú	ceil_implr’   Ú
floor_implÚgammaÚ
gamma_implr–   Ú	sqrt_implr˜   Ú
trunc_implrš   Úlgamma_implÚisnanr^   r�   rV   r£   rì   r¦   r¨   Úisfiniterª   r­   Úcopysignr±   ÚfrexprÃ   ÚldexpÚintcrÈ   rØ   rk   rÐ   Úuint64rÔ   rË   rè   rß   râ   rÝ   Úradiansr   Údegreesr  r  r  r
  r  r  r  r+  r*  rQ   r   r   Ú<module>rp     s‹  ðñó Û Û 
Û ã Ý  ç <Ý ß 4Ó 4Ý )Ý 'Ý 7ñ �JÓ€Ø�‰€ð �—‘˜˜Ÿ™ )Ó,Ó-€Ø
×
Ñ
€Ø
×
Ñ
€à�—‘˜˜Ÿ™ )Ó,Ó-€Ø
×
Ñ
€Ø
×
Ñ
€à€Ø€Ø$€Ø%Ð ò3ò+òEò9ò:ò9ò9ò7ò$òò#ò
ó!ñH �—	‘	˜;Ô 'Ù˜4Ÿ8™8 ZÓ0€Ø×Ñ�wÒÙ §	¡	¨;Ó7€IÙ˜4Ÿ8™8 ZÓ0€Ù˜TŸZ™Z¨Ó6€
Ù˜DŸI™I {Ó3€	Ù˜4Ÿ8™8 ZÓ0€Ù˜4Ÿ8™8 ZÓ0€á˜tŸz™z¨8°WÓ=€
Ù˜tŸz™z¨8°WÓ=€
Ù˜TŸX™X v¨uÓ5€Ù˜dŸi™i¨°&Ó9€	á˜TŸX™X v¨uÓ5€Ù˜dŸi™i¨°&Ó9€	Ù˜dŸi™i¨°&Ó9€	Ù˜dŸi™i¨°&Ó9€	á˜tŸz™z¨8°WÓ=€
Ù˜tŸz™z¨8°WÓ=€
Ù˜tŸz™z¨8°WÓ=€
Ù˜dŸi™i¨°&Ó9€	Ù˜dŸi™i¨°&Ó9€	Ù˜dŸi™i¨°&Ó9€	á˜dŸi™i¨°&Ó9€	Ù˜dŸi™i¨°&¸$Ó?€	Ù˜tŸz™z¨8°W¸dÓC€
á˜tŸz™z¨>¸=ÓI€
Ù˜dŸi™i¨°&Ó9€	Ù˜tŸz™z¨8°W¸dÓC€
Ù §¡¨Y¸ÓA€ñ €t‡z�z�5—;‘;ÓñFó  ðFñ
 €t‡z�z�5—=‘=Ó!ñFó "ðFñ
 €t‡z�z�5—;‘;ÓñFó  ðFñ
 €t‡z�z�5—=‘=Ó!ñFó "ðFñ
 €t‡}�}�e—k‘kÓ"ñFó #ðFñ €t‡}�}�e—m‘mÓ$ñFó %ðFñ
 €t‡}�}�e—k‘k 5§;¡;Ó/ñFó 0ðFñ €t‡z�z�5—;‘;ÓñFó  ðFñ  €t‡z�z�5—;‘; §
¡
Ó+ñ
Fó ,ð
Fñ  €t‡z‚z�5—;’; §¢Ó,ñ<ó -ð<ñ €t‡z‚z�5—<’< §¢Ó.ñ<ó /ð<ñ €t‡z‚z�5—;‘; §¡Ó,ñFó -ðFñ$ €t‡z‚z�5—;’; §¢Ó,ñFó -ðFñ €t‡z‚z�5—<’< §¢Ó.ñFó /ðFñ €t‡z‚z�5—;‘; §¡Ó,ñFó -ðFñ< €t‡|‚|�U—[‘[Ó!ñFó "ðFñ �D—L’LÐ"4Ô 5ñ €t‡|‚|�U—[‘[Ó!ñFó "ðFñ �D—L’LÐ"4Ô 5ñ €t‡x‚x�—‘˜eŸk™kÓ*Ù€t‡x‚x�—‘˜eŸm™mÓ,ñó -ó +ðñ €t‡~‚~�u—{‘{ E§K¡KÓ0ñFó 1ðFò	ñ 
ˆ)Óñ!ó ð!òFð< .�€d‡h‚h�—‘˜uŸ}™}Ó -¨hÕ 7r   