
    sh<                        S r SSKrSSKrSSKrSSKrSSKrSSKJr  SSK	J
r
  SSKJrJrJr  SSKJr  SSKJr  SSKJr  \R*                  " \R,                  " S	5      5      r\R0                  r\R4                  r\R*                  " \R,                  " S
5      5      r\R0                  r\R4                  rSrSr Sr!Sr"S r#S r$S r%S r&S r'S r(S r)S r*S r+S r,S r-S r.SbS jr/\." \R`                  S5        \." \Rb                  S5      r2\." \Rf                  S5      r4\." \Rj                  S5      r6\." \Rn                  S 5      r8\." \Rr                  S!5      r:\/" \Rv                  S"S#5      r<\/" \Rz                  S$S%5      r>\/" \R~                  S&S'5      r@\/" \R                  S(S)5      rB\/" \R                  S*S+5      rD\/" \R                  S,S-5      rF\/" \R                  S.S/5      rH\/" \R                  S0S15      rJ\/" \R                  S2S35      rL\/" \R                  S4S55      rN\/" \R                  S6S75      rP\/" \R                  S8S95      rR\/" \R                  S:S;5      rT\/" \R                  S<S=5      rV\/" \R                  S>S?5      rX\/" \R                  S@SASB5      rZ\/" \R                  SCSDSB5      r\\/" \R                  SESF5      r^\/" \R                  SGSH5      r`\/" \R                  SISJSB5      rb\/" \R                  SKSL5      rdSM reSN rfSO rgSP rhSQ riSR rjSS rkST rlSU rmSV rnSW roSX rpSY rqSZ rrS[ rsS\ rt\-" \R                  \t5        S] rv\-" \R                  \v5        S^ rxS_ ry\" \y5      S` 5       rzSa r{g)czA
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                 &    U R                  SX5      $ )z4
Return a condition testing whether *val* is a NaN.
uno)fcmp_unorderedbuildervals     j/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/np/math/mathimpl.pyis_nanr   '   s     !!%22    c                     [        UR                  [        S5      5      n[        UR                  [        S5      5      nU R                  SX5      nU R                  SX5      nU R	                  XE5      $ )z:
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   -   s_     sxxv/Gsxxv/G##D#7H##D#7H;;x**r   c                 H    U R                  X5      nU R                  SX"5      $ )z7
Return a condition testing whether *val* is a finite.
ord)fsubr   )r   r   val_minus_vals      r   	is_finiter$   7   s%    
 LL*M}DDr   c                     UR                   [        R                  R                  5       :X  d   eU R	                  U[        R                  R                  S5      5      $ )z)
Bitcast a double into a 64-bit integer.
@   )r   llvmliteir
DoubleTypebitcastIntTyper   s     r   f64_as_int64r,   ?   sC     88x{{--////??3 3 3B 788r   c                     UR                   [        R                  R                  S5      :X  d   eU R	                  U[        R                  R                  5       5      $ )z)
Bitcast a 64-bit integer into a double.
r&   )r   r'   r(   r+   r*   r)   r   s     r   int64_as_f64r.   F   sC     88x{{**2....??3 6 6 899r   c                     UR                   [        R                  R                  5       :X  d   eU R	                  U[        R                  R                  S5      5      $ )z(
Bitcast a float into a 32-bit integer.
    )r   r'   r(   	FloatTyper*   r+   r   s     r   f32_as_int32r2   M   sC     88x{{,,....??3 3 3B 788r   c                     UR                   [        R                  R                  S5      :X  d   eU R	                  U[        R                  R                  5       5      $ )z(
Bitcast a 32-bit integer into a float.
r0   )r   r'   r(   r+   r*   r1   r   s     r   int32_as_f32r4   T   sC     88x{{**2....??3 5 5 788r   c                 N    U R                  [        UR                  S5      U5      $ )z:
Negate real number *val*, with proper handling of zeros.
g       )r"   r   r   r   s     r   negate_realr6   [   s     
 <<40#66r   c                     U R                   nUR                  X Vs/ s H  oDR                  PM     sn5      nU R                  XR5      $ s  snf )z1
Call a LLVM intrinsic floating-point operation.
)moduledeclare_intrinsicr   call)r   nameargsmodaintrs         r   call_fp_intrinsicr@   b   sD     ..C  '=1'=>D<<## (>s   A	
c                    ^  U 4S jnU$ )z
Return an implementation factory to convert the single integral input
argument to a float64, then defer to the *wrapped_impl*.
c                 &  > Uu  nUR                   S   nU R                  XU[        R                  5      n[	        [        R                  [        R                  5      nT	" XXv45      nU R                  X[        R                  UR
                  5      $ )Nr   )r<   castr   r   r	   return_type)
contextr   sigr<   r   
input_typefpval	inner_sigreswrapped_impls
            r   implementer2_unary_int_input_wrapper_impl.<locals>.implementerp   sj    XXa[
W:u}}EemmU]];	7YA||G%--IIr    )rK   rL   s   ` r   _unary_int_input_wrapper_implrO   k   s    
J r   c                     [        U5      ng N)rO   )fn
float_implimpls      r   unary_math_int_implrU   z   s    (4Dr   c                 *   ^ U4S jn[        X5        U$ )zG
Implement the math function *fn* using the LLVM intrinsic *intrcode*.
c                 L   > [        UTU5      n[        XUR                  U5      $ rQ   )r@   r   rD   )rE   r   rF   r<   rJ   intrcodes        r   rS   #unary_math_intr.<locals>.float_impl   s$    48!'COOSIIr   )rU   )rR   rX   rS   s    ` r   unary_math_intrrZ   ~   s    
J 'r   c                    ^^ [         R                  (       a  U(       a  [        R                  OSnOU(       a  [        R                  OSnUU4S jn[        X5        U$ )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                   > Uu  nUR                   nUR                  S   nU R                  U5      n[        R                  T[        R
                  T0U   n[        R                  R                  Xw/5      n	[        R                  " UR                   XS9n
UR                  X45      nU R                  XXbR                  5      n[        XUR                  U5      $ )z)
Implement *fn* for a types.Float input.
r   r;   )r8   r<   get_value_typer   r   r   r'   r(   FunctionTyper   insert_pure_functionr:   rC   rD   r   )rE   r   rF   r<   r   r=   rG   lty	func_namefntyrR   rJ   	f32extern	f64externs               r   rS   %unary_math_extern.<locals>.float_impl   s     nnXXa[
$$Z0MM9MM9 	 {{''U3))'..$Oll2v&ll7__E!'COOSIIr   )r   USE_LEGACY_TYPE_SYSTEMr   int64np_int64rU   )rR   rd   re   int_restype	f_restyperS   s    ``   r   unary_math_externrl      s>     $$#.EKKD	&1ENNt	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                 N    Uu  n[        X5      n[        XUR                  U5      $ rQ   )r   r   rD   rE   r   rF   r<   r   rJ   s         r   isnan_float_implr      &    ES

CgEEr   c                 P    [         R                  n[        XUR                  U5      $ rQ   r   	false_bitr   rD   rE   r   rF   r<   rJ   s        r   isnan_int_implr           


CgEEr   c                 N    Uu  n[        X5      n[        XUR                  U5      $ rQ   )r   r   rD   r   s         r   isinf_float_implr      r   r   c                 P    [         R                  n[        XUR                  U5      $ rQ   r   r   s        r   isinf_int_implr      r   r   c                 N    Uu  n[        X5      n[        XUR                  U5      $ rQ   )r$   r   rD   r   s         r   isfinite_float_implr      s&    ES
G
!CgEEr   c                 P    [         R                  n[        XUR                  U5      $ rQ   )r   true_bitr   rD   r   s        r   isfinite_int_implr      s     


CgEEr   c                    US   R                   nUR                  n[        R                  " U[        R
                  R                  XDU45      SUR                  -  5      nUR                  Xc5      n[        XUR                  U5      $ )Nr   zllvm.copysign.%s)r   r8   r   get_or_insert_functionr'   r(   r_   intrinsic_namer:   r   rD   )rE   r   rF   r<   ra   r=   rR   rJ   s           r   copysign_float_implr      sp    
q',,C
..C		'	'X[[-E-EcQT:-V(:S=O=O(O
QB
,,r
 CgEEr   c                 .   Uu  nU R                  UR                  S   5      nU R                  UR                  S   5      n[        R                  " XSS9n[
        R                  R                  XU[
        R                  R                  U5      45      nSSS.[        U5         n	[        R                  " UR                  X5      n
UR                  XU45      n[        R                  " XUR                  U5      45      n[        XUR                  U5      $ )Nr      expr]   numba_frexpfnumba_frexpr   double)get_data_typer<   rD   r   alloca_oncer'   r(   r_   PointerTypestrr   r8   r:   make_anonymous_structloadr   )rE   r   rF   r<   r   flttyinttyexpptrrc   fnamerR   rJ   s               r   
frexp_implr     s    DC!!#((1+.E!!#//!"45E  e<F;;##E8;;3J3J53Q+RSD
 e*E 
	'	'	DB
,,r=
)C

'
'w||F7K1L
MCgEEr   c                 D   Uu  pE[        U R                  UR                  5      u  pg[        R                  R                  XfU45      nSSS.[        U5         n	[        R                  " UR                  XS9n
UR                  XU45      n[        XUR                  U5      $ )Nnumba_ldexpfnumba_ldexpr   r]   )mapr   r<   r'   r(   r_   r   r   r`   r8   r:   r   rD   )rE   r   rF   r<   r   r   r   r   rc   r   rR   rJ   s               r   
ldexp_implr     s    HCw,,chh7LE;;##E5>:D
 e*E 
	%	%gnnd	GB
,,r:
&CgEEr   c                 L   Uu  pEUR                  U[        R                  R                  5       5      nUR                  U[        R                  R                  5       5      n[	        [
        R                  [
        R                  [
        R                  5      n[        XXdU45      $ rQ   )sitofpr'   r(   r)   r	   r   r   atan2_float_implrE   r   rF   r<   yxfsigs          r   atan2_s64_implr   (  n    FQq(++0023Aq(++0023AU]]EMM5==ADGdF;;r   c                 L   Uu  pEUR                  U[        R                  R                  5       5      nUR                  U[        R                  R                  5       5      n[	        [
        R                  [
        R                  [
        R                  5      n[        XXdU45      $ rQ   )uitofpr'   r(   r)   r	   r   r   r   r   s          r   atan2_u64_implr   0  r   r   c                    [        U5      S:X  d   eUR                  nUR                  S   nU R                  U5      n[        R
                  S[        R                  S0U   n[        R                  R                  XfU45      n[        R                  " UR                  XS9n	UR                  X5      n
[        XUR                  U
5      $ )N   r   atan2fatan2r]   )lenr8   r<   r^   r   r   r   r'   r(   r_   r   r`   r:   r   rD   )rE   r   rF   r<   r=   tyra   rb   rc   rR   rJ   s              r   r   r   8  s    t9>>
..C	!B

 
 
$Cxw
 I ;;##Cs4D		%	%gnnd	KB
,,r
 CgEEr   c                 z   Uu  pEUR                  U[        R                  R                  5       5      nUR                  U[        R                  R                  5       5      n[	        [
        R                  [
        R                  [
        R                  5      n[        XXdU45      n[        XUR                  U5      $ rQ   
r   r'   r(   r)   r	   r   r   hypot_float_implr   rD   rE   r   rF   r<   r   r   r   rJ   s           r   hypot_s64_implr   K      FQq(++0023Aq(++0023AU]]EMM5==AD
7Tq6
:CgEEr   c                 z   Uu  pEUR                  U[        R                  R                  5       5      nUR                  U[        R                  R                  5       5      n[	        [
        R                  [
        R                  [
        R                  5      n[        XXdU45      n[        XUR                  U5      $ rQ   r   r   s           r   hypot_u64_implr   U  r   r   c                   ^^ UR                   u  pEXEs=:X  a  UR                  :X  d   e   eUu  pg[        R                  [        R
                  S:X  a  SOS[        R                  [        R
                  S:X  a  SOS0U   n[        R                  " X5      m[        R
                  S:X  a-  [        R                  S:X  a  U" [        S5      5      mUU4S jn	OU4S	 jn	U R                  XX#5      n
[        XUR                  U
5      $ )
Nwin32_hypotfhypotf_hypothypotr0   infc                    > [         R                  " U 5      (       d  [         R                  " U5      (       a  T$ T" X5      $ rQ   )mathisinf)r   r   r   
plat_hypots     r   
hypot_impl$hypot_float_impl.<locals>.hypot_implo  s,    zz!}}

1
a##r   c                    > T" X5      $ rQ   rN   )r   r   r   s     r   r   r   t  s    a##r   )r<   rD   r   r   sysplatformr   ExternalFunctionr   MACHINE_BITSr   compile_internalr   )rE   r   rF   r<   xtyytyr   r   r   r   rJ   r   r   s              @@r   r   r   _  s    xxHC((((((DA
 	CLLG$;y3<<7#:x 
E ''3J
||w6#6#6"#<%,	$
	$ 
"
"7
BCgEEr   c                     Uu  nU R                  UR                  [        R                  S-  5      nUR	                  XE5      n[        XUR                  U5      $ N   get_constantrD   r   pifmulr   rE   r   rF   r<   r   coefrJ   s          r   radians_float_implr   ~  sH    
CQ3?D
,,q
CgEEr   c                     Uu  nU R                  UR                  S[        R                  -  5      nUR	                  XE5      n[        XUR                  U5      $ r   r   r   s          r   degrees_float_implr     sH    
CQtww?D
,,q
CgEEr   c                 R    U R                  [        R                  U5      nU" X5      $ rQ   )get_functionoperatorpow)rE   r   rF   r<   rT   s        r   pow_implr    s#    c2Dr   c                     g)z8Convert integer to unsigned integer of equivalent width.NrN   Ts    r   	_unsignedr    s    r   c                    ^ U [         R                  ;   a  S $ U [         R                  ;   a/  [        [         SR	                  U R
                  5      5      mU4S j$ g )Nc                     U $ rQ   rN   r  s    r   <lambda> _unsigned_impl.<locals>.<lambda>  s    r   zuint{}c                    > T" U 5      $ rQ   rN   r  newTs    r   r  r    s	    ar   )r   unsigned_domainsigned_domaingetattrformatbitwidthr  s    @r   _unsigned_implr    sI    E!!!	
e!!	!uhooajj9:   
"r   c                     UR                   u  pEXEs=:X  a  UR                  :X  d   e   eUu  pgS nU R                  XX#5      n	[        XUR                  U	5      $ )Nc                    [        U 5      nU S:X  a  [        U5      $ US:X  a  [        U 5      $ [        U 5      n[        U5      n[        X45      n[	        [        [
        R                  " X5      5      5      n[	        [        [
        R                  " X5      5      5      nXg:w  a2  Xg:  a  XvpvXv-  n[
        R                  " U[        U5      5      nXg:w  a  M2  [
        R                  " U" U5      U5      nU$ )z?
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   gcdgcd_impl.<locals>.gcd  s     G6#a&=6#a&=AAKc"../01c"../01fu1FAq."34A	 f
 MM!A$"r   )r<   rD   r   r   )
rE   r   rF   r<   r   r   r   r   r$  rJ   s
             r   gcd_implr&    s[    xxHC((((((DA* 
"
"7
;Cg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   r@   rO   rU   rZ   rl   fabsr   exp_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&  rN   r   r   <module>r_     ss     
     2 - - ) ' 7 ),-





),-





$% 3+E9:997$5
$N 		; '488Z0488Z0TZZ6
488Z0488Z0tzz8W=
tzz8W=
TXXvu5dii&9	TXXvu5dii&9	dii&9	dii&9	tzz8W=
tzz8W=
tzz8W=
dii&9	dii&9	dii&9	dii&9	dii&$?	tzz8WdC
tzz>=I
dii&9	tzz8WdC
YAFFFFFFFF"
F"<<F&FFF>F DLL"4 5
F DLL"4 5	 
)! !Fr   