§
    2@Äj?  ã                   ót  — 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
 ddlmZmZmZ ddlmZ ddlmZ ddlm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„ Z*d„ Z+d„ Z,d„ Z-d„ Z.ded„Z/ e.ej0        d¦  «          e.ej1        d¦  «        Z2ej3        dk    r e.ej4        d ¦  «        Z5 e.ej6        d!¦  «        Z7 e.ej8        d"¦  «        Z9 e.ej:        d#¦  «        Z; e.ej<        d$¦  «        Z= e/ej>        d%d&¦  «        Z? e/ej@        d'd(¦  «        ZA e/ejB        d)d*¦  «        ZC e/ejD        d+d,¦  «        ZE e/ejF        d-d.¦  «        ZG e/ejH        d/d0¦  «        ZI e/ejJ        d1d2¦  «        ZK e/ejL        d3d4¦  «        ZM e/ejN        d5d6¦  «        ZO e/ejP        d7d8¦  «        ZQ e/ejR        d9d:¦  «        ZS e/ejT        d;d<¦  «        ZU e/ejV        d=d>¦  «        ZW e/ejX        d?d@¦  «        ZY e/ejZ        dAdB¦  «        Z[ e/ej\        dCdDdE¦  «        Z] e/ej^        dFdGdE¦  «        Z_ e/ej`        dHdI¦  «        Za e/ejb        dJdK¦  «        Zc e/ejd        dLdMdE¦  «        Ze e/ejf        dNdO¦  «        ZgdP„ ZhdQ„ ZidR„ ZjdS„ ZkdT„ ZldU„ ZmdV„ ZndW„ ZodX„ ZpdY„ ZqdZ„ Zrd[„ Zsd\„ Ztd]„ Zud^„ Zvd_„ Zw e-ejx        ew¦  «         d`„ Zy e-ejz        ey¦  «         da„ Z{db„ Z| ee|¦  «        dc„ ¦   «         Z}dd„ Z~dS )fzA
Provide math calls that uses intrinsics or libc math functions.
é    N)ÚConstant)Úimpl_ret_untracked)ÚtypesÚconfigÚcgutils)Úoverload)Ú	signature)Útrailing_zerosÚ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/np/math/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$   7   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_int64r,   ?   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_f64r.   F   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_int32r2   M   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.
    r0   )r   r'   r(   r+   r*   r1   r   s     r   Úint32_as_f32r4   T   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_realr6   [   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>g   s   € Ð'=Ð'=Ð'=°1¨¬Ð'=Ð'=Ð'=r   )ÚmoduleÚdeclare_intrinsicÚcall)r   ÚnameÚargsÚmodÚintrs        r   Úcall_fp_intrinsicrD   b   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   )rA   Úcastr   r   r	   Úreturn_type)
Úcontextr   ÚsigrA   r   Ú
input_typeÚfpvalÚ	inner_sigÚresÚwrapped_impls
            €r   Úimplementerz2_unary_int_input_wrapper_impl.<locals>.implementerp   st   ø€ Ø‰ˆØ”X˜a”[ˆ
Ø—’˜W c¨:µu´}ÑEÔEˆÝ�eœm­U¬]Ñ;Ô;ˆ	Øˆl˜7 G¨Y¸¸ÑAÔAˆØ�|Š|˜G S­%¬-¸¼ÑIÔIÐIr   r9   )rO   rP   s   ` r   Ú_unary_int_input_wrapper_implrQ   k   s)   ø€ ð
Jð Jð Jð Jð Jð Ðr   c                 ó$   — t          |¦  «        }d S ©N)rQ   )ÚfnÚ
float_implÚimpls      r   Úunary_math_int_implrW   z   s   € Ý(¨Ñ4Ô4€D€D€Dr   c                 ó2   ‡— ˆfd„}t          | |¦  «         |S )zO
    Implement the math function *fn* using the LLVM intrinsic *intrcode*.
    c                 óT   •— t          |‰|¦  «        }t          | ||j        |¦  «        S rS   )rD   r   rH   )rI   r   rJ   rA   rN   Úintrcodes        €r   rU   z#unary_math_intr.<locals>.float_implƒ   s*   ø€ Ý ¨°4Ñ8Ô8ˆÝ! '¨7°C´OÀSÑIÔIÐIr   )rW   )rT   rZ   rU   s    ` r   Úunary_math_intrr[   ~   s9   ø€ ð
Jð Jð Jð Jð Jõ ˜˜JÑ'Ô'Ð'ØÐr   Fc                 óV   ‡‡— |rt           j        nd}ˆˆfd„}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   ©r@   )r=   rA   Úget_value_typer   r   r   r'   r(   ÚFunctionTyper   Úinsert_pure_functionr?   rG   rH   r   )rI   r   rJ   rA   r   rB   rK   ÚltyÚ	func_nameÚfntyrT   rN   Ú	f32externÚ	f64externs               €€r   rU   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   Úint64rW   )rT   re   rf   Úint_restypeÚ	f_restyperU   s    ``   r   Úunary_math_externrj   Š   sR   øø€ ð  +Ð4•”�°€IðJð Jð Jð Jð Jð Jõ* ˜˜JÑ'Ô'Ð'àÐr   z	llvm.fabszllvm.exp)é   é   z	llvm.exp2z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 rS   )r   r   rH   ©rI   r   rJ   rA   r   rN   s         r   Úisnan_float_implr™   Ó   ó.   € Ø�E€SÝ
�˜#Ñ
Ô
€CÝ˜g w°´ÀÑEÔEÐEr   c                 óH   — t           j        }t          | ||j        |¦  «        S rS   ©r   Ú	false_bitr   rH   ©rI   r   rJ   rA   rN   s        r   Úisnan_int_implrŸ   Ù   ó    € Ý
Ô
€CÝ˜g w°´ÀÑEÔEÐEr   c                 óX   — |\  }t          ||¦  «        }t          | ||j        |¦  «        S rS   )r   r   rH   r˜   s         r   Úisinf_float_implr¢   ß   rš   r   c                 óH   — t           j        }t          | ||j        |¦  «        S rS   rœ   rž   s        r   Úisinf_int_implr¤   å   r    r   c                 óX   — |\  }t          ||¦  «        }t          | ||j        |¦  «        S rS   )r$   r   rH   r˜   s         r   Úisfinite_float_implr¦   ë   s.   € Ø�E€SÝ
�G˜SÑ
!Ô
!€CÝ˜g w°´ÀÑEÔEÐEr   c                 óH   — t           j        }t          | ||j        |¦  «        S rS   )r   Útrue_bitr   rH   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   r=   r   Úget_or_insert_functionr'   r(   r`   Úintrinsic_namer?   r   rH   )rI   r   rJ   rA   rb   rB   rT   rN   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   é   Úexpr^   Únumba_frexpfÚnumba_frexp©r   Údouble)Úget_data_typerA   rH   r   Úalloca_oncer'   r(   r`   ÚPointerTypeÚstrr«   r=   r?   Úmake_anonymous_structÚloadr   )rI   r   rJ   rA   r   ÚflttyÚinttyÚexpptrrd   ÚfnamerT   rN   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³   r^   r¯   Úsignext)Úmaprµ   rA   r'   r(   r`   r¸   r   ra   r=   Úadd_attributer?   r   rH   )rI   r   rJ   rA   r   r°   r»   r¼   rd   r¾   rT   rN   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 rS   )Úsitofpr'   r(   r)   r	   r   r   Úatan2_float_impl©rI   r   rJ   rA   Ú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 rS   )Úuitofpr'   r(   r)   r	   r   r   rÉ   rÊ   s          r   Úatan2_u64_implrÒ   2  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Úatan2r^   )Úlenr=   rA   r_   r   r   r   r'   r(   r`   r   ra   r?   r   rH   )rI   r   rJ   rA   rB   Útyrb   rc   rd   rT   rN   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 rS   ©
rÈ   r'   r(   r)   r	   r   r   Úhypot_float_implr   rH   ©rI   r   rJ   rA   rÌ   rË   rÍ   rN   s           r   Úhypot_s64_implrÝ   M  ó‘   € Ø�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 rS   rÚ   rÜ   s           r   Úhypot_u64_implrà   W  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Úhypotr0   Úinfc                 óp   •— t          j        | ¦  «        st          j        |¦  «        r‰S  ‰| |¦  «        S rS   )ÚmathÚisinf)rÌ   rË   rç   Ú
plat_hypots     €€r   Ú
hypot_implz$hypot_float_impl.<locals>.hypot_implq  s9   ø€ ÝŒz˜!‰}Œ}ð ¥¤
¨1¡¤ð Ø�
Ø�:˜a Ñ#Ô#Ð#r   c                 ó   •—  ‰| |¦  «        S rS   r9   )rÌ   rË   rë   s     €r   rì   z$hypot_float_impl.<locals>.hypot_implv  s   ø€ Ø�:˜a Ñ#Ô#Ð#r   )rA   rH   r   r   ÚsysÚplatformr   ÚExternalFunctionr   ÚMACHINE_BITSr   Úcompile_internalr   )rI   r   rJ   rA   ÚxtyÚytyrÌ   rË   r¾   rì   rN   rç   rë   s              @@r   rÛ   rÛ   a  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_constantrH   ré   ÚpiÚfmulr   ©rI   r   rJ   rA   rÌ   ÚcoefrN   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 rS   )Úget_functionÚoperatorÚpow)rI   r   rJ   rA   rV   s        r   Úpow_implr  —  s+   € Ø×Ò¥¤¨cÑ2Ô2€DØˆ4�˜ÑÔÐr   c                 ó   — dS )z8Convert integer to unsigned integer of equivalent width.Nr9   ©Ú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 rS   r9   r  s    r   ú<lambda>z _unsigned_impl.<locals>.<lambda>¥  s   € ˜€ r   zuint{}c                 ó   •—  ‰| ¦  «        S rS   r9   ©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   )rA   rH   rò   r   )
rI   r   rJ   rA   ró   rô   rÌ   rË   r$  rN   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   Ú
numba.corer   r   r   Únumba.core.extendingr   Únumba.core.typingr	   Únumba.cpython.unsafe.numbersr
   Ú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$   r,   r.   r2   r4   r6   rD   rQ   rW   r[   rj   Úfabsr°   Úexp_implÚversion_infoÚexp2Ú	exp2_implÚlogÚlog_implÚlog10Ú
log10_implÚsinÚsin_implÚcosÚcos_implrn   Ú
log1p_implrp   Ú
expm1_implrr   Úerf_implrt   Ú	erfc_implrv   Útan_implrx   Ú	asin_implrz   Ú	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_implr™   rŸ   r¢   r¤   r¦   r©   r­   r¿   rÆ   rÎ   rÒ   rÉ   rÝ   rà   rÛ   rþ   Úradiansr   Údegreesr  r	  r  r%  r9   r   r   ú<module>ra     s!  ððð ð €€€Ø €€€Ø 
€
€
€
Ø Ð Ð Ð à Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø )Ð )Ð )Ð )Ð )Ð )Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7ð �”˜˜œ )Ñ,Ô,Ñ-Ô-€Ø
Ô
€Ø
Ô
€à�”˜˜œ )Ñ,Ô,Ñ-Ô-€Ø
Ô
€Ø
Ô
€à€Ø€Ø$€Ø%Ð ð3ð 3ð 3ð+ð +ð +ðEð Eð Eð9ð 9ð 9ð:ð :ð :ð9ð 9ð 9ð9ð 9ð 9ð7ð 7ð 7ð$ð $ð $ðð ð ð5ð 5ð 5ð
ð 
ð 
ð!ð !ð !ð !ðH €�”	˜;Ñ 'Ô 'Ð 'Øˆ?˜4œ8 ZÑ0Ô0€ØÔ�wÒÐØ� ¤	¨;Ñ7Ô7€IØˆ?˜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€ðFð Fð FðFð Fð FðFð Fð FðFð Fð FðFð Fð FðFð Fð FðFð Fð FðFð Fð Fð"Fð Fð Fð(<ð <ð <ð<ð <ð <ðFð Fð Fð&Fð Fð FðFð Fð FðFð Fð Fð>Fð Fð Fð Ð �D”LÐ"4Ñ 5Ô 5Ð 5ð
Fð Fð Fð Ð �D”LÐ"4Ñ 5Ô 5Ð 5ðð ð ð	ð 	ð 	ð 
€ˆ)ÑÔð!ð !ñ Ôð!ðFð Fð Fð Fð Fr   