Ë
    S²j/  ã                   ó¼   — 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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    úY/var/www/html/ia-enhanced/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   € ä�eœVÔ$Ô):×)CÒ)CØœŸ™¤Q×%7Ñ%7Ð8Ñ8Ø�Øœ×.Ñ.´·±Ð6Ñ6Ü—u‘u�ØˆKÜ�~‰~˜d EÓ*Ð*r   c                 ó^  — t        |t        «      rˆt        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   € ä�eœVÔ$Ô):×)CÒ)CØœŸ
™
Ñ"Ü×)Ñ)Ð)Øœ×*Ñ*Ñ*Ü—z‘zÐ!ØœŸ™¬¯©Ð.Ñ.Ü—u‘u�ØˆKÜ�~‰~˜d EÓ*Ð*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   € ä�eœVÔ$Ô):×)CÒ)CØ�}Š} ¬¯©¡Ü—u‘u�Ø×)Ò)Ø�Ü×(Ñ(Ð(Ü�~‰~˜d EÓ*Ð*r   c                 ó„  — t        |t        «      r›t        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†   € ä�eœVÔ$Ô):×)CÒ)CØÜ—
‘
Ü—‘Ü×"Ñ"Ü×%Ñ%Ü—‘ðñ ô —u‘u�Ø×,Ò,Ü—z‘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 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Ä   € Ø×$Ò$Ü—=‘=Ð Ø×$Ò$Ü—6‘6ˆMØ”1—5‘5‰=Ü—5‘5ˆLØ”1×$Ñ$Ñ$Ü—5‘5ˆLØ× Ñ  EÑ)¨d¯nªnÝ?á˜4›ˆIØ×$Ò$Ü×(Ñ(Ð(Ø×$Ò$Ü—v‘v�Ø× Ò Ü—u‘u�à˜4Ÿ:™:›<Ñ'Ð'ð /=Ð)r   c                 ó"   — t         j                  S r   )ÚmlibÚfinf©r   Úprecs     r   Ú_as_mpf_valzIntInfinity._as_mpf_val‘   s   € Ü�y‰yÐ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   € ØœAŸM™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__�   s8   € Ø”A—J‘JÑÜ—;‘;ÐØ”a—m‘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__¥   s8   € Ø”A—J‘JÑÜ—;‘;ÐØ”a—m‘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__­   s8   € Ø”A—J‘JÑÜ—:‘:ÐØ”a—m‘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__µ   s8   € Ø”A—J‘JÑÜ—:‘:ÐØ”a—m‘mÑ#Ü—:‘:Ðä—;‘;Ðr   c                 óN   — t        |t        «      st        S t        j                  S r   ©r&   r   ÚNotImplementedr   r+   r-   s     r   Ú__mod__zIntInfinity.__mod__½   ó   € ä˜%¤Ô&Ü!Ð!Ü�u‰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      sJ  ø„ ñ	ð €JØ€NØ€IØÐØ€MØÐØ€Hð €Là€Iò'ð Có òð
ñ �˜Ó(ñ+ó )ð+ð €Há�˜Ó(ñ	+ó )ð	+ñ �˜Ó(ñ&ó )ð&ñ �˜Ó(ñ+ó )ð+ð €Há�˜Ó(ñ/ó )ð/òò%ò(ò,ô"ò&ò*òòòòñ �˜Ó(ñó )ðð
 €Hòör   r   )Ú	metaclassr   c                 ó‚   — | 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�   Ï   s6   € ð Ü	�
‰
Ü	×ÑÜ	�‰Ü	×Ñð	ð ð r   c                   ó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*   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 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_   € ä�eœVÔ$Ô):×)CÒ)CØœŸ
™
Ñ"Ü—z‘zÐ!ØœŸ™¬¯©Ð.Ñ.Ü—u‘u�ØˆKÜ�~‰~˜d EÓ*Ð*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   € ä�eœVÔ$Ô):×)CÒ)CØœ×*Ñ*Ñ*Ü—z‘zÐ!Øœ×.Ñ.´·±Ð6Ñ6Ü—u‘u�ØˆKÜ�~‰~˜d EÓ*Ð*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   € ä�eœVÔ$Ô):×)CÒ)CØ�}Š} ¬¯©¡Ü—u‘u�Ø×)Ò)Ø�Ü—=‘=Ð Ü�~‰~˜d EÓ*Ð*r   c                 óh  — t        |t        «      r�t        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Ò)CØÜ—
‘
Ü—‘Ü×"Ñ"Ü×%Ñ%Ü—‘ðñ ô —u‘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                 ó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_powerI  så   € Ø�>‹>ØÜ—‘Ü—
‘
Ü×"Ñ"Ü—‘Ü×%Ñ%ðñ ô —u‘u�ä˜$¤§¡Ô.°4×3LÒ3LØ—;’;Ü×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_valf  s   € Ü�z‰zÐr   c                 ó    •— 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Ð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  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__z  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__‚  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__Š  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   Úboolr�   r*   r   r   r   ú<module>r¹      sU   ðå Û Ý Ý ,Ý &Ý %Ý 3ß -ô|�& Iõ |ð~ 
�‰€ð˜ó ô&4˜&¨Iö 4r   