
    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y)    N)Expr)
_sympifyit)
AtomicExpr)Number)global_parameters)S	Singletonc                   h    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    T/var/www/html/engine/venv/lib/python3.12/site-packages/torch/utils/_sympy/numbers.pyr   zIntInfinity.__new__*       !!#&&    returnc                      y)Nint_oor   selfprinters     r   	_sympystrzIntInfinity._sympystr-   s    r   c                     | |k(  r|S y r   r   r   oldnews      r   
_eval_subszIntInfinity._eval_subs0       3;J r   otherc                    t        |t              rht        j                  rX|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__=   sg    eV$):)C)CQ%7%788..66uuK~~dE**r   c                 ^   t        |t              rt        j                  rx|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   sy    eV$):)C)C

")))***zz!..uuK~~dE**r   c                 &    |  j                  |      S r   r,   r-   s     r   __rsub__zIntInfinity.__rsub__U       u%%r   c                    t        |t              r\t        j                  rL|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   sZ    eV$):)C)C}}uu))(((~~dE**r   c                    t        |t              rt        j                  r|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)C

""%%  uu,,zz!%%%!!$..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 r|j                  ruddl	m
}  ||      }|j                  rt        j                  S |j                  rt        j                  S |j                  rt        j
                  S | |j                         z  S y y )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    $$== $$66M155=55L1$$$55L  E)dnn?4I$$((($$vv  uu4::<'' /=)r   c                 "    t         j                  S r   )mlibfinfr   precs     r   _as_mpf_valzIntInfinity._as_mpf_val   s    yyr   c                      t         |          S r   super__hash__r   	__class__s    r   r[   zIntInfinity.__hash__       w!!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    AMM))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__   s8    AJJ;;amm#;;::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__   s8    AJJ;;amm#::::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__   s8    AJJ::amm#;;;;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__   s8    AJJ::amm#::;;r   c                 N    t        |t              st        S t        j                  S r   r&   r   NotImplementedr   r+   r-   s     r   __mod__zIntInfinity.__mod__       %&!!uu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      sJ   	 JNIMH LI'C 
 (+ )+ H(	+ )	+ (& )& (+ )+ H(/ )/%(,"&* ( )
 Hr   r   )	metaclassc                   n    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 y r   r   r   s      r   r"   zNegativeIntInfinity._eval_subs   r#   r   r   c                      y)Nz-int_oor   r   s     r   r   zNegativeIntInfinity._sympystr   s    r   r$   c                    t        |t              rft        j                  rV|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__   s_    eV$):)C)C

"zz!..uuK~~dE**r   c                    t        |t              rft        j                  rV|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__  sc    eV$):)C)C***zz!..66uuK~~dE**r   c                 &    |  j                  |      S r   r1   r-   s     r   r2   zNegativeIntInfinity.__rsub__  r3   r   c                    t        |t              r\t        j                  rL|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__  sX    eV$):)C)C}}uu))== ~~dE**r   c                 h   t        |t              rt        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)C

""%%  uu,,::!!$..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                 p   |j                   r)|t        j                  t        j                  t        j                  t        j
                  t        j                  fv rt        j                  S t        |t        j                        r8|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 y )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    >>

""%%  uu$.43L3L;;000==(}}d*H]]D(F1}!1!1A---$$(((H$$5 r   c                 "    t         j                  S r   )rS   fninfrU   s     r   rW   zNegativeIntInfinity._as_mpf_valT  s    zzr   c                      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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__`  s<    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  s<    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  s<    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  s<    A&&&;;a+++::::r   c                 N    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                 F    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*      sM   	 LJNMIHI'C  (+ )+ H(+ )+ (& )& (+ )+ H(/ )/%:".2 ( )
 H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      sI       , & % 3 -|&I |~ 
4&I 4r   