§
    ƒÛgd<  ã                   ó^  — 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„ Z4ded„Z5 e4ej6        d¦  «          e4ej7        d ¦  «        Z8 e4ej9        d!¦  «        Z: e4ej;        d"¦  «        Z< e4ej=        d#¦  «        Z> e4ej?        d$¦  «        Z@ e5ejA        d%d&¦  «        ZB e5ejC        d'd(¦  «        ZD e5ejE        d)d*¦  «        ZF e5ejG        d+d,¦  «        ZH e5ejI        d-d.¦  «        ZJ e5ejK        d/d0¦  «        ZL e5ejM        d1d2¦  «        ZN e5ejO        d3d4¦  «        ZP e5ejQ        d5d6¦  «        ZR e5ejS        d7d8¦  «        ZT e5ejU        d9d:¦  «        ZV e5ejW        d;d<¦  «        ZX e5ejY        d=d>¦  «        ZZ e5ej[        d?d@¦  «        Z\ e5ej]        dAdB¦  «        Z^ e5ej_        dCdDdE¦  «        Z` e5eja        dFdGdE¦  «        Zb e5ejc        dHdI¦  «        Zd e5eje        dJdK¦  «        Zf e5ejg        dLdMdE¦  «        Zh e5eji        dNdO¦  «        Zj eejk        ejl        ¦  «        dP„ ¦   «         Zm eejk        ejn        ¦  «        dQ„ ¦   «         Zo eejp        ejl        ¦  «        dR„ ¦   «         Zq eejp        ejn        ¦  «        dS„ ¦   «         Zr eejs        ejl        ¦  «        dT„ ¦   «         Zt eejs        ejn        ¦  «        dU„ ¦   «         Zu eejv        ejl        ejl        ¦  «        dV„ ¦   «         Zw eejx        ejl        ¦  «        dW„ ¦   «         Zy eejz        ejl        ej{        ¦  «        dX„ ¦   «         Z| eej}        ej~        ej~        ¦  «        dY„ ¦   «         Z eej}        ej€        ej€        ¦  «        dZ„ ¦   «         Z� eej}        ejl        ejl        ¦  «        d[„ ¦   «         Z‚ eejƒ        ej~        ej~        ¦  «        d\„ ¦   «         Z„ eejƒ        ej€        ej€        ¦  «        d]„ ¦   «         Z… eejƒ        ejl        ejl        ¦  «        d^„ ¦   «         Z† eej‡        ejl        ¦  «        d_„ ¦   «         Zˆ e3ej‡        eˆ¦  «          eej‰        ejl        ¦  «        d`„ ¦   «         ZŠ e3ej‰        eŠ¦  «          eej‹        ejl        ejl        ¦  «         eej‹        ejl        ejn        ¦  «        da„ ¦   «         ¦   «         ZŒdb„ Z� ee�¦  «        dc„ ¦   «         ZŽdd„ Z�  eej�        ejn        ejn        ¦  «        e�¦  «         dS )fzA
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     úL/granary/edev/quantum/lib/python3.11/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.expzllvm.logz
llvm.log10z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                 óP  — |\  }}t          | j        |j        ¦  «        \  }}t          j                             |||f¦  «        }dddœt          |¦  «                 }	t          j        |j	        ||	¬¦  «        }
| 
                    |
||f¦  «        }t          | ||j        |¦  «        S )NÚnumba_ldexpfÚnumba_ldexpr¸   re   )Úmaprº   rE   r+   r,   rg   r½   r
   rh   rA   rC   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Ø
�,Š,�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Õ   -  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Ì   5  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à   H  ó‘   € à�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á   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_implm  s9   ø€ ÝŒz˜!‰}Œ}ð ¥¤
¨1¡¤ð Ø�
Ø�:˜a Ñ#Ô#Ð#r   c                 ó   •—  ‰| |¦  «        S rW   r=   )rÏ   rÎ   rî   s     €r   rï   z$hypot_float_impl.<locals>.hypot_implr  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Þ   \  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                 ó   — 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_implr(  §  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ÚlogÚlog_implÚlog10Ú
log10_implÚsinÚsin_implÚcosÚcos_implrs   Ú
log1p_implru   Ú
expm1_implrw   Úerf_implry   Ú	erfc_implr{   Útan_implr}   Ú	asin_implr   Ú	acos_implr�   Ú	atan_implrƒ   Ú
asinh_implr…   Ú
acosh_implr‡   Ú
atanh_implr‰   Ú	sinh_implr‹   Ú	cosh_implr�   Ú	tanh_implr�   Ú	log2_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'  r=   r   r   ú<module>rj     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€Øˆ?˜4œ8 ZÑ0Ô0€Øˆ_˜TœZ¨Ñ6Ô6€
Øˆ?˜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Ñ,Ô,ðð ñ -Ô,ñ +Ô*ðð	ð 	ð 	ð 
€ˆ)ÑÔð!ð !ñ Ôð!ðFð Fð Fð< .€€€d„h�”˜uœ}Ñ -Ô -¨hÑ 7Ô 7Ð 7Ð 7Ð 7r   