
    xKgP8                     Z   d dl Z d dl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mZmZmZ d dlmZ d dlmZ  e
       Zej*                  Zg Zedd	e j.                  fgz  Zed
de j0                  fgz  Zedde j2                  fgz  Zg Zedde j6                  fgz  Zedde j8                  fgz  Zedde j:                  fgz  Zedde j<                  fgz  Zedde j>                  fgz  Zedde j@                  fgz  Zedde jB                  fgz  Zedde jD                  fgz  Zedde jF                  fgz  Zed d!e jH                  fgz  Zed"d#e jJ                  fgz  Zed$d%e jL                  fgz  Zed&d'e jN                  fgz  Zed(d)e jP                  fgz  Zed*d+e jR                  fgz  Zed,d-e jT                  fgz  Zed.d/e jV                  fgz  Zed0d1e jX                  fgz  Zed2d3e jZ                  fgz  Zed4d5e j\                  fgz  Zed6d7e j^                  fgz  Zed8d9e j`                  fgz  Zed:d;e jb                  fgz  Zed<d=e jd                  fgz  Zed>d?e jf                  fgz  Zed@dAe jh                  fgz  Zi Z5dBe5d/<   dCe5d7<   dDe5d?<   dEe5d<   dFe5d%<   dGe5d'<   dHe5d#<   g Z6e6dIdJe jn                  fgz  Z6e6dKdLe jp                  fgz  Z6e6dMdNe jr                  fgz  Z6e6dOdPe jt                  fgz  Z6e6dQdRe jv                  fgz  Z6e6dSdTe jx                  fgz  Z6i Z=dUe=dN<    ee j0                  ej|                         ee j.                  ej|                        dV               Z? eej                  ej                  ej                        dW        ZA ee j2                  ej|                        dX        ZB ee j^                  ej                        dY        ZD ee jV                  ej                        dZ        ZE ee jJ                  ej                        d[        ZF ee jN                  ej                        d\        ZG ee jL                  ej                        d]        ZH ee j<                  ej                        d^        ZI ee j8                  ej                        d_        ZJ ee j6                  ej                        d`        ZK ee jH                  ej                        da        ZL ee j:                  ej                        db        ZM ee jh                  ej                        dc        ZNdd ZOde ZPdf ZQdg ZRdh ZSdi ZTdj ZUdk ZVdl ZWeD ],  \  ZXZYZZ e[eeY      Z\ e[eeX      Z] eOeZee\        eOeZee]       . eD ]@  \  ZXZYZZ e[eeY      Z\ e[eeX      Z] eReZee\        eReZee]        eSeZee]        eSeZee]       B e6D ]@  \  ZXZYZZ e[eeY      Z\ e[eeX      Z] eVeZee\        eVeZee]        eWeZee]        eWeZee]       B dm Z^ e^ej                  ej                          e^ej                  ej                         dn Za eaej                  ej                          eaej                  ej                         do Zd edej                  ej                          edej                  ej                         dp Zg egej                  ej                          egej                  ej                         dq Zj ejej                  ej                          ejej                  ej                          eSe j                  eej                          eSe j                  eej                         dr Zm emej                  ej                          emej                  ej                         y)s    N)ir)typestypingcgutilstargetconfig)Registry)float32float64int64uint64)	libdevice)cudaisnandisnanfisinfdisinff	isfinitedfinitefceilceilffloorfloorffabsfabsfexpexpfexpm1expm1ferferfferfcerfcftgammatgammaflgammalgammafsqrtsqrtfloglogflog2log2flog10log10flog1plog1pfacoshacoshfacosacosfcoscosfcoshcoshfasinhasinhfasinasinfsinsinfsinhsinhfatanatanfatanhatanhftantanftrunctruncf	fast_cosf	fast_sinf	fast_tanf	fast_expf
fast_log2ffast_log10f	fast_logfcopysign	copysignfatan2atan2fpowpowffmodfmodfhypothypotf	remainder
remainderf	fast_powfc                 B    | j                  t        j                  d      S )Nr   get_constantr   booleancontextbuildersigargss       W/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/cuda/mathimpl.pymath_isinf_isnan_intrg   D   s     q11    c                 h   | j                   rLt        j                  t        t        t              }| j	                  t
        j                  |      } |||      S t        j                  ||d         5  | j                  j                  |d       d d d         |j                  | }|S # 1 sw Y   xY w)N   )zdivision by zero)fastmathr   	signaturer	   get_functionr   fast_fdividefr   if_zeroerror_modelfp_zero_divisionfdiv)rb   rc   rd   re   implress         rf   maybe_fast_truedivru   J   s    w9##I$;$;SAGT""__Wd1g.00:OP /gllD!
 /.s   2B((B1c                 B    | j                  t        j                  d      S )Nrj   r^   ra   s       rf   math_isfinite_intrw   W   s    q11rh   c                 0    d }| j                  ||||      S )Nc                 @    t         j                  j                  |       S N)r   fp16hsinxs    rf   fp16_sinzfp16_sin_impl.<locals>.fp16_sin^       yy~~a  rh   compile_internal)rb   rc   rd   re   r   s        rf   fp16_sin_implr   \        ! ##GXsDAArh   c                 0    d }| j                  ||||      S )Nc                 @    t         j                  j                  |       S rz   )r   r{   hcosr}   s    rf   fp16_coszfp16_cos_impl.<locals>.fp16_cosf   r   rh   r   )rb   rc   rd   re   r   s        rf   fp16_cos_implr   d   r   rh   c                 0    d }| j                  ||||      S )Nc                 @    t         j                  j                  |       S rz   )r   r{   hlogr}   s    rf   fp16_logzfp16_log_impl.<locals>.fp16_logn   r   rh   r   )rb   rc   rd   re   r   s        rf   fp16_log_implr   l   r   rh   c                 0    d }| j                  ||||      S )Nc                 @    t         j                  j                  |       S rz   )r   r{   hlog10r}   s    rf   
fp16_log10z#fp16_log10_impl.<locals>.fp16_log10v       yy""rh   r   )rb   rc   rd   re   r   s        rf   fp16_log10_implr   t        # ##GZdCCrh   c                 0    d }| j                  ||||      S )Nc                 @    t         j                  j                  |       S rz   )r   r{   hlog2r}   s    rf   	fp16_log2z!fp16_log2_impl.<locals>.fp16_log2~       yyq!!rh   r   )rb   rc   rd   re   r   s        rf   fp16_log2_implr   |        " ##GYTBBrh   c                 0    d }| j                  ||||      S )Nc                 @    t         j                  j                  |       S rz   )r   r{   hexpr}   s    rf   fp16_expzfp16_exp_impl.<locals>.fp16_exp   r   rh   r   )rb   rc   rd   re   r   s        rf   fp16_exp_implr      r   rh   c                 0    d }| j                  ||||      S )Nc                 @    t         j                  j                  |       S rz   )r   r{   hfloorr}   s    rf   
fp16_floorz#fp16_floor_impl.<locals>.fp16_floor   r   rh   r   )rb   rc   rd   re   r   s        rf   fp16_floor_implr      r   rh   c                 0    d }| j                  ||||      S )Nc                 @    t         j                  j                  |       S rz   )r   r{   hceilr}   s    rf   	fp16_ceilz!fp16_ceil_impl.<locals>.fp16_ceil   r   rh   r   )rb   rc   rd   re   r   s        rf   fp16_ceil_implr      r   rh   c                 0    d }| j                  ||||      S )Nc                 @    t         j                  j                  |       S rz   )r   r{   hsqrtr}   s    rf   	fp16_sqrtz!fp16_sqrt_impl.<locals>.fp16_sqrt   r   rh   r   )rb   rc   rd   re   r   s        rf   fp16_sqrt_implr      r   rh   c                 0    d }| j                  ||||      S )Nc                 @    t         j                  j                  |       S rz   )r   r{   habsr}   s    rf   	fp16_fabsz!fp16_fabs_impl.<locals>.fp16_fabs   r   rh   r   )rb   rc   rd   re   r   s        rf   fp16_fabs_implr      s     ! ##GYTBBrh   c                 0    d }| j                  ||||      S )Nc                 @    t         j                  j                  |       S rz   )r   r{   htruncr}   s    rf   
fp16_truncz#fp16_trunc_impl.<locals>.fp16_trunc   r   rh   r   )rb   rc   rd   re   r   s        rf   fp16_trunc_implr      r   rh   c                 8    fd} t        |       |       y )Nc                     | j                  t        j                  t        j                              } |||      }| j                  ||t        j                  t        j                        S rz   )rm   r   rl   r   int32castr`   )rb   rc   rd   re   libfunc_implresultlibfunctys         rf   lower_boolean_implz(impl_boolean.<locals>.lower_boolean_impl   sS    ++G,2,<,<U[[",MOgt,||GVU[[%--HHrh   lower)keyr   r   r   s    `` rf   impl_booleanr      s    I E#rN%&rh   c                     fd}|S )Nc                     }d }t         k(  r+| j                  rt        j                  j                        }|t        t        |      }| j                  |t        j                              } |||      S rz   )
r	   rk   unarys_fastmathget__name__getattrr   rm   r   rl   	rb   rc   rd   re   actual_libfuncfast_replacementr   r   r   s	          rf   lower_unary_implz.get_lower_unary_impl.<locals>.lower_unary_impl   sw     =W--.2273C3CD'$Y0@AN++N,2,<,<R,DFGT**rh    r   r   r   r   s    `` rf   get_lower_unary_implr      s    + rh   c                     ddt         j                  f}t        |gz   D ]M  \  }}}| |k(  s|t        k(  rt	        t
        |      }n|t        k(  rt	        t
        |      }t        ||      c S  t        d|  d| d      )NtanhtanhfImplementation of  for 
 not found)	mathr   unarysr	   r   r   r
   r   RuntimeError)fnr   
tanh_implsfname64fname32r   rs   s          rf   get_unary_impl_for_fn_and_tyr      s    
 '499-J!':,!6#9W}y'2wy'2'R66 "7 +B4uRD
C
DDrh   c                 B    t        | ||      } t        | |      |       y rz   )r   r   r   s       rf   
impl_unaryr      s"    +CW=E#rN#$rh   c                 4    fd} t        | |      |       y )Nc                 Z   |j                   d   t        k(  r|j                  }n0|j                   d   t        k(  r|j                  }nd}t        |       ||d   t        j                               }t        j                  t        t              }| j                  |      } |||g      S )Nr   z<Only 64-bit integers are supported for generic unary int opsre   r   sitofpr   uitofp	TypeErrorr   
DoubleTyper   rl   r
   rm   	rb   rc   rd   re   convertmargr   r   s	           rf   lower_unary_int_implz,impl_unary_int.<locals>.lower_unary_int_impl   s    88A;%nnGXXa[F"nnGNAA,d1gr}}/w0++GS9GcU++rh   r   )r   r   r   r   s     ` rf   impl_unary_intr      s    , E#rN'(rh   c                     fd}|S )Nc                     }d }t         k(  r+| j                  rt        j                  j                        }|t        t        |      }| j                  |t        j                              } |||      S rz   )
r	   rk   binarys_fastmathr   r   r   r   rm   r   rl   r   s	          rf   lower_binary_implz0get_lower_binary_impl.<locals>.lower_binary_impl   sy     =W--/33G4D4DE'$Y0@AN++N,2,<,<RR,HJGT**rh   r   r   r   r   r   s    `` rf   get_lower_binary_implr      s    + rh   c                     t         D ]M  \  }}}| |k(  s|t        k(  rt        t        |      }n|t        k(  rt        t        |      }t        ||      c S  t        d|  d| d      )Nr   r   r   )binarysr	   r   r   r
   r   r   )r   r   r   r   r   rs   s         rf   get_binary_impl_for_fn_and_tyr     sl    !(#9W}y'2wy'2(b$77 ") +B4uRD
C
DDrh   c                 D    t        | ||      } t        | ||      |       y rz   )r   r   r   s       rf   impl_binaryr     s%    -c2w?E#r2()rh   c                 6    fd} t        | ||      |       y )Nc                    |j                   d   t        k(  r|j                  }n0|j                   d   t        k(  r|j                  }nd}t        |      |D cg c]  } ||t        j                                }}t        j                  t        t        t              }| j                  |      } |||      S c c}w )Nr   z=Only 64-bit integers are supported for generic binary int opsr   r   s	           rf   lower_binary_int_implz.impl_binary_int.<locals>.lower_binary_int_impl  s    88A;%nnGXXa[F"nnGOAA,9=>#R]]_->w9++GS9GT** ?s   "B;r   )r   r   r   r   s     ` rf   impl_binary_intr     s    + E#r2,-rh   c                 r      fd} t        t        j                   t        j                        |       y )Nc                     t        j                  t        j                        }| j	                  |      } |||      S rz   r   rl   r   r   rm   )rb   rc   rd   re   powi_sigr   r   r   s         rf   lower_pow_impl_intz(impl_pow_int.<locals>.lower_pow_impl_intE  s:    ##BEKK8++GX>GT**rh   )r   r   rT   r   r   )r   r   r  s   `` rf   impl_pow_intr  D  s&    +
 %E$((B$%78rh   c                      t        j                   d       fd} t        t        j                         |       y )N   c                 f    t        j                        }| j                  |      } |||      S rz   r   rl   rm   )	rb   rc   rd   re   modf_sigr   r   rettyr   s	         rf   lower_modf_implz"impl_modf.<locals>.lower_modf_implT  s4    ##E2.++GX>GT**rh   )r   UniTupler   r   modf)r   r   r  r  s   `` @rf   	impl_modfr  Q  s/    NN2q!E+
 E$))R)rh   c                      t        j                   t         j                  f       fd} t        t        j
                         |       y )Nc                 f    t        j                        }| j                  |      } |||      S rz   r
  )	rb   rc   rd   re   	frexp_sigr   r   r  r   s	         rf   lower_frexp_implz$impl_frexp.<locals>.lower_frexp_implc  s4    $$UB/	++GY?GT**rh   )r   Tupler   r   r   frexp)r   r   r  r  s   `` @rf   
impl_frexpr  `  s7    KKU[[)*E+
 E$**b*+rh   c                 r      fd} t        t        j                   t        j                        |       y )Nc                     t        j                  t        j                        }| j	                  |      } |||      S rz   r  )rb   rc   rd   re   	ldexp_sigr   r   r   s         rf   lower_ldexp_implz$impl_ldexp.<locals>.lower_ldexp_implp  s:    $$RU[[9	++GY?GT**rh   )r   r   ldexpr   r   )r   r   r  s   `` rf   
impl_ldexpr  o  s&    +
 'E$**b%++&'78rh   c                 T      fd} t        t        j                         |       y )Nc                      d } 	fd}fd}	t         k(  r j                  r |       }|dk\  r |       S  |       S )Nc                  ^    t        j                         j                         } | j                  S rz   )r   ConfigStacktopcompute_capability)flagss    rf   get_compute_capabilityzBimpl_tanh.<locals>.lower_tanh_impl.<locals>.get_compute_capability~  s%     ,,.224E+++rh   c                  f    t        j                        } j                  |       } |      S rz   r
  )tanh_sigr   re   rc   rb   r   r   s     rf   tanh_impl_libdevicez?impl_tanh.<locals>.lower_tanh_impl.<locals>.tanh_impl_libdevice  s4    ''B/H"//BL..rh   c                      t        j                  t        j                         t        j                         g      } t        j                  | dd      }j	                  |      S )Nztanh.approx.f32 $0, $1;z=f,f)r   FunctionType	FloatType	InlineAsmcall)fntyasmre   rc   s     rf   tanhf_impl_fastmathz?impl_tanh.<locals>.lower_tanh_impl.<locals>.tanhf_impl_fastmath  sF    ??2<<>BLLN3CDD,,t%>GC<<T**rh   )      )r	   rk   )
rb   rc   rd   re   r%  r(  r0  ccr   r   s
   `` `    rf   lower_tanh_implz"impl_tanh.<locals>.lower_tanh_impl}  sI    	,	/ 	/
	+
 =W--')BU{*,,"$$rh   )r   r   r   )r   r   r4  s   `` rf   	impl_tanhr5  |  s    %, E$))R)rh   c                       fd} t        t        j                        |        t        t        j                        |        t        t              |       y )Nc                 8    fd}| j                  ||||      S )Nc                 :   |j                    d      k(  r&|j                   d      k(  r d       d      z   S | j                    d      k(  r&|j                    d      k(  r d       d      z   S t        j                  | j                   | j                        }t        j                  ||j                         }t        j
                  | j                  | j                         }||j                   z  }|j                   d      k7  rJ|t        j                  ||j                  z        z  }||j                  t        j                  |      z  z  }| t        j                  |             t        j                  |       d      z        z   z  S )Ng        g      ?y                y              ?)
realimagr   rX   rT   rR   r   r)   r5   r=   )abvabslenatphasectyftys         rf   cpow_internalz3cpow_implement.<locals>.core.<locals>.cpow_internal  s8   vvS!affC&83x#d)++3s8##c((:3x#d)++::affaff-D((4(CAFFAFF+BKEvvS!txxQVV,,$((4.00#dhhuo.dhhuoD	9:; < <rh   r   )rb   rc   rd   re   rC  rA  rB  s        rf   corezcpow_implement.<locals>.core  s!    	<$ ''TJJrh   )r   operatorrT   ipow)rB  rA  rD  s   `` rf   cpow_implementrG    sL    K* "E(,,S!$'"E(--c"4(E#sCrh   )pr   rE  llvmliter   
numba.corer   r   r   r   numba.core.imputilsr   numba.typesr	   r
   r   r   
numba.cudar   numbar   registryr   booleansisnanisinfisfiniter   r   r   r   r   r   r   r!   gammar%   r'   r)   r+   r-   r/   r1   r3   r5   r7   r9   r;   r=   r?   rA   rC   rE   rG   r   r   rP   rR   rT   rV   rX   rZ   r   Integerrg   truedivru   rw   float16r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   impl32impl64r  powifpowir  modffr  r  frexpfr  r  ldexpfr  r5  r   r   rG  	complex64
complex128r   rh   rf   <module>r`     s_      ; ; ( 7 7   :  h$**-. . h$**-. . k9dmm45 5	 FGTYY'
( ( GXtzz*
+ + FGTYY'
( ( E6488$
% % GXtzz*
+ + E6488$
% % FGTYY'
( ( Hi,
- - Hi-
. . FGTYY'
( ( E6488$
% % FGTYY'
( ( GXtzz*
+ + GXtzz*
+ + GXtzz*
+ + FGTYY'
( ( E6488$
% % FGTYY'
( ( GXtzz*
+ + FGTYY'
( ( E6488$
% % FGTYY'
( ( FGTYY'
( ( GXtzz*
+ + E6488$
% % GXtzz*
+ +% % % % ' ) % 
 Zdmm45 5 Wh

+, , UFDHH%& & VWdii() ) Wh

+, , [,78 8 &   tzz5==!tzz5==!2 " "2 x6	 7	 t}}emm$2 %2 txxB  B txxB  B txxB  B tzz5==!D "D tyy%-- C !C txxB  B tzz5==!D "D tyy%-- C !C tyy%-- C !C tyy%-- C !C tzz5==!D "D' E$%
)$ 
E*
.$ &GWcY(FY(Fgv&gv&	 & $GWcY(FY(FsGV$sGV$3v&3' $ %GWcY(FY(FWf%Wf%C'C( %9 U]]IOO , U]]INN +* 
%-- ) 	%-- (, 5==)** + 
5==)// *9 5==)** + 
5==)// **4 
%-- ) 	%-- ( tyy% 0 tyy&).. 16 u}}eoo . u}}e.. /rh   