
    ΧgL                         d dl Z d dl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  G d d          Z G d de          ZdS )    N)_keep_floatFloatPowFloatTrueDivFloorDiv
IntTrueDivMaxMinModOpaqueUnaryFn_expOpaqueUnaryFn_log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)d&S )'ReferenceAnalysisc                 *    t          j        |           S N)sympysympifycdtypes     X/var/www/html/ai-engine/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.eq/   sB    a$$ 	"
1ej(A(A 	"8Aq>>!Avr   c                 T    |                      |                     ||                    S r   )not_r-   )clsr#   r$   s      r   nezReferenceAnalysis.ne5   s     xxq!%%%r   c                     | |k     S r   r!   r"   s     r   ltzReferenceAnalysis.lt9       1ur   c                     | |k    S r   r!   r"   s     r   gtzReferenceAnalysis.gt=   r4   r   c                     | |k    S r   r!   r"   s     r   lezReferenceAnalysis.leA       Avr   c                     | |k    S r   r!   r"   s     r   gezReferenceAnalysis.geE   r9   r   c                 6    t          | t                    rJ |  S r   )r*   boolr#   s    r   r/   zReferenceAnalysis.not_I   s    a&&&&&r	r   c                 "    t          d|           S )Ng      ?r   xs    r   
reciprocalzReferenceAnalysis.reciprocalN   s    C###r   c                 "    t          | d          S )N   r   rA   s    r   squarezReferenceAnalysis.squareR       Aq!!!r   c                      t          |           S r   )r   rB   r   s     r   trunc_to_intzReferenceAnalysis.trunc_to_intV       !}}r   c                 *    t          j        |           S r   )r   ceilingrJ   s     r   ceil_to_intzReferenceAnalysis.ceil_to_intZ   r   r   c                 *    t          j        |           S r   )r   floorrJ   s     r   floor_to_intzReferenceAnalysis.floor_to_int^   s    {1~~r   c                 F     t          t          j                  |           S r   )r   r   rQ   rA   s    r   rQ   zReferenceAnalysis.floorb   s    '{5;''***r   c                 F     t          t          j                  |           S r   )r   r   rN   rA   s    r   ceilzReferenceAnalysis.ceilf   s    ){5=))!,,,r   c                 f    |t           j        k    rt          |           S t          d| d          Nz	to_dtype z NYI)torchfloat64r   NotImplementedErrorrJ   s     r   to_dtypezReferenceAnalysis.to_dtypej   s5    EM!!1::!"9e"9"9"9:::r   c                 "    t          | |          S r   )r
   rB   ys     r   modzReferenceAnalysis.modp       1ayyr   c                      t          |           S r   )absrA   s    r   rb   zReferenceAnalysis.abst   s    1vvr   c                     |  S r   r!   rA   s    r   negzReferenceAnalysis.negx   s	    r	r   c                 "    t          | |          S r   r@   r"   s     r   truedivzReferenceAnalysis.truediv|   rH   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)rZ   r"   s     r   truncdivzReferenceAnalysis.truncdiv   s    !"2333r   c                 H     t          t          j                  | |          S r   )r   operatoraddr"   s     r   ro   zReferenceAnalysis.add       ({8<((A...r   c                 H     t          t          j                  | |          S r   )r   rn   mulr"   s     r   rr   zReferenceAnalysis.mul   rp   r   c                 H     t          t          j                  | |          S r   )r   rn   subr"   s     r   rt   zReferenceAnalysis.sub   rp   r   c                      t          |           S r   )r   rA   s    r   expzReferenceAnalysis.exp        ###r   c                      t          |           S r   )r   rA   s    r   logzReferenceAnalysis.log   rw   r   c                      t          |           S r   )r   rA   s    r   sqrtzReferenceAnalysis.sqrt   s    !!$$$r   c                 >     t          t                    | |          S r   )r   r   r"   s     r   powzReferenceAnalysis.pow   s    ${8$$Q***r   c                 "    t          | |          S r   rF   r"   s     r   pow_by_naturalz ReferenceAnalysis.pow_by_natural   rH   r   c                 "    t          | |          S r   )r	   r"   s     r   minimumzReferenceAnalysis.minimum   r`   r   c                 "    t          | |          S r   )r   r"   s     r   maximumzReferenceAnalysis.maximum   r`   r   c                      t          |           S r   )r   r#   r   s     r   round_to_intzReferenceAnalysis.round_to_int   rL   r   c                 "    t          | |          S r   )r   r"   s     r   round_decimalzReferenceAnalysis.round_decimal   rH   r   N)*__name__
__module____qualname__staticmethodr   r%   r(   r-   classmethodr1   r3   r6   r8   r;   r/   rC   rG   rK   rO   rR   rQ   rU   r[   r_   rb   rd   rf   rh   rj   rl   ro   rr   rt   rv   ry   r{   r}   r   r   r   r   r   r!   r   r   r   r   "   s           \    \   \   \
 & & [&   \   \   \   \   \ $ $ \$ " " \"   \     \    \ + + \+ - - \- ; ; \;
   \   \   \ " " \"     \    \ 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dS )PythonReferenceAnalysisc                     |t           j        u rt          |           S |t           j        u rt	          |           S |t           j        u rt          |           S t          d|           )Nzunrecognized dtype )rX   int64intdoublefloatr=   AssertionErrorr   s     r   r   z PythonReferenceAnalysis.constant   sa    EKq66Mel""88Oej  77N !>u!>!>???r   c                 *    t          j        |           S r   )rX   sym_notr>   s    r   r/   zPythonReferenceAnalysis.not_   r   r   c                     | |z  S r   r!   r"   s     r   rj   z PythonReferenceAnalysis.floordiv   s    Avr   c                     | |z  S r   r!   r]   s     r   r_   zPythonReferenceAnalysis.mod   r&   r   c                     | |z  S r   r!   r"   s     r   rl   z PythonReferenceAnalysis.truncdiv   r&   r   c                 p    |t           j        k    rt          j        |           S t          d| d          rW   )rX   rY   	sym_floatrZ   rJ   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   rA   s    r   rv   zPythonReferenceAnalysis.exp       @AAAr   c                      t          d          )Nz!log is not valid shape sympy exprr   rA   s    r   ry   zPythonReferenceAnalysis.log   r   r   c                 *    t          j        |           S r   )rX   	_sym_sqrtrA   s    r   r{   zPythonReferenceAnalysis.sqrt   s    q!!!r   c                 ,    t          j        | |          S r   )rX   sym_minr"   s     r   r   zPythonReferenceAnalysis.minimum       }Q"""r   c                 ,    t          j        | |          S r   )rX   sym_maxr"   s     r   r   zPythonReferenceAnalysis.maximum   r   r   c                 *    t          j        |           S r   )mathrQ   rJ   s     r   rR   z$PythonReferenceAnalysis.floor_to_int   s    z!}}r   c                 *    t          j        |           S r   )r   rU   rJ   s     r   rO   z#PythonReferenceAnalysis.ceil_to_int   s    y||r   c                 D    t          t          j        |                     S r   )r   r   rQ   rA   s    r   rQ   zPythonReferenceAnalysis.floor   s    TZ]]###r   c                 D    t          t          j        |                     S r   )r   r   rU   rA   s    r   rU   zPythonReferenceAnalysis.ceil  s    TYq\\"""r   c                     | |z  S r   r!   r"   s     r   rf   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_natural  s    
 !tr   c                      t          |           S r   roundr   s     r   r   z$PythonReferenceAnalysis.round_to_int  s    Qxxr   c                 $    t          | |          S )N)ndigitsr   r"   s     r   r   z%PythonReferenceAnalysis.round_decimal  s    Q""""r   N)r   r   r   r   r   r/   rj   r_   rl   r[   rv   ry   r{   r   r   rR   rO   rQ   rU   rf   r}   r   r   r   r!   r   r   r   r      s7       @ @ \@     \    \   \   \ ; ; \;
 B B \B B B \B " " \" # # \# # # \#   \   \ $ $ \$ # # \#   \   \   \   \ # # \# # #r   r   )r   rn   r   rX   torch.utils._sympy.functionsr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r!   r   r   <module>r      sM                                         4X" X" X" X" X" X" X" X"|[# [# [# [# [#/ [# [# [# [# [#r   