§
    �Štj/  ã                   óÀ   — 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defd„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    úX/var/www/html/CA-Chatbot/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   € å�e�VÑ$Ô$ð 	Õ):Ô)Cð 	Ø�œ¥QÔ%7Ð8Ð8Ð8Ø�Ø�Ô.µ´Ð6Ð6Ð6Ý”u�ØˆKÝŒ~˜d EÑ*Ô*Ð*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}   € å�e�VÑ$Ô$ð 	Õ):Ô)Cð 	Ø�œ
Ð"Ð"ÝÔ)Ð)Ø�Ô*Ð*Ð*Ý”zÐ!Ø�œ­¬Ð.Ð.Ð.Ý”u�ØˆKÝŒ~˜d EÑ*Ô*Ð*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   € å�e�VÑ$Ô$ð 	)Õ):Ô)Cð 	)ØŒ}ð  ­¬  Ý”u�ØÔ)ð Ø�ÝÔ(Ð(ÝŒ~˜d EÑ*Ô*Ð*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„   € å�e�VÑ$Ô$ð 	&Õ):Ô)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Û   € ØÔ$ð 	!Ý”=Ð ØÔ$ð 	Ý”6ˆMØ•1”5ˆ=ˆ=Ý”5ˆLØ•1Ô$Ð$Ð$Ý”5ˆLØÔ  EÐ)Ð)¨d¬nÐ)Ø?Ð?Ð?Ð?Ð?Ð?à˜˜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__”   ó   ø€ Ý‰wŒ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   € Ø�AœMÐ)Ð)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   € Ø•A”JÐÐÝ”;ÐØ•a”mÐ#Ð#Ý”;Ðå”:Ð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   € Ø•A”JÐÐÝ”;ÐØ•a”mÐ#Ð#Ý”:Ðå”:Ð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   € Ø•A”JÐÐÝ”:ÐØ•a”mÐ#Ð#Ý”;Ðå”;Ð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   € Ø•A”JÐÐÝ”:ÐØ•a”mÐ#Ð#Ý”:Ðå”;Ð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   )Ú	metaclassr   c                 ób   — | t           j        t           j        t           j        t           j        fv S )a}  Check if an expression is any type of infinity (positive or negative).

    This handles both sympy's built-in infinities (oo, -oo) and PyTorch's
    integer infinities (int_oo, -int_oo).

    Note: We cannot rely on sympy's is_finite property because IntInfinity
    and NegativeIntInfinity have is_integer=True, which implies is_finite=True
    in sympy's assumption system.
    )r   r(   r)   r   r*   )Úexprs    r   Úis_infiniter�   Ï   s,   € ð Ý	Œ
Ý	ÔÝ	ŒÝ	Ôð	ð ð r   c                   ó¶  ‡ — 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*   z­Negative 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   € å�e�VÑ$Ô$ð 	Õ):Ô)Cð 	Ø�œ
Ð"Ð"Ý”zÐ!Ø�œ­¬Ð.Ð.Ð.Ý”u�ØˆKÝŒ~˜d EÑ*Ô*Ð*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   € å�e�VÑ$Ô$ð 	Õ):Ô)Cð 	Ø�Ô*Ð*Ð*Ý”zÐ!Ø�Ô.µ´Ð6Ð6Ð6Ý”u�ØˆKÝŒ~˜d EÑ*Ô*Ð*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   € å�e�VÑ$Ô$ð 	!Õ):Ô)Cð 	!ØŒ}ð  ­¬  Ý”u�ØÔ)ð Ø�Ý”=Ð ÝŒ~˜d EÑ*Ô*Ð*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__3  s€   € å�e�VÑ$Ô$ð 	Õ):Ô)Cð 	ØÝ”
Ý”ÝÔ"ÝÔ%Ý”ðð ð õ ”u�ØÔ,ð Ø�Ý”:ÐÝÔ! $¨Ñ.Ô.Ð.r   c                 ó   — t           j        S r   r=   r>   s    r   r?   zNegativeIntInfinity.__abs__C  r@   r   c                 ó   — t           j        S r   r=   r>   s    r   rC   zNegativeIntInfinity.__neg__F  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_powerI  së   € ØŒ>ð 	%ØÝ”Ý”
ÝÔ"Ý”ÝÔ%ðð ð õ ”u�å˜$¥¤Ñ.Ô.ð )°4Ô3Lð )Ø”;ð )ÝÔ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_valf  s
   € ÝŒzÐr   c                 óD   •— t          ¦   «                              ¦   «         S r   rY   r\   s    €r   r[   zNegativeIntInfinity.__hash__i  r^   r   c                 ó   — |t           j        u S r   rB   r-   s     r   r`   zNegativeIntInfinity.__eq__l  s   € Ø�Ô-Ð-Ð-r   c                 ó   — |t           j        uS r   rB   r-   s     r   rb   zNegativeIntInfinity.__ne__o  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__r  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__z  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__‚  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__Š  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   Úboolr�   r*   r   r   r   ú<module>r¹      s7  ðà Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø &Ð &Ð &Ð &Ð &Ð &Ø %Ð %Ð %Ð %Ð %Ð %Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -ð|ð |ð |ð |ð |�& Ið |ñ |ô |ð |ð~ 
Œ€ð˜ð ð ð ð ð&4ð 4ð 4ð 4ð 4˜&¨Ið 4ñ 4ô 4ð 4ð 4ð 4r   