
    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
Jr  SSKJr  SSKJrJrJrJr  SSKJr  SSKJr  SS	KJr  \
" S
5      r\R4                  r\R6                  " \R8                  " S5      5      r\R<                  r\R@                  r!\R6                  " \R8                  " S5      5      r"\"R<                  r#\"R@                  r$Sr%Sr&Sr'Sr(S r)S r*S r+S r,S r-S r.S r/S r0S r1S r2S r3S r4SfS jr5\4" \Rl                  S5        \4" \Rn                  S5      r8\4" \Rr                  S 5      r:\4" \Rv                  S!5      r<\4" \Rz                  S"5      r>\4" \R~                  S#5      r@\4" \R                  S$5      rB\5" \R                  S%S&5      rD\5" \R                  S'S(5      rF\5" \R                  S)S*5      rH\5" \R                  S+S,5      rJ\5" \R                  S-S.5      rL\5" \R                  S/S05      rN\5" \R                  S1S25      rP\5" \R                  S3S45      rR\5" \R                  S5S65      rT\5" \R                  S7S85      rV\5" \R                  S9S:5      rX\5" \R                  S;S<5      rZ\5" \R                  S=S>5      r\\5" \R                  S?S@5      r^\5" \Rz                  SASB5      r>\5" \R                  SCSDSE5      r`\5" \R                  SFSGSE5      rb\5" \R                  SHSI5      rd\5" \R                  SJSK5      rf\5" \R                  SLSMSE5      rh\5" \R                  SNSO5      rj\" \R                  \R                  5      SP 5       rm\" \R                  \R                  5      SQ 5       ro\" \R                  \R                  5      SR 5       rq\" \R                  \R                  5      SS 5       rr\" \R                  \R                  5      ST 5       rt\" \R                  \R                  5      SU 5       ru\" \R                  \R                  \R                  5      SV 5       rw\" \R                  \R                  5      SW 5       ry\" \R                  \R                  \R                  5      SX 5       r|\" \R                  \R                  \R                  5      SY 5       r\" \R                  \GR                   \GR                   5      SZ 5       r\" \R                  \R                  \R                  5      S[ 5       r\" \GR                  \R                  \R                  5      S\ 5       r\" \GR                  \GR                   \GR                   5      S] 5       r\" \GR                  \R                  \R                  5      S^ 5       r\" \GR                  \R                  5      S_ 5       r\3" \GR                  \5        \" \GR                  \R                  5      S` 5       r\3" \GR                  \5        \" \GR                  \R                  \R                  5      \" \GR                  \R                  \R                  5      Sa 5       5       r\" \GR                  \R                  \R                  5      Sb 5       rSc r\" \5      Sd 5       rSe r\" \GR$                  \R                  \R                  5      " \5        g)gzA
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                 &    U R                  SX5      $ )z4
Return a condition testing whether *val* is a NaN.
uno)fcmp_unorderedbuildervals     n/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cpython/old_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(   8   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_int64r0   @   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_f64r2   G   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_int32r6   N   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.
r4   )r   r+   r,   r/   r.   r5   r   s     r   int32_as_f32r8   U   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_realr:   \   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_intrinsicrD   c   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>.implementerq   sj    XXa[
W:u}}EemmU]];	7YA||G%--IIr    )rO   rP   s   ` r   _unary_int_input_wrapper_implrS   l   s    
J r   c                 Z    [        U5      n[        U [        R                  5      " U5        g N)rS   lowerr   Integer)fn
float_implimpls      r   unary_math_int_implr[   {   s    (4D	"emmT"r   c                 d   ^ [        U [        R                  5      U4S j5       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      $ rU   )rD   r   rH   )rI   r   rJ   r@   rN   intrcodes        r   rY   #unary_math_intr.<locals>.float_impl   s$    48!'COOSIIr   )rV   r   Floatr[   )rX   r^   rY   s    ` r   unary_math_intrra      s4     2u{{J J 'r   c                    ^^ U(       a  [         R                  OSnUU4S jn[        U [         R                  5      " U5        [	        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?   )r<   r@   get_value_typer   r   r   r+   r,   FunctionTyper
   insert_pure_functionr>   rG   rH   r   )rI   r   rJ   r@   r   rA   rK   lty	func_namefntyrX   rN   	f32extern	f64externs               r   rY   %unary_math_extern.<locals>.float_impl   s     nnXXa[
$$Z0MM9MM9 	 {{''U3))'..$Oll2v&ll7__E!'COOSIIr   )r   int64rV   r`   r[   )rX   rk   rl   int_restype	f_restyperY   s    ``   r   unary_math_externrq      s=      +IJ$ 
"ekk:& 'r   z	llvm.fabszllvm.expz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                 N    Uu  n[        X5      n[        XUR                  U5      $ rU   )r   r   rH   rI   r   rJ   r@   r   rN   s         r   isnan_float_implr      &    ES

CgEEr   c                 P    [         R                  n[        XUR                  U5      $ rU   r
   	false_bitr   rH   rI   r   rJ   r@   rN   s        r   isnan_int_implr           


CgEEr   c                 N    Uu  n[        X5      n[        XUR                  U5      $ rU   )r#   r   rH   r   s         r   isinf_float_implr      r   r   c                 P    [         R                  n[        XUR                  U5      $ rU   r   r   s        r   isinf_int_implr      r   r   c                 N    Uu  n[        X5      n[        XUR                  U5      $ rU   )r(   r   rH   r   s         r   isfinite_float_implr      s&    ES
G
!CgEEr   c                 P    [         R                  n[        XUR                  U5      $ rU   )r
   true_bitr   rH   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   r<   r
   get_or_insert_functionr+   r,   rf   intrinsic_namer>   r   rH   )rI   r   rJ   r@   rh   rA   rX   rN   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      exprd   numba_frexpfnumba_frexpr   double)get_data_typer@   rH   r
   alloca_oncer+   r,   rf   PointerTypestrr   r<   r>   make_anonymous_structloadr   )rI   r   rJ   r@   r   flttyinttyexpptrrj   fnamerX   rN   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   rd   )mapr   r@   r+   r,   rf   r   r
   rg   r<   r>   r   rH   )rI   r   rJ   r@   r   r   r   r   rj   r   rX   rN   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      $ rU   )sitofpr+   r,   r-   r   r   r   atan2_float_implrI   r   rJ   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      $ rU   )uitofpr+   r,   r-   r   r   r   r   r   s          r   atan2_u64_implr   .  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atan2rd   )lenr<   r@   re   r   r   r   r+   r,   rf   r
   rg   r>   r   rH   )rI   r   rJ   r@   rA   tyrh   ri   rj   rX   rN   s              r   r   r   6  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      $ rU   
r   r+   r,   r-   r   r   r   hypot_float_implr   rH   rI   r   rJ   r@   r   r   r   rN   s           r   hypot_s64_implr   I      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      $ rU   r   r   s           r   hypot_u64_implr   S  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hypotr4   infc                    > [         R                  " U 5      (       d  [         R                  " U5      (       a  T$ T" X5      $ rU   )mathisinf)r   r   r   
plat_hypots     r   
hypot_impl$hypot_float_impl.<locals>.hypot_impln  s,    zz!}}

1
a##r   c                    > T" X5      $ rU   rR   )r   r   r   s     r   r   r   s  s    a##r   )r@   rH   r   r   sysplatformr   ExternalFunctionr	   MACHINE_BITSr   compile_internalr   )rI   r   rJ   r@   xtyytyr   r   r   r   rN   r   r   s              @@r   r   r   ]  s    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_constantrH   r   pifmulr   rI   r   rJ   r@   r   coefrN   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      $ rU   )get_functionoperatorpow)rI   r   rJ   r@   rZ   s        r   pow_implr	    s%     c2Dr   c                 ~   [        U5      S:X  d   eUR                  S   nU R                  U5      n[        R                  S[        R
                  S0U   n[        R                  R                  XUU45      n[        R                  " UR                  XvS9nUR                  X5      n	[        XUR                  U	5      $ )Nr   r   
nextafterf	nextafterrd   )r   r@   re   r   r   r   r+   r,   rf   r
   rg   r<   r>   r   rH   )
rI   r   rJ   r@   r   rh   ri   rj   rX   rN   s
             r   nextafter_implr    s    t9>>	!B

 
 
$C|{
 I ;;##Cs4D		%	%gnnd	KB
,,r
 CgEEr   c                     g)z8Convert integer to unsigned integer of equivalent width.NrR   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 $ rU   rR   r  s    r   <lambda> _unsigned_impl.<locals>.<lambda>  s    r   zuint{}c                    > T" U 5      $ rU   rR   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)	rB   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@   rH   r   r   )
rI   r   rJ   r@   r   r   r   r   r-  rN   s
             r   gcd_implr/    s[    xxHC((((((DA* 
"
"7
;Cg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   registryrV   finfodtype_NP_FLT_FINFOmaxFLT_MAXtinyFLT_MIN_NP_DBL_FINFODBL_MAXDBL_MINFLOAT_ABS_MASKFLOAT_SIGN_MASKDOUBLE_ABS_MASKDOUBLE_SIGN_MASKr   r#   r(   r0   r2   r6   r8   r:   rD   rS   r[   ra   rq   fabsr   exp_implloglog_impllog10
log10_implr   	log2_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   	ceil_implr   
floor_implgamma
gamma_implr   	sqrt_implr   
trunc_implr   lgamma_implisnanr`   r   rW   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-  rR   r   r   <module>rq     sc     
     <  4 4 ) ' 7 J ),-





),-





$% 3+E9:997$#
!H 		; '488Z0488Z0TZZ6
DII{3	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 tzz5;;F  F
 tzz5==!F "F
 tzz5;;F  F
 tzz5==!F "F
 t}}ekk"F #F t}}emm$F %F
 t}}ekk5;;/F 0F tzz5;;F  F  tzz5;;

+
F ,
F  tzz5;;,< -< tzz5<<.< /< tzz5;;,F -F$ tzz5;;,F -F tzz5<<.F /F tzz5;;,F -F< t||U[[!F "F DLL"4 5 t||U[[!F "F DLL"4 5 txxekk*txxemm, - + t~~u{{EKK0F 1F	 
)! !F< dhhu}} -h 7r   