
    JTh                        S r SSKrSSKrSSKJrJr  SSKrSSKJr	J
r
  SSKrSSKJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$  \RJ                  " \&5      r'\RP                  " S5      S 5       r)1 Skr*\RV                  4S	 jr,\-" 5       r.\RV                  SS
.S\/\R`                  \4   S\\Rb                  \	4   4S jjr2g)a  
This is a simple interpreter for Sympy expressions that dispatches to
classes following the torch._inductor.virtualized calling convention.
For directness, the interpreter takes the handler directly rather than
consulting the TLS.  It does not use most of the methods on the full
handler; only those with corresponding Sympy expressions.  To see an example
of a full handler, see torch.utils._sympy.value_ranges.ValueRangeAnalysis.
    N)AnyUnion)BooleanBooleanAtom   )BitwiseFn_bitwise_andBitwiseFn_bitwise_or	CeilToIntCleanDivFloatPowFloatTrueDivFloorDiv
FloorToIntIdentity
IntTrueDiv!IsNonOverlappingAndDenseIndicatorMaxMinModModularIndexingOpaqueUnaryFn_log2PowByNatural	PythonModRoundDecimal
RoundToIntToFloatTruncToFloat
TruncToIntWherec                  ,   0 [         R                  S_[         R                  S_[         R                  S_[         R                  S_[         R
                  S_[         R                  S_[         R                  S_[         R                  S_[         R                  S	_[        S
_[        S_[        S_[        S_[        S_[        S_[         R                   S_[         R"                  S_0 [$        S_[&        S_[         R(                  S_[*        S_[,        S_[         R*                  S_[         R.                  S_[         R0                  S_[         R2                  S_[         R4                  S_[         R6                  S_[4        S_[6        S_[8        S_[         R:                  R<                  R>                  R@                  S_[         RB                  S_[D        S_E[F        S[H        S[J        S[L        S [N        S!0En S" H  nX[Q        [         U5      '   M     U $ )#Nor_and_eqneltgtlegenot_int_truedivtruedivfloordivtruncwhereaddmulpowpow_by_naturalmodabslogexpminimummaximummodular_indexingexpr_cond_pair	piecewiseidentity&is_non_overlapping_and_dense_indicatorround_decimallog2bitwise_and
bitwise_or)	cossintansinhcoshtanhasinacosatan))sympyOrAndEqNeLtGtLeGeNotr   r   r   r   r   r   AddMulr   r   Powr   r   Absr5   r6   r   r   r   	functions
elementaryr;   ExprCondPair	Piecewiser   r   r   r   r   r	   getattr)HANDLERSnames     Q/var/www/auris/envauris/lib/python3.13/site-packages/torch/utils/_sympy/interp.pyhandlersra   6   sc   2%2		62 	$2 	$	2
 	$2 	$2 	$2 	$2 			62 	M2 	i2 	*2 	*2 	g2 	w2  			5!2" 			5#2$ 	%%2& 	&'24 			#526 	U728 	592@ 			5A2B 			5C2D 			5E2F 			5G2H 			9I2J 			9K2L 	YM2N 	YO2P 	+Q2R 	"",,99;KS2T 	U2V 	*W2X 	*+SoF}lc2Hj V)-%& V O    >   r/   r0   r!   r"   r8   r7   c                    [        U[        R                  5      (       aT  [        UR                  S   [        R                  R
                  R                  5      (       a  U R                  US   5      $ [        U[        5      (       a#  U R                  US   [        R                  5      $ [        S[        R                  S[        R                  S[        S[         S["        S0nUR%                  UR&                  5      =nb  [)        X5      " / UQUP76 $ UR&                  [        R*                  L aK  UR,                  (       a:  [/        U S5      (       a)  U R1                  U5      n[2        R5                  SX5        U$ [/        UR&                  S	5      (       a  UR&                  R6                  nO[9        5       UR&                     n[)        X5      n U[:        ;   a`  [=        U5      S:  d   eU" US   US   5      n[?        S
[=        U5      5       H  n	U" XU	   5      nM     [2        R5                  SXQU5        U$ U" U6 n[2        R5                  SXQU5        U$ ! [@         a    e [B         a    [2        RE                  SXQ5        e f = f)Nr   r   trunc_to_intfloor_to_intceil_to_intround_to_intsym_sumzsym_sum(%s) -> %s_torch_handler_name   z%s(%s) -> %szfailed while executing %s(%s))#
isinstancerK   rW   argscorenumbersHalfsqrtr   to_dtypetorchfloat64r   floorceilingr   r
   r   getfuncr]   rU   
is_integerhasattrrh   r5   debugri   ra   ASSOCIATIVE_OPSlenrangeNotImplementedError	Exceptionwarning)
analysisrl   exprindex_dtypeINDEX_DTYPE_HANDLERShandler_namerhandleraccis
             r`   _run_sympy_handlerr   {   s   $		""z		!ejj((--( ( }}T!W%%$    a%--88 	N^}N=N -00;;Hx.BBkBB yyEII$//gh	6R6RT"		%t/tyy/00yy44z$)),h-G?*t9q= =$q'47+C1c$i(c7+ )IInl#>JAIInl!<H  3\Hs   A)I >I ,Jr   missing_handlerenvr   c                Z   S n[        U[        5      (       a  [        R                  nO_[        U[        R
                  5      (       a  [        R                  nO/[        U[        R                  5      (       a  [        R                  nUb  U R                  X%5      $ [        U[        R                  5      (       a;  UR                  U[        5      =n[        La  U$ U(       a  U" U5      $ [        U5      e[        U UR                   Vs/ s H  n[!        U UUUUS9PM     snUUS9$ s  snf )Nr   )r   )rk   r   rr   boolrK   Integerint64NumberdoubleconstantSymbolrv   _nilKeyErrorr   rl   sympy_interp)r   r   r   r   r   dtyper   args           r`   r   r      s    E$$$

	D%--	(	(	D%,,	'	'  --	D%,,	'	't$$AT1H"4((4.   yy		
 ! ' / !		
 	 		
s   
D(
)3__doc__	functoolsloggingtypingr   r   rK   sympy.logic.boolalgr   SympyBooleanr   rr   rY   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	getLogger__name__r5   	lru_cachera   r{   r   r   objectr   dictr   Exprr    rb   r`   <module>r      s        D       8 ! T> >B F :? 6r x *	ellC	 * 

L(
)*rb   