§
    �Štj   ã                   ón  — d Z ddlZddlZddl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#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j1        ez  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)ÚBooleanÚBooleanAtomé   )ÚBitwiseFn_bitwise_andÚBitwiseFn_bitwise_orÚBitwiseFn_bitwise_xorÚ	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"tP          d#i¥} d$D ]}|| tS          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Ú
python_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Úbitwise_xor)	Ú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   ÚAbsr6   r7   r   r   r   Ú	functionsÚ
elementaryr<   ÚExprCondPairÚ	Piecewiser   r   r   r   r   r   r	   Úgetattr)ÚHANDLERSÚnames     úW/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/utils/_sympy/interp.pyÚhandlersrc   7   sP  € ð3ÝŒ�%ð3åŒ	�6ð3õ 	Œ�$ð3õ 	Œ�$ð	3õ
 	Œ�$ð3õ 	Œ�$ð3õ 	Œ�$ð3õ 	Œ�$ð3õ 	Œ	�6ð3õ 	�Mð3õ 	�ið3õ 	�*ð3õ 	�*ð3õ 	�gð3õ 	ˆwð3õ  	Œ	�5ð!3õ" 	Œ	�5ð#3ð 3õ$ 	�%ð%3õ& 	Ð&ð'3õ4 	Œ	Ð#ð53õ6 	ˆUð73õ8 	�<ð93õ@ 	Œ	�5ðA3õB 	Œ	�5ðC3õD 	Œ	�5ðE3õF 	Œ	�5ðG3õH 	Œ	�9ðI3õJ 	Œ	�9ðK3õL 	ˆYðM3õN 	ˆYðO3õP 	Ð+ðQ3õR 	ŒÔ"Ô,Ô9Ð;KðS3õT 	Œ˜ðU3õV 	�*ðW3ð 3õX 	*Ð+SÝ�oå˜FÝ˜}Ý˜lÝ˜}ðe3ð 3€Hðl Vð .ð .ˆØ)-ˆ•� Ñ%Ô%Ñ&Ð&à€Oó    >   r/   r0   r!   r"   r9   r8   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    rt?          d
¦  «        ‚ ||d         |d         ¦  «        }tA          dt=          |¦  «        ¦  «        D ]}	 ||||	         ¦  «        }Œt2                               d|||¦  «         |S  ||Ž }t2                               d|||¦  «         |S # tB          $ r ‚ tD          $ 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_namezassociative op needs >1 argsé   z%s(%s) -> %szfailed while executing %s(%s))$Ú
isinstancerM   rY   ÚargsÚcoreÚnumbersÚHalfÚsqrtr   Úto_dtypeÚtorchÚfloat64r   ÚfloorÚceilingr   r
   r   ÚgetÚfuncr_   rW   Ú
is_integerÚhasattrrj   r6   Údebugrk   rc   ÚASSOCIATIVE_OPSÚlenÚAssertionErrorÚrangeÚNotImplementedErrorÚ	ExceptionÚwarning)
Úanalysisrn   ÚexprÚindex_dtypeÚINDEX_DTYPE_HANDLERSÚhandler_nameÚrÚhandlerÚaccÚis
             rb   Ú_run_sympy_handlerr�   }   s�  € å�$�œ	Ñ"Ô"ð &¥zØŒ	�!Œ•e”jÔ(Ô-ñ(ô (ð &ð �}Š}˜T !œWÑ%Ô%Ð%Ý�$�Ñ Ô ð 9Ø× Ò   a¤­%¬-Ñ8Ô8Ð8õ 	�NÝŒ�^ÝŒ�}Ý�NÝ�=Ý�NðÐð -×0Ò0°´Ñ;Ô;Ð;ˆÐHØ.�w�x Ñ.Ô.ÐB°ÐB°kÐBÐBÐBÐBð „y•E”IÐÐ $¤/Ðµg¸hÈ	Ñ6RÔ6RÐØ×Ò˜TÑ"Ô"ˆÝ�	Š	Ð% t¨QÑ/Ô/Ð/ØˆåˆtŒyÐ/Ñ0Ô0ð -Ø”yÔ4ˆˆå‘z”z $¤)Ô,ˆÝ�h Ñ-Ô-€GðØ�?Ð*Ð*Ý�4‰yŒy˜AŠ~ˆ~Ý$Ð%CÑDÔDÐDØ�'˜$˜qœ' 4¨¤7Ñ+Ô+ˆCÝ˜1�c $™iœiÑ(Ô(ð ,ð ,�Ø�g˜c 4¨¤7Ñ+Ô+��Ý�IŠI�n l°D¸#Ñ>Ô>Ð>ØˆJà�˜�ˆAÝ�IŠI�n l°D¸!Ñ<Ô<Ð<Øˆ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     €€€€rb   ú
<listcomp>z sympy_interp.<locals>.<listcomp>Ø   sI   ø€ ð 		
ð 		
ð 		
ð õ ØØØØ'Ø /ðñ ô ð		
ð 		
ð 		
rd   )r†   )rm   r   rt   ÚboolrM   ÚIntegerÚint64ÚNumberÚdoubleÚconstantÚSymbolrx   Ú_nilÚKeyErrorr�   rn   )r„   r�   r…   r†   r�   Údtyper‰   s   `` ``  rb   r“   r“   º   s4  øøøø€ ð €EÝ�$�Ñ$Ô$ð Ý”
ˆˆÝ	�D�%œ-Ñ	(Ô	(ð Ý”ˆˆÝ	�D�%œ,Ñ	'Ô	'ð Ý”ˆàÐØ× Ò   uÑ-Ô-Ð-Ý	�D�%œ,Ñ	'Ô	'ð !Ø—’˜�tÑ$Ô$Ð$ˆA­TÐ1Ð1ØˆHØð 	!Ø"�? 4Ñ(Ô(Ð(å˜4‘.”.Ð õ Øð		
ð 		
ð 		
ð 		
ð 		
ð 		
ð 		
ð ”yð		
ñ 		
ô 		
ð 	Øðñ ô ð rd   )3Ú__doc__Ú	functoolsÚloggingÚtypingr   rM   Úsympy.logic.boolalgr   ÚSympyBooleanr   rt   r[   r   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__r6   Úcacherc   r}   r™   r�   Úobjectrž   Údictr�   ÚExprr“   © rd   rb   ú<module>r®      s0  ððð ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð à €€€Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ Dà €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð: €gÔ˜Ñ!Ô!€ð „ð?ð ?ñ „ð?ðD FÐEÐE€ð :?¼ð 7ð 7ð 7ð 7ðt €v�x„x€ð ”Øð*ð *ð *à	ˆeŒl˜CÐÔ	 ð*ð Œ*�|Ñ
#ð*ð *ð *ð *ð *ð *rd   