§
    �ŠtjÏÛ  ã                   ó˜  — d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZm	Z	 d dl
mZ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mZmZ d d
lmZ d dlmZ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' ddl(m)Z)m*Z* erd dlm+Z+  e	de¬¦  «        Z, ed¦  «        Z-dZ.dej/        de0fd„Z1dej/        dej/        dej/        fd„Z2g d¢Z3dej        de0fd„Z4d eee-         ge,f         deee-         ge,ej5        z  f         fd!„Z6d"e0dz  d#e0dz  de0dz  fd$„Z7d%ej/        d&ej/        dej/        fd'„Z8 G d(„ d)ej9        ¦  «        Z: G d*„ d+ej9        ¦  «        Z; G d,„ d-ej9        ¦  «        Z< G d.„ d/ej9        ¦  «        Z= G d0„ d1ej9        ¦  «        Z> G d2„ d3e:¦  «        Z? G d4„ d5ej9        ¦  «        Z@ G d6„ d7ej9        ¦  «        ZA G d8„ d9ej9        ¦  «        ZB G d:„ d;ej9        ¦  «        ZC G d<„ d=ej9        ¦  «        ZD G d>„ d?ee¦  «        ZE G d@„ dAeEe¦  «        ZF G dB„ dCeEe¦  «        ZGdD„ ZHdE„ ZI G dF„ dGej9        ¦  «        ZJ G dH„ dIej9        ¦  «        ZK G dJ„ dKej9        ¦  «        ZL G dL„ dMej9        ¦  «        ZM G dN„ dOej9        ¦  «        ZN G dP„ dQej9        ¦  «        ZO G dR„ dSej9        ¦  «        ZP G dT„ dUej9        ¦  «        ZQ G dV„ dWej9        ¦  «        ZR G dX„ dYej9        ¦  «        ZS G dZ„ d[ej9        ¦  «        ZTd\„ ZU eUd]¦  «        ZV eUd^¦  «        ZW eUd_¦  «        ZX eUd`¦  «        ZY eUda¦  «        ZZ eUdb¦  «        Z[ eUdc¦  «        Z\ eUdd¦  «        Z] eUde¦  «        Z^ eUdf¦  «        Z_ eUdg¦  «        Z` eUdh¦  «        Za eUdi¦  «        Zb eUdj¦  «        Zcdk„ Zd eddldm¦  «        Ze eddndo¦  «        Zf eddpdq¦  «        ZgdS )ré    N)ÚCallable)ÚSupportsFloatÚTYPE_CHECKINGÚTypeVar)ÚTypeVarTupleÚUnpack)ÚS©Úsympify)ÚExpr)ÚApplication)Ú_torfÚ	fuzzy_andÚfuzzy_or)Úequal_valued)Ú	LatticeOpÚShortCircuit)Úordered)Úwalk)Ú
PRECEDENCE)Úsift)ÚTorchVersioné   )Úint_ooÚis_infinite)ÚIterableÚ_T)ÚboundÚ_Tsé   ÚexprÚreturnc                 óp   — t          | t          j        ¦  «        ot          | j        ¦  «        t
          k    S ©N)Ú
isinstanceÚsympyÚAddÚlenÚargsÚ_MAX_ADD_TERMS_FOR_POLY_GCD©r!   s    úZ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/utils/_sympy/functions.pyÚ_is_wide_addr-   )   s'   € Ý�d�EœIÑ&Ô&ÐW­3¨t¬y©>¬>Õ<WÒ+WÐWó    ÚaÚbc                 óˆ   — t          | ¦  «        st          |¦  «        rt          | |¦  «        S t          j        | |¦  «        S )zrLike sympy.gcd but avoids polynomial-GCD on wide Add expressions,
    falling back to simple_floordiv_gcd instead.)r-   Úsimple_floordiv_gcdr&   Úgcd©r/   r0   s     r,   Úsafe_gcdr5   -   s?   € õ �A�„ð )�, q™/œ/ð )Ý" 1 aÑ(Ô(Ð(ÝŒ9�Q˜‰?Œ?Ðr.   )ÚFloorDivÚModularIndexingÚWhereÚ	PythonModÚModÚCleanDivÚ	CeilToIntÚ
FloorToIntÚCeilDivÚ
IntTrueDivÚFloatTrueDivÚLShiftÚRShiftÚ!IsNonOverlappingAndDenseIndicatorÚTruncToFloatÚ
TruncToIntÚ
RoundToIntÚRoundDecimalÚToFloatÚFloatPowÚPowByNaturalÚIdentityc                 óð   — t          | t          j        ¦  «        o\| j        oUt	          | j        ¦  «        dk    o=| j        d         j        o+| j        d         j        o| j        d         | j        d         uS )Né   r   r   )r%   r&   r   Úis_Addr(   Ú_argsÚ	is_symbolr+   s    r,   Ú_is_symbols_binary_summationrQ   n   sx   € õ 	�4�œÑ$Ô$ð 	/ØŒKð	/å�”
‰OŒO˜qÒ ð	/ð ŒJ�qŒMÔ#ð	/ð ŒJ�qŒMÔ#ð		/ð
 ŒJ�qŒM ¤¨A¤Ð.ðr.   Úfc                 ó”   ‡ — t          j        ‰ ¦  «        dt          t                   dt          t
          j        z  fˆ fd„¦   «         }|S )Nr)   r"   c                  óº   •—  ‰| Ž }t          d„ | D ¦   «         ¦  «        r;t          |t          j        ¦  «        s!t          j        t	          |¦  «        ¦  «        }|S )Nc              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r$   )r%   r&   ÚFloat©Ú.0r/   s     r,   ú	<genexpr>z-_keep_float.<locals>.inner.<locals>.<genexpr>€   s.   è è € Ð8Ð8¨a�z˜!�Uœ[Ñ)Ô)Ð8Ð8Ð8Ð8Ð8Ð8r.   )Úanyr%   r&   rV   Úfloat)r)   ÚrrR   s     €r,   Úinnerz_keep_float.<locals>.inner}   sc   ø€ à˜a ˜hˆÝÐ8Ð8°4Ð8Ñ8Ô8Ñ8Ô8ð 	&ÅØ�uŒ{ñB
ô B
ð 	&õ ”�E !™HœHÑ%Ô%ˆAØˆr.   )Ú	functoolsÚwrapsr   r   r   r&   rV   )rR   r]   s   ` r,   Ú_keep_floatr`   z   sX   ø€ õ „_�QÑÔð•V�C”[ð ¥R­%¬+Ñ%5ð ð ð ð ð ñ Ôðð €Lr.   ÚxÚyc                 ó   — d | |fv rd S | |k    S r$   © )ra   rb   s     r,   Úfuzzy_eqre   Š   s   € Ø��1ˆv€~€~ØˆtØ�Š6€Mr.   ÚpÚqc                 óæ  ‡‡— dt           j        dt          fd„Šdt           j        dt          fˆfd„}t          j         || ¦  «         ||¦  «        ¦  «        }| |z  ||z  }} t          t          t           j        j        t           j	                             | ¦  «        ¦  «        ¦  «        }t           j                             |¦  «        }|D ]"Št          ˆfd„|D ¦   «         ¦  «        r|‰z  }Œ#|S )aÏ  
    Fast path for sympy.gcd, using a simple factoring strategy.

    We try to rewrite p and q in the form n*e*p1 + n*e*p2 and n*e*q0,
    where n is the greatest common integer factor and e is the largest
    syntactic common factor (i.e., common sub-expression) in p and q.
    Then the gcd returned is n*e, cancelling which we would be left with
    p1 + p2 and q0.

    Note that further factoring of p1 + p2 and q0 might be possible with
    sympy.factor (which uses domain-specific theories). E.g., we are unable
    to find that x*y + x + y + 1 is divisible by x + 1. More generally,
    when q is of the form q1 + q2 (instead of being already factored) it
    might be necessary to fall back on sympy.gcd.
    ra   r"   c                 ó|   — d„ t           j                             | ¦  «        D ¦   «         }t          j        |¦  «        S )Nc                 óˆ   — g | ]?}t          |t          t          j        f¦  «        ¯#t	          t          |¦  «        ¦  «        ‘Œ@S rd   )r%   Úintr&   ÚIntegerÚabs©rX   Úargs     r,   ú
<listcomp>zDsimple_floordiv_gcd.<locals>.integer_coefficient.<locals>.<listcomp>¢   sK   € ð +
ð +
ð +
àÝ˜#¥¥U¤]Ð3Ñ4Ô4ð+
Ý•�C‘”‰MŒMð+
ð +
ð +
r.   )r&   ÚMulÚ	make_argsÚmathÚprod)ra   Úinteger_coefficientss     r,   Úinteger_coefficientz0simple_floordiv_gcd.<locals>.integer_coefficient¡   sD   € ð+
ð +
å”y×*Ò*¨1Ñ-Ô-ð+
ñ +
ô +
Ðõ
 ŒyÐ-Ñ.Ô.Ð.r.   r!   c                 óœ   •— t          ‰t          j                             | ¦  «        ¦  «        }t	          j        t          j        |¦  «        S r$   )Úmapr&   r'   rr   r^   Úreducers   r3   )r!   Úinteger_factorsrv   s     €r,   Úinteger_factorz+simple_floordiv_gcd.<locals>.integer_factor©   s>   ø€ Ý),Ø¥¤×!4Ò!4°TÑ!:Ô!:ñ*
ô *
ˆõ Ô¥¤¨/Ñ:Ô:Ð:r.   c              3   ó    •K  — | ]}‰|v V — Œ	d S r$   rd   )rX   Ú
base_splitra   s     €r,   rY   z&simple_floordiv_gcd.<locals>.<genexpr>·   s'   øè è € Ð=Ð= :ˆq�JˆÐ=Ð=Ð=Ð=Ð=Ð=r.   )r&   ÚBasicrk   rs   r3   Úlistrx   rq   rr   r'   Úall)rf   rg   r{   r3   Úbase_splitsÚdivisor_splitrv   ra   s         @@r,   r2   r2   �   s  øø€ ð"/�uœ{ð /­sð /ð /ð /ð /ð;�Uœ[ð ;­Sð ;ð ;ð ;ð ;ð ;ð ;õ Œx˜˜ qÑ)Ô)¨>¨>¸!Ñ+<Ô+<Ñ=Ô=€CØˆs‰7�A˜‘G€q€Aå15Ý�EŒIÔ¥¤×!4Ò!4°QÑ!7Ô!7Ñ8Ô8ñ2ô 2€Kõ .3¬Y×-@Ò-@ÀÑ-CÔ-C€MØð ð ˆÝÐ=Ð=Ð=Ð=°Ð=Ñ=Ô=Ñ=Ô=ð 	Ø˜‘'ˆCøØ€Jr.   c                   ó  — e Zd ZU dZdZeedf         ed<   dZeed<   dZ	e
ed<   ed	ej        fd
„¦   «         Zed	ej        fd„¦   «         Zdej        j        d	efd„Zedej        dej        d	ej        dz  fd„¦   «         Zd	e
dz  fd„ZdS )r6   a  
    We maintain this so that:
    1. We can use divisibility guards to simplify FloorDiv(a, b) to a / b.
    2. Printing out the expression is nicer (compared to say, representing a//b as (a - a % b) / b)

    NB: This is Python-style floor division, round to -Inf
    ©rM   .Únargsé#   Ú
precedenceTÚ
is_integerr"   c                 ó   — | j         d         S ©Nr   ©r)   ©Úselfs    r,   ÚbasezFloorDiv.baseÛ   ó   € àŒy˜Œ|Ðr.   c                 ó   — | j         d         S ©Nr   r‹   rŒ   s    r,   ÚdivisorzFloorDiv.divisorß   r�   r.   Úprinterc                 ó¸   — |                      | j        t          d         dz
  ¦  «        }|                      | j        t          d         dz
  ¦  «        }d|› d|› d�S )NÚAtomç      à?ú(z//ú))ÚparenthesizerŽ   r   r’   ©r�   r“   rŽ   r’   s       r,   Ú	_sympystrzFloorDiv._sympystrã   s]   € Ø×#Ò# D¤I­z¸&Ô/AÀCÑ/GÑHÔHˆØ×&Ò& t¤|µZÀÔ5GÈ#Ñ5MÑNÔNˆØ%�4Ð%Ð%˜7Ð%Ð%Ð%Ð%r.   rŽ   r’   Nc                 óz  — |j         rt          d¦  «        ‚t          |¦  «        rt          |¦  «        rt          j        S |t          j        u s|t          j        u rt          j        S |j         rt          j        j        S |j        rt          |d¦  «        r|S |j        r%t          |d¦  «        rt          j	        |d¦  «        S ||k    rt          j        j
        S t          |t          j        ¦  «        rÍt          |t          j        ¦  «        r³t          |¦  «        st          |¦  «        r•t          |¦  «        t          |¦  «        z  }|t          j        k    rt           S |t          j         k    rt            S t          j        |¦  «        rt          j        S t          j        t          j        |¦  «        ¦  «        S t          |t          j        ¦  «        rKt          |t          j        ¦  «        r1t          j        t)          |¦  «        t)          |¦  «        z  ¦  «        S t          |t*          ¦  «        r)t+          |j        d         |j        d         |z  ¦  «        S t          |t          j        ¦  «        �rd}g }t          j                             |¦  «        D ]²}||z  }d }t          |t          j	        ¦  «        rlt3          t          j        ¦  «        t3          d¦  «        k     rB|                     t          j        ¦  «        }	t;          d„ |	D ¦   «         ¦  «        }
|j        o|
}n|j        }|r|                     |¦  «         ||z  }Œ³t?          |¦  «        dk    r%t+          |t          j        |ddiŽz
  |¦  «        |z   S 	 tA          ||¦  «        }t          |d¦  «        r*t          |t          j        ¦  «        rtC          ||¦  «        }t          |d¦  «        s:t+          t          j"        ||z  ¦  «        t          j"        ||z  ¦  «        ¦  «        S n# t          j#        $ r Y nw xY wd S )	Núdivision by zeror   éÿÿÿÿr   z1.15.0c              3   ó,   K  — | ]}|j         d k    V — ŒdS )r   N)rg   )rX   r\   s     r,   rY   z FloorDiv.eval.<locals>.<genexpr>&  s(   è è € Ð,IÐ,I¸!¨Q¬S°AªXÐ,IÐ,IÐ,IÐ,IÐ,IÐ,Ir.   ÚevaluateF)$Úis_zeroÚZeroDivisionErrorr   r&   Únanr	   ÚZerorˆ   r   rq   ÚOner%   ÚNumberr[   rs   Úinfr   Úisnanrl   Úfloorrk   r6   r)   r'   rr   r   Ú__version__ÚatomsÚRationalr€   Úappendr(   r2   r5   ÚsimplifyÚPolynomialError)ÚclsrŽ   r’   r\   Ú	quotientsÚtermsÚtermÚquotientÚquotient_is_integerÚ	rationalsÚall_rationals_intsr3   s               r,   ÚevalzFloorDiv.evalê   s	  € ð Œ?ð 	8Ý#Ð$6Ñ7Ô7Ð7Ý�tÑÔð 	¥¨WÑ!5Ô!5ð 	Ý”9ÐØ•5”9ÐÐ ­5¬9Ð 4Ð 4Ý”9ÐàŒ<ð 	 Ý”7”<ÐØŒ?ð 	�|¨G°QÑ7Ô7ð 	ØˆKØŒ?ð 	'�|¨G°RÑ8Ô8ð 	'Ý”9˜T 2Ñ&Ô&Ð&Ø�7Š?ˆ?Ý”7”;Ðõ �t�Uœ\Ñ*Ô*ð	4å˜7¥E¤LÑ1Ô1ð	4õ ˜TÑ"Ô"ð	4õ '2°'Ñ&:Ô&:ð	4õ
 �d‘”�e G™nœnÑ,ˆAØ•D”HŠ}ˆ}Ý�Ø•t”x�i’�Ý�w�Ý”˜A‘”ð 4Ý”yÐ å”}¥T¤Z°¡]¤]Ñ3Ô3Ð3Ý�d�EœMÑ*Ô*ð 	<­z¸'Å5Ä=Ñ/QÔ/Qð 	<Ý”=¥ T¡¤­c°'©l¬lÑ!:Ñ;Ô;Ð;Ý�d�HÑ%Ô%ð 	BÝ˜DœI aœL¨$¬)°A¬,¸Ñ*@ÑAÔAÐAõ �g�uœ}Ñ-Ô-ñ 	ØˆIØˆEÝœ	×+Ò+¨DÑ1Ô1ð *ð *�Ø '™>�ð
 '+Ð#Ý˜h­¬	Ñ2Ô2ð >µ|ÝÔ%ñ8ô 8å  Ñ*Ô*ò8+ð 8+ð !)§¢­u¬~Ñ >Ô >�IÝ),Ð,IÐ,I¸yÐ,IÑ,IÔ,IÑ)IÔ)IÐ&Ø*2Ô*=Ð*TÐBTÐ'Ð'à*2Ô*=Ð'à&ð *Ø—L’L Ñ&Ô&Ð&Ø Ñ)�Iøå�5‰zŒz˜QŠˆõ ˜T¥E¤I¨uÐ$E¸uÐ$EÐ$EÑEÀwÑOÔOØñ ðð
		Ý% d¨GÑ4Ô4ˆCÝ˜C Ñ#Ô#ð .­
°7½E¼IÑ(FÔ(Fð .Ý˜t WÑ-Ô-�Ý  QÑ'Ô'ð ÝÝ”N 4¨#¡:Ñ.Ô.µ´¸wÈ¹}Ñ0MÔ0Mñô ð ðøõ Ô$ð 	ð 	ð 	ØˆDð	øøøð ˆts   ÎBP& Ð&P8Ð7P8c                 ó|   — | j         d d…         \  }}t          |j        |j        |j        |j        g¦  «        rdS d S )NrM   T)r)   r€   rˆ   Úis_nonnegative©r�   rf   rg   s      r,   Ú_eval_is_nonnegativezFloorDiv._eval_is_nonnegativeC  sB   € ØŒy˜˜!˜Œ}‰ˆˆ1Ý�”˜aœl¨AÔ,<¸aÔ>NÐOÑPÔPð 	Ø�4Øˆtr.   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r…   Útuplerk   Ú__annotations__r‡   rˆ   ÚboolÚpropertyr&   r~   rŽ   r’   ÚprintingÚ
StrPrinterÚstrr›   Úclassmethodrl   r¸   r¼   rd   r.   r,   r6   r6   Î   s9  € € € € € € ðð ð "€Eˆ5��c�Œ?Ð!Ð!Ñ!Ø€J�ÐÐÑØ€J�ÐÐÑàð�e”kð ð ð ñ „Xðð ð˜œð ð ð ñ „Xðð& ¤Ô!:ð &¸sð &ð &ð &ð &ð ðV˜œð V°´ð VÀ%Ä+ÐPTÑBTð Vð Vð Vñ „[ðVðp d¨T¡kð ð ð ð ð ð r.   r6   c            
       ó¶   — e Zd ZU dZdZeedf         ed<   dZe	ed<   dZ
eed<   ed	ej        d
ej        dej        dej        dz  fd„¦   «         Zde	dz  fd„ZdS )r7   zK
    ModularIndexing(a, b, c) => (a // b) % c where % is the C modulus
    ©é   .r…   Trˆ   r†   r‡   rŽ   r’   Úmodulusr"   Nc                 ó†  — |dk    s|dk    rt           j        j        S t          |t           j        ¦  «        r<t          |t           j        ¦  «        r"t          |t           j        ¦  «        r||z  |z  S 	 |dk    rQt          ||¦  «        }|dk    r;t          t          j        ||z  ¦  «        t          j        ||z  ¦  «        |¦  «        S n# t           j        $ r Y nw xY wt          |t           j	        ¦  «        �rt          |¦  «        sög }d}|j        D ]¥}t          |||z  ¦  «        ||z  k    r‰t          |t           j        ¦  «        r|dk     sPt          |t           j        ¦  «        r:t          |j        d         t           j        ¦  «        r|j        d         dk     rd} n|                     |¦  «         Œ¦t          |¦  «        t          |j        ¦  «        k    r |rt          t          |¦  «        ||¦  «        S t          |t           ¦  «        r*t          |j        d         |j        d         |z  |¦  «        S d S )Nr   r   TF)r&   r	   r¤   r%   rl   r5   r7   r®   r¯   r'   r-   r)   rq   r­   r(   Úsumr6   )r°   rŽ   r’   rÌ   r3   Ú	new_termsÚall_positiver³   s           r,   r¸   zModularIndexing.evalS  sC  € ð �1Š9ˆ9˜ 1š˜Ý”7”<Ðå�t�Uœ]Ñ+Ô+ð	/å˜7¥E¤MÑ2Ô2ð	/õ ˜7¥E¤MÑ2Ô2ð	/ð
 ˜G‘O wÑ.Ð.ð
	Ø˜!Š|ˆ|Ý˜t WÑ-Ô-�Ø˜!’8�8Ý*Ýœ t¨c¡zÑ2Ô2Ýœ w°¡}Ñ5Ô5Øñô ð øøõ
 Ô$ð 	ð 	ð 	ØˆDð	øøøõ �d�EœIÑ&Ô&ñ 	I­|¸DÑ/AÔ/Að 	IØ-/ˆIØ!%ˆLØœ	ð /ð /�Ý˜D '¨GÑ"3Ñ4Ô4¸À'Ñ8IÒIÐIÝ" 4­¬Ñ7Ô7ð /¸DÀ1ºH¸HÝ" 4­¬Ñ3Ô3ð =Eå& t¤y°¤|µU´]ÑCÔCð =Eð !œI aœL¨1Ò,Ð,ð (-˜Ø˜à!×(Ò(¨Ñ.Ô.Ð.øå�9‰~Œ~¥ T¤Y¡¤Ò/Ð/°LÐ/Ý&¥s¨9¡~¤~°wÀÑHÔHÐHå�d�HÑ%Ô%ð 	RÝ" 4¤9¨Q¤<°´¸1´ÀÑ1GÈÑQÔQÐQàˆts   Á5AC ÃCÃCc                 óZ   — | j         d d…         \  }}t          |j        |j        ¦  «        S )NrM   )r)   re   rº   r»   s      r,   r¼   z$ModularIndexing._eval_is_nonnegativeŠ  s+   € ØŒy˜˜!˜Œ}‰ˆˆ1Ý˜Ô(¨!Ô*:Ñ;Ô;Ð;r.   )r½   r¾   r¿   rÀ   r…   rÁ   rk   rÂ   rˆ   rÃ   r‡   rÈ   r&   rl   r~   r¸   r¼   rd   r.   r,   r7   r7   J  sÅ   € € € € € € ðð ð "€Eˆ5��c�Œ?Ð!Ð!Ñ!Ø€J�ÐÐÑØ€J�ÐÐÑàð4Ø”=ð4Ø+0¬=ð4ØCHÄ=ð4à	Œ�tÑ	ð4ð 4ð 4ñ „[ð4ðl< d¨T¡kð <ð <ð <ð <ð <ð <r.   r7   c            
       óÌ   — e Zd ZU dZdZeedf         ed<   dZeed<   de	dz  fd	„Z
de	dz  fd
„Zde	dz  fd„Zedej        dej        dej        dej        dz  fd„¦   «         ZdS )r8   z#
    Good ol' ternary operator
    rÊ   .r…   r†   r‡   r"   Nc                 óR   — | j         d         j        r| j         d         j        rdnd S ©Nr   rM   T©r)   rˆ   rŒ   s    r,   Ú_eval_is_integerzWhere._eval_is_integer—  s)   € Ø”y ”|Ô.ÐT°4´9¸Q´<Ô3JÐTˆtˆtÐPTÐTr.   c                 óR   — | j         d         j        r| j         d         j        rdnd S rÔ   )r)   rº   rŒ   s    r,   r¼   zWhere._eval_is_nonnegativeš  s2   € ð Œy˜Œ|Ô*ðØ/3¬y¸¬|Ô/JðˆDˆDàð	
r.   c                 óR   — | j         d         j        r| j         d         j        rdnd S rÔ   ©r)   Úis_positiverŒ   s    r,   Ú_eval_is_positivezWhere._eval_is_positive¡  s)   € Ø”y ”|Ô/ÐV°D´I¸a´LÔ4LÐVˆtˆtÐRVÐVr.   Úcrf   rg   c                 óN   — |t           j        k    r|S |t           j        k    r|S d S r$   )r&   ÚtrueÚfalse)r°   rÜ   rf   rg   s       r,   r¸   z
Where.eval¤  s)   € à•”
Š?ˆ?ØˆHØ•%”+ÒÐØˆHØˆtr.   )r½   r¾   r¿   rÀ   r…   rÁ   rk   rÂ   r‡   rÃ   rÖ   r¼   rÛ   rÈ   r&   r~   r¸   rd   r.   r,   r8   r8   �  sû   € € € € € € ðð ð "€Eˆ5��c�Œ?Ð!Ð!Ñ!Ø€J�ÐÐÑðU $¨¡+ð Uð Uð Uð Uð
 d¨T¡kð 
ð 
ð 
ð 
ðW 4¨$¡;ð Wð Wð Wð Wð ð�U”[ð  U¤[ð °U´[ð ÀUÄ[ÐSWÑEWð ð ð ñ „[ðð ð r.   r8   c                   óÂ   — e Zd ZU dZeedf         ed<   dZeed<   dZe	ed<   e
dej        d	ej        d
ej        dz  fd„¦   «         Zd
e	dz  fd„Zd
e	dz  fd„Zd
efd„ZdS )r9   r„   .r…   r†   r‡   Trˆ   rf   rg   r"   Nc                 óÐ  — |j         rt          d¦  «        ‚|t          j        u s||| fv s|dk    rt          j        S |j        r|j        r||z  S |j        r,|dk    r&|j        rt          j        S |j        rt          j        S ||z  }|j        rt          j        S ||k     }|j	        rt          |¦  «        r	|j        r|S t          j        ||¦  «        dk    rt          j        S d S )NúModulo by zeror   rM   r   )r¡   r¢   r	   r¤   Ú	is_NumberÚis_evenÚis_oddr¥   rˆ   Ú
is_BooleanrÃ   rÚ   r&   r:   ©r°   rf   rg   r\   Úlesss        r,   r¸   zPythonMod.eval´  s  € ð Œ9ð 	6Ý#Ð$4Ñ5Ô5Ð5ð •”ˆ;ˆ;˜!  A 2˜w˜,˜,¨!¨qª&¨&Ý”6ˆMð Œ;ð 	˜1œ;ð 	Ø�q‘5ˆLð Œ;ð 	˜1 š6˜6ØŒyð Ý”v�ØŒxð Ý”u�ð �‰EˆØŒ<ð 	Ý”6ˆMð
 �1ŠuˆàŒ?ð 	�t D™zœzð 	¨a¬mð 	ØˆHåŒ9�Q˜‰?Œ?˜aÒÐÝ”6ˆMàˆtr.   c                 ó.   — | j         d         j        rdnd S ©Nr   TrÙ   rŒ   s    r,   r¼   zPythonMod._eval_is_nonnegativeã  ó   € Ø”y ”|Ô/Ð9ˆtˆt°TÐ9r.   c                 ó.   — | j         d         j        rdnd S rê   )r)   Úis_negativerŒ   s    r,   Ú_eval_is_nonpositivezPythonMod._eval_is_nonpositiveæ  rë   r.   c                 ó:  — |                      | j        d         t          d         dz
  ¦  «        }|                      | j        d         t          d         dz
  ¦  «        }| j        d         j        rt	          |¦  «        nd|› d�}d|› d|› d	|› d|› d
|› d|› d|› �S )Nr   r•   r–   r   zabs(r˜   r—   z % z) < 0 ? z + z : )r™   r)   r   rÚ   rÇ   )r�   r“   rf   rg   Úabs_qs        r,   Ú_ccodezPythonMod._ccodeé  s¯   € Ø× Ò  ¤¨1¤­z¸&Ô/AÀCÑ/GÑHÔHˆØ× Ò  ¤¨1¤­z¸&Ô/AÀCÑ/GÑHÔHˆØœ) Aœ,Ô2ÐC•�A‘”�¸¸q¸¸¸ˆØC�1ÐCÐC˜ÐCÐC AÐCÐC¨!ÐCÐC°ÐCÐC¸!ÐCÐCÀÐCÐCÐCr.   )r½   r¾   r¿   r…   rÁ   rk   rÂ   r‡   rˆ   rÃ   rÈ   r&   r   r¸   r¼   rî   rÇ   rñ   rd   r.   r,   r9   r9   ®  sí   € € € € € € Ø!€Eˆ5��c�Œ?Ð!Ð!Ñ!à€J�ÐÐÑØ€J�ÐÐÑàð+�U”Zð + E¤Jð +°5´:ÀÑ3Dð +ð +ð +ñ „[ð+ð\: d¨T¡kð :ð :ð :ð :ð: d¨T¡kð :ð :ð :ð :ðD ð Dð Dð Dð Dð Dð Dr.   r9   c                   ó@   — e Zd ZU dZdZeed<   dZdZe	d„ ¦   «         Z
dS )r:   r„   r†   r‡   Tc                 óâ  — |j         rt          d¦  «        ‚|t          j        u s||| fv s|dk    rt          j        S |j        r6|j        r/|dk     rt          |¦  «        ‚|dk     rt          |¦  «        ‚||z  S |j        r,|dk    r&|j        rt          j        S |j        rt          j        S ||z  }|j	        rt          j        S ||k     }|j
        rt          |¦  «        r|j        r|S d S d S d S )Nrâ   r   r   rM   )r¡   r¢   r	   r¤   rã   ÚAssertionErrorrä   rå   r¥   rˆ   ræ   rÃ   rÚ   rç   s        r,   r¸   zMod.evalø  s3  € ð Œ9ð 	6Ý#Ð$4Ñ5Ô5Ð5ð •”ˆ;ˆ;˜!  A 2˜w˜,˜,¨!¨qª&¨&Ý”6ˆMð Œ;ð 	˜1œ;ð 	Ø�1ŠuˆuÝ$ QÑ'Ô'Ð'Ø�1ŠuˆuÝ$ QÑ'Ô'Ð'Ø�q‘5ˆLð Œ;ð 	˜1 š6˜6ØŒyð Ý”v�ØŒxð Ý”u�ð �‰EˆØŒ<ð 	Ý”6ˆMð
 �1ŠuˆØŒ?ð 	�t D™zœzð 	¨a¬mð 	ØˆHð	ð 	ð 	ð 	ð 	ð 	r.   N)r½   r¾   r¿   r…   r‡   rk   rÂ   rˆ   rº   rÈ   r¸   rd   r.   r,   r:   r:   ñ  sN   € € € € € € Ø€EØ€J�ÐÐÑà€JØ€Nàð+ð +ñ „[ð+ð +ð +r.   r:   c                   ó   — e Zd ZdZdS )r;   zZ
    Div where we can assume no rounding.
    This is to enable future optimizations.
    N)r½   r¾   r¿   rÀ   rd   r.   r,   r;   r;   '  s   € € € € € ðð ð ð r.   r;   c                   ó4   — e Zd ZdZed„ ¦   «         Zdefd„ZdS )r<   Tc                 ó  — |t           j        t          fv rt          S |t           j         t           fv rt           S t          |t           j        ¦  «        r3t          j        t          j        t          |¦  «        ¦  «        ¦  «        S d S r$   )	r&   Úoor   r%   r¦   rl   rs   Úceilr[   ©r°   Únumbers     r,   r¸   zCeilToInt.eval3  sv   € ð •e”h¥Ð'Ð'Ð'ÝˆMØ•u”x�i¥& Ð)Ð)Ð)Ý�7ˆNÝ�f�eœlÑ+Ô+ð 	;Ý”=¥¤­5°©=¬=Ñ!9Ô!9Ñ:Ô:Ð:ð	;ð 	;r.   r"   c                 óN   — |                      | j        d         ¦  «        }d|› d�S )Nr   z(int64_t)(ceil(ú))©Ú_printr)   ©r�   r“   rû   s      r,   rñ   zCeilToInt._ccode=  s*   € Ø—’ ¤	¨!¤Ñ-Ô-ˆØ+ Ð+Ð+Ð+Ð+r.   N©r½   r¾   r¿   rˆ   rÈ   r¸   rÇ   rñ   rd   r.   r,   r<   r<   0  sM   € € € € € Ø€Jàð;ð ;ñ „[ð;ð, ð ,ð ,ð ,ð ,ð ,ð ,r.   r<   c                   ó4   — e Zd ZdZed„ ¦   «         Zdefd„ZdS )r=   Tc                 óN  — |t           j        t          fv rt          S |t           j         t           fv rt           S t          |t           j        ¦  «        r|S t          |t           j        ¦  «        r3t          j        t          j        t          |¦  «        ¦  «        ¦  «        S d S r$   )	r&   rø   r   r%   rl   r¦   rs   r©   r[   rú   s     r,   r¸   zFloorToInt.evalE  s�   € à•e”h¥Ð'Ð'Ð'ÝˆMØ•u”x�i¥& Ð)Ð)Ð)Ý�7ˆNÝ�f�eœmÑ,Ô,ð 	ØˆMÝ�f�eœlÑ+Ô+ð 	<Ý”=¥¤­E°&©M¬MÑ!:Ô!:Ñ;Ô;Ð;ð	<ð 	<r.   r"   c                 óN   — |                      | j        d         ¦  «        }d|› d�S )Nr   z(int64_t)(floor(rý   rþ   r   s      r,   rñ   zFloorToInt._ccodeP  ó*   € Ø—’ ¤	¨!¤Ñ-Ô-ˆØ, &Ð,Ð,Ð,Ð,r.   Nr  rd   r.   r,   r=   r=   B  sM   € € € € € Ø€Jàð<ð <ñ „[ð<ð- ð -ð -ð -ð -ð -ð -r.   r=   c                   ó   — e Zd ZdZdZd„ ZdS )r>   z.
    Div used in indexing that rounds up.
    Tc                 óÐ   — t          j        |¦  «        }t          j        |¦  «        }t          j        ||¦  «        |k    rt          ||¦  «        S t	          ||dz
  z   |¦  «        S r‘   )r&   r   r3   r;   r6   ©r°   rŽ   r’   s      r,   Ú__new__zCeilDiv.__new__\  s`   € ÝŒ}˜TÑ"Ô"ˆÝ”- Ñ(Ô(ˆÝŒ9�T˜7Ñ#Ô# wÒ.Ð.Ý˜D 'Ñ*Ô*Ð*å˜D G¨a¡KÑ0°'Ñ:Ô:Ð:r.   N)r½   r¾   r¿   rÀ   rˆ   r	  rd   r.   r,   r>   r>   U  s4   € € € € € ðð ð €Jð;ð ;ð ;ð ;ð ;r.   r>   c                   ó(   — e Zd ZdZed„ ¦   «         ZdS )rA   Tc                 óx   — |j         rt          d¦  «        ‚|t          t          j        d¦  «        |¦  «        z  S ©Nznegative shift countrM   )rí   Ú
ValueErrorrJ   r&   rl   ©r°   rŽ   Úshifts      r,   r¸   zLShift.evalh  s;   € àÔð 	5ÝÐ3Ñ4Ô4Ð4Ø•l¥5¤=°Ñ#3Ô#3°UÑ;Ô;Ñ;Ð;r.   N©r½   r¾   r¿   rˆ   rÈ   r¸   rd   r.   r,   rA   rA   e  s2   € € € € € Ø€Jàð<ð <ñ „[ð<ð <ð <r.   rA   c                   ó(   — e Zd ZdZed„ ¦   «         ZdS )rB   Tc                 óŽ   — |j         rt          d¦  «        ‚t          |t          t	          j        d¦  «        |¦  «        ¦  «        S r  )rí   r  r6   rJ   r&   rl   r  s      r,   r¸   zRShift.evalr  s@   € àÔð 	5ÝÐ3Ñ4Ô4Ð4Ý˜�l­5¬=¸Ñ+;Ô+;¸UÑCÔCÑDÔDÐDr.   Nr  rd   r.   r,   rB   rB   o  s7   € € € € € Ø€JàðEð Eñ „[ðEð Eð Er.   rB   c                   óØ  — e Zd Zd„ Zed„ ¦   «         Zedeej        j	        j
                 dz  fd„¦   «         Ze	 d%deej        j	        j
                 dz  deej        j	        j
                 dz  fd„¦   «         Zed„ ¦   «         Zed	„ ¦   «         Ze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„ 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S )&Ú
MinMaxBasec                 ó@  — ddl m} |                     d|j        ¦  «        }d„ |D ¦   «         }|sd n|                      |¦  «        }|rY	 t          |                      |¦  «        ¦  «        }n# t          $ r
 | j        cY S w xY w|€ | j	        |fi |¤Ž} | j
        |fi |¤Ž}t          |¦  «        }|s| j        S t          |¦  «        dk    r!t          |¦  «                             ¦   «         S t          j        | gt!          |¦  «        ¢R i |¤Ž}||_        ||_        |S )Nr   )Úglobal_parametersr    c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r$   r
   rn   s     r,   rY   z%MinMaxBase.__new__.<locals>.<genexpr>~  s(   è è € Ð6Ð6 •˜‘”Ð6Ð6Ð6Ð6Ð6Ð6r.   r   )Úsympy.core.parametersr  Úpopr    Ú"_satisfy_unique_summations_symbolsÚ	frozensetÚ_new_args_filterr   ÚzeroÚ_collapse_argumentsÚ_find_localzerosÚidentityr(   r   r   r	  r   Ú_argsetÚunique_summations_symbols)r°   Úoriginal_argsÚassumptionsr  r    r)   r"  Úobjs           r,   r	  zMinMaxBase.__new__z  sq  € Ø;Ð;Ð;Ð;Ð;Ð;à—?’? :Ð/@Ô/IÑJÔJˆØ6Ð6¨Ð6Ñ6Ô6ˆð
 ðGˆDˆDà×7Ò7¸ÑFÔFð 	"ð ð 	Að õ ! ×!5Ò!5°dÑ!;Ô!;Ñ<Ô<��øÝð  ð  ð  Ø”x���ð øøøð
 )Ð0à.�sÔ.¨tÐCÐC°{ÐCÐC�ð ,�sÔ+¨DÐ@Ð@°KÐ@Ð@�å˜‰Œˆàð 	 Ø”<Ðåˆt‰9Œ9˜Š>ˆ>Ý˜‘:”:—>’>Ñ#Ô#Ð#õ Œl˜3Ð>¥¨¡¤Ð>Ð>Ð>°+Ð>Ð>ˆØˆŒà(AˆÔ%Øˆ
s   Á
"A- Á-BÂ Bc                 ón  — t          |¦  «        dk    rd S |\  }}|                     ¦   «         \  }}|                     ¦   «         \  }}||k    rd S |j        r|j        sd S ||k    r|S |j        r||k     }n|j        r||k    }nd S | t
          u r|r|n|S | t          u r|r|n|S t          d| › �¦  «        ‚)NrM   úimpossible )r(   Úas_coeff_MulÚis_comparablerº   Úis_nonpositiveÚMinÚMaxrô   )	r°   Úvaluesr/   r0   Úa_coeffÚa_termÚb_coeffÚb_termÚa_is_smallers	            r,   Ú$_collapse_known_multiplicative_termsz/MinMaxBase._collapse_known_multiplicative_terms§  sû   € åˆv‰;Œ;˜!ÒÐØ�4à‰ˆˆ1ØŸ.š.Ñ*Ô*‰ˆ�ØŸ.š.Ñ*Ô*‰ˆ�Ø�VÒÐØ�4àÔ%ð 	¨'Ô*?ð 	Ø�4à�gÒÐØˆHàÔ ð 	Ø" WÒ,ˆLˆLØÔ"ð 	Ø" WÒ,ˆLˆLà�4à•#ˆ:ˆ:Ø$Ð+�1�1¨!Ð+Ø•#ˆ:ˆ:Ø$Ð+�1�1¨!Ð+åÐ0¨3Ð0Ð0Ñ1Ô1Ð1r.   r"   Nc                 ó”  — t          |¦  «        dk    rdS t          |d         t          ¦  «        r|d         |d         fn|d         |d         f\  }}t          |¦  «        sdS t          |¦  «        r|                      |¦  «        S t          |t          ¦  «        r*t          |dd¦  «        }|�|                      |g|¦  «        S dS )a  
        One common case in some models is building expressions of the form
        max(max(max(a+b...), c+d), e+f) which is simplified to max(a+b, c+d, e+f, ...).
        For such expressions, we call the Max constructor X times (once for each nested
        max) and the expression gets flattened.

        An expensive cost in constructing those expressions is running _collapse_arguments
        and _find_localzeros. However, those two optimizations are unnecessary when the args
        to max are all of the form a+b, c+d, ..etc where each term uses a unique set of symbols.

        This function is used to detect such properties of the expressions we are building
        and if so inform that we do not need to run those optimizations. To detect those,
        we store a property in the expression that tells that this expression is a min/max
        operation over terms that use unique symbols "unique_summations_symbols". This property
        also memoize the set of symbols used in all the terms to make it faster to detect this
        property inductively.

        When we apply max to add a new term, all we need to do is check if the new term uses
        unique symbols (with respect to existing terms and itself).
        Example:
        t = Max(a+b, c+d) ==> satisfies the property
        Max(t, h+j)       ==> h,j not in [a,b,c,d] => satisfy the property.

        The function returns None if the new expression does not satisfy the unique_summations_symbols
        property. Otherwise, it returns a new set of unique symbols.
        rM   Nr   r   r"  )r(   r%   r  rQ   Ú_unique_symbolsÚgetattr)r°   r)   ÚlhsÚrhsÚlhs_unique_summations_symbolss        r,   r  z-MinMaxBase._satisfy_unique_summations_symbolsÆ  së   € õ< ˆt‰9Œ9˜Š>ˆ>Ø�4õ ˜$˜qœ'¥:Ñ.Ô.ð$ˆT�!ŒW�d˜1”gÐÐà�q”'˜4 œ7Ð#ñ 	ˆˆcõ ,¨CÑ0Ô0ð 	Ø�4õ (¨Ñ,Ô,ð 	-Ø×&Ò& tÑ,Ô,Ð,õ �c�:Ñ&Ô&ð 	QÝ,3ØÐ0°$ñ-ô -Ð)ð -Ð8Ø×*Ò*¨C¨5Ð2OÑPÔPÐPàˆtr.   Úinitial_setc                 ó  — |€t          ¦   «         n|                     ¦   «         }|D ]^}|                     ¦   «         D ]G}t          |t          j        j        j        ¦  «        s  dS ||v r  dS |                     |¦  «         ŒHŒ_|S )zµ
        Return seen_symbols if all atoms in all args are all unique symbols,
        else returns None. initial_set can be used to represent initial value for seen_symbols
        N)	ÚsetÚcopyr«   r%   r&   ÚcoreÚsymbolÚSymbolÚadd)r°   r)   r:  Úseen_symbolsro   Úelements         r,   r5  zMinMaxBase._unique_symbolsþ  s£   € ð !,Ð 3•s‘u”u�u¸×9IÒ9IÑ9KÔ9KˆØð 	.ð 	.ˆCØŸ9š9™;œ;ð .ð .�Ý! '­5¬:Ô+<Ô+CÑDÔDð .Ø˜4˜4˜4Ø Ð,Ð,Ø˜4˜4˜4à ×$Ò$ WÑ-Ô-Ð-Ð-ð.ð Ðr.   c                 óÜ  ‡ ‡‡‡— |s|S t          t          |¦  «        ¦  «        }‰ t          u rt          Šnt          Š|d         j        �rÀg g fx}\  }}|D ]`}t          |t          t          ¦  «        D ]B}|j        d         j        r.|t          |t          ¦  «                  	                    |¦  «         ŒCŒat          j
        }|D ]"}|j        d         }|j        r||k     dk    r|}Œ#t          j
        }	|D ]"}|j        d         }|j        r||	k    dk    r|}	Œ#‰ t          u r|D ]}
|
j        s n|
|k     dk    r|
}Œn%‰ t          k    r|D ]}
|
j        s n|
|	k    dk    r|
}	Œd}‰ t          u r|t          j
        k    r	t          Š|}n|	t          j
        k    r	t          Š|	}|�it          t          |¦  «        ¦  «        D ]L}||         Št          ‰‰¦  «        r2‰j        d         }‰t          k    r||k    n||k     dk    r
‰ j
        ||<   ŒMˆ ˆfd„Št          |¦  «        D ]'\  }Šˆˆfd„||dz   d…         D ¦   «         ||dz   d…<   Œ(ˆ ˆfd„}t          |¦  «        dk    r ||¦  «        }|S )a}  Remove redundant args.

        Examples
        ========

        >>> from sympy import Min, Max
        >>> from sympy.abc import a, b, c, d, e

        Any arg in parent that appears in any
        parent-like function in any of the flat args
        of parent can be removed from that sub-arg:

        >>> Min(a, Max(b, Min(a, c, d)))
        Min(a, Max(b, Min(c, d)))

        If the arg of parent appears in an opposite-than parent
        function in any of the flat args of parent that function
        can be replaced with the arg:

        >>> Min(a, Max(b, Min(c, d, Max(a, e))))
        Min(a, Max(b, Min(a, c, d)))
        r   TNc                 óø   •‡— t          | t          t          f¦  «        s| S ‰| j        v }|s | j        ˆˆfd„| j        D ¦   «         ddiŽS t          | ‰¦  «        r | j        ˆˆfd„| j        D ¦   «         ddiŽS ‰S )Nc                 ó(   •— g | ]} ‰|‰¦  «        ‘ŒS rd   rd   ©rX   Úir/   Údos     €€r,   rp   z>MinMaxBase._collapse_arguments.<locals>.do.<locals>.<listcomp>m  s#   ø€ Ð ;Ð ;Ð ;¨a   A q¡¤Ð ;Ð ;Ð ;r.   r    Fc                 ó4   •— g | ]}|‰k    ¯ ‰|‰¦  «        ‘ŒS rd   rd   rG  s     €€r,   rp   z>MinMaxBase._collapse_arguments.<locals>.do.<locals>.<listcomp>o  s(   ø€ Ð EÐ EÐ E¨a¸aÀ1ºf¸f   A q¡¤¸f¸f¸fr.   )r%   r+  r,  r)   Úfunc)Úair/   Úcondr°   rI  s    ` €€r,   rI  z*MinMaxBase._collapse_arguments.<locals>.doh  s®   øø€ Ý˜b¥3­ *Ñ-Ô-ð Ø�	Ø˜œ�<ˆDØð MØ�r”wÐ ;Ð ;Ð ;Ð ;Ð ;°2´7Ð ;Ñ ;Ô ;ÐLÀeÐLÐLÐLÝ˜"˜cÑ"Ô"ð WØ�r”wÐ EÐ EÐ EÐ EÐ E°2´7Ð EÑ EÔ EÐVÐPUÐVÐVÐVØˆHr.   c                 ó(   •— g | ]} ‰|‰¦  «        ‘ŒS rd   rd   )rX   rL  r/   rI  s     €€r,   rp   z2MinMaxBase._collapse_arguments.<locals>.<listcomp>s  s#   ø€ Ð?Ð?Ð?¨2˜R˜R  A™YœYÐ?Ð?Ð?r.   r   c                 óD  •‡	— ˆfd„}t          | |d¬¦  «        \  }}|s| S d„ |D ¦   «         }t          j        |Ž Š	‰	s| S t          ‰	¦  «        }ˆ	fd„|D ¦   «         }t	          |¦  «        r)ˆfd„|D ¦   «         }|                      ‰
|ddiŽ¦  «          ‰|ddiŽ}||gz   S )	Nc                 ó$   •— t          | ‰¦  «        S r$   )r%   )ro   Úothers    €r,   ú<lambda>zGMinMaxBase._collapse_arguments.<locals>.factor_minmax.<locals>.<lambda>}  s   ø€ ¥:¨c°5Ñ#9Ô#9€ r.   T)Úbinaryc                 ó6   — g | ]}t          |j        ¦  «        ‘ŒS rd   )r<  r)   rn   s     r,   rp   zIMinMaxBase._collapse_arguments.<locals>.factor_minmax.<locals>.<listcomp>ƒ  s    € Ð<Ð<Ð<¨#�˜CœH™œÐ<Ð<Ð<r.   c                 ó   •— g | ]}|‰z
  ‘ŒS rd   rd   )rX   Úarg_setÚcommons     €r,   rp   zIMinMaxBase._collapse_arguments.<locals>.factor_minmax.<locals>.<listcomp>‰  s   ø€ ÐFÐFÐF°'˜W vÑ-ÐFÐFÐFr.   c                 ó    •— g | ]
} ‰|d diŽ‘ŒS )r    Frd   )rX   ÚsrQ  s     €r,   rp   zIMinMaxBase._collapse_arguments.<locals>.factor_minmax.<locals>.<listcomp>Ž  s(   ø€ Ð"TÐ"TÐ"TÀ 5 5¨!Ð#<°eÐ#<Ð#<Ð"TÐ"TÐ"Tr.   r    F)r   r<  Úintersectionr   r€   r­   )r)   Úis_otherÚ
other_argsÚremaining_argsÚarg_setsÚnew_other_argsÚarg_sets_diffÚother_args_diffÚother_args_factoredrW  r°   rQ  s            @€€r,   Úfactor_minmaxz5MinMaxBase._collapse_arguments.<locals>.factor_minmax|  sþ   øø€ Ø9Ð9Ð9Ð9ˆHÝ)-¨d°HÀTÐ)JÑ)JÔ)JÑ&ˆJ˜Øð Ø�ð =Ð<°Ð<Ñ<Ô<ˆHÝÔ% xÐ0ˆFØð Ø�å! &™\œ\ˆNØFÐFÐFÐF¸XÐFÑFÔFˆMõ �=Ñ!Ô!ð MØ"TÐ"TÐ"TÐ"TÀmÐ"TÑ"TÔ"T�Ø×%Ò% c c¨?Ð&KÀUÐ&KÐ&KÑLÔLÐLà"' %¨Ð"HÀ%Ð"HÐ"HÐØ!Ð%8Ð$9Ñ9Ð9r.   )r   r   r+  r,  Ú	is_numberr   r)   r)  r%   r­   r   Úranger(   Ú	enumerate)r°   r)   r$  ÚsiftedÚminsÚmaxsrH  ÚvÚsmallÚbigro   ÚTÚa0rc  r/   rI  rQ  s   `             @@@r,   r  zMinMaxBase._collapse_arguments  s*  øøøø€ ð0 ð 	ØˆKÝ•G˜D‘M”MÑ"Ô"ˆØ•#ˆ:ˆ:ÝˆEˆEåˆEð
 �Œ7Ôñ 1	3Ø"$ b &Ð(ˆF‘Z�T˜4Øð =ð =�Ý˜a¥¥cÑ*Ô*ð =ð =�AØ”v˜a”yÔ.ð =Ø�z¨!­SÑ1Ô1Ô2×9Ò9¸!Ñ<Ô<Ð<øð=õ ”LˆEØð ð �Ø”F˜1”I�Ø”;ð  A¨¢I°$Ò#6Ð#6Ø�EøÝ”,ˆCØð ð �Ø”F˜1”I�Ø”;ð  A¨¢G°Ò#4Ð#4Ø�Cøð
 •cˆzˆzØð $ð $�CØœ=ð Ø˜Ø˜eš¨Ò,Ð,Ø #˜øøØ�’�Øð "ð "�CØœ=ð Ø˜Ø˜cš	 dÒ*Ð*Ø!˜øØˆAØ•cˆzˆzØ�CœLÒ(Ð(Ý�EØ�AøØ�œÒ$Ð$Ý�Ø�Øˆ}å�s 4™yœyÑ)Ô)ð 3ð 3�AØ˜Qœ�AÝ! ! UÑ+Ô+ð 3ØœV AœY˜à(-µª¨˜R !šV˜V¸2Àº6Ø!ò"ð "ð '*¤l˜D ™Gøð	ð 	ð 	ð 	ð 	ð 	õ ˜d‘O”Oð 	@ð 	@‰DˆAˆqØ?Ð?Ð?Ð?Ð?°°a¸!±e°g°g´Ð?Ñ?Ô?ˆD��Q‘��‰MˆMð	:ð 	:ð 	:ð 	:ð 	:ð 	:õ0 ˆt‰9Œ9�qŠ=ˆ=Ø �= Ñ&Ô&ˆDàˆr.   c              #   ó  K  — |D ]„}t          |t          ¦  «        r|j        du s|j        r|j        st          d|› d�¦  «        ‚|| j        k    rt          |¦  «        ‚|| j        k    rŒg|j	        | k    r|j
        E d{V —† Œ€|V — Œ…dS )zØ
        Generator filtering args.

        first standard filter, for cls.zero and cls.identity.
        Also reshape ``Max(a, Max(b, c))`` to ``Max(a, b, c)``,
        and check arguments for comparability
        FzThe argument 'z' is not comparable.N)r%   r   Úis_extended_realrd  r)  r  r  r   r   rK  r)   )r°   Úarg_sequencero   s      r,   r  zMinMaxBase._new_args_filter™  sÑ   è è € ð  ð 	ð 	ˆCõ ˜s¥DÑ)Ô)ðMàÔ'¨5Ð0Ð0Ø”Mð 1Ø*-Ô*;ð 1õ !Ð!K°#Ð!KÐ!KÐ!KÑLÔLÐLà�c”hŠˆÝ" 3Ñ'Ô'Ð'Ø˜œÒ$Ð$ØØ”˜S’�Øœ8Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#à�	�	�	�	ð!	ð 	r.   c                 óV  — t          ¦   «         }d}|D ]i}|j        rK|€|}Œ| t          u rt          ||¦  «        }Œ(| t          u rt          ||¦  «        }ŒBt          d| › �¦  «        ‚|                     |¦  «         Œj|€|                      |¦  «        }|�|hS |S t          |¦  «        dk    r|hS t          |¦  «        dk    rPt          t          |¦  «        ¦  «        }|dv r|j        r| t          u r|n|hS |dk    r|j        r| t          u r|n|hS |                     |¦  «         |S )aŽ  
        Sequentially allocate values to localzeros.

        When a value is identified as being more extreme than another member it
        replaces that member; if this is never true, then the value is simply
        appended to the localzeros.

        Unlike the sympy implementation, we only look for zero and one, we don't
        do generic is connected test pairwise which is slow
        Nr'  r   r   )g        r   )r<  rã   r,  Úmaxr+  Úminrô   rA  r3  r(   ÚnextÚiterrº   rÚ   )r°   r-  ÚoptionsÚother_valuesÚ	num_valuero   Úcollapsed_valueÚother_values           r,   r  zMinMaxBase._find_localzeros´  sr  € õ ‘u”uˆØˆ	Øð 	&ð 	&ˆCØŒ}ð &ØÐ$Ø #�I�Ià�c�z�zÝ$'¨	°3Ñ$7Ô$7˜	˜	Ø¥˜˜Ý$'¨	°3Ñ$7Ô$7˜	˜	å,Ð-@¸3Ð-@Ð-@ÑAÔAÐAà× Ò  Ñ%Ô%Ð%Ð%ð ÐØ!×FÒFÀ|ÑTÔTˆOØÐ*Ø'Ð(Ð(ØÐåˆ|ÑÔ Ò!Ð!Ø�;Ðåˆ|ÑÔ Ò!Ð!Ý�t LÑ1Ô1Ñ2Ô2ˆKØ˜HÐ$Ð$¨Ô)CÐ$Ø'*­c z z�|�|¸	°{ÐBØ˜AŠ~ˆ~ +Ô"9ˆ~Ø'*­c z z�|�|¸	°{ÐBà×Ò˜Ñ#Ô#Ð#ØÐr.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )Úis_algebraic©rX   rH  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>æ  ó$   è è € Ð(HÐ(H¸A¨¬Ð(HÐ(HÐ(HÐ(HÐ(HÐ(Hr.   ©r   r)   ©rY  s    r,   rR  zMinMaxBase.<lambda>æ  ó   € ¥5Ð(HÐ(HÀÄÐ(HÑ(HÔ(HÑ#HÔ#H€ r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )Úis_antihermitianr  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>ç  ó6   è è € ð -ð -Ø ˆÔð-ð -ð -ð -ð -ð -r.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>ç  ó.   € ¥uð -ð -Ø$%¤Fð-ñ -ô -ñ (ô (€ r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )Úis_commutativer  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>ê  ó6   è è € ð +ð +ØˆÔð+ð +ð +ð +ð +ð +r.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>ê  ó.   € ¥Uð +ð +Ø"#¤&ð+ñ +ô +ñ &ô &€ r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )Ú
is_complexr  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>í  ó$   è è € Ð&DÐ&D¸ q¤|Ð&DÐ&DÐ&DÐ&DÐ&DÐ&Dr.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>í  ó   € ¥Ð&DÐ&D¸Q¼VÐ&DÑ&DÔ&DÑ!DÔ!D€ r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )Úis_compositer  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>î  r€  r.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>î  rƒ  r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )rä   r  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>ï  ó$   è è € Ð#>Ð#>°! A¤IÐ#>Ð#>Ð#>Ð#>Ð#>Ð#>r.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>ï  ó   € �eÐ#>Ð#>°q´vÐ#>Ñ#>Ô#>Ñ>Ô>€ r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )Ú	is_finiter  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>ð  s$   è è € Ð%BÐ%B°a a¤kÐ%BÐ%BÐ%BÐ%BÐ%BÐ%Br.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>ð  s   € ¥Ð%BÐ%B¸1¼6Ð%BÑ%BÔ%BÑ BÔ B€ r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )Úis_hermitianr  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>ñ  r€  r.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>ñ  rƒ  r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )Úis_imaginaryr  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>ò  r€  r.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>ò  rƒ  r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )r   r  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>ó  ó$   è è € Ð'FÐ'F¸!¨¬Ð'FÐ'FÐ'FÐ'FÐ'FÐ'Fr.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>ó  ó   € ¥%Ð'FÐ'F¸q¼vÐ'FÑ'FÔ'FÑ"FÔ"F€ r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )rˆ   r  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>ô  r‘  r.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>ô  r’  r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )Úis_irrationalr  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>õ  ó$   è è € Ð)JÐ)J¸a¨!¬/Ð)JÐ)JÐ)JÐ)JÐ)JÐ)Jr.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>õ  ó   € ¥EÐ)JÐ)JÀ1Ä6Ð)JÑ)JÔ)JÑ$JÔ$J€ r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   ©rí   r  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>ö  r¥  r.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>ö  r¦  r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )Úis_nonintegerr  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>÷  r¬  r.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>÷  r­  r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   ©rº   r  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>ø  rŒ  r.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>ø  r�  r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )r*  r  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>û  rŒ  r.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>û  r�  r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )Ú
is_nonzeror  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>þ  r‘  r.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>þ  r’  r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )rå   r  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>ÿ  s$   è è € Ð"<Ð"<° 1¤8Ð"<Ð"<Ð"<Ð"<Ð"<Ð"<r.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>ÿ  s   € �UÐ"<Ð"<°Q´VÐ"<Ñ"<Ô"<Ñ<Ô<€ r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )Úis_polarr  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>   ó$   è è € Ð$@Ð$@°A Q¤ZÐ$@Ð$@Ð$@Ð$@Ð$@Ð$@r.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>   ó   € �uÐ$@Ð$@¸¼Ð$@Ñ$@Ô$@Ñ@Ô@€ r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   ©rÚ   r  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>  r¥  r.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>  r¦  r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )Úis_primer  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>  rÁ  r.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>  rÂ  r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )Úis_rationalr  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>  r¥  r.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>  r¦  r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )Úis_realr  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>  r˜  r.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>  r™  r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )rp  r  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>  r‡  r.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>  rˆ  r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )Úis_transcendentalr  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>  s6   è è € ð .ð .Ø !ˆÔð.ð .ð .ð .ð .ð .r.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>  s.   € ­ð .ð .Ø%&¤Vð.ñ .ô .ñ )ô )€ r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   )r¡   r  s     r,   rY   z&MinMaxBase.<lambda>.<locals>.<genexpr>  r˜  r.   r�  r‚  s    r,   rR  zMinMaxBase.<lambda>  r™  r.   r$   )*r½   r¾   r¿   r	  rÈ   r3  r<  r&   r>  r?  r@  r  r5  r  r  r  Ú_eval_is_algebraicÚ_eval_is_antihermitianÚ_eval_is_commutativeÚ_eval_is_complexÚ_eval_is_compositeÚ_eval_is_evenÚ_eval_is_finiteÚ_eval_is_hermitianÚ_eval_is_imaginaryÚ_eval_is_infiniterÖ   Ú_eval_is_irrationalÚ_eval_is_negativeÚ_eval_is_nonintegerr¼   rî   Ú_eval_is_nonzeroÚ_eval_is_oddÚ_eval_is_polarrÛ   Ú_eval_is_primeÚ_eval_is_rationalÚ_eval_is_realÚ_eval_is_extended_realÚ_eval_is_transcendentalÚ_eval_is_zerord   r.   r,   r  r  y  s,  € € € € € ð+ð +ð +ðZ ð2ð 2ñ „[ð2ð< ð5à	ˆUŒZÔÔ%Ô	&¨Ñ	-ð5ð 5ð 5ñ „[ð5ðn àGKðð Ø # E¤JÔ$5Ô$<Ô =ÀÑ Dðà	ˆUŒZÔÔ%Ô	&¨Ñ	-ðð ð ñ „[ðð$ ðEð Eñ „[ðEðN ðð ñ „[ðð4 ð/ð /ñ „[ð/ðb IÐHÐðð Ððð Ðð EÐDÐØHÐHÐØ>Ð>€MØBÐB€OØHÐHÐØHÐHÐØFÐFÐØDÐDÐØJÐJÐØFÐFÐØJÐJÐðð Ððð Ðð EÐDÐØ<Ð<€LØ@Ð@€NØFÐFÐØ@Ð@€NØFÐFÐØ>Ð>€Mðð Ððð Ðð ?Ð>€M€M€Mr.   r  c                   ó@   — e Zd ZdZej        Zej        Zd„ Z	d„ Z
d„ ZdS )r,  z=
    Return, if possible, the maximum value of the list.
    c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   rÅ  rW   s     r,   rY   z(Max._eval_is_positive.<locals>.<genexpr>  ó$   è è € Ð9Ð9¨!˜œÐ9Ð9Ð9Ð9Ð9Ð9r.   ©r   r)   rŒ   s    r,   rÛ   zMax._eval_is_positive  ó!   € ÝÐ9Ð9¨t¬yÐ9Ñ9Ô9Ñ9Ô9Ð9r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   r¶  rW   s     r,   rY   z+Max._eval_is_nonnegative.<locals>.<genexpr>  s%   è è € Ð<Ð<¨Q˜Ô(Ð<Ð<Ð<Ð<Ð<Ð<r.   rð  rŒ   s    r,   r¼   zMax._eval_is_nonnegative  s!   € ÝÐ<Ð<°$´)Ð<Ñ<Ô<Ñ<Ô<Ð<r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   r°  rW   s     r,   rY   z(Max._eval_is_negative.<locals>.<genexpr>  ó$   è è € Ð:Ð:¨1˜œÐ:Ð:Ð:Ð:Ð:Ð:r.   ©r   r)   rŒ   s    r,   rá  zMax._eval_is_negative  ó!   € ÝÐ:Ð:°´	Ð:Ñ:Ô:Ñ:Ô:Ð:r.   N)r½   r¾   r¿   rÀ   r	   ÚInfinityr  ÚNegativeInfinityr   rÛ   r¼   rá  rd   r.   r,   r,  r,    s\   € € € € € ðð ð Œ:€DØÔ!€Hð:ð :ð :ð=ð =ð =ð;ð ;ð ;ð ;ð ;r.   r,  c                   ó@   — e Zd ZdZej        Zej        Zd„ Z	d„ Z
d„ ZdS )r+  z=
    Return, if possible, the minimum value of the list.
    c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   rÅ  rW   s     r,   rY   z(Min._eval_is_positive.<locals>.<genexpr>)  rö  r.   r÷  rŒ   s    r,   rÛ   zMin._eval_is_positive(  rø  r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   r¶  rW   s     r,   rY   z+Min._eval_is_nonnegative.<locals>.<genexpr>,  s%   è è € Ð=Ð=¨a˜Ô)Ð=Ð=Ð=Ð=Ð=Ð=r.   r÷  rŒ   s    r,   r¼   zMin._eval_is_nonnegative+  s!   € ÝÐ=Ð=°4´9Ð=Ñ=Ô=Ñ=Ô=Ð=r.   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S r$   r°  rW   s     r,   rY   z(Min._eval_is_negative.<locals>.<genexpr>/  rï  r.   rð  rŒ   s    r,   rá  zMin._eval_is_negative.  rñ  r.   N)r½   r¾   r¿   rÀ   r	   rú  r  rù  r   rÛ   r¼   rá  rd   r.   r,   r+  r+     s\   € € € € € ðð ð Ô€DØŒz€Hð;ð ;ð ;ð>ð >ð >ð:ð :ð :ð :ð :r.   r+  c                 óX   — d}| dk     r|  } |dz  dk    rdnd}|t          | |¦  «        z  S )Nr   r   rM   rž   )Ú	_safe_pow)rŽ   ÚexpÚsigns      r,   Úsafe_powr  2  sA   € Ø€DØˆa‚x€xØˆuˆØ˜!‘G˜q’L�Lˆqˆq bˆØ•)˜D #Ñ&Ô&Ñ&Ð&r.   c                 ó  — |dk     rt          d¦  «        ‚|dk    rdS t          | |dz  ¦  «        }|t          u rt          S ||z  }|t          j        k    rt          S |dz  dk    r|| z  }|t          j        k    rt          S |S )Nr   zExponent must be non-negative.r   rM   )r  r  r   ÚsysÚmaxsize)rŽ   ÚexponentÚhalf_expÚresults       r,   r  r  ;  s˜   € Ø�!‚|€|ÝÐ9Ñ:Ô:Ð:à�1‚}€}Øˆqå˜˜h¨!™mÑ,Ô,€HØ•6ÐÐÝˆð
 ˜Ñ €FØ•”ÒÐÝˆà�!�|�qÒÐØ�$‰ˆØ•C”KÒÐÝˆMà€Mr.   c                   ó8   — e Zd ZU dZdZeed<   ed„ ¦   «         ZdS )rJ   Té2   r‡   c                 óª  — t          |t          j        ¦  «        rQt          |t          j        ¦  «        r7t          ||¦  «        }|t           t          fv r|S t          j        |¦  «        S t          |t          j        ¦  «        rt          j        ||¦  «        S |t          t          j        fv r!|j        rt          S |j        rt          j	        S d S d S r$   )
r%   r&   rl   r  r   ÚPowrø   rº   rí   Úzoo)r°   rŽ   r  r\   s       r,   r¸   zPowByNatural.evalZ  sÎ   € å�d�EœMÑ*Ô*ð 	$­z¸#½u¼}Ñ/MÔ/Mð 	$Ý˜˜sÑ#Ô#ˆAØ•f�W�fÐ%Ð%Ð%Ø�Ý”= Ñ#Ô#Ð#Ý�c�5œ=Ñ)Ô)ð 	(õ ”9˜T 3Ñ'Ô'Ð'Ø•6�5œ8Ð$Ð$Ð$ØÔ"ð !Ý�ØÔ!ð !Ý”yÐ ð	 %Ð$ð!ð !r.   N)	r½   r¾   r¿   rˆ   r‡   rk   rÂ   rÈ   r¸   rd   r.   r,   rJ   rJ   U  sD   € € € € € € Ø€Jà€J�ÐÐÑàð!ð !ñ „[ð!ð !ð !r.   rJ   c                   ó8   — e Zd ZU dZdZeed<   ed„ ¦   «         ZdS )rI   Té<   r‡   c                 óÔ   — t          |t          j        ¦  «        rKt          |t          j        ¦  «        r3t          j        t	          |¦  «        t	          |¦  «        z  ¦  «        S d S d S r$   )r%   r&   r¦   rV   r[   )r°   rŽ   r  s      r,   r¸   zFloatPow.evalu  s`   € õ �d�EœLÑ)Ô)ð 	:­j¸½e¼lÑ.KÔ.Kð 	:Ý”;�u T™{œ{­e°C©j¬jÑ8Ñ9Ô9Ð9ð	:ð 	:ð 	:ð 	:r.   N©	r½   r¾   r¿   rÎ  r‡   rk   rÂ   rÈ   r¸   rd   r.   r,   rI   rI   p  sD   € € € € € € Ø€Gà€J�ÐÐÑàð:ð :ñ „[ð:ð :ð :r.   rI   c                   ó8   — e Zd ZU dZdZeed<   ed„ ¦   «         ZdS )r@   Tr†   r‡   c                 ó   — |j         rt          d¦  «        ‚t          |t          j        ¦  «        rKt          |t          j        ¦  «        r3t          j        t          |¦  «        t          |¦  «        z  ¦  «        S d S d S ©Nr�   )r¡   r¢   r%   r&   r¦   rV   r[   r  s      r,   r¸   zFloatTrueDiv.eval‹  sy   € ð
 Œ?ð 	8Ý#Ð$6Ñ7Ô7Ð7å�d�EœLÑ)Ô)ð 	=­j¸Å%Ä,Ñ.OÔ.Oð 	=Ý”;�u T™{œ{­U°7©^¬^Ñ;Ñ<Ô<Ð<ð	=ð 	=ð 	=ð 	=r.   Nr  rd   r.   r,   r@   r@   †  sD   € € € € € € Ø€Gà€J�ÐÐÑàð=ð =ñ „[ð=ð =ð =r.   r@   c                   óD   — e Zd ZU dZdZeed<   ed„ ¦   «         Zde	fd„Z
dS )r?   Tr†   r‡   c                 ó  — |j         rt          d¦  «        ‚t          |t          j        ¦  «        rit          |t          j        ¦  «        rOt          |¦  «        st          |¦  «        r1t          j        t          |¦  «        t          |¦  «        z  ¦  «        S t          |t          j        ¦  «        rKt          |t          j        ¦  «        r3t          j        t          |¦  «        t          |¦  «        z  ¦  «        S d S d S r  )
r¡   r¢   r%   r&   r¦   r   rV   r[   rl   rk   r  s      r,   r¸   zIntTrueDiv.eval¤  sè   € àŒ?ð 	8Ý#Ð$6Ñ7Ô7Ð7õ �t�Uœ\Ñ*Ô*ð	=å˜7¥E¤LÑ1Ô1ð	=õ ˜TÑ"Ô"ð	=õ '2°'Ñ&:Ô&:ð	=õ ”;�u T™{œ{­U°7©^¬^Ñ;Ñ<Ô<Ð<Ý�d�EœMÑ*Ô*ð 	9­z¸'Å5Ä=Ñ/QÔ/Qð 	9Ý”;�s 4™yœy­3¨w©<¬<Ñ7Ñ8Ô8Ð8ð	9ð 	9ð 	9ð 	9r.   r"   c                 óÐ   — |                      | j        d         t          d         dz
  ¦  «        }|                      | j        d         t          d         dz
  ¦  «        }d|› d|› d�S )Nr   r•   r–   r   z((int)z/(int)r˜   )r™   r)   r   rš   s       r,   rñ   zIntTrueDiv._ccode´  se   € Ø×#Ò# D¤I¨a¤Lµ*¸VÔ2DÀsÑ2JÑKÔKˆØ×&Ò& t¤y°¤|µZÀÔ5GÈ#Ñ5MÑNÔNˆØ.˜Ð.Ð. GÐ.Ð.Ð.Ð.r.   N)r½   r¾   r¿   rÎ  r‡   rk   rÂ   rÈ   r¸   rÇ   rñ   rd   r.   r,   r?   r?   Ÿ  s_   € € € € € € Ø€Gà€J�ÐÐÑàð9ð 9ñ „[ð9ð/ ð /ð /ð /ð /ð /ð /r.   r?   c                   ó(   — e Zd ZdZed„ ¦   «         ZdS )rC   Tc           	      ó*  — t          |¦  «        dz  dk    rt          dt          |¦  «        › �¦  «        ‚t          |¦  «        dz  }|d|…         }||d …         }ddlm} t	          d„ |D ¦   «         ¦  «        r  |d„ |D ¦   «         d„ |D ¦   «         ¦  «        S |dk    r6|d         j        r|d         dk    rdS |d         j        r|d         dk     rdS t	          d	„ |D ¦   «         ¦  «        r£|dk    rt          d
¦  «        ‚t          t          t          ||d¬¦  «        t          j	        d¦  «        ¬¦  «        ddiŽ\  }}t	          d„ |d d…         D ¦   «         ¦  «        r-|d d…         dz   } |d„ |D ¦   «         d„ |D ¦   «         ¦  «        S d S )NrM   r   z*expected an even number of arguments, got )Ú!eval_is_non_overlapping_and_densec              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r$   ©r%   r&   rl   rW   s     r,   rY   z9IsNonOverlappingAndDenseIndicator.eval.<locals>.<genexpr>Ò  s.   è è € Ð:Ð:°�z˜!�Uœ]Ñ+Ô+Ð:Ð:Ð:Ð:Ð:Ð:r.   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rd   ©rk   rW   s     r,   rp   z:IsNonOverlappingAndDenseIndicator.eval.<locals>.<listcomp>Ô  s   € Ð'Ð'Ð'˜A•�Q‘”Ð'Ð'Ð'r.   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rd   r"  rW   s     r,   rp   z:IsNonOverlappingAndDenseIndicator.eval.<locals>.<listcomp>Ô  s   € Ð)BÐ)BÐ)B°Q­#¨a©&¬&Ð)BÐ)BÐ)Br.   r   c              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r$   r   rW   s     r,   rY   z9IsNonOverlappingAndDenseIndicator.eval.<locals>.<genexpr>ç  s.   è è € Ð=Ð=°�z˜!�Uœ]Ñ+Ô+Ð=Ð=Ð=Ð=Ð=Ð=r.   zdim must not be zeroT)Ústrict)Úkeyr%  c              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r$   r   rW   s     r,   rY   z9IsNonOverlappingAndDenseIndicator.eval.<locals>.<genexpr>ñ  s.   è è € ÐFÐF°A•:˜a¥¤Ñ/Ô/ÐFÐFÐFÐFÐFÐFr.   rž   )é*   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rd   r"  rW   s     r,   rp   z:IsNonOverlappingAndDenseIndicator.eval.<locals>.<listcomp>ö  s   € Ð-Ð-Ð- •S˜‘V”VÐ-Ð-Ð-r.   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rd   r"  rW   s     r,   rp   z:IsNonOverlappingAndDenseIndicator.eval.<locals>.<listcomp>ö  s   € Ð/JÐ/JÐ/J¸1µ°A±´Ð/JÐ/JÐ/Jr.   )
r(   rô   Ú%torch.fx.experimental.symbolic_shapesr  r€   rã   ÚzipÚsortedÚoperatorÚ
itemgetter)r°   r)   ÚdimÚsizesÚstridesr  Ús_sizesÚ	s_stridess           r,   r¸   z&IsNonOverlappingAndDenseIndicator.evalÃ  s#  € åˆt‰9Œ9�q‰=˜AÒÐÝ ØH½SÀ¹Y¼YÐHÐHñô ð õ �$‰iŒi˜1‰nˆØ�Q�s�U”ˆØ�s�t�t”*ˆð	
ð 	
ð 	
ð 	
ð 	
ð 	
õ Ð:Ð:°TÐ:Ñ:Ô:Ñ:Ô:ð 	Ø4Ð4Ø'Ð' Ð'Ñ'Ô'Ð)BÐ)B¸'Ð)BÑ)BÔ)Bñô ð ð �!Š8ˆ8à�qŒzÔ#ð ¨°¬
°aª¨Ø�qà�QŒxÔ!ð  e¨A¤h°¢l lØ�qõ Ð=Ð=°WÐ=Ñ=Ô=Ñ=Ô=ð 	Ø�aŠxˆxÝ$Ð%;Ñ<Ô<Ð<õ "%Ý�˜E 7°4Ð8Ñ8Ô8½hÔ>QÐRSÑ>TÔ>TÐUÑUÔUð"àð"ð "ÑˆG�Yõ
 ÐFÐF¸ÀÀ"À¼ÐFÑFÔFÑFÔFð Ø! # 2 #œ,¨Ñ.�ð 9Ð8Ø-Ð- WÐ-Ñ-Ô-Ð/JÐ/JÀ	Ð/JÑ/JÔ/Jñô ð ð ˆtr.   Nr  rd   r.   r,   rC   rC   À  s2   € € € € € Ø€Jàð5ð 5ñ „[ð5ð 5ð 5r.   rC   c                   ó(   — e Zd ZdZed„ ¦   «         ZdS )rD   Tc                 óÚ   — |t           j        t           j         fv r|S t          |t           j        ¦  «        r3t          j        t          j        t          |¦  «        ¦  «        ¦  «        S d S r$   )r&   rø   r%   r¦   rV   rs   Útruncr[   rú   s     r,   r¸   zTruncToFloat.eval   s]   € à•e”h¥¤ 	Ð*Ð*Ð*ØˆMå�f�eœlÑ+Ô+ð 	:õ ”;�tœz­%°©-¬-Ñ8Ô8Ñ9Ô9Ð9ð		:ð 	:r.   N©r½   r¾   r¿   rÎ  rÈ   r¸   rd   r.   r,   rD   rD   ý  s2   € € € € € Ø€Gàð:ð :ñ „[ð:ð :ð :r.   rD   c                   ó4   — e Zd ZdZed„ ¦   «         Zdefd„ZdS )rE   Tc                 ó  — |t           j        t          fv rt          S |t           j         t           fv rt           S t          |t           j        ¦  «        r3t          j        t          j        t          |¦  «        ¦  «        ¦  «        S d S r$   )	r&   rø   r   r%   r¦   rl   rs   r7  r[   rú   s     r,   r¸   zTruncToInt.eval  sv   € ð •e”h¥Ð'Ð'Ð'ÝˆMØ•u”x�i¥& Ð)Ð)Ð)Ý�7ˆNÝ�f�eœlÑ+Ô+ð 	<Ý”=¥¤­E°&©M¬MÑ!:Ô!:Ñ;Ô;Ð;ð	<ð 	<r.   r"   c                 óN   — |                      | j        d         ¦  «        }d|› d�S )Nr   z(int64_t)(trunc(rý   rþ   r   s      r,   rñ   zTruncToInt._ccode  r  r.   Nr  rd   r.   r,   rE   rE     sM   € € € € € Ø€Jàð<ð <ñ „[ð<ð- ð -ð -ð -ð -ð -ð -r.   rE   c                   ó(   — e Zd ZdZed„ ¦   «         ZdS )rF   Tc                 óð   — |t           j        u rt          S |t           j         u rt           S t          |t           j        ¦  «        r/t          j        t          t          |¦  «        d¦  «        ¦  «        S d S rŠ   )r&   rø   r   r%   r¦   rl   Úroundr[   rú   s     r,   r¸   zRoundToInt.eval"  sj   € ð •U”XÐÐÝˆMØ•e”h�YÐÐÝ�7ˆNÝ�f�eœlÑ+Ô+ð 	:Ý”=¥¥u¨V¡}¤}°aÑ!8Ô!8Ñ9Ô9Ð9ð	:ð 	:r.   Nr  rd   r.   r,   rF   rF     s2   € € € € € Ø€Jàð:ð :ñ „[ð:ð :ð :r.   rF   c                   ó(   — e Zd ZdZed„ ¦   «         ZdS )rG   Tc                 óê   — t          |t          j        ¦  «        rVt          |t          j        ¦  «        r>t          j        t          t          |¦  «        t          |¦  «        ¦  «        ¦  «        S d S d S r$   )r%   r&   r¦   rl   rV   r>  r[   rk   )r°   rû   Úndigitss      r,   r¸   zRoundDecimal.eval@  sk   € õ �f�eœlÑ+Ô+ð 	Cµ
¸7ÅEÄMÑ0RÔ0Rð 	CÝ”;�u¥U¨6¡]¤]µC¸±L´LÑAÔAÑBÔBÐBð	Cð 	Cð 	Cð 	Cr.   Nr8  rd   r.   r,   rG   rG   =  s7   € € € € € Ø€GàðCð Cñ „[ðCð Cð Cr.   rG   c                   ó4   — e Zd ZdZed„ ¦   «         Zdefd„ZdS )rH   Tc                 ó  — |t           j        t           j         fv r|S t          |t           j        ¦  «        r!t          j        t          |¦  «        ¦  «        S |t          u rt           j        S |t           u rt           j         S d S r$   )r&   rø   r%   rl   rV   rk   r   rú   s     r,   r¸   zToFloat.evalK  sx   € à•e”h¥¤ 	Ð*Ð*Ð*ØˆMå�f�eœmÑ,Ô,ð 	,Ý”;�s 6™{œ{Ñ+Ô+Ð+Ø•VÐÐÝ”8ˆOØ•f�WÐÐÝ”H�9Ðð Ðr.   r"   c                 óN   — |                      | j        d         ¦  «        }d|› d�S )Nr   z	(double)(r˜   rþ   r   s      r,   rñ   zToFloat._ccodeW  s*   € Ø—’ ¤	¨!¤Ñ-Ô-ˆØ$˜6Ð$Ð$Ð$Ð$r.   N)r½   r¾   r¿   rÎ  rÈ   r¸   rÇ   rñ   rd   r.   r,   rH   rH   H  sM   € € € € € Ø€Gàð	ð 	ñ „[ð	ð% ð %ð %ð %ð %ð %ð %r.   rH   c                   ó¸   ‡ — e Zd ZdZdZdefd„Zdefd„Zd„ Zd„ Z	e
d„ ¦   «         Ze
d	„ ¦   «         Zd
„ Zdefd„Zd„ Zˆ fd„Zˆ fd„Zˆ fd„Zˆ fd„Zdefd„Zˆ xZS )rK   z4
    Prevents expansion and other optimizations
    é
   r"   c                 ó$   — d| j         d         › d�S )Nz	Identity(r   r˜   r‹   rŒ   s    r,   Ú__repr__zIdentity.__repr__c  s   € Ø*˜4œ9 Qœ<Ð*Ð*Ð*Ð*r.   c                 óJ   — d|                      | j        d         ¦  «        › d�S )z+Controls how sympy's StrPrinter prints thisr—   r   r˜   )Údoprintr)   )r�   r“   s     r,   r›   zIdentity._sympystrf  s%   € à3�7—?’? 4¤9¨Q¤<Ñ0Ô0Ð3Ð3Ð3Ð3r.   c                 ó&   — | j         d         j        S rŠ   )r)   rÎ  rŒ   s    r,   rè  zIdentity._eval_is_realj  s   € ØŒy˜Œ|Ô#Ð#r.   c                 ó&   — | j         d         j        S rŠ   rÕ   rŒ   s    r,   rÖ   zIdentity._eval_is_integerm  s   € ØŒy˜Œ|Ô&Ð&r.   c                 ód   — t          | j        d         j        o| j        d         j        ¦  «        S rŠ   )rÃ   r)   rd  r)  rŒ   s    r,   rd  zIdentity.is_numberp  s)   € õ �D”I˜a”LÔ*ÐI¨t¬y¸¬|Ô/IÑJÔJÐJr.   c                 ó@   — t          | j        d         j        ¦  «        S rŠ   )rÃ   r)   r)  rŒ   s    r,   r)  zIdentity.is_comparablev  s   € õ �D”I˜a”LÔ.Ñ/Ô/Ð/r.   c                 ó   — | j         d         S rŠ   r‹   )r�   Úhintss     r,   Ú_eval_expand_identityzIdentity._eval_expand_identity{  r�   r.   c                 ó6   — t          | j        d         ¦  «        S rŠ   )rk   r)   rŒ   s    r,   Ú__int__zIdentity.__int__  s   € Ý�4”9˜Q”<Ñ Ô Ð r.   c                 ó^  — | j         d         }t          |t          ¦  «        rt          j        |¦  «        }t          |t          j        ¦  «        sdS |j        r|j        r|j        sdS |j        r|j        r|j        sdS  |||¦  «        rt          j	        j
        nt          j	        j        S )z¤
        Fast path for comparing wrapped numeric atomics against other numeric atomics.
        Keep compound expressions on SymPy's default symbolic path.
        r   N)r)   r%   rk   r&   rl   r   Úis_Atomrd  r)  r	   rÞ   rß   )r�   rQ  Úopro   s       r,   Ú_identity_atom_comparezIdentity._identity_atom_compare‚  s®   € ð
 Œi˜ŒlˆÝ�e�SÑ!Ô!ð 	)Ý”M %Ñ(Ô(ˆEÝ˜%¥¤Ñ,Ô,ð 	Ø�4Ø”ð 	 ¤ð 	°#Ô2Cð 	Ø�4Ø”ð 	 %¤/ð 	°eÔ6Ið 	Ø�4Ø!˜r # u™~œ~Ð@�uŒwŒ|ˆ|µ5´7´=Ð@r.   c                 ó|   •— |                       |d„ ¦  «        }|�|n t          ¦   «                              |¦  «        S )Nc                 ó   — | |k    S r$   rd   r4   s     r,   rR  z!Identity.__ge__.<locals>.<lambda>“  ó
   € ¸aÀ1ºf€ r.   )rW  ÚsuperÚ__ge__©r�   rQ  ÚoutÚ	__class__s      €r,   r\  zIdentity.__ge__’  ó:   ø€ Ø×)Ò)¨%Ð1DÐ1DÑEÔEˆØ�oˆsˆs­5©7¬7¯>ª>¸%Ñ+@Ô+@Ð@r.   c                 ó|   •— |                       |d„ ¦  «        }|�|n t          ¦   «                              |¦  «        S )Nc                 ó   — | |k    S r$   rd   r4   s     r,   rR  z!Identity.__gt__.<locals>.<lambda>—  ó
   € ¸aÀ!ºe€ r.   )rW  r[  Ú__gt__r]  s      €r,   rd  zIdentity.__gt__–  ó:   ø€ Ø×)Ò)¨%Ð1CÐ1CÑDÔDˆØ�oˆsˆs­5©7¬7¯>ª>¸%Ñ+@Ô+@Ð@r.   c                 ó|   •— |                       |d„ ¦  «        }|�|n t          ¦   «                              |¦  «        S )Nc                 ó   — | |k    S r$   rd   r4   s     r,   rR  z!Identity.__le__.<locals>.<lambda>›  rZ  r.   )rW  r[  Ú__le__r]  s      €r,   rh  zIdentity.__le__š  r`  r.   c                 ó|   •— |                       |d„ ¦  «        }|�|n t          ¦   «                              |¦  «        S )Nc                 ó   — | |k     S r$   rd   r4   s     r,   rR  z!Identity.__lt__.<locals>.<lambda>Ÿ  rc  r.   )rW  r[  Ú__lt__r]  s      €r,   rk  zIdentity.__lt__ž  re  r.   c                 ó6   — t          | j        d         ¦  «        S rŠ   )r[   r)   rŒ   s    r,   Ú	__float__zIdentity.__float__¢  s   € Ý�T”Y˜q”\Ñ"Ô"Ð"r.   )r½   r¾   r¿   rÀ   r‡   rÇ   rH  r›   rè  rÖ   rÄ   rd  r)  rQ  rk   rS  rW  r\  rd  rh  rk  r[   rm  Ú__classcell__)r_  s   @r,   rK   rK   \  sŒ  ø€ € € € € ðð ð €Jð+˜#ð +ð +ð +ð +ð4 Cð 4ð 4ð 4ð 4ð$ð $ð $ð'ð 'ð 'ð ðKð Kñ „XðKð
 ð0ð 0ñ „Xð0ðð ð ð!˜ð !ð !ð !ð !ðAð Að Að Að Að Að Að AðAð Að Að Að AðAð Að Að Að AðAð Að Að Að Að#˜5ð #ð #ð #ð #ð #ð #ð #ð #r.   rK   c                 ób   ‡ —  G ˆ fd„dt           j        ¦  «        }d‰ z   }||_        ||_        |S )Nc                   ó6   •— e Zd ZdZ” ZeZeˆ fd„¦   «         ZdS )ú+make_opaque_unary_fn.<locals>.OpaqueUnaryFnaü  
        Unlike the builtin sympy functions on real numbers like sympy.sqrt,
        these equivalents do not do any nontrivial reasoning besides
        constant propagation.  This helps avoid performing transformations
        that are valid for real numbers but are invalid for floating point;
        in particular, while we are willing to make optimizations that change
        numerics for Tensor compute, we are NOT willing to make optimizations
        that change numerics for size compute.
        c                 ót  •— t          |t          j        t          j        f¦  «        rl	 t          j         t	          t
          ‰¦  «        t          |¦  «        ¦  «        ¦  «        S # t          $ r!  t	          t          ‰¦  «        |¦  «        cY S w xY w|t          j        t          j         t          j	        t          j	         t          t           fv re|t          u rt          j        }|t           u rt          j         }‰dk    rt          j        |d¦  «        S  t	          t          ‰¦  «        |¦  «        S d S )NÚlog2rM   )r%   r&   rl   rV   r6  rs   r[   ÚOverflowErrorrø   r  r   Úlog)r°   r/   Únames     €r,   r¸   z0make_opaque_unary_fn.<locals>.OpaqueUnaryFn.evalµ  s  ø€ å˜!�eœm­U¬[Ð9Ñ:Ô:ð /ð3Ý œ;Ð':¥w­t°TÑ':Ô':½5À¹8¼8Ñ'DÔ'DÑEÔEÐEøõ %ð 3ð 3ð 3Ø/�7¥5¨$Ñ/Ô/°Ñ2Ô2Ð2Ð2Ð2ð3øøøà•u”x¥%¤( ­E¬I½¼	°zÅ6ÍFÈ7ÐSÐSÐSØ��;�;Ýœ�AØ�˜�<�<Ýœ˜	�AØ˜6’>�>Ý œ9 Q¨™?œ?Ð*Ø+•w�u dÑ+Ô+¨AÑ.Ô.Ð.Ø�4s   ©<A& Á&(BÂBN)	r½   r¾   r¿   rÀ   Ú_torch_handler_nameÚmake_opaque_unary_fnÚ_torch_unpicklerrÈ   r¸   )rv  s   €r,   ÚOpaqueUnaryFnrq  §  sP   ø€ € € € € ð	ð 	ð #ÐØ/Ðà	ð	ð 	ð 	ð 	ñ 
Œð	ð 	ð 	r.   rz  ÚOpaqueUnaryFn_)r&   ÚFunctionr½   r¿   )rv  rz  Únms   `  r,   rx  rx  ¦  s\   ø€ ð$ð $ð $ð $ð $ð $ð $�œñ $ô $ð $ðL 
˜DÑ	 €BØ€MÔØ!#€MÔàÐr.   ÚsqrtÚcosÚcoshÚsinÚsinhÚtanÚtanhÚasinÚacosÚatanr  ru  Úasinhrs  c                 ó  ‡ ‡‡— ‰ dk    rt           d         Šn:‰ dk    rt           d         Šn&‰ dk    rt           d         Šnt          d‰ › �¦  «        ‚ G ˆ ˆˆfd„d	t          j        ¦  «        }d
‰ z   }||_        ||_        |S )NÚbitwise_andÚ
BitwiseAndÚbitwise_xorÚ
BitwiseXorÚ
bitwise_orÚ	BitwiseOrzunrecognized c                   ób   •— e Zd ZU ” Z”Zeed<    ej        e	”¬¦  «        Z
eˆfd„¦   «         ZdS )ú)make_opaque_bitwise_fn.<locals>.BitwiseFnr‡   )Úreal_op_namec                 óø  •— |j         r&|j         r t          t          ‰¦  «        ||¦  «        S |j         rt          j        |rdnd¦  «        }|j         rt          j        |rdnd¦  «        }t          |t          j        t          f¦  «        rlt          |t          j        t          f¦  «        rKt          j         t          t          ‰¦  «        t          |¦  «        t          |¦  «        ¦  «        ¦  «        S d S )Nr   r   )ræ   r6  r.  r&   rl   r%   rk   )r°   r/   r0   r’  s      €r,   r¸   z.make_opaque_bitwise_fn.<locals>.BitwiseFn.evalö  sç   ø€ àŒ|ð = ¤ð =Ø6•w�x¨Ñ6Ô6°q¸!Ñ<Ô<Ð<ØŒ|ð 1Ý”M q - ! !¨aÑ0Ô0�ØŒ|ð 1Ý”M q - ! !¨aÑ0Ô0�Ý˜!�eœm­SÐ1Ñ2Ô2ð VµzØ•E”M¥3Ð'ñ8ô 8ð Võ ”}Ð%D¥W­X°|Ñ%DÔ%DÅSÈÁVÄVÍSÐQRÉVÌVÑ%TÔ%TÑUÔUÐUØ�4r.   N)r½   r¾   r¿   rw  r‡   rk   rÂ   r^   ÚpartialÚmake_opaque_bitwise_fnry  rÈ   r¸   )rv  Úprecr’  s   €€€r,   Ú	BitwiseFnr‘  ï  sq   ø€ € € € € € Ø"ÐØˆ
�CÐÐÑØ,˜9Ô,Ø"°ð
ñ 
ô 
Ðð 
ð	ð 	ð 	ð 	ñ 
Œð	ð 	ð 	r.   r—  Ú
BitwiseFn_)r   rô   r&   r|  r½   r¿   )rv  r’  r—  r}  r–  s   ``  @r,   r•  r•  å  sÃ   øøø€ Øˆ}ÒÐÝ˜,Ô'ˆˆØ	�Ò	Ð	Ý˜,Ô'ˆˆØ	�Ò	Ð	Ý˜+Ô&ˆˆåÐ3¨TÐ3Ð3Ñ4Ô4Ð4ðð ð ð ð ð ð ð ð •E”Nñ ô ð ð* 
˜Ñ	€BØ€IÔØ€IÔàÐr.   rŠ  Úand_rŽ  Úor_rŒ  Úxor)hr^   rs   r.  r  Úcollections.abcr   Útypingr   r   r   Útyping_extensionsr   r   r&   r	   Ú
sympy.corer   Úsympy.core.exprr   Úsympy.core.functionr   Úsympy.core.logicr   r   r   Úsympy.core.numbersr   Úsympy.core.operationsr   r   Úsympy.core.sortingr   Úsympy.core.traversalr   Úsympy.printing.precedencer   Úsympy.utilities.iterablesr   Útorch.torch_versionr   Únumbersr   r   r   r   r   r*   r~   rÃ   r-   r5   Ú__all__rQ   rV   r`   re   r2   r|  r6   r7   r8   r9   r:   r;   r<   r=   r>   rA   rB   r  r,  r+  r  r  rJ   rI   r@   r?   rC   rD   rE   rF   rG   rH   rK   rx  ÚOpaqueUnaryFn_sqrtÚOpaqueUnaryFn_cosÚOpaqueUnaryFn_coshÚOpaqueUnaryFn_sinÚOpaqueUnaryFn_sinhÚOpaqueUnaryFn_tanÚOpaqueUnaryFn_tanhÚOpaqueUnaryFn_asinÚOpaqueUnaryFn_acosÚOpaqueUnaryFn_atanÚOpaqueUnaryFn_expÚOpaqueUnaryFn_logÚOpaqueUnaryFn_asinhÚOpaqueUnaryFn_log2r•  ÚBitwiseFn_bitwise_andÚBitwiseFn_bitwise_orÚBitwiseFn_bitwise_xorrd   r.   r,   ú<module>r½     s 	  ðà Ð Ð Ð Ø €€€Ø €€€Ø 
€
€
€
Ø $Ð $Ð $Ð $Ð $Ð $Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø +Ð +Ð +Ð +Ð +Ð +Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø +Ð +Ð +Ð +Ð +Ð +Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø &Ð &Ð &Ð &Ð &Ð &Ø %Ð %Ð %Ð %Ð %Ð %Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø *Ð *Ð *Ð *Ð *Ð *à ,Ð ,Ð ,Ð ,Ð ,Ð ,à (Ð (Ð (Ð (Ð (Ð (Ð (Ð (ð ð )Ø(Ð(Ð(Ð(Ð(Ð(ð €WˆT˜Ð'Ñ'Ô'€Ø€l�5ÑÔ€ð
 !Ð ðX�u”{ð X tð Xð Xð Xð Xð�”ð  ¤ð °´ð ð ð ð ðNð ð €ð4	 u¤zð 	°dð 	ð 	ð 	ð 	ðØ�˜”�˜rÐ!Ô"ðàˆv�cŒ{ˆm˜R %¤+Ñ-Ð-Ô.ðð ð ð ð ��t‘ð   t¡ð °°t±ð ð ð ð ð)˜5œ;ð )¨5¬;ð )¸5¼;ð )ð )ð )ð )ð|yð yð yð yð yˆuŒ~ñ yô yð yðxB<ð B<ð B<ð B<ð B<�e”nñ B<ô B<ð B<ðJð ð ð ð ˆEŒNñ ô ð ð>?Dð ?Dð ?Dð ?Dð ?D�”ñ ?Dô ?Dð ?DðF3ð 3ð 3ð 3ð 3ˆ%Œ.ñ 3ô 3ð 3ðlð ð ð ð ˆxñ ô ð ð,ð ,ð ,ð ,ð ,�”ñ ,ô ,ð ,ð$-ð -ð -ð -ð -�”ñ -ô -ð -ð&;ð ;ð ;ð ;ð ;ˆeŒnñ ;ô ;ð ;ð <ð <ð <ð <ð <ˆUŒ^ñ <ô <ð <ðEð Eð Eð Eð EˆUŒ^ñ Eô Eð EðR?ð R?ð R?ð R?ð R?��yñ R?ô R?ð R?ðj;ð ;ð ;ð ;ð ;ˆ*�kñ ;ô ;ð ;ð$:ð :ð :ð :ð :ˆ*�kñ :ô :ð :ð$'ð 'ð 'ðð ð ð4!ð !ð !ð !ð !�5”>ñ !ô !ð !ð6:ð :ð :ð :ð :ˆuŒ~ñ :ô :ð :ð,=ð =ð =ð =ð =�5”>ñ =ô =ð =ð2/ð /ð /ð /ð /�”ñ /ô /ð /ðB9ð 9ð 9ð 9ð 9¨¬ñ 9ô 9ð 9ðz:ð :ð :ð :ð :�5”>ñ :ô :ð :ð-ð -ð -ð -ð -�”ñ -ô -ð -ð&:ð :ð :ð :ð :�”ñ :ô :ð :ð<Cð Cð Cð Cð C�5”>ñ Cô Cð Cð%ð %ð %ð %ð %ˆeŒnñ %ô %ð %ð(G#ð G#ð G#ð G#ð G#ˆuŒ~ñ G#ô G#ð G#ðT+ð +ð +ð^ *Ð)¨&Ñ1Ô1Ð Ø(Ð(¨Ñ/Ô/Ð Ø)Ð)¨&Ñ1Ô1Ð Ø(Ð(¨Ñ/Ô/Ð Ø)Ð)¨&Ñ1Ô1Ð Ø(Ð(¨Ñ/Ô/Ð Ø)Ð)¨&Ñ1Ô1Ð Ø)Ð)¨&Ñ1Ô1Ð Ø)Ð)¨&Ñ1Ô1Ð Ø)Ð)¨&Ñ1Ô1Ð Ø(Ð(¨Ñ/Ô/Ð Ø(Ð(¨Ñ/Ô/Ð Ø*Ð*¨7Ñ3Ô3Ð Ø)Ð)¨&Ñ1Ô1Ð ð#ð #ð #ðL /Ð.¨}¸fÑEÔEÐ Ø-Ð-¨l¸EÑBÔBÐ Ø.Ð.¨}¸eÑDÔDÐ Ð Ð r.   