
    QVji                     x   d Z ddlZddlZddlmZmZ ddlZddlmZ	m
Z
 ddlZddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$  ej%        e&          Z'ej(        d             Z)h dZ*ej+        fd	Z, e-            Z.ej+        dd
de/ej0        ef         deej1        e	f         fdZ2dS )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                     i t           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j	        d	t          d
t          dt          dt          dt          dt          dt           j        dt           j        di t$          dt&          dt           j        dt*          dt,          dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt4          dt6          dt8          dt           j        j        j        j         dt           j!        dtD          dtF          dtH          dtJ          dtL          d tN          d!i} d"D ]}|| tQ          t           |          <   | S )#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     S/root/voice-cloning/.venv/lib/python3.11/site-packages/torch/utils/_sympy/interp.pyhandlersra   6   sK   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& 	&'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;KS2T 	U2V 	*W2 2X 	*+SoF}lc2 2Hj V . .)-%%&&O    >   r/   r0   r!   r"   r8   r7   c                 &   t          |t          j                  rJt          |j        d         t          j        j        j                  r|                     |d                   S t          |t                    r&| 	                    |d         t          j                  S t          dt          j        dt          j        dt          dt           dt"          di}|                    |j                  x} t)          | |          g ||R  S |j        t          j        u rJ|j        rCt/          | d          r3|                     |          }t2                              d||           |S t/          |j        d	          r|j        j        }nt9                      |j                 }t)          | |          }	 |t:          v r~t=          |          dk    sJ  ||d         |d                   }t?          d
t=          |                    D ]}	 ||||	                   }t2                              d|||           |S  || }t2                              d|||           |S # t@          $ r  tB          $ r t2          "                    d||            w xY w)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	!ej(-( ( & }}T!W%%%$   9  a%-888 	N^}N=N -00;;;H.wx..BBkBBBB yEI$/gh	6R6RT""		%tQ///ty/00 -y4zz$),h--G?**t99q===='$q'47++C1c$ii(( , ,gc47++IInlD#>>>JAIInlD!<<<H      3\4HHHs   3BI :#I 2Jr   missing_handlerenvr   c                "    d }t          |t                    rt          j        }nMt          |t          j                  rt          j        }n&t          |t          j                  rt          j        }| 	                    ||          S t          |t          j
                  rB                    |t                    x}t          ur|S r |          S t          |          t            fd|j        D             |          S )Nc           	      8    g | ]}t          |           S )r   )sympy_interp).0argr   r   r   r   s     r`   
<listcomp>z sympy_interp.<locals>.<listcomp>   sI     		
 		
 		
  ' /  		
 		
 		
rb   )r   )rk   r   rr   boolrK   Integerint64NumberdoubleconstantSymbolrv   _nilKeyErrorr   rl   )r   r   r   r   r   dtyper   s   `` ``  r`   r   r      s4    E$$$ 
	D%-	(	( 	D%,	'	'   u---	D%,	'	' !t$$$AT11H 	!"?4(((4..  		
 		
 		
 		
 		
 		
 		
 y		
 		
 		
 	   rb   )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   cachera   r{   r   r   objectr   dictr   Exprr    rb   r`   <module>r      s1                  D D D D D D D D                                                    8 g!! > > >B FEE :? 6 6 6 6r vxx * * *	elC	 * 
L(
)* * * * * *rb   