
    `i$5                     $   d dl Z d dlZd dlmZ d dl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  G d d          Z G d de          Z G d d	e          Zd
ej        dej        dej        fdZ G d d          Z dS )    N)Union)_keep_floatBitwiseFn_bitwise_andBitwiseFn_bitwise_orFloatPowFloatTrueDivFloorDiv
IntTrueDivMaxMinModOpaqueUnaryFn_expOpaqueUnaryFn_logOpaqueUnaryFn_log2OpaqueUnaryFn_sqrtPowByNaturalRoundDecimal
RoundToIntToFloat
TruncToIntc                      e Zd Zed             Zed             Zed             Zed             Zed             Z	ed             Z
ed             Zed             Zed	             Zed
             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Z ed             Z!ed             Z"ed             Z#ed              Z$ed!             Z%ed"             Z&ed#             Z'ed$             Z(ed%             Z)ed&             Z*ed'             Z+ed(             Z,ed)             Z-d*S )+ReferenceAnalysisc                 *    t          j        |           S N)sympysympifycdtypes     p/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torch/utils/_sympy/reference.pyconstantzReferenceAnalysis.constant'       }Q    c                     | |z  S r    abs     r    or_zReferenceAnalysis.or_+       1ur#   c                     | |z  S r   r%   r&   s     r    and_zReferenceAnalysis.and_/   r*   r#   c                     t          | t          j                  st          |t          j                  rt          j        | |          S | |k    S r   )
isinstancer   ExprEqr&   s     r    eqzReferenceAnalysis.eq3   sB    a$$ 	"
1ej(A(A 	"8Aq>>!Avr#   c                 T    |                      |                     ||                    S r   )not_r1   clsr'   r(   s      r    nezReferenceAnalysis.ne9   s     xxq!%%%r#   c                     | |k     S r   r%   r&   s     r    ltzReferenceAnalysis.lt=       1ur#   c                     | |k    S r   r%   r&   s     r    gtzReferenceAnalysis.gtA   r9   r#   c                     | |k    S r   r%   r&   s     r    lezReferenceAnalysis.leE       Avr#   c                     | |k    S r   r%   r&   s     r    gezReferenceAnalysis.geI   r>   r#   c                 6    t          | t                    rJ |  S r   )r.   boolr'   s    r    r3   zReferenceAnalysis.not_M   s    a&&&&&r	r#   c                 "    t          d|           S )Ng      ?r   xs    r    
reciprocalzReferenceAnalysis.reciprocalR   s    C###r#   c                 "    t          | d          S )N   r   rF   s    r    squarezReferenceAnalysis.squareV       Aq!!!r#   c                      t          |           S r   )r   rG   r   s     r    trunc_to_intzReferenceAnalysis.trunc_to_intZ       !}}r#   c                 *    t          j        |           S r   )r   ceilingrO   s     r    ceil_to_intzReferenceAnalysis.ceil_to_int^   r"   r#   c                 *    t          j        |           S r   )r   floorrO   s     r    floor_to_intzReferenceAnalysis.floor_to_intb   s    {1~~r#   c                 F     t          t          j                  |           S r   )r   r   rV   rF   s    r    rV   zReferenceAnalysis.floorf   s    '{5;''***r#   c                 F     t          t          j                  |           S r   )r   r   rS   rF   s    r    ceilzReferenceAnalysis.ceilj   s    ){5=))!,,,r#   c                 f    |t           j        k    rt          |           S t          d| d          Nz	to_dtype z NYI)torchfloat64r   NotImplementedErrorrO   s     r    to_dtypezReferenceAnalysis.to_dtypen   s5    EM!!1::!"9e"9"9"9:::r#   c                 "    t          | |          S r   )r   rG   ys     r    modzReferenceAnalysis.modt       1ayyr#   c                      t          |           S r   )absrF   s    r    rg   zReferenceAnalysis.absx   s    1vvr#   c                     |  S r   r%   rF   s    r    negzReferenceAnalysis.neg|   s	    r	r#   c                 "    t          | |          S r   rE   r&   s     r    truedivzReferenceAnalysis.truediv   rM   r#   c                 "    t          | |          S r   )r
   r&   s     r    int_truedivzReferenceAnalysis.int_truediv   s    !Qr#   c                 "    t          | |          S r   )r	   r&   s     r    floordivzReferenceAnalysis.floordiv   s    1~~r#   c                      t          d          )NzTODO: truncdivr_   r&   s     r    truncdivzReferenceAnalysis.truncdiv   s    !"2333r#   c                 H     t          t          j                  | |          S r   )r   operatoraddr&   s     r    ru   zReferenceAnalysis.add       ({8<((A...r#   c                     t          j        | S r   )r   Add)r5   argss     r    sym_sumzReferenceAnalysis.sym_sum   s    y$r#   c                 H     t          t          j                  | |          S r   )r   rt   mulr&   s     r    r|   zReferenceAnalysis.mul   rv   r#   c                 H     t          t          j                  | |          S r   )r   rt   subr&   s     r    r~   zReferenceAnalysis.sub   rv   r#   c                      t          |           S r   )r   rF   s    r    expzReferenceAnalysis.exp        ###r#   c                      t          |           S r   )r   rF   s    r    logzReferenceAnalysis.log   r   r#   c                      t          |           S r   )r   rF   s    r    log2zReferenceAnalysis.log2       !!$$$r#   c                      t          |           S r   )r   rF   s    r    sqrtzReferenceAnalysis.sqrt   r   r#   c                 >     t          t                    | |          S r   )r   r   r&   s     r    powzReferenceAnalysis.pow   s    ${8$$Q***r#   c                 "    t          | |          S r   rK   r&   s     r    pow_by_naturalz ReferenceAnalysis.pow_by_natural   rM   r#   c                 "    t          | |          S r   )r   r&   s     r    minimumzReferenceAnalysis.minimum   re   r#   c                 "    t          | |          S r   )r   r&   s     r    maximumzReferenceAnalysis.maximum   re   r#   c                      t          |           S r   )r   r'   r   s     r    round_to_intzReferenceAnalysis.round_to_int   rQ   r#   c                 "    t          | |          S r   )r   r&   s     r    round_decimalzReferenceAnalysis.round_decimal   rM   r#   c                 "    t          | |          S r   )r   r&   s     r    bitwise_andzReferenceAnalysis.bitwise_and   s    $Q***r#   c                 "    t          | |          S r   )r   r&   s     r    
bitwise_orzReferenceAnalysis.bitwise_or   s    #Aq)))r#   N).__name__
__module____qualname__staticmethodr!   r)   r,   r1   classmethodr6   r8   r;   r=   r@   r3   rH   rL   rP   rT   rW   rV   rZ   r`   rd   rg   ri   rk   rm   ro   rr   ru   rz   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r%   r#   r    r   r   &   se           \    \   \   \
 & & [&   \   \   \   \   \ $ $ \$ " " \"   \     \    \ + + \+ - - \- ; ; \;
   \   \   \ " " \"     \    \ 4 4 \4 / / \/     [  / / \/ / / \/ $ $ \$ $ $ \$ % % \% % % \% + + \+ " " \"   \   \   \ " " \" + + \+ * * \* * *r#   r   c                      e Zd Zed             Zed             Zed             Zed             Zed             Z	ed             Z
ed             Zed             Zed	             Zed
             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             ZdS )PythonReferenceAnalysisc                     |t           j        u rt          |           S |t           j        u rt	          |           S |t           j        u rt          |           S t          d|           )Nunrecognized dtype )r]   int64intdoublefloatrB   AssertionErrorr   s     r    r!   z PythonReferenceAnalysis.constant   sa    EKq66Mel""88Oej  77N !>u!>!>???r#   c                 *    t          j        |           S r   )r]   sym_notrC   s    r    r3   zPythonReferenceAnalysis.not_   r"   r#   c                 "   t          |          dk    rdS t          |          dk    r|d         S |                     |d         |d                   }t          dt          |                    D ]}|                     |||                   }|S )Nr      rJ   )lenru   range)r5   ry   accis       r    rz   zPythonReferenceAnalysis.sym_sum   s    t99>>1t99>>7Nggd1gtAw''q#d))$$ 	( 	(A''#tAw''CC
r#   c                     | |z  S r   r%   r&   s     r    ro   z PythonReferenceAnalysis.floordiv   s    Avr#   c                     | |z  S r   r%   rb   s     r    rd   zPythonReferenceAnalysis.mod   r*   r#   c                     | |z  S r   r%   r&   s     r    rr   z PythonReferenceAnalysis.truncdiv   r*   r#   c                 p    |t           j        k    rt          j        |           S t          d| d          r\   )r]   r^   	sym_floatr_   rO   s     r    r`   z PythonReferenceAnalysis.to_dtype   s9    EM!!?1%%%!"9e"9"9"9:::r#   c                      t          d          )Nz!exp is not valid shape sympy exprr   rF   s    r    r   zPythonReferenceAnalysis.exp      @AAAr#   c                      t          d          )Nz!log is not valid shape sympy exprr   rF   s    r    r   zPythonReferenceAnalysis.log  r   r#   c                 *    t          j        |           S r   )r]   	_sym_log2rF   s    r    r   zPythonReferenceAnalysis.log2	      q!!!r#   c                 *    t          j        |           S r   )r]   	_sym_sqrtrF   s    r    r   zPythonReferenceAnalysis.sqrt  r   r#   c                 ,    t          j        | |          S r   )r]   sym_minr&   s     r    r   zPythonReferenceAnalysis.minimum      }Q"""r#   c                 ,    t          j        | |          S r   )r]   sym_maxr&   s     r    r   zPythonReferenceAnalysis.maximum  r   r#   c                 *    t          j        |           S r   )mathrV   rO   s     r    rW   z$PythonReferenceAnalysis.floor_to_int  s    z!}}r#   c                 *    t          j        |           S r   )r   rZ   rO   s     r    rT   z#PythonReferenceAnalysis.ceil_to_int  s    y||r#   c                 D    t          t          j        |                     S r   )r   r   rV   rF   s    r    rV   zPythonReferenceAnalysis.floor!  s    TZ]]###r#   c                 D    t          t          j        |                     S r   )r   r   rZ   rF   s    r    rZ   zPythonReferenceAnalysis.ceil%  s    TYq\\"""r#   c                     | |z  S r   r%   r&   s     r    rk   zPythonReferenceAnalysis.truediv)  r*   r#   c                     | |z  S r   r%   r&   s     r    r   zPythonReferenceAnalysis.pow-  s    !tr#   c                     | |z  S r   r%   r&   s     r    r   z&PythonReferenceAnalysis.pow_by_natural1  s    
 !tr#   c                      t          |           S r   roundr   s     r    r   z$PythonReferenceAnalysis.round_to_int8  s    Qxxr#   c                 $    t          | |          S )N)ndigitsr   r&   s     r    r   z%PythonReferenceAnalysis.round_decimal<  s    Q""""r#   c                     | |z  S r   r%   r&   s     r    r   z#PythonReferenceAnalysis.bitwise_and@  r*   r#   c                     | |z  S r   r%   r&   s     r    r   z"PythonReferenceAnalysis.bitwise_orD  r*   r#   N)r   r   r   r   r!   r3   r   rz   ro   rd   rr   r`   r   r   r   r   r   r   rW   rT   rV   rZ   rk   r   r   r   r   r   r   r%   r#   r    r   r      s       @ @ \@     \    [   \   \   \ ; ; \;
 B B \B B B \B " " \" " " \" # # \# # # \#   \   \ $ $ \$ # # \#   \   \   \   \ # # \#   \   \  r#   r   c                   $    e Zd Zed             ZdS ) OptimizedPythonReferenceAnalysisc                 *    t          j        |           S r   )r]   rz   )ry   s    r    rz   z(OptimizedPythonReferenceAnalysis.sym_sumL  s    }T"""r#   N)r   r   r   r   rz   r%   r#   r    r   r   K  s-        # # \# # #r#   r   rG   r   returnc                 V    t           j        j        j                            | |          S r   )r]   opsprimsconvert_element_typedefaultrO   s     r    	_to_dtyper   Q  s    9?/775AAAr#   c                   D   e Zd Zed             Zed             Zed             Zed             Zed             Zed             Z	e
d             Zed             Zed	             Zed
             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Z ed             Z!ed             Z"ed             Z#ed              Z$ed!             Z%ed"             Z&ed#             Z'ed$             Z(ed%             Z)ed&             Z*ed'             Z+ed(             Z,ed)             Z-ed*             Z.ed+             Z/ed,             Z0ed-             Z1ed.             Z2ed/             Z3ed0             Z4ed1             Z5d2S )3TensorReferenceAnalysisc                 0   |t           j        u rt          |           }nN|t           j        u rt	          |           }n0|t           j        u rt          |           }nt          d|           t           j        j        j	        
                    ||          S )Nr   )r   )r]   r   r   r   r   rB   r   r   atenscalar_tensorr   )r   r   ds      r    r!   z TensorReferenceAnalysis.constantf  s     EKAAAel""aAAej  QAA !>u!>!>???y~+33AU3CCCr#   c                 V    t           j        j        j                            | |          S r   )r]   r   r   
logical_orr   r&   s     r    r)   zTensorReferenceAnalysis.or_s  s    y~(00A666r#   c                 V    t           j        j        j                            | |          S r   )r]   r   r   logical_andr   r&   s     r    r,   zTensorReferenceAnalysis.and_w  s    y~)11!Q777r#   c                 L    t           j        j                            | |          S r   )r]   r   r   r   r&   s     r    r   z#TensorReferenceAnalysis.bitwise_and{  s    y~))!Q///r#   c                 L    t           j        j                            | |          S r   )r]   r   r   r   r&   s     r    r   z"TensorReferenceAnalysis.bitwise_or  s    y~((A...r#   c                 V    t           j        j        j                            | |          S r   )r]   r   r   r1   Tensorr&   s     r    r1   zTensorReferenceAnalysis.eq      y~ ''1---r#   c                 V    t           j        j        j                            ||          S r   )r]   r   r   r6   r   r4   s      r    r6   zTensorReferenceAnalysis.ne  r   r#   c                 V    t           j        j        j                            | |          S r   )r]   r   r   r8   r   r&   s     r    r8   zTensorReferenceAnalysis.lt  r   r#   c                 V    t           j        j        j                            | |          S r   )r]   r   r   r;   r   r&   s     r    r;   zTensorReferenceAnalysis.gt  r   r#   c                 V    t           j        j        j                            | |          S r   )r]   r   r   r=   r   r&   s     r    r=   zTensorReferenceAnalysis.le  r   r#   c                 V    t           j        j        j                            | |          S r   )r]   r   r   r@   r   r&   s     r    r@   zTensorReferenceAnalysis.ge  r   r#   c                 T    t           j        j        j                            |           S r   )r]   r   r   logical_notr   rC   s    r    r3   zTensorReferenceAnalysis.not_  s    y~)11!444r#   c                 T    t           j        j        j                            |           S r   )r]   r   r   rH   r   rF   s    r    rH   z"TensorReferenceAnalysis.reciprocal  s    y~(00333r#   c                 T    t           j        j        j                            |           S r   )r]   r   r   rL   r   rF   s    r    rL   zTensorReferenceAnalysis.square  s     y~$,,Q///r#   c                 p    t          t          j        j        j                            |           |          S r   )r   r]   r   r   truncr   rO   s     r    rP   z$TensorReferenceAnalysis.trunc_to_int  '    -55a88%@@@r#   c                 p    t          t          j        j        j                            |           |          S r   )r   r]   r   r   rZ   r   rO   s     r    rT   z#TensorReferenceAnalysis.ceil_to_int  s'    ,44Q77???r#   c                 p    t          t          j        j        j                            |           |          S r   )r   r]   r   r   rV   r   rO   s     r    rW   z$TensorReferenceAnalysis.floor_to_int  r   r#   c                 T    t           j        j        j                            |           S r   )r]   r   r   rV   r   rF   s    r    rV   zTensorReferenceAnalysis.floor      y~#++A...r#   c                 T    t           j        j        j                            |           S r   )r]   r   r   rZ   r   rF   s    r    rZ   zTensorReferenceAnalysis.ceil      y~"**1---r#   c                 "    t          | |          S r   )r   rO   s     r    r`   z TensorReferenceAnalysis.to_dtype  s    E"""r#   c                      t          d          )Nz8no C-style modulus operation available from frontend atmrq   rb   s     r    rd   zTensorReferenceAnalysis.mod  s     "F
 
 	
r#   c                 T    t           j        j        j                            |           S r   )r]   r   r   rg   r   rF   s    r    rg   zTensorReferenceAnalysis.abs      y~!))!,,,r#   c                 T    t           j        j        j                            |           S r   )r]   r   r   ri   r   rF   s    r    ri   zTensorReferenceAnalysis.neg  r   r#   c                 V    t           j        j        j                            | |          S r   )r]   r   r   true_divider   r&   s     r    rk   zTensorReferenceAnalysis.truediv  s    y~)00A666r#   c                      t          d          )Nz8Python int truediv difficult to implement in PyTorch atm)r_   r]   r   r   r  r   r   r^   r&   s     r    rm   z#TensorReferenceAnalysis.int_truediv      !F
 
 	
r#   c                 Z    t           j        j        j                            | |d          S )NrV   )rounding_mode)r]   r   r   divTensor_moder&   s     r    ro   z TensorReferenceAnalysis.floordiv  s$    y~!--a'-JJJr#   c                      t          d          )Nz9no C-style truncdiv operation available from frontend atmrq   r&   s     r    rr   z TensorReferenceAnalysis.truncdiv  s    !G
 
 	
r#   c                 V    t           j        j        j                            | |          S r   )r]   r   r   ru   r   r&   s     r    ru   zTensorReferenceAnalysis.add      y~!((A...r#   c                 V    t           j        j        j                            | |          S r   )r]   r   r   r|   r   r&   s     r    r|   zTensorReferenceAnalysis.mul  r  r#   c                 V    t           j        j        j                            | |          S r   )r]   r   r   r~   r   r&   s     r    r~   zTensorReferenceAnalysis.sub  r  r#   c                 T    t           j        j        j                            |           S r   )r]   r   r   r   r   rF   s    r    r   zTensorReferenceAnalysis.exp  r   r#   c                 T    t           j        j        j                            |           S r   )r]   r   r   r   r   rF   s    r    r   zTensorReferenceAnalysis.log  r   r#   c                 T    t           j        j        j                            |           S r   )r]   r   r   r   r   rF   s    r    r   zTensorReferenceAnalysis.log2  r   r#   c                 T    t           j        j        j                            |           S r   )r]   r   r   r   r   rF   s    r    r   zTensorReferenceAnalysis.sqrt  r   r#   c                 T    t           j        j        j                            |           S r   )r]   r   r   sinr   rF   s    r    r  zTensorReferenceAnalysis.sin  r   r#   c                 T    t           j        j        j                            |           S r   )r]   r   r   cosr   rF   s    r    r  zTensorReferenceAnalysis.cos
  r   r#   c                 T    t           j        j        j                            |           S r   )r]   r   r   tanhr   rF   s    r    r  zTensorReferenceAnalysis.tanh  r   r#   c                 T    t           j        j        j                            |           S r   )r]   r   r   sinhr   rF   s    r    r  zTensorReferenceAnalysis.sinh  r   r#   c                 T    t           j        j        j                            |           S r   )r]   r   r   coshr   rF   s    r    r  zTensorReferenceAnalysis.cosh  r   r#   c                 T    t           j        j        j                            |           S r   )r]   r   r   tanr   rF   s    r    r  zTensorReferenceAnalysis.tan  r   r#   c                 T    t           j        j        j                            |           S r   )r]   r   r   acosr   rF   s    r    r   zTensorReferenceAnalysis.acos  r   r#   c                 T    t           j        j        j                            |           S r   )r]   r   r   atanr   rF   s    r    r"  zTensorReferenceAnalysis.atan"  r   r#   c                 T    t           j        j        j                            |           S r   )r]   r   r   asinr   rF   s    r    r$  zTensorReferenceAnalysis.asin&  r   r#   c                 V    t           j        j        j                            | |          S r   r]   r   r   r   Tensor_Tensorr&   s     r    r   zTensorReferenceAnalysis.pow*  s    y~!//1555r#   c                 V    t           j        j        j                            | |          S r   r&  r&   s     r    r   z&TensorReferenceAnalysis.pow_by_natural.  s!     y~!//1555r#   c                 V    t           j        j        j                            | |          S r   )r]   r   r   r   r   r&   s     r    r   zTensorReferenceAnalysis.minimum3      y~%--a333r#   c                 V    t           j        j        j                            | |          S r   )r]   r   r   r   r   r&   s     r    r   zTensorReferenceAnalysis.maximum7  r*  r#   c                 T    t           j        j        j                            |           S r   )r]   r   r   r   r   r   s     r    r   z$TensorReferenceAnalysis.round_to_int;  r   r#   c                      t          d          )Nz8round decimal doesn't support Tensor second argument atmrq   r&   s     r    r   z%TensorReferenceAnalysis.round_decimal?  r  r#   N)6r   r   r   r   r!   r)   r,   r   r   r1   r   r6   r8   r;   r=   r@   r3   rH   rL   rP   rT   rW   rV   rZ   r`   rd   rg   ri   rk   rm   ro   rr   ru   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   c  sN        
D 
D \
D 7 7 \7 8 8 \8 0 0 \0 / / \/ . . \. . . [. . . \. . . \. . . \. . . \. 5 5 \5 4 4 \4 0 0 \0 A A \A @ @ \@ A A \A / / \/ . . \. # # \# 
 
 \
 - - \- - - \- 7 7 \7 

 

 \

 K K \K 
 
 \

 / / \/ / / \/ / / \/ - - \- - - \- . . \. . . \. - - \- - - \- . . \. . . \. . . \. - - \- . . \. . . \. . . \. 6 6 \6 6 6 \6 4 4 \4 4 4 \4 / / \/ 
 
 \
 
 
r#   r   )!r   rt   typingr   r   r]   torch.utils._sympy.functionsr   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%   r#   r    <module>r0     s                                                     :h* h* h* h* h* h* h* h*\r r r r r/ r r rn# # # # #'> # # #B Bek Bel B B B B$`
 `
 `
 `
 `
 `
 `
 `
 `
 `
r#   