
    [i,                         d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZ  G d d	e
e
          Zej        Z G d de
e
          ZdS )    N)Expr)
_sympifyit)
AtomicExpr)Number)global_parameters)S	Singletonc                       e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZd ZdefdZd	 Z	  ed
e          d             ZeZ ed
e          d             Z ed
e          d             Z ed
e          d             ZeZ ed
e          d             Zd Zd Zd Zd Z fdZd Zd Z d Z!d Z"d Z#d Z$ ed
e          d             Z%e%Z&d Z'd Z( xZ)S )IntInfinityah  Positive integer infinite quantity.

    Integer infinity is a value in an extended integers which
    is greater than all other integers.  We distinguish it from
    sympy's existing notion of infinity in that it reports that
    it is_integer.

    Infinity is a singleton, and can be accessed by ``S.IntInfinity``,
    or can be imported as ``int_oo``.
    TF      Y@ c                 *    t          j        |           S Nr   __new__clss    M/var/www/icac/venv/lib/python3.11/site-packages/torch/utils/_sympy/numbers.pyr   zIntInfinity.__new__*       !#&&&    returnc                     dS )Nint_oor   selfprinters     r   	_sympystrzIntInfinity._sympystr-   s    xr   c                     | |k    r|S d S r   r   r   oldnews      r   
_eval_subszIntInfinity._eval_subs0       3;;J ;r   otherc                     t          |t                    rPt          j        rD|t          j        t          j        fv r|S |t          j        t          j        fv rt          j        S | S t          j	        | |          S r   )

isinstancer   r   evaluater   InfinityNegativeInfinityNegativeIntInfinityNaN__add__r   r$   s     r   r,   zIntInfinity.__add__=   sl    eV$$ 	):)C 	Q%7888.666uK~dE***r   c                 &   t          |t                    rht          j        r\|t          j        u rt          j        S |t          j        u rt          j        S |t          j        t          j        fv rt          j        S | S t          j	        | |          S r   )
r&   r   r   r'   r   r(   r)   r   r+   __sub__r-   s     r   r/   zIntInfinity.__sub__I   s}    eV$$ 	):)C 	
""))***z!...uK~dE***r   c                 .    |                       |          S r   r,   r-   s     r   __rsub__zIntInfinity.__rsub__U       u%%%r   c                     t          |t                    rBt          j        r6|j        s|t
          j        u rt
          j        S |j        r| S t
          j        S t          j	        | |          S r   )
r&   r   r   r'   is_zeror   r+   is_extended_positiver*   __mul__r-   s     r   r7   zIntInfinity.__mul__Y   se    eV$$ 	)):)C 	)} u) ((~dE***r   c                 :   t          |t                    rrt          j        rf|t          j        t          j        t          j        t          j        t          j	        fv rt          j	        S |j
        rt          j        S t          j        S t          j        | |          S r   r&   r   r   r'   r   r(   r   r)   r*   r+   is_extended_nonnegative__truediv__r-   s     r   r;   zIntInfinity.__truediv__e   s    eV$$ 	&):)C 	&
"%   u, "z!%%!$...r   c                     t           j        S r   r   r   r   s    r   __abs__zIntInfinity.__abs__u   
    }r   c                     t           j        S r   r   r*   r>   s    r   __neg__zIntInfinity.__neg__x   s    $$r   c                    |j         rt          j        S |j        rt          j        S |t          j        u rt          j        S |t          j        u rt          j        S |j        du rh|j        rcddl	m
}  ||          }|j        rt          j        S |j        rt          j        S |j        rt          j        S | |                                z  S d S d S )NFr   )re)r6   r   r   is_extended_negativeZeror+   ComplexInfinityis_extended_real	is_number$sympy.functions.elementary.complexesrE   is_positiveis_negativer5   evalf)r   exptrE   	expt_reals       r   _eval_powerzIntInfinity._eval_power{   s    $ 	!= $ 	6M15==5L1$$$5L E))dn)??????4I$ )(($ v  u4::<<'' *)))r   c                     t           j        S r   )mlibfinfr   precs     r   _as_mpf_valzIntInfinity._as_mpf_val   s
    yr   c                 D    t                                                      S r   super__hash__r   	__class__s    r   r[   zIntInfinity.__hash__       ww!!!r   c                     |t           j        u S r   r=   r-   s     r   __eq__zIntInfinity.__eq__   s    %%r   c                     |t           j        uS r   r=   r-   s     r   __ne__zIntInfinity.__ne__   s    AM))r   c                     |t           j        u rt          j        S |t           j        u rt          j        S t          j        S r   r   r(   sympyfalser   truer-   s     r   __gt__zIntInfinity.__gt__   s4    AJ;am##;:r   c                     |t           j        u rt          j        S |t           j        u rt          j        S t          j        S r   rd   r-   s     r   __ge__zIntInfinity.__ge__   s4    AJ;am##::r   c                     |t           j        u rt          j        S |t           j        u rt          j        S t          j        S r   r   r(   re   rg   r   rf   r-   s     r   __lt__zIntInfinity.__lt__   s4    AJ:am##;;r   c                     |t           j        u rt          j        S |t           j        u rt          j        S t          j        S r   rl   r-   s     r   __le__zIntInfinity.__le__   s4    AJ:am##:;r   c                 R    t          |t                    st          S t          j        S r   r&   r   NotImplementedr   r+   r-   s     r   __mod__zIntInfinity.__mod__   !    %&& 	"!!ur   c                     | S r   r   r>   s    r   floorzIntInfinity.floor       r   c                     | S r   r   r>   s    r   ceilingzIntInfinity.ceiling   rw   r   )*__name__
__module____qualname____doc__
is_integeris_commutativerJ   rI   is_comparabler6   is_prime_op_priority	__slots__r   strr   r"   r   rr   r,   __radd__r/   r2   r7   __rmul__r;   r?   rC   rQ   rW   r[   r`   rb   rh   rj   rm   ro   rs   __rmod__rv   ry   __classcell__r]   s   @r   r   r      sh       	 	 JNIMH LI' ' 'C      
 Z((+ + )(+ HZ((	+ 	+ )(	+ Z((& & )(& Z((+ + )(+ HZ((/ / )(/  % % %( ( (,  " " " " "& & &* * *         Z((  )(
 H        r   r   )	metaclassc                       e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZd Zd Zdefd	Z	  ed
e          d             ZeZ ed
e          d             Z ed
e          d             Z ed
e          d             ZeZ ed
e          d             Zd Zd Zd Zd Z fdZd Zd Z d Z!d Z"d Z#d Z$ ed
e          d             Z%e%Z&d Z'd Z(d Z) xZ*S )r*   zNegative integer infinite quantity.

    NegativeInfinity is a singleton, and can be accessed
    by ``S.NegativeInfinity``.

    See Also
    ========

    IntInfinity
    r   TFr   c                 *    t          j        |           S r   r   r   s    r   r   zNegativeIntInfinity.__new__   r   r   c                     | |k    r|S d S r   r   r   s      r   r"   zNegativeIntInfinity._eval_subs   r#   r   r   c                     dS )Nz-int_oor   r   s     r   r   zNegativeIntInfinity._sympystr   s    yr   r$   c                     t          |t                    rNt          j        rB|t          j        u rt          j        S |t          j        t          j        fv rt          j        S | S t          j        | |          S r   )	r&   r   r   r'   r   r(   r   r+   r,   r-   s     r   r,   zNegativeIntInfinity.__add__   sf    eV$$ 	):)C 	
""z!...uK~dE***r   c                     t          |t                    rNt          j        rB|t          j        u rt          j        S |t          j        t          j        fv rt          j        S | S t          j	        | |          S r   )
r&   r   r   r'   r   r)   r(   r*   r+   r/   r-   s     r   r/   zNegativeIntInfinity.__sub__  sh    eV$$ 	):)C 	***z!.666uK~dE***r   c                 .    |                       |          S r   r1   r-   s     r   r2   zNegativeIntInfinity.__rsub__  r3   r   c                     t          |t                    rBt          j        r6|j        s|t
          j        u rt
          j        S |j        r| S t
          j        S t          j	        | |          S r   )
r&   r   r   r'   r5   r   r+   r6   r   r7   r-   s     r   r7   zNegativeIntInfinity.__mul__  sd    eV$$ 	!):)C 	!} u) = ~dE***r   c                 &   t          |t                    rht          j        r\|t          j        t          j        t          j        t          j        t          j	        fv rt          j	        S |j
        r| S t          j        S t          j        | |          S r   r9   r-   s     r   r;   zNegativeIntInfinity.__truediv__!  s    eV$$ 	):)C 	
"%   u, :!$...r   c                     t           j        S r   r=   r>   s    r   r?   zNegativeIntInfinity.__abs__1  r@   r   c                     t           j        S r   r=   r>   s    r   rC   zNegativeIntInfinity.__neg__4  r@   r   c                    |j         r|t          j        t          j        t          j        t          j        t          j        fv rt          j        S t          |t          j	                  r&|j
        r|j        rt          j        S t          j        S t          j        |z  }t          j        |z  }|dk    r	|j        r|S |t          j        u r|j        r|j        st          j        S ||z  S d S )Nr   )rJ   r   r+   r(   r)   r   r*   r&   re   Integerr6   is_oddNegativeOne	is_finiterH   r5   )r   rO   inf_parts_parts       r   rQ   zNegativeIntInfinity._eval_power7  s    > 	%
"%   u$.. )43L ); )00=(}d*H]D(F1}}!1}A---$ . . ((H$$5	% 	%r   c                     t           j        S r   )rS   fninfrU   s     r   rW   zNegativeIntInfinity._as_mpf_valT  s
    zr   c                 D    t                                                      S r   rY   r\   s    r   r[   zNegativeIntInfinity.__hash__W  r^   r   c                     |t           j        u S r   rB   r-   s     r   r`   zNegativeIntInfinity.__eq__Z  s    ---r   c                     |t           j        uS r   rB   r-   s     r   rb   zNegativeIntInfinity.__ne__]  s    A111r   c                     |t           j        u rt          j        S |t           j        u rt          j        S t          j        S r   r   r)   re   rg   r*   rf   r-   s     r   rh   zNegativeIntInfinity.__gt__`  s6    A&&&:a+++;;r   c                     |t           j        u rt          j        S |t           j        u rt          j        S t          j        S r   r   r-   s     r   rj   zNegativeIntInfinity.__ge__h  s6    A&&&:a+++:;r   c                     |t           j        u rt          j        S |t           j        u rt          j        S t          j        S r   r   r)   re   rf   r*   rg   r-   s     r   rm   zNegativeIntInfinity.__lt__p  s6    A&&&;a+++;:r   c                     |t           j        u rt          j        S |t           j        u rt          j        S t          j        S r   r   r-   s     r   ro   zNegativeIntInfinity.__le__x  s6    A&&&;a+++::r   c                 R    t          |t                    st          S t          j        S r   rq   r-   s     r   rs   zNegativeIntInfinity.__mod__  rt   r   c                     | S r   r   r>   s    r   rv   zNegativeIntInfinity.floor  rw   r   c                     | S r   r   r>   s    r   ry   zNegativeIntInfinity.ceiling  rw   r   c                 6    t           j        dt           j        diS )N   )r   r   r   r>   s    r   as_powers_dictz"NegativeIntInfinity.as_powers_dict  s    q!-33r   )+rz   r{   r|   r}   r   r~   rI   r   r   rF   rJ   r   r   r   r"   r   r   r   rr   r,   r   r/   r2   r7   r   r;   r?   rC   rQ   rW   r[   r`   rb   rh   rj   rm   ro   rs   r   rv   ry   r   r   r   s   @r   r*   r*      su       	 	 LJNMIHI' ' '  C     Z((+ + )(+ HZ((+ + )(+ Z((& & )(& Z((+ + )(+ HZ((/ / )(/    % % %:  " " " " ". . .2 2 2         Z((  )(
 H    4 4 4 4 4 4 4r   r*   )mpmath.libmplibmprS   re   r   sympy.core.decoratorsr   sympy.core.exprr   sympy.core.numbersr   sympy.core.parametersr   sympy.core.singletonr   r	   r   r   r*   r   r   r   <module>r      s                , , , , , , & & & & & & % % % % % % 3 3 3 3 3 3 - - - - - - - -| | | | |&I | | | |~ 
4 4 4 4 4&I 4 4 4 4 4 4r   