§
    1@ÄjƒB  ã                   ó  — 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j        Z ej         ej        d¦  «        ¦  «        Zej        Zej         Z! ej         ej        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„ Z4did„Z5 e4ej6        d¦  «          e4ej7        d ¦  «        Z8ej9        d!k    r e4ej:        d"¦  «        Z; e4ej<        d#¦  «        Z= e4ej>        d$¦  «        Z? e4ej@        d%¦  «        ZA e4ejB        d&¦  «        ZC e4ejD        d'¦  «        ZE e5ejF        d(d)¦  «        ZG e5ejH        d*d+¦  «        ZI e5ejJ        d,d-¦  «        ZK e5ejL        d.d/¦  «        ZM e5ejN        d0d1¦  «        ZO e5ejP        d2d3¦  «        ZQ e5ejR        d4d5¦  «        ZS e5ejT        d6d7¦  «        ZU e5ejV        d8d9¦  «        ZW e5ejX        d:d;¦  «        ZY e5ejZ        d<d=¦  «        Z[ e5ej\        d>d?¦  «        Z] e5ej^        d@dA¦  «        Z_ e5ej`        dBdC¦  «        Za e5ej@        dDdE¦  «        ZA e5ejb        dFdGdH¦  «        Zc e5ejd        dIdJdH¦  «        Ze e5ejf        dKdL¦  «        Zg e5ejh        dMdN¦  «        Zi e5ejj        dOdPdH¦  «        Zk e5ejl        dQdR¦  «        Zm eejn        ejo        ¦  «        dS„ ¦   «         Zp eejn        ejq        ¦  «        dT„ ¦   «         Zr eejs        ejo        ¦  «        dU„ ¦   «         Zt eejs        ejq        ¦  «        dV„ ¦   «         Zu eejv        ejo        ¦  «        dW„ ¦   «         Zw eejv        ejq        ¦  «        dX„ ¦   «         Zx eejy        ejo        ejo        ¦  «        dY„ ¦   «         Zz eej{        ejo        ¦  «        dZ„ ¦   «         Z| eej}        ejo        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jo        ejo        ¦  «        d^„ ¦   «         Z… eej†        ej�        ej�        ¦  «        d_„ ¦   «         Z‡ eej†        ejƒ        ejƒ        ¦  «        d`„ ¦   «         Zˆ eej†        ejo        ejo        ¦  «        da„ ¦   «         Z‰ eejŠ        ejo        ¦  «        db„ ¦   «         Z‹ e3ejŠ        e‹¦  «          eejŒ        ejo        ¦  «        dc„ ¦   «         Z� e3ejŒ        e�¦  «          eejŽ        ejo        ejo        ¦  «         eejŽ        ejo        ejq        ¦  «        dd„ ¦   «         ¦   «         Z� eej�        ejo        ejo        ¦  «        de„ ¦   «         Z‘df„ Z’ ee’¦  «        dg„ ¦   «         Z“dh„ Z”  eej•        ejq        ejq        ¦  «        e”¦  «         dS )jzA
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                 ó0   — |                       d||¦  «        S )z<
    Return a condition testing whether *val* is a NaN.
    Úuno)Úfcmp_unordered©ÚbuilderÚvals     úGC:\Projects\Historical\venv\Lib\site-packages\numba/cpython/mathimpl.pyÚis_nanr   (   s   € ð ×!Ò! %¨¨cÑ2Ô2Ð2ó    c                 ó  — t          |j        t          d¦  «        ¦  «        }t          |j        t          d¦  «        ¦  «        }|                      d||¦  «        }|                      d||¦  «        }|                      ||¦  «        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#   .   st   € õ �s”x¥ v¡¤Ñ/Ô/€GÝ�s”x¥ v¡¤Ñ/Ô/€GØ×#Ò# D¨#¨wÑ7Ô7€HØ×#Ò# D¨#¨wÑ7Ô7€HØ�;Š;�x Ñ*Ô*Ð*r   c                 ó\   — |                       ||¦  «        }|                      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ÔDÐDr   c                 óº   — |j         t          j                             ¦   «         k    sJ ‚|                      |t          j                             d¦  «        ¦  «        S )z1
    Bitcast a double into a 64-bit integer.
    é@   )r   ÚllvmliteÚirÚ
DoubleTypeÚbitcastÚIntTyper   s     r   Úf64_as_int64r0   @   sI   € ð Œ8•x”{×-Ò-Ñ/Ô/Ò/Ð/Ð/Ð/Ø�?Š?˜3¥¤× 3Ò 3°BÑ 7Ô 7Ñ8Ô8Ð8r   c                 óº   — |j         t          j                             d¦  «        k    sJ ‚|                      |t          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   sI   € ð Œ8•x”{×*Ò*¨2Ñ.Ô.Ò.Ð.Ð.Ð.Ø�?Š?˜3¥¤× 6Ò 6Ñ 8Ô 8Ñ9Ô9Ð9r   c                 óº   — |j         t          j                             ¦   «         k    sJ ‚|                      |t          j                             d¦  «        ¦  «        S )z0
    Bitcast a float into a 32-bit integer.
    é    )r   r+   r,   Ú	FloatTyper.   r/   r   s     r   Úf32_as_int32r6   N   sI   € ð Œ8•x”{×,Ò,Ñ.Ô.Ò.Ð.Ð.Ð.Ø�?Š?˜3¥¤× 3Ò 3°BÑ 7Ô 7Ñ8Ô8Ð8r   c                 óº   — |j         t          j                             d¦  «        k    sJ ‚|                      |t          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   sI   € ð Œ8•x”{×*Ò*¨2Ñ.Ô.Ò.Ð.Ð.Ð.Ø�?Š?˜3¥¤× 5Ò 5Ñ 7Ô 7Ñ8Ô8Ð8r   c                 óT   — |                       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Ô0°#Ñ6Ô6Ð6r   c                 ó|   — | j         }|                     |d„ |D ¦   «         ¦  «        }|                      ||¦  «        S )z9
    Call a LLVM intrinsic floating-point operation.
    c                 ó   — g | ]	}|j         ‘Œ
S © )r   )Ú.0Úas     r   ú
<listcomp>z%call_fp_intrinsic.<locals>.<listcomp>h   s   € Ð'=Ð'=Ð'=°1¨¬Ð'=Ð'=Ð'=r   )ÚmoduleÚdeclare_intrinsicÚcall)r   ÚnameÚargsÚmodÚintrs        r   Úcall_fp_intrinsicrH   c   sC   € ð Œ.€CØ× Ò  Ð'=Ð'=¸Ð'=Ñ'=Ô'=Ñ>Ô>€DØ�<Š<˜˜dÑ#Ô#Ð#r   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         }|                      |||t          j        ¦  «        }t	          t          j        t          j        ¦  «        } ‰	| |||f¦  «        }|                      ||t          j        |j        ¦  «        S )Nr   )rE   Úcastr   r   r   Úreturn_type)
Úcontextr   ÚsigrE   r   Ú
input_typeÚfpvalÚ	inner_sigÚresÚwrapped_impls
            €r   Úimplementerz2_unary_int_input_wrapper_impl.<locals>.implementerq   st   ø€ Ø‰ˆØ”X˜a”[ˆ
Ø—’˜W c¨:µu´}ÑEÔEˆÝ�eœm­U¬]Ñ;Ô;ˆ	Øˆl˜7 G¨Y¸¸ÑAÔAˆØ�|Š|˜G S­%¬-¸¼ÑIÔIÐIr   r=   )rS   rT   s   ` r   Ú_unary_int_input_wrapper_implrU   l   s)   ø€ ð
Jð Jð Jð Jð Jð Ðr   c                 ój   — t          |¦  «        } t          | t          j        ¦  «        |¦  «         d S ©N)rU   Úlowerr   ÚInteger)ÚfnÚ
float_implÚimpls      r   Úunary_math_int_implr]   {   s1   € Ý(¨Ñ4Ô4€DØ…Eˆ"�eŒmÑÔ˜TÑ"Ô"Ð"Ð"Ð"r   c                 ór   ‡— t          | t          j        ¦  «        ˆfd„¦   «         }t          | |¦  «         |S )zO
    Implement the math function *fn* using the LLVM intrinsic *intrcode*.
    c                 óT   •— t          |‰|¦  «        }t          | ||j        |¦  «        S rW   )rH   r   rL   )rM   r   rN   rE   rR   Úintrcodes        €r   r[   z#unary_math_intr.<locals>.float_implƒ   s*   ø€ å ¨°4Ñ8Ô8ˆÝ! '¨7°C´OÀSÑIÔIÐIr   )rX   r   ÚFloatr]   )rZ   r`   r[   s    ` r   Úunary_math_intrrb      sR   ø€ õ ˆ2�uŒ{ÑÔðJð Jð Jð Jñ ÔðJõ ˜˜JÑ'Ô'Ð'ØÐr   Fc                 óœ   ‡‡— |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         }|                      |¦  «        }t          j        ‰t          j        ‰i|         }t          j                             ||g¦  «        }	t          j
        |j         |	|¬¦  «        }
|                     |
|f¦  «        }|                      ||||j        ¦  «        }t          | ||j        |¦  «        S )z9
        Implement *fn* for a types.Float input.
        r   ©rD   )rA   rE   Úget_value_typer   r   r   r+   r,   ÚFunctionTyper
   Úinsert_pure_functionrC   rK   rL   r   )rM   r   rN   rE   r   rF   rO   ÚltyÚ	func_nameÚfntyrZ   rR   Ú	f32externÚ	f64externs               €€r   r[   z%unary_math_extern.<locals>.float_impl•   sÈ   ø€ ð ‰ˆØŒnˆØ”X˜a”[ˆ
Ø×$Ò$ ZÑ0Ô0ˆåŒM˜9ÝŒM˜9ðð ôˆ	õ Œ{×'Ò'¨¨c¨UÑ3Ô3ˆÝÔ)¨'¬.¸$ÀYÐOÑOÔOˆØ�lŠl˜2 ˜vÑ&Ô&ˆØ�lŠl˜7 C¨°S´_ÑEÔEˆÝ! '¨7°C´OÀSÑIÔIÐIr   )r   Úint64rX   ra   r]   )rZ   rl   rm   Úint_restypeÚ	f_restyper[   s    ``   r   Úunary_math_externrq   ‹   sp   øø€ ð  +Ð4•”�°€IðJð Jð Jð Jð Jð Jð$ …Eˆ"�eŒ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                 óX   — |\  }t          ||¦  «        }t          | ||j        |¦  «        S rW   )r   r   rL   ©rM   r   rN   rE   r   rR   s         r   Úisnan_float_implr    Ô   ó.   € à�E€SÝ
�˜#Ñ
Ô
€CÝ˜g w°´ÀÑEÔEÐEr   c                 óH   — t           j        }t          | ||j        |¦  «        S rW   ©r
   Ú	false_bitr   rL   ©rM   r   rN   rE   rR   s        r   Úisnan_int_implr¦   Ú   ó    € å
Ô
€CÝ˜g w°´ÀÑEÔEÐEr   c                 óX   — |\  }t          ||¦  «        }t          | ||j        |¦  «        S rW   )r#   r   rL   rŸ   s         r   Úisinf_float_implr©   à   r¡   r   c                 óH   — t           j        }t          | ||j        |¦  «        S rW   r£   r¥   s        r   Úisinf_int_implr«   æ   r§   r   c                 óX   — |\  }t          ||¦  «        }t          | ||j        |¦  «        S rW   )r(   r   rL   rŸ   s         r   Úisfinite_float_implr­   ì   s.   € à�E€SÝ
�G˜SÑ
!Ô
!€CÝ˜g w°´ÀÑEÔEÐEr   c                 óH   — t           j        }t          | ||j        |¦  «        S rW   )r
   Útrue_bitr   rL   r¥   s        r   Úisfinite_int_implr°   ó   s    € å
Ô
€CÝ˜g w°´ÀÑEÔEÐEr   c                 ó   — |d         j         }|j        }t          j        |t          j                             |||f¦  «        d|j        z  ¦  «        }|                     ||¦  «        }t          | ||j
        |¦  «        S )Nr   zllvm.copysign.%s)r   rA   r
   Úget_or_insert_functionr+   r,   rg   Úintrinsic_namerC   r   rL   )rM   r   rN   rE   ri   rF   rZ   rR   s           r   Úcopysign_float_implr´   ù   sw   € à
ˆqŒ'Œ,€CØ
Œ.€CÝ	Ô	'¨­X¬[×-EÒ-EÀcÈCÐQTÈ:Ñ-VÔ-VØ(:¸SÔ=OÑ(Oñ
Qô 
Q€Bà
�,Š,�r˜4Ñ
 Ô
 €CÝ˜g w°´ÀÑEÔEÐEr   c                 óN  — |\  }|                       |j        d         ¦  «        }|                       |j        d         ¦  «        }t          j        ||d¬¦  «        }t
          j                             ||t
          j                             |¦  «        f¦  «        }dddœt          |¦  «                 }	t          j
        |j        ||	¦  «        }
|                     |
||f¦  «        }t          j        |||                     |¦  «        f¦  «        }t          | ||j        |¦  «        S )Nr   é   Úexpre   Únumba_frexpfÚnumba_frexp©r   Údouble)Úget_data_typerE   rL   r
   Úalloca_oncer+   r,   rg   ÚPointerTypeÚstrr²   rA   rC   Úmake_anonymous_structÚloadr   )rM   r   rN   rE   r   ÚflttyÚinttyÚexpptrrk   ÚfnamerZ   rR   s               r   Ú
frexp_implrÆ     s	  € à�D€CØ×!Ò! #¤(¨1¤+Ñ.Ô.€EØ×!Ò! #¤/°!Ô"4Ñ5Ô5€EÝÔ  ¨%°eÐ<Ñ<Ô<€FÝŒ;×#Ò# E¨Eµ8´;×3JÒ3JÈ5Ñ3QÔ3QÐ+RÑSÔS€DàØð
ð 
õ ˆe‰*Œ*ô€Eõ 
Ô	'¨¬¸¸eÑ	DÔ	D€BØ
�,Š,�r˜C ˜=Ñ
)Ô
)€CÝ
Ô
'¨°#°w·|²|ÀFÑ7KÔ7KÐ1LÑ
MÔ
M€CÝ˜g w°´ÀÑEÔEÐEr   c                 ó�  — |\  }}t          | j        |j        ¦  «        \  }}t          j                             |||f¦  «        }dddœt          |¦  «                 }	t          j        |j	        ||	¬¦  «        }
|
j        d          
                    d¦  «         |                     |
||f¦  «        }t          | ||j        |¦  «        S )NÚnumba_ldexpfÚnumba_ldexprº   re   r¶   Úsignext)Úmapr¼   rE   r+   r,   rg   r¿   r
   rh   rA   Úadd_attributerC   r   rL   )rM   r   rN   rE   r   r·   rÂ   rÃ   rk   rÅ   rZ   rR   s               r   Ú
ldexp_implrÍ     sÄ   € à�H€CˆÝ�wÔ,¨c¬hÑ7Ô7�L€Eˆ5ÝŒ;×#Ò# E¨E°5¨>Ñ:Ô:€DàØð
ð 
õ ˆe‰*Œ*ô€Eõ 
Ô	% g¤n°dÀÐ	GÑ	GÔ	G€Bð „GˆA„J×Ò˜YÑ'Ô'Ð'Ø
�,Š,�r˜C ˜:Ñ
&Ô
&€CÝ˜g w°´ÀÑEÔEÐEr   c                 óZ  — |\  }}|                      |t          j                             ¦   «         ¦  «        }|                      |t          j                             ¦   «         ¦  «        }t	          t
          j        t
          j        t
          j        ¦  «        }t          | ||||f¦  «        S rW   )Úsitofpr+   r,   r-   r   r   r   Úatan2_float_impl©rM   r   rN   rE   ÚyÚxÚfsigs          r   Úatan2_s64_implrÕ   .  ó|   € à�F€QˆØ�Š�q�(œ+×0Ò0Ñ2Ô2Ñ3Ô3€AØ�Š�q�(œ+×0Ò0Ñ2Ô2Ñ3Ô3€AÝ•U”]¥E¤Mµ5´=ÑAÔA€DÝ˜G W¨d°Q¸°FÑ;Ô;Ð;r   c                 óZ  — |\  }}|                      |t          j                             ¦   «         ¦  «        }|                      |t          j                             ¦   «         ¦  «        }t	          t
          j        t
          j        t
          j        ¦  «        }t          | ||||f¦  «        S rW   )Úuitofpr+   r,   r-   r   r   r   rÐ   rÑ   s          r   Úatan2_u64_implrÙ   6  rÖ   r   c                 ó”  — t          |¦  «        dk    sJ ‚|j        }|j        d         }|                      |¦  «        }t          j        dt          j        di|         }t          j         	                    |||f¦  «        }t          j        |j        ||¬¦  «        }	|                     |	|¦  «        }
t          | ||j        |
¦  «        S )Né   r   Úatan2fÚatan2re   )ÚlenrA   rE   rf   r   r   r   r+   r,   rg   r
   rh   rC   r   rL   )rM   r   rN   rE   rF   Útyri   rj   rk   rZ   rR   s              r   rÐ   rÐ   >  s¸   € åˆt‰9Œ9˜Š>ˆ>ˆ>ˆ>Ø
Œ.€CØ	Œ�!Œ€BØ
×
 Ò
  Ñ
$Ô
$€CåŒ�xÝŒ�wð
ð ô€Iõ Œ;×#Ò# C¨#¨s¨Ñ4Ô4€DÝ	Ô	% g¤n°dÀÐ	KÑ	KÔ	K€BØ
�,Š,�r˜4Ñ
 Ô
 €CÝ˜g w°´ÀÑEÔEÐEr   c                 óˆ  — |\  }}|                      |t          j                             ¦   «         ¦  «        }|                      |t          j                             ¦   «         ¦  «        }t	          t
          j        t
          j        t
          j        ¦  «        }t          | ||||f¦  «        }t          | ||j	        |¦  «        S rW   ©
rÏ   r+   r,   r-   r   r   r   Úhypot_float_implr   rL   ©rM   r   rN   rE   rÓ   rÒ   rÔ   rR   s           r   Úhypot_s64_implrä   Q  ó‘   € à�F€QˆØ�Š�q�(œ+×0Ò0Ñ2Ô2Ñ3Ô3€AØ�Š�q�(œ+×0Ò0Ñ2Ô2Ñ3Ô3€AÝ•U”]¥E¤Mµ5´=ÑAÔA€DÝ
˜7 G¨T°A°q°6Ñ
:Ô
:€CÝ˜g w°´ÀÑEÔEÐEr   c                 óˆ  — |\  }}|                      |t          j                             ¦   «         ¦  «        }|                      |t          j                             ¦   «         ¦  «        }t	          t
          j        t
          j        t
          j        ¦  «        }t          | ||||f¦  «        }t          | ||j	        |¦  «        S rW   rá   rã   s           r   Úhypot_u64_implrç   [  rå   r   c                 óè  ‡‡— |j         \  }}||cxk    r|j        k    sn 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	„}	|                      ||	||¦  «        }
t          | ||j        |
¦  «        S )
NÚwin32Ú_hypotfÚhypotfÚ_hypotÚhypotr4   Úinfc                 óp   •— t          j        | ¦  «        st          j        |¦  «        r‰S  ‰| |¦  «        S rW   )ÚmathÚisinf)rÓ   rÒ   rî   Ú
plat_hypots     €€r   Ú
hypot_implz$hypot_float_impl.<locals>.hypot_implv  s9   ø€ ÝŒz˜!‰}Œ}ð ¥¤
¨1¡¤ð Ø�
Ø�:˜a Ñ#Ô#Ð#r   c                 ó   •—  ‰| |¦  «        S rW   r=   )rÓ   rÒ   rò   s     €r   ró   z$hypot_float_impl.<locals>.hypot_impl{  s   ø€ Ø�:˜a Ñ#Ô#Ð#r   )rE   rL   r   r   ÚsysÚplatformr   ÚExternalFunctionr	   ÚMACHINE_BITSr   Úcompile_internalr   )rM   r   rN   rE   ÚxtyÚytyrÓ   rÒ   rÅ   ró   rR   rî   rò   s              @@r   râ   râ   e  s0  øø€ àŒx�H€CˆØ�#Ð(Ð(Ò(Ð(˜œÒ(Ð(Ð(Ð(Ð(Ð(Ø�D€A€qõ
 	Œ¥C¤L°GÒ$;Ð$;�y�yÀÝŒ¥3¤<°7Ò#:Ð#:�x�xÀðð 
ô€Eõ Ô'¨¨sÑ3Ô3€Jå
„|�wÒÐ¥6Ô#6¸"Ò#<Ð#<Øˆc•%˜‘,”,ÑÔˆð	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð
	$ð 	$ð 	$ð 	$ð 	$ð ×
"Ò
" 7¨J¸¸TÑ
BÔ
B€CÝ˜g w°´ÀÑEÔEÐEr   c                 ó´   — |\  }|                       |j        t          j        dz  ¦  «        }|                     ||¦  «        }t          | ||j        |¦  «        S ©Né´   ©Úget_constantrL   rð   ÚpiÚfmulr   ©rM   r   rN   rE   rÓ   ÚcoefrR   s          r   Úradians_float_implr  „  sO   € à
�C€QØ×Ò ¤µ´¸3±Ñ?Ô?€DØ
�,Š,�q˜$Ñ
Ô
€CÝ˜g w°´ÀÑEÔEÐEr   c                 ó´   — |\  }|                       |j        dt          j        z  ¦  «        }|                     ||¦  «        }t          | ||j        |¦  «        S rý   rÿ   r  s          r   Údegrees_float_implr  �  sO   € à
�C€QØ×Ò ¤°µt´w±Ñ?Ô?€DØ
�,Š,�q˜$Ñ
Ô
€CÝ˜g w°´ÀÑEÔEÐEr   c                 óZ   — |                       t          j        |¦  «        } |||¦  «        S rW   )Úget_functionÚoperatorÚpow)rM   r   rN   rE   r\   s        r   Úpow_implr  š  s-   € ð ×Ò¥¤¨cÑ2Ô2€DØˆ4�˜ÑÔÐr   c                 ó†  — t          |¦  «        dk    sJ ‚|j        d         }|                      |¦  «        }t          j        dt          j        di|         }t          j                             |||f¦  «        }t          j
        |j        ||¬¦  «        }|                     ||¦  «        }	t          | ||j        |	¦  «        S )NrÛ   r   Ú
nextafterfÚ	nextafterre   )rÞ   rE   rf   r   r   r   r+   r,   rg   r
   rh   rA   rC   r   rL   )
rM   r   rN   rE   rß   ri   rj   rk   rZ   rR   s
             r   Únextafter_implr  ¢  s±   € åˆt‰9Œ9˜Š>ˆ>ˆ>ˆ>Ø	Œ�!Œ€BØ
×
 Ò
  Ñ
$Ô
$€CåŒ�|ÝŒ�{ð
ð ô€Iõ Œ;×#Ò# C¨#¨s¨Ñ4Ô4€DÝ	Ô	% g¤n°dÀÐ	KÑ	KÔ	K€BØ
�,Š,�r˜4Ñ
 Ô
 €CÝ˜g w°´ÀÑEÔEÐEr   c                 ó   — dS )z8Convert integer to unsigned integer of equivalent width.Nr=   ©ÚTs    r   Ú	_unsignedr  ²  s   € à€Dr   c                 óª   ‡— | t           j        v rd„ S | t           j        v r2t          t           d                     | j        ¦  «        ¦  «        Šˆfd„S d S )Nc                 ó   — | S rW   r=   r  s    r   ú<lambda>z _unsigned_impl.<locals>.<lambda>¹  s   € ˜€ r   zuint{}c                 ó   •—  ‰| ¦  «        S rW   r=   ©r  ÚnewTs    €r   r  z _unsigned_impl.<locals>.<lambda>¼  s   ø€ ˜˜˜a™œ€ r   )r   Úunsigned_domainÚsigned_domainÚgetattrÚformatÚbitwidthr  s    @r   Ú_unsigned_implr   ¶  s[   ø€ à�EÔ!Ð!Ð!Øˆ{ÐØ	
�eÔ!Ð	!Ð	!Ý•u˜hŸošo¨a¬jÑ9Ô9Ñ:Ô:ˆØ Ð Ð Ð Ð ð 
"Ð	!r   c                 ó°   — |j         \  }}||cxk    r|j        k    sn J ‚|\  }}d„ }|                      ||||¦  «        }	t          | ||j        |	¦  «        S )Nc                 óF  — t          | ¦  «        }| dk    rt          |¦  «        S |dk    rt          | ¦  «        S t          | ¦  «        }t          |¦  «        }t          ||¦  «        }t	          t          t          j        | |¦  «        ¦  «        ¦  «        }t	          t          t          j        ||¦  «        ¦  «        ¦  «        }||k    r7||k    r||}}||z  }t          j        |t          |¦  «        ¦  «        }||k    °7t          j         ||¦  «        |¦  «        }|S )zO
        Stein's algorithm, heavily cribbed from Julia implementation.
        r   )r   Úabsr   Úminr  ÚnpÚright_shiftÚ
left_shift)	r?   Úbr  ÚzaÚzbÚkÚuÚvÚrs	            r   Úgcdzgcd_impl.<locals>.gcdÄ  s  € õ �‰GŒGˆØ�Š6ˆ6�#˜a™&œ&�=Ø�Š6ˆ6�#˜a™&œ&�=Ý˜AÑÔˆÝ˜AÑÔˆÝ��B‰KŒKˆå•c�"œ.¨¨BÑ/Ô/Ñ0Ô0Ñ1Ô1ˆÝ•c�"œ.¨¨BÑ/Ô/Ñ0Ô0Ñ1Ô1ˆØ�1ŠfˆfØ�1ŠuˆuØ˜!�1�Ø�‰FˆAÝ”˜q¥.°Ñ"3Ô"3Ñ4Ô4ˆAð	 �1Šfˆfõ
 ŒM˜!˜!˜A™$œ$ Ñ"Ô"ˆØˆr   )rE   rL   rù   r   )
rM   r   rN   rE   rú   rû   rÓ   rÒ   r/  rR   s
             r   Úgcd_implr0  ¿  s}   € ØŒx�H€CˆØ�#Ð(Ð(Ò(Ð(˜œÒ(Ð(Ð(Ð(Ð(Ð(Ø�D€A€qðð ð ð* ×
"Ò
" 7¨C°°dÑ
;Ô
;€CÝ˜g w°´ÀÑEÔ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   ÚregistryrX   Ú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:   rH   rU   r]   rb   rq   Úfabsr·   Úexp_implÚversion_infoÚexp2Ú	exp2_implÚlogÚlog_implÚlog10Ú
log10_implr‘   Ú	log2_implÚsinÚsin_implÚcosÚcos_implru   Ú
log1p_implrw   Ú
expm1_implry   Úerf_implr{   Ú	erfc_implr}   Ú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Úisnanra   r    rY   r¦   rñ   r©   r«   Úisfiniter­   r°   Úcopysignr´   ÚfrexprÆ   ÚldexpÚintcrÍ   rÝ   rn   rÕ   Úuint64rÙ   rÐ   rí   rä   rç   râ   Úradiansr  Údegreesr  r  r  r  r  r  r   r0  r/  r=   r   r   ú<module>ru     s
	  ððð ð €€€Ø €€€Ø 
€
€
€
Ø Ð Ð Ð à Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø Ð Ð Ð Ð Ð Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø )Ð )Ð )Ð )Ð )Ð )Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7ð ˆ8�JÑÔ€ØŒ€ð �”˜˜œ )Ñ,Ô,Ñ-Ô-€Ø
Ô
€Ø
Ô
€à�”˜˜œ )Ñ,Ô,Ñ-Ô-€Ø
Ô
€Ø
Ô
€à€Ø€Ø$€Ø%Ð ð3ð 3ð 3ð+ð +ð +ðEð Eð Eð9ð 9ð 9ð:ð :ð :ð9ð 9ð 9ð9ð 9ð 9ð7ð 7ð 7ð$ð $ð $ðð ð ð#ð #ð #ð
ð 
ð 
ð!ð !ð !ð !ðH €�”	˜;Ñ 'Ô 'Ð 'Øˆ?˜4œ8 ZÑ0Ô0€ØÔ�wÒÐØ� ¤	¨;Ñ7Ô7€IØˆ?˜4œ8 ZÑ0Ô0€Øˆ_˜TœZ¨Ñ6Ô6€
ØˆO˜DœI {Ñ3Ô3€	Øˆ?˜4œ8 ZÑ0Ô0€Øˆ?˜4œ8 ZÑ0Ô0€àÐ˜tœz¨8°WÑ=Ô=€
ØÐ˜tœz¨8°WÑ=Ô=€
ØÐ˜TœX v¨uÑ5Ô5€ØÐ˜dœi¨°&Ñ9Ô9€	àÐ˜TœX v¨uÑ5Ô5€ØÐ˜dœi¨°&Ñ9Ô9€	ØÐ˜dœi¨°&Ñ9Ô9€	ØÐ˜dœi¨°&Ñ9Ô9€	àÐ˜tœz¨8°WÑ=Ô=€
ØÐ˜tœz¨8°WÑ=Ô=€
ØÐ˜tœz¨8°WÑ=Ô=€
ØÐ˜dœi¨°&Ñ9Ô9€	ØÐ˜dœi¨°&Ñ9Ô9€	ØÐ˜dœi¨°&Ñ9Ô9€	àÐ˜dœi¨°&Ñ9Ô9€	ØÐ˜dœi¨°&¸$Ñ?Ô?€	ØÐ˜tœz¨8°W¸dÑCÔC€
àÐ˜tœz¨>¸=ÑIÔI€
ØÐ˜dœi¨°&Ñ9Ô9€	ØÐ˜tœz¨8°W¸dÑCÔC€
ØÐ ¤¨Y¸ÑAÔA€ð €€t„z�5”;ÑÔðFð Fñ  ÔðFð
 €€t„z�5”=Ñ!Ô!ðFð Fñ "Ô!ðFð
 €€t„z�5”;ÑÔðFð Fñ  ÔðFð
 €€t„z�5”=Ñ!Ô!ðFð Fñ "Ô!ðFð
 €€t„}�e”kÑ"Ô"ðFð Fñ #Ô"ðFð €€t„}�e”mÑ$Ô$ðFð Fñ %Ô$ðFð
 €€t„}�e”k 5¤;Ñ/Ô/ðFð Fñ 0Ô/ðFð €€t„z�5”;ÑÔðFð Fñ  ÔðFð  €€t„z�5”; ¤
Ñ+Ô+ðFð Fñ ,Ô+ðFð, €€t„z�5”; ¤Ñ,Ô,ð<ð <ñ -Ô,ð<ð €€t„z�5”< ¤Ñ.Ô.ð<ð <ñ /Ô.ð<ð €€t„z�5”; ¤Ñ,Ô,ðFð Fñ -Ô,ðFð$ €€t„z�5”; ¤Ñ,Ô,ðFð Fñ -Ô,ðFð €€t„z�5”< ¤Ñ.Ô.ðFð Fñ /Ô.ðFð €€t„z�5”; ¤Ñ,Ô,ðFð Fñ -Ô,ðFð< €€t„|�U”[Ñ!Ô!ðFð Fñ "Ô!ðFð Ð �D”LÐ"4Ñ 5Ô 5Ð 5ð €€t„|�U”[Ñ!Ô!ðFð Fñ "Ô!ðFð Ð �D”LÐ"4Ñ 5Ô 5Ð 5ð €€t„x�”˜eœkÑ*Ô*Ø€€t„x�”˜eœmÑ,Ô,ðð ñ -Ô,ñ +Ô*ðð €€t„~�u”{ E¤KÑ0Ô0ðFð Fñ 1Ô0ðFð	ð 	ð 	ð 
€ˆ)ÑÔð!ð !ñ Ôð!ðFð Fð Fð< .€€€d„h�”˜uœ}Ñ -Ô -¨hÑ 7Ô 7Ð 7Ð 7Ð 7r   