Ë
    [^(hTÄ  ã                   ó  — d dl Z d dlZd dlZd dlZd dlmZmZmZ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( erd dl)m*Z*  e	de¬«      Z+ ed«      Z,g d¢Z-dej&                  de.fd„Z/deee,   ge+f   deee,   ge
e+ej`                  f   f   fd„Z1dee.   dee.   dee.   fd„Z2dejf                  dejf                  dejf                  fd „Z4 G d!„ d"ejj                  «      Z6 G d#„ d$ejj                  «      Z7 G d%„ d&ejj                  «      Z8 G d'„ d(ejj                  «      Z9 G d)„ d*ejj                  «      Z: G d+„ d,e6«      Z; G d-„ d.ejj                  «      Z< G d/„ d0ejj                  «      Z= G d1„ d2ejj                  «      Z> G d3„ d4ejj                  «      Z? G d5„ d6ejj                  «      Z@ G d7„ d8ee«      ZA G d9„ d:eAe«      ZB G d;„ d<eAe«      ZCd=„ ZDd>„ ZE G d?„ d@ejj                  «      ZF G dA„ dBejj                  «      ZG G dC„ dDejj                  «      ZH G dE„ dFejj                  «      ZI G dG„ dHejj                  «      ZJ G dI„ dJejj                  «      ZK G dK„ dLejj                  «      ZL G dM„ dNejj                  «      ZM G dO„ dPejj                  «      ZN G dQ„ dRejj                  «      ZO G dS„ dTejj                  «      ZPdU„ ZQ eQdV«      ZR eQdW«      ZS eQdX«      ZT eQdY«      ZU eQdZ«      ZV eQd[«      ZW eQd\«      ZX eQd]«      ZY eQd^«      ZZ eQd_«      Z[ eQd`«      Z\ eQda«      Z] eQdb«      Z^ eQdc«      Z_dd„ Z` e`dedf«      Za e`dgdh«      Zby)ié    N)ÚCallableÚOptionalÚSupportsFloatÚTYPE_CHECKINGÚTypeVarÚUnion)ÚTypeVarTupleÚUnpack)ÚS©Úsympify)ÚExpr)ÚApplication)Ú_torfÚ	fuzzy_andÚfuzzy_or)Úequal_valued)Ú	LatticeOpÚShortCircuit)Úordered)Úwalk)Ú
PRECEDENCE)Úsifté   )Úint_oo)ÚIterableÚ_T)ÚboundÚ_Ts)ÚFloorDivÚModularIndexingÚWhereÚ	PythonModÚModÚCleanDivÚ	CeilToIntÚ
FloorToIntÚCeilDivÚ
IntTrueDivÚFloatTrueDivÚLShiftÚRShiftÚ!IsNonOverlappingAndDenseIndicatorÚTruncToFloatÚ
TruncToIntÚ
RoundToIntÚRoundDecimalÚToFloatÚFloatPowÚPowByNaturalÚIdentityÚexprÚreturnc                 óú   — | j                   xrn t        | j                  «      dk(  xrT | j                  d   j                  xr9 | j                  d   j                  xr | j                  d   | j                  d   uS )Né   r   r   )Úis_AddÚlenÚ_argsÚ	is_symbol)r6   s    úZ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/utils/_sympy/functions.pyÚ_is_symbols_binary_summationr?   Y   sr   € ð 	�‰ò 	/Ü�—
‘
‹O˜qÑ ò	/à�J‰J�q‰M×#Ñ#ò	/ð �J‰J�q‰M×#Ñ#ò	/ð �J‰J�q‰M §¡¨A¡Ð.ðó    Úfc                 ó˜   ‡ — t        j                  ‰ «      dt        t           dt        t
        t        j                  f   fˆ fd„«       }|S )NÚargsr7   c                  ó¦   •—  ‰| Ž }t        d„ | D «       «      r8t        |t        j                  «      st        j                  t	        |«      «      }|S )Nc              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­w©N)Ú
isinstanceÚsympyÚFloat©Ú.0Úas     r>   ú	<genexpr>z-_keep_float.<locals>.inner.<locals>.<genexpr>j   s   è ø€ Ò8¨aŒz˜!œUŸ[™[×)Ñ8ùó   ‚$&)ÚanyrG   rH   rI   Úfloat)rC   ÚrrA   s     €r>   Úinnerz_keep_float.<locals>.innerg   sD   ø€ á$% t HˆÜÑ8°4Ô8Ô8ÄØŒu�{‰{ôB
ô —‘œE !›HÓ%ˆAØˆr@   )Ú	functoolsÚwrapsr
   r   r   r   rH   rI   )rA   rR   s   ` r>   Ú_keep_floatrU   d   sF   ø€ ô ‡_�_�QÓð”VœC‘[ð ¤U¬2¬u¯{©{¨?Ñ%;ô ó ðð €Lr@   ÚxÚyc                 ó   — d | |fv ry | |k(  S rF   © )rV   rW   s     r>   Úfuzzy_eqrZ   s   s   € Ø��1ˆv�~ØØ�‰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                  j                  | «      «      «      }t         j                  j                  |«      }|D ]  Št        ˆfd„|D «       «      sŒ|‰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.
    rV   r7   c                 óò   — t         j                  j                  | «      D �cg c]6  }t        |t        t         j
                  f«      rt        t	        |«      «      ‘Œ8 }}t        j                  |«      S c c}w rF   )	rH   ÚMulÚ	make_argsrG   ÚintÚIntegerÚabsÚmathÚprod)rV   ÚargÚinteger_coefficientss      r>   Úinteger_coefficientz0simple_floordiv_gcd.<locals>.integer_coefficientŠ   sc   € ô —y‘y×*Ñ*¨1Ó-ö+
àÜ˜#¤¤U§]¡]Ð3Ô4ô ”�C“�Mð+
Ðð +
ô
 �y‰yÐ-Ó.Ð.ùò+
s   ¢;A4r6   c                 óž   •— t        ‰t        j                  j                  | «      «      }t	        j
                  t        j                  |«      S rF   )ÚmaprH   ÚAddr`   rS   Úreducerd   Úgcd)r6   Úinteger_factorsrh   s     €r>   Úinteger_factorz+simple_floordiv_gcd.<locals>.integer_factor’   s:   ø€ Ü),Ø¤§¡×!4Ñ!4°TÓ!:ó*
ˆô ×Ñ¤§¡¨/Ó:Ð:r@   c              3   ó&   •K  — | ]  }‰|v –— Œ
 y ­wrF   rY   )rK   Ú
base_splitrV   s     €r>   rM   z&simple_floordiv_gcd.<locals>.<genexpr>    s   øè ø€ Ò= :ˆq�JŒÑ=ùs   ƒ)rH   ÚBasicra   rd   rm   Úlistrj   r_   r`   rk   Úall)r[   r\   ro   rm   Úbase_splitsÚdivisor_splitrh   rV   s         @@r>   Úsimple_floordiv_gcdrw   y   sÎ   ù€ ð"/œuŸ{™{ð /¬só /ð;œUŸ[™[ð ;¬Sõ ;ô �x‰x™ qÓ)©>¸!Ó+<Ó=€CØˆs‰7�A˜‘G€q€Aä15ÜŒE�I‰I×Ñ¤§¡×!4Ñ!4°QÓ!7Ó8ó2€Kô .3¯Y©Y×-@Ñ-@ÀÓ-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ej                  df   fd„«       Zd„ Zy)r    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
    ©r9   .Únargsé#   Ú
precedenceTÚ
is_integerr7   c                 ó    — | j                   d   S ©Nr   ©rC   ©Úselfs    r>   ÚbasezFloorDiv.baseÄ   ó   € à�y‰y˜‰|Ðr@   c                 ó    — | j                   d   S ©Nr   r€   r�   s    r>   ÚdivisorzFloorDiv.divisorÈ   r„   r@   Úprinterc                 ó¬   — |j                  | j                  t        d   dz
  «      }|j                  | j                  t        d   dz
  «      }d|› d|› d�S )NÚAtomç      à?ú(z//ú)©Úparenthesizerƒ   r   r‡   ©r‚   rˆ   rƒ   r‡   s       r>   Ú	_sympystrzFloorDiv._sympystrÌ   sW   € Ø×#Ñ# D§I¡I¬z¸&Ñ/AÀCÑ/GÓHˆØ×&Ñ& t§|¡|´ZÀÑ5GÈ#Ñ5MÓNˆØ�4�&˜˜7˜) 1Ð%Ð%r@   rƒ   r‡   Nc                 óV  — |j                   rt        d«      ‚|t        t         t        j                  t        j                   fv r>|t        t         t        j                  t        j                   fv 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 t        |t        j                  «      �rt        |t        j                  «      rô|t        t         t        j                  t        j                   fv s.|t        t         t        j                  t        j                   fv 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"                  «      rDt        |t        j"                  «      r*t        j"                  t'        |«      t'        |«      z  «      S t        |t(        «      r)t)        |j*                  d   |j*                  d   |z  «      S t        |t        j"                  «      rƒd}g }t        j,                  j/                  |«      D ]*  }||z  }|j                  sŒ|j1                  |«       ||z  }Œ, t3        |«      dk7  r%t)        |t        j,                  |ddiŽz
  |«      |z   S 	 t5        ||«      }t        |d«      r0t        |t        j,                  «      rt        j6                  ||«      }t        |d«      s8t)        t        j8                  ||z  «      t        j8                  ||z  «      «      S 	 y # t        j:                  $ r Y y w xY w)Núdivision by zeror   éÿÿÿÿr   ÚevaluateF)Úis_zeroÚZeroDivisionErrorr   rH   ÚooÚnanr   ÚZeror}   r   r_   rG   ÚNumberrP   rd   ÚinfÚisnanrb   Úfloorra   r    rC   rk   r`   Úappendr;   rw   rm   ÚsimplifyÚPolynomialError)	Úclsrƒ   r‡   rQ   Ú	quotientsÚtermsÚtermÚquotientrm   s	            r>   ÚevalzFloorDiv.evalÓ   s  € ð �?Š?Ü#Ð$6Ó7Ð7Ø”FœV˜G¤U§X¡X´·±¨yÐ9Ñ9¸gÜÜˆGÜ�H‰HÜ�X‰XˆIð	J
ñ ?
ô —9‘9ÐØ”5—9‘9Ñ ¬5¯9©9Ñ 4Ü—9‘9Ðà�<Š<Ü—7‘7—<‘<ÐØ�?Š?œ|¨G°QÔ7ØˆKØ�?Š?œ|¨G°RÔ8Ü—9‘9˜T 2Ó&Ð&ä�tœUŸ\™\Õ*Ü˜7¤E§L¡LÔ1àœ¤& ¬%¯(©(´U·X±X°IÐ>Ñ>Øœv¬ w´·±¼5¿8¹8¸)ÐDÑDô �d“œe G›nÑ,ˆAØ”D—H‘HŠ}Ü�Ø”t—x‘x�i’Ü�w�Ü—‘˜A”Ü—y‘yÐ ä—}‘}¤T§Z¡Z°£]Ó3Ð3Ü�dœEŸM™MÔ*¬z¸'Ä5Ç=Á=Ô/QÜ—=‘=¤ T£¬c°'«lÑ!:Ó;Ð;Ü�dœHÔ%Ü˜DŸI™I a™L¨$¯)©)°A©,¸Ñ*@ÓAÐAô �gœuŸ}™}Ô-ØˆIØˆEÜŸ	™	×+Ñ+¨DÓ1ò *�Ø '™>�à×&Ó&Ø—L‘L Ô&Ø Ñ)‘Ið*ô �5‹z˜QŠô ˜T¤E§I¡I¨uÐ$E¸uÑ$EÑEÀwÓOØñ ðð
		Ü% d¨GÓ4ˆCÜ˜C Ô#¬
°7¼E¿I¹IÔ(FÜ—i‘i  gÓ.�Ü  QÔ'ÜÜ—N‘N 4¨#¡:Ó.´·±¸wÈ¹}Ó0Móð ð (ð øô ×$Ñ$ò 	Øàð	ús   ÎBP ÐP(Ð'P(c                 ó¬   — |j                  | j                  t        d   dz
  «      }|j                  | j                  t        d   dz
  «      }d|› d|› d�S )NrŠ   r‹   zfloor(ú/r�   rŽ   r�   s       r>   Ú_ccodezFloorDiv._ccode&  sW   € Ø×#Ñ# D§I¡I¬z¸&Ñ/AÀCÑ/GÓHˆØ×&Ñ& t§|¡|´ZÀÑ5GÈ#Ñ5MÓNˆØ˜�v˜Q˜w˜i qÐ)Ð)r@   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rz   Útuplera   Ú__annotations__r|   r}   ÚboolÚpropertyrH   rr   rƒ   r‡   ÚprintingÚ
StrPrinterÚstrr‘   Úclassmethodrb   r   r§   rª   rY   r@   r>   r    r    ·   sÕ   … ñð "€Eˆ5��c�‰?Ó!Ø€J�ÓØ€J�Óàð�e—k‘kò ó ðð ð˜Ÿ™ò ó ðð& §¡×!:Ñ!:ð &¸só &ð ðPØ—=‘=ðPØ+0¯=©=ðPà	ˆu�{‰{˜DÐ Ñ	!òPó ðPód*r@   r    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ej                     fd„«       Zdee	   fd„Zdee	   fd„Zy)r!   zK
    ModularIndexing(a, b, c) => (a // b) % c where % is the C modulus
    ©é   .rz   Tr}   r{   r|   rƒ   r‡   Úmodulusr7   c                 ór  — |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k7  rTt        j
                  ||«      }|dk7  r9t        t        j                  ||z  «      t        j                  ||z  «      |«      S t        |t         j                  «      rõg }d}|j                  D ]©  }t        j
                  |||z  «      ||z  k7  sŒ#t        |t         j                  «      r|dk  sSt        |t         j                  «      r=t        |j                  d   t         j                  «      r|j                  d   dk  rd} n|j                  |«       Œ« t        |«      t        |j                  «      k7  r|rt        t        |«      ||«      S t        |t        «      r*t        |j                  d   |j                  d   |z  |«      S y # t         j                  $ r Y �Œ`w xY w)Nr   r   TF)rH   r   rš   rG   rb   rm   r!   r    r¡   rk   rC   r_   rŸ   r;   Úsumr    )r¢   rƒ   r‡   rº   rm   Ú	new_termsÚall_positiver¥   s           r>   r§   zModularIndexing.eval5  sÍ  € ð �1Š9˜ 1šÜ—7‘7—<‘<Ðô �tœUŸ]™]Ô+Ü˜7¤E§M¡MÔ2Ü˜7¤E§M¡MÔ2à˜G‘O wÑ.Ð.ð
	Ø˜!Š|Ü—i‘i  gÓ.�Ø˜!’8Ü*ÜŸ™ t¨c¡zÓ2ÜŸ™ w°¡}Ó5Øóð ô �dœEŸI™IÔ&Ø-/ˆIØ!%ˆLØŸ	™	ò /�Ü—9‘9˜T 7¨WÑ#4Ó5¸À7Ñ9JÓJÜ" 4¬¯©Ô7¸DÀ1ºHÜ" 4¬¯©Ô3Ü& t§y¡y°¡|´U·]±]ÔCØ ŸI™I a™L¨1Ò,ð (-˜Ùà!×(Ñ(¨Õ.ð/ô  �9‹~¤ T§Y¡Y£Ò/±LÜ&¤s¨9£~°wÀÓHÐHä�dœHÔ%Ü" 4§9¡9¨Q¡<°·±¸1±ÀÑ1GÈÓQÐQàøô9 ×$Ñ$ò 	Úð	ús   Á<AH ÈH6È5H6c                 óf   — | j                   d d \  }}t        |j                  |j                  «      S ©Nr9   )rC   rZ   Úis_nonnegative©r‚   r[   r\   s      r>   Ú_eval_is_nonnegativez$ModularIndexing._eval_is_nonnegativej  s.   € Ø�y‰y˜˜!ˆ}‰ˆˆ1Ü˜×(Ñ(¨!×*:Ñ*:Ó;Ð;r@   c                 óf   — | j                   d d \  }}t        |j                  |j                  «      S rÀ   )rC   rZ   Úis_positiverÂ   s      r>   Ú_eval_is_positivez!ModularIndexing._eval_is_positiven  s*   € Ø�y‰y˜˜!ˆ}‰ˆˆ1Ü˜Ÿ™ q§}¡}Ó5Ð5r@   N)r«   r¬   r­   r®   rz   r¯   ra   r°   r}   r±   r|   r¶   rH   rb   r   rr   r§   rÃ   rÆ   rY   r@   r>   r!   r!   ,  s—   … ñð "€Eˆ5��c�‰?Ó!Ø€J�ÓØ€J�Óàð2Ø—=‘=ð2Ø+0¯=©=ð2ØCHÇ=Á=ð2à	�%—+‘+Ñ	ò2ó ð2ðh< h¨t¡nó <ð6 8¨D¡>ô 6r@   r!   c            
       óæ   — e Zd ZU dZdZeedf   ed<   dZeed<   de	e
   fd„Zde	e
   fd	„Zde	e
   fd
„Zedej                   dej                   dej                   de	ej                      fd„«       Zy)r"   z#
    Good ol' ternary operator
    r¸   .rz   r{   r|   r7   c                 ón   — | j                   d   j                  r| j                   d   j                  rdS d S ©Nr   r9   T©rC   r}   r�   s    r>   Ú_eval_is_integerzWhere._eval_is_integer{  s.   € Ø—y‘y ‘|×.Ò.°4·9±9¸Q±<×3JÒ3JˆtÐTÐPTÐTr@   c                 ón   — | j                   d   j                  r| j                   d   j                  rdS d S rÉ   )rC   rÁ   r�   s    r>   rÃ   zWhere._eval_is_nonnegative~  s9   € ð �y‰y˜‰|×*Ò*¨t¯y©y¸©|×/JÒ/Jð ð	
ð ð	
r@   c                 ón   — | j                   d   j                  r| j                   d   j                  rdS d S rÉ   ©rC   rÅ   r�   s    r>   rÆ   zWhere._eval_is_positive…  s.   € Ø—y‘y ‘|×/Ò/°D·I±I¸a±L×4LÒ4LˆtÐVÐRVÐVr@   Úcr[   r\   c                 óX   — |t         j                  k(  r|S |t         j                  k(  r|S y rF   )rH   ÚtrueÚfalse)r¢   rÏ   r[   r\   s       r>   r§   z
Where.evalˆ  s(   € ð ”—
‘
Š?ØˆHØ”%—+‘+ÒØˆHØr@   N)r«   r¬   r­   r®   rz   r¯   ra   r°   r|   r   r±   rË   rÃ   rÆ   r¶   rH   rr   r§   rY   r@   r>   r"   r"   s  s¢   … ñð "€Eˆ5��c�‰?Ó!Ø€J�ÓðU (¨4¡.ó Uð
 h¨t¡nó 
ðW 8¨D¡>ó Wð ðØ—‘ðØ %§¡ðØ05·±ðà	�%—+‘+Ñ	òó ñr@   r"   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ej                     fd„«       Zd
ee	   fd„Zd
ee	   fd„Zy)r#   ry   .rz   r{   r|   Tr}   r[   r\   r7   c                 óB  — |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(  r8|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 y )NúModulo by zeror   r9   r   )r–   r—   r   rš   Ú	is_NumberÚis_evenÚis_oddÚOner}   Ú
is_Booleanr±   rÅ   rH   r$   ©r¢   r[   r\   rQ   Úlesss        r>   r§   zPythonMod.evalš  sâ   € ð �9Š9Ü#Ð$4Ó5Ð5ð ”—‘‰;˜!  A 2˜w™,¨!¨qª&Ü—6‘6ˆMð �;Š;˜1Ÿ;š;Ø�q‘5ˆLð �;Š;˜1 š6Ø�yŠyÜ—v‘v�Ø�xŠxÜ—u‘u�ð �‰EˆØ�<Š<Ü—6‘6ˆMð
 �1‰uˆØ�?Š?œt Dœz¨a¯mªmØˆHä�9‰9�Q˜‹?˜aÒÜ—6‘6ˆMàr@   c                 ó<   — | j                   d   j                  rdS d S ©Nr   TrÎ   r�   s    r>   rÃ   zPythonMod._eval_is_nonnegativeÈ  ó   € Ø—y‘y ‘|×/Ò/ˆtÐ9°TÐ9r@   c                 ó<   — | j                   d   j                  rdS d S rÞ   )rC   Úis_negativer�   s    r>   Ú_eval_is_nonpositivezPythonMod._eval_is_nonpositiveË  rß   r@   N)r«   r¬   r­   rz   r¯   ra   r°   r|   r}   r±   r¶   rH   r   r   r§   rÃ   râ   rY   r@   r>   r#   r#   ”  s�   … Ø!€Eˆ5��c�‰?Ó!à€J�ÓØ€J�Óàð*�U—Z‘Zð * E§J¡Jð *°8¸E¿J¹JÑ3Gò *ó ð*ðZ: h¨t¡nó :ð: h¨t¡nô :r@   r#   c                   ó8   — e Zd ZU dZdZeed<   dZdZe	d„ «       Z
y)r$   ry   r{   r|   Tc                 ó$  — |j                   rt        d«      ‚|t        j                  u s||| fv s|dk(  rt        j                  S |j                  r)|j                  r|dk\  sJ |«       ‚|dk\  sJ |«       ‚||z  S |j                  r=|dk(  r8|j
                  rt        j                  S |j                  rt        j                  S ||z  }|j                  rt        j                  S ||k  }|j                  rt        |«      r|j                  r|S y y y )NrÕ   r   r   r9   )r–   r—   r   rš   rÖ   r×   rØ   rÙ   r}   rÚ   r±   rÅ   rÛ   s        r>   r§   zMod.eval×  sï   € ð �9Š9Ü#Ð$4Ó5Ð5ð ”—‘‰;˜!  A 2˜w™,¨!¨qª&Ü—6‘6ˆMð �;Š;˜1Ÿ;š;Ø˜’6Ð˜1Ó�6Ø˜’6Ð˜1Ó�6Ø�q‘5ˆLð �;Š;˜1 š6Ø�yŠyÜ—v‘v�Ø�xŠxÜ—u‘u�ð �‰EˆØ�<Š<Ü—6‘6ˆMð
 �1‰uˆØ�?Š?œt Dœz¨a¯mªmØˆHð /<˜zˆ?r@   N)r«   r¬   r­   rz   r|   ra   r°   r}   rÁ   r¶   r§   rY   r@   r>   r$   r$   Ð  s-   … Ø€EØ€J�Óà€JØ€Nàñ)ó ñ)r@   r$   c                   ó   — e Zd ZdZy)r%   zZ
    Div where we can assume no rounding.
    This is to enable future optimizations.
    N)r«   r¬   r­   r®   rY   r@   r>   r%   r%     s   „ òr@   r%   c                   ó    — e Zd ZdZed„ «       Zy)r&   Tc                 ó  — |t         j                  t        fv rt        S |t         j                   t         fv rt         S t        |t         j                  «      r1t        j
                  t        j                  t        |«      «      «      S y rF   )	rH   r˜   r   rG   r›   rb   rd   ÚceilrP   ©r¢   Únumbers     r>   r§   zCeilToInt.eval  se   € ð ”e—h‘h¤Ð'Ñ'ÜˆMØ”u—x‘x�i¤& Ð)Ñ)Ü�7ˆNÜ�fœeŸl™lÔ+Ü—=‘=¤§¡¬5°«=Ó!9Ó:Ð:ð ,r@   N©r«   r¬   r­   r}   r¶   r§   rY   r@   r>   r&   r&     s   „ Ø€Jàñ;ó ñ;r@   r&   c                   ó    — e Zd ZdZed„ «       Zy)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
                  «      r1t        j                  t        j                  t        |«      «      «      S y rF   )	rH   r˜   r   rG   rb   r›   rd   rž   rP   ré   s     r>   r§   zFloorToInt.eval  st   € à”e—h‘h¤Ð'Ñ'ÜˆMØ”u—x‘x�i¤Ð(Ñ(Ü�7ˆNÜ�fœeŸm™mÔ,ØˆMÜ�fœeŸl™lÔ+Ü—=‘=¤§¡¬E°&«MÓ!:Ó;Ð;ð ,r@   Nrë   rY   r@   r>   r'   r'     s   „ Ø€Jàñ<ó ñ<r@   r'   c                   ó   — e Zd ZdZdZd„ Zy)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†   )rH   r   rm   r%   r    ©r¢   rƒ   r‡   s      r>   Ú__new__zCeilDiv.__new__1  sT   € Ü�}‰}˜TÓ"ˆÜ—-‘- Ó(ˆÜ�9‰9�T˜7Ó# wÒ.Ü˜D 'Ó*Ð*ä˜D G¨a¡KÑ0°'Ó:Ð:r@   N)r«   r¬   r­   r®   r}   rñ   rY   r@   r>   r(   r(   *  s   „ ñð €Jó;r@   r(   c                   ó    — e Zd ZdZed„ «       Zy)r+   Tc                 ó2   — |dk  rt        d«      ‚|d|z  z  S ©Nr   znegative shift countr9   )Ú
ValueError©r¢   rƒ   Úshifts      r>   r§   zLShift.eval=  s#   € à�1Š9ÜÐ3Ó4Ð4Ø�a˜‘h‰Ðr@   Nrë   rY   r@   r>   r+   r+   :  s   „ Ø€Jàñó ñr@   r+   c                   ó    — e Zd ZdZed„ «       Zy)r,   Tc                 ó@   — |dk  rt        d«      ‚t        |d|z  «      S rô   )rõ   r    rö   s      r>   r§   zRShift.evalG  s&   € à�1Š9ÜÐ3Ó4Ð4Ü˜˜a ™hÓ'Ð'r@   Nrë   rY   r@   r>   r,   r,   D  s   „ Ø€Jàñ(ó ñ(r@   r,   c                   óê  — e Zd Zd„ Zedeeej                  j                  j                        fd„«       Ze	 d$deeej                  j                  j                        deeej                  j                  j                        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)y)%Ú
MinMaxBasec                 ó&  — ddl m} |j                  d|j                  «      }d„ |D «       }|sd n| j	                  |«      }|rC	 t        | j                  |«      «      }|€& | j                  |fi |¤Ž} | j                  |fi |¤Ž}t        |«      }|s| j                  S t        |«      dk(  rt        |«      j                  «       S t        j                  | gt!        |«      ¢­i |¤Ž}||_        ||_        |S # t        $ r | j                  cY S w xY w)Nr   )Úglobal_parametersr•   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrF   r   )rK   rf   s     r>   rM   z%MinMaxBase.__new__.<locals>.<genexpr>S  s   è ø€ Ò6 ”˜—Ñ6ùs   ‚r   )Úsympy.core.parametersrý   Úpopr•   Ú"_satisfy_unique_summations_symbolsÚ	frozensetÚ_new_args_filterr   ÚzeroÚ_collapse_argumentsÚ_find_localzerosÚidentityr;   rs   r   rñ   r   Ú_argsetÚunique_summations_symbols)r¢   Úoriginal_argsÚassumptionsrý   r•   rC   r	  Úobjs           r>   rñ   zMinMaxBase.__new__O  s  € Ý;à—?‘? :Ð/@×/IÑ/IÓJˆÙ6¨Ô6ˆñ
 ñ à×7Ñ7¸ÓFð 	"ñ ð ô ! ×!5Ñ!5°dÓ!;Ó<�ð )Ð0à.�s×.Ñ.¨tÑC°{ÑC�ð ,�s×+Ñ+¨DÑ@°KÑ@�ä˜‹ˆáØ—<‘<Ðäˆt‹9˜Š>Ü˜“:—>‘>Ó#Ð#ô �l‰l˜3Ð>¤¨£Ò>°+Ñ>ˆØˆŒà(AˆÔ%Øˆ
øô3  ò  Ø—x‘x’ð ús   ÁC8 Ã8DÄDr7   c                 ó*  — t        |«      dk7  ryt        |d   t        «      r
|d   |d   fn	|d   |d   f\  }}t        |«      syt        |«      r| j	                  |«      S t        |t        «      r"t        |dd«      }|�| j	                  |g|«      S y)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.
        r9   Nr   r   r	  )r;   rG   rû   r?   Ú_unique_symbolsÚgetattr)r¢   rC   ÚlhsÚrhsÚlhs_unique_summations_symbolss        r>   r  z-MinMaxBase._satisfy_unique_summations_symbols|  sµ   € ô< ˆt‹9˜Š>Øô ˜$˜q™'¤:Ô.ð �!‰W�d˜1‘gÑà�q‘'˜4 ™7Ð#ñ 	ˆˆcô ,¨CÔ0Øô (¨Ô,Ø×&Ñ& tÓ,Ð,ô �cœ:Ô&Ü,3ØÐ0°$ó-Ð)ð -Ð8Ø×*Ñ*¨C¨5Ð2OÓPÐPàr@   NÚinitial_setc                 óì   — |€
t        «       n|}|D ]`  }|j                  «       D ]K  }t        |t        j                  j
                  j                  «      s  y||v r  y|j                  |«       ŒM Œb |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ÚatomsrG   rH   ÚcoreÚsymbolÚSymbolÚadd)r¢   rC   r  Úseen_symbolsrf   Úelements         r>   r  zMinMaxBase._unique_symbols´  st   € ð !,Ð 3”s”u¸ˆØò 	.ˆCØŸ9™9›;ò .�Ü! '¬5¯:©:×+<Ñ+<×+CÑ+CÔDÚØ Ñ,Úà ×$Ñ$ WÕ-ñ.ð	.ð Ðr@   c                 óî  ‡ ‡‡— |s|S t        t        |«      «      }‰ t        u rt        Šnt        Š|d   j                  �r×g g fx}\  }}|D ]X  }t        |t        t        «      D ]>  }|j                  d   j                  sŒ|t        |t        «         j                  |«       Œ@ ŒZ t        j                  }|D ])  }|j                  d   }|j                  sŒ||k  dk(  sŒ(|}Œ+ t        j                  }	|D ])  }|j                  d   }|j                  sŒ||	kD  dk(  sŒ(|}	Œ+ ‰ t        u r!|D ]  }
|
j                  s n7|
|k  dk(  sŒ|
}Œ n)‰ t        k(  r |D ]  }
|
j                  s n|
|	kD  dk(  sŒ|
}	Œ d}‰ t        u r|t        j                  k7  r$t        Š|}n|	t        j                  k7  rt        Š|	}|�`t        t        |«      «      D ]I  }||   }t        |‰«      sŒ|j                  d   }‰t        k(  r||kD  n||k  dk(  sŒ;‰ j                  ||<   ŒK ˆ ˆfd„Št        |«      D ](  \  }}||dz   d D �cg c]  } ‰||«      ‘Œ c}||dz   d Œ* ˆ ˆfd„}t        |«      dkD  r ||«      }|S c c}w )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        t        f«      s| S || j                  v }|s1 | j                  | j                  D �cg c]  } ‰||«      ‘Œ c}ddiŽS t        | ‰«      r7 | j                  | j                  D �cg c]  }||k7  sŒ	 ‰||«      ‘Œ c}ddiŽS |S c c}w c c}w )Nr•   F)rG   ÚMinÚMaxrC   Úfunc)ÚairL   ÚcondÚir¢   Údos       €€r>   r%  z*MinMaxBase._collapse_arguments.<locals>.do  sš   ø€ Ü˜b¤3¬ *Ô-Ø�	Ø˜Ÿ™�<ˆDÙØ�r—w‘w°2·7±7Ö ;¨a¡ A q¥Ò ;ÐLÀeÑLÐLÜ˜"˜cÔ"Ø�r—w‘w°2·7±7Ö E¨a¸aÀ1»f¡ A q¥Ò EÐVÐPUÑVÐVØˆHùò !<ùâ Es   ÁB Â
B%ÂB%r   c                 óŠ  •— ˆfd„}t        | |d¬«      \  }}|s| S |D �cg c]  }t        |j                  «      ‘Œ }}t        j                  |Ž }|s| S t	        |«      }|D �cg c]  }||z
  ‘Œ	 }	}t        |	«      r,|	D �
cg c]
  }
 ‰|
ddiŽ‘Œ }}
|j                   ‰|ddiŽ«        ‰|ddiŽ}||gz   S c c}w c c}w c c}
w )Nc                 ó   •— t        | ‰«      S rF   )rG   )rf   Úothers    €r>   ú<lambda>zGMinMaxBase._collapse_arguments.<locals>.factor_minmax.<locals>.<lambda>3  s   ø€ ¤:¨c°5Ó#9€ r@   T)Úbinaryr•   F)r   r  rC   Úintersectionrs   rt   rŸ   )rC   Úis_otherÚ
other_argsÚremaining_argsrf   Úarg_setsÚcommonÚnew_other_argsÚarg_setÚarg_sets_diffÚsÚother_args_diffÚother_args_factoredr¢   r(  s                €€r>   Úfactor_minmaxz5MinMaxBase._collapse_arguments.<locals>.factor_minmax2  sè   ø€ Û9ˆHÜ)-¨d°HÀTÔ)JÑ&ˆJ˜ÙØ�ð 2<Ö<¨#œ˜CŸH™H�Ð<ˆHÐ<Ü×%Ñ% xÐ0ˆFÙØ�ä! &›\ˆNØ=EÖF°'˜W vÓ-ÐFˆMÐFô �=Ô!ØFSÖ"TÀ¡5¨!Ð#<°eÓ#<Ð"T�Ð"TØ×%Ñ%¡c¨?Ð&KÀUÑ&KÔLá"'¨Ð"HÀ%Ñ"HÐØ!Ð%8Ð$9Ñ9Ð9ùò =ùò Gùò
 #Us    B6Á#B;Â C )rs   r   r  r   Ú	is_numberr   rC   Úis_comparablerG   rŸ   r  Úranger;   Ú	enumerate)r¢   rC   r  ÚsiftedÚminsÚmaxsr$  ÚvÚsmallÚbigrf   ÚTrL   Úa0r"  r7  r%  r(  s   `               @@r>   r  zMinMaxBase._collapse_argumentsÇ  s”  ú€ ñ0 ØˆKÜ”G˜D“MÓ"ˆØ”#‰:Ü‰EäˆEð
 �‰7×ÓØ"$ b &Ð(ˆF‘Z�T˜4Øò =�Ü˜a¤¤cÓ*ò =�AØ—v‘v˜a‘y×.Ó.Øœz¨!¬SÓ1Ñ2×9Ñ9¸!Õ<ñ=ð=ô —L‘LˆEØò �Ø—F‘F˜1‘I�Ø—;“; A¨¡I°$Ó#6Ø‘Eðô —,‘,ˆCØò �Ø—F‘F˜1‘I�Ø—;“; A¨¡G°Ó#4Ø‘Cðð ”c‰zØò $�CØŸ=š=ÙØ˜e™¨Ó,Ø #™ñ	$ð
 œ’Øò "�CØŸ=š=ÙØ˜c™	 dÓ*Ø!™ð	"ð
 ˆAØ”c‰zØœCŸL™LÒ(Ü�EØ‘AØœŸ™Ò$Ü�Ø�Øˆ}äœs 4›yÓ)ò 3�AØ˜Q™�AÜ! ! UÕ+ØŸV™V A™Y˜à(-´ª˜R !šV¸2À¹6Ø!ó"ð '*§l¡l˜D šGð3õ	ô ˜d“Oò 	@‰DˆAˆqØ15°a¸!±e°g°Ö?¨2™R  A�YÒ?ˆD��Q‘�‰Mð	@õ	:ô0 ˆt‹9�qŠ=Ù  Ó&ˆDàˆùòI @s   È9I2c              #   óL  K  — |D ]™  }t        |t        «      r&|j                  du s|j                  r|j                  st        d|› d�«      ‚|| j                  k(  rt        |«      ‚|| j                  k(  rŒr|j                  | k(  r|j                  E d{  –—†  Œ–|–— Œ› y7 Œ­w)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)rG   r   Úis_extended_realr8  r9  rõ   r  r   r  r!  rC   )r¢   Úarg_sequencerf   s      r>   r  zMinMaxBase._new_args_filterO  sœ   è ø€ ð  ò 	ˆCô ˜s¤DÔ)Ø×'Ñ'¨5Ñ0Ø—M’M¨#×*;Ò*;ä  >°#°Ð6JÐ!KÓLÐLà�c—h‘hŠÜ" 3Ó'Ð'Ø˜Ÿ™Ò$ØØ—‘˜S’ØŸ8™8×#Ñ#à“	ñ!	ð $ús   ‚BB$ÂB"ÂB$c                 óæ  — t        «       }d}|D ]\  }|j                  r=|€|}Œ| t        u rt        ||«      }Œ)| t        u rt        ||«      }Œ>t        d| › �«      ‚|j                  |«       Œ^ |€|S t        |«      dk(  r|hS t        |«      dk(  rOt        t        |«      «      }|dv r|j                  r| t        u r|S |hS |dk(  r|j                  r| t        u r|S |hS |j                  |«       |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
        Nzimpossible r   r   )g        r   )r  rÖ   r   Úmaxr  ÚminÚAssertionErrorr  r;   ÚnextÚiterrÁ   rÅ   )r¢   ÚvaluesÚoptionsÚother_valuesÚ	num_valuerf   Úother_values          r>   r  zMinMaxBase._find_localzerosj  s  € ô “uˆØˆ	Øò 	&ˆCØ�}Š}ØÐ$Ø #‘Iàœc‘zÜ$'¨	°3Ó$7™	Ø¤™Ü$'¨	°3Ó$7™	ä,¨{¸3¸%Ð-@ÓAÐAà× Ñ  Õ%ð	&ð ÐØÐäˆ|Ó Ò!Ø�;Ðäˆ|Ó Ò!Üœt LÓ1Ó2ˆKØ˜HÑ$¨×)CÒ)CØ'*¬c¡z�|ÐB¸	°{ÐBØ˜AŠ~ +×"9Ò"9Ø'*¬c¡z�|ÐB¸	°{ÐBà×Ñ˜Ô#ØÐr@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )Úis_algebraic©rK   r$  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>™  ó   è ø€ Ò(H¸A¨¯­Ñ(Hùó   ‚©r   rC   ©r4  s    r>   r)  zMinMaxBase.<lambda>™  ó   € ¤5Ñ(HÀÇÁÔ(HÓ#H€ r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )Úis_antihermitianrU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>š  ó   è ø€ ò -Ø ˆ×Õñ-ùrW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>š  ó   € ¤uñ -Ø$%§F¡Fô-ó (€ r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )Úis_commutativerU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>�  ó   è ø€ ò +Øˆ×Õñ+ùrW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>�  ó   € ¤Uñ +Ø"#§&¡&ô+ó &€ r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )Ú
is_complexrU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>   ó   è ø€ Ò&D¸ q§|¥|Ñ&DùrW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>   ó   € ¤Ñ&D¸Q¿V¹VÔ&DÓ!D€ r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )Úis_compositerU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>¡  rV  rW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>¡  rZ  r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )r×   rU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>¢  ó   è ø€ Ò#>°! A§I¥IÑ#>ùrW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>¢  ó   € œeÑ#>°q·v±vÔ#>Ó>€ r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )Ú	is_finiterU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>£  s   è ø€ Ò%B°a a§k¥kÑ%BùrW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>£  s   € ¤Ñ%B¸1¿6¹6Ô%BÓ B€ r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )Úis_hermitianrU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>¤  rV  rW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>¤  rZ  r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )Úis_imaginaryrU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>¥  rV  rW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>¥  rZ  r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )Úis_infiniterU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>¦  ó   è ø€ Ò'F¸!¨¯­Ñ'FùrW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>¦  ó   € ¤%Ñ'F¸q¿v¹vÔ'FÓ"F€ r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )r}   rU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>§  rh  rW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>§  ri  r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )Úis_irrationalrU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>¨  ó   è ø€ Ò)J¸a¨!¯/­/Ñ)JùrW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>¨  ó   € ¤EÑ)JÀ1Ç6Á6Ô)JÓ$J€ r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   ©rá   rU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>©  r}  rW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>©  r~  r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )Úis_nonintegerrU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>ª  r„  rW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>ª  r…  r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   ©rÁ   rU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>«  rc  rW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>«  rd  r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )Úis_nonpositiverU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>®  rc  rW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>®  rd  r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )Ú
is_nonzerorU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>±  rh  rW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>±  ri  r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )rØ   rU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>²  s   è ø€ Ò"<° 1§8¥8Ñ"<ùrW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>²  s   € œUÑ"<°Q·V±VÔ"<Ó<€ r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )Úis_polarrU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>³  ó   è ø€ Ò$@°A Q§Z¥ZÑ$@ùrW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>³  ó   € œuÑ$@¸¿¹Ô$@Ó@€ r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   ©rÅ   rU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>´  r}  rW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>´  r~  r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )Úis_primerU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>µ  rš  rW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>µ  r›  r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )Úis_rationalrU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>¶  r}  rW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>¶  r~  r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )Úis_realrU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>·  ro  rW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>·  rp  r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )rE  rU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>¸  r^  rW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>¸  r_  r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )Úis_transcendentalrU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>»  s   è ø€ ò .Ø !ˆ×Õñ.ùrW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>»  s   € ¬ñ .Ø%&§V¡Vô.ó )€ r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   )r–   rU  s     r>   rM   z&MinMaxBase.<lambda>.<locals>.<genexpr>¾  ro  rW  rX  rY  s    r>   r)  zMinMaxBase.<lambda>¾  rp  r@   rF   )*r«   r¬   r­   rñ   r¶   r   r  rH   r  r  r  r  r  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_zerorY   r@   r>   rû   rû   N  s†  „ ò+ðZ ð5à	�#�e—j‘j×'Ñ'×.Ñ.Ñ/Ñ	0ò5ó ð5ðn àJNñØ (¨¨U¯Z©Z×->Ñ->×-EÑ-EÑ)FÑ Gðà	�#�e—j‘j×'Ñ'×.Ñ.Ñ/Ñ	0òó ðð$ ñEó ðEðN ñó ðð4 ñ,ó ð,ñ\ IÐñÐñÐñ EÐÙHÐÙ>€MÙB€OÙHÐÙHÐÙFÐÙDÐÙJÐÙFÐÙJÐñÐñÐñ EÐÙ<€LÙ@€NÙFÐÙ@€NÙFÐÙ>€MñÐñÐñ ?�Mr@   rû   c                   óR   — e Zd ZdZej
                  Zej                  Zd„ Z	d„ Z
d„ Zy)r   z=
    Return, if possible, the maximum value of the list.
    c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   rž  rJ   s     r>   rM   z(Max._eval_is_positive.<locals>.<genexpr>Ê  ó   è ø€ Ò9¨!˜Ÿ�Ñ9ùrW  ©r   rC   r�   s    r>   rÆ   zMax._eval_is_positiveÉ  ó   € ÜÑ9¨t¯y©yÔ9Ó9Ð9r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   rŽ  rJ   s     r>   rM   z+Max._eval_is_nonnegative.<locals>.<genexpr>Í  s   è ø€ Ò<¨Q˜×(Õ(Ñ<ùrW  rÉ  r�   s    r>   rÃ   zMax._eval_is_nonnegativeÌ  s   € ÜÑ<°$·)±)Ô<Ó<Ð<r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   rˆ  rJ   s     r>   rM   z(Max._eval_is_negative.<locals>.<genexpr>Ð  ó   è ø€ Ò:¨1˜Ÿ�Ñ:ùrW  ©r   rC   r�   s    r>   rº  zMax._eval_is_negativeÏ  ó   € ÜÑ:°·	±	Ô:Ó:Ð:r@   N)r«   r¬   r­   r®   r   ÚInfinityr  ÚNegativeInfinityr  rÆ   rÃ   rº  rY   r@   r>   r   r   Á  s,   „ ñð �:‰:€DØ×!Ñ!€Hò:ò=ó;r@   r   c                   óR   — e Zd ZdZej
                  Zej                  Zd„ Z	d„ Z
d„ Zy)r  z=
    Return, if possible, the minimum value of the list.
    c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   rž  rJ   s     r>   rM   z(Min._eval_is_positive.<locals>.<genexpr>Ü  rÏ  rW  rÐ  r�   s    r>   rÆ   zMin._eval_is_positiveÛ  rÑ  r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   rŽ  rJ   s     r>   rM   z+Min._eval_is_nonnegative.<locals>.<genexpr>ß  s   è ø€ Ò=¨a˜×)Õ)Ñ=ùrW  rÐ  r�   s    r>   rÃ   zMin._eval_is_nonnegativeÞ  s   € ÜÑ=°4·9±9Ô=Ó=Ð=r@   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrF   rˆ  rJ   s     r>   rM   z(Min._eval_is_negative.<locals>.<genexpr>â  rÈ  rW  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º  rY   r@   r>   r  r  Ó  s,   „ ñð ×Ñ€DØ�z‰z€Hò;ò>ó:r@   r  c                 óL   — d}| dk  r|  } |dz  dk(  rdnd}|t        | |«      z  S )Nr   r   r9   r”   )Ú	_safe_pow)rƒ   ÚexpÚsigns      r>   Úsafe_powrß  å  s8   € Ø€DØˆa‚xØˆuˆØ˜!‘G˜q’L‰q bˆØ”)˜D #Ó&Ñ&Ð&r@   c                 óô   — |dk  rt        d«      ‚|dk(  ryt        | |dz  «      }|t        u rt        S ||z  }|t        j                  kD  rt        S |dz  dk(  r|| z  }|t        j                  kD  rt        S |S )Nr   zExponent must be non-negative.r   r9   )rõ   rß  r   ÚsysÚmaxsize)rƒ   ÚexponentÚhalf_expÚresults       r>   rÜ  rÜ  î  s„   € Ø�!‚|ÜÐ9Ó:Ð:à�1‚}Øä˜˜h¨!™mÓ,€HØ”6ÑÜˆð
 ˜Ñ €FØ”—‘ÒÜˆà�!�|�qÒØ�$‰ˆØ”C—K‘KÒÜˆMà€Mr@   c                   ó0   — e Zd ZU dZdZeed<   ed„ «       Zy)r4   Té2   r|   c                 ó¾  — t        |t        j                  «      rLt        |t        j                  «      r2t        ||«      }|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 y y rF   )
rG   rH   rb   rß  r   ÚPowr˜   rÁ   rá   Úzoo)r¢   rƒ   rÝ  rQ   s       r>   r§   zPowByNatural.eval  s©   € ä�dœEŸM™MÔ*¬z¸#¼u¿}¹}Ô/MÜ˜˜sÓ#ˆAØ”f�WœfÐ%Ñ%Ø�Ü—=‘= Ó#Ð#Ü�cœ5Ÿ=™=Ô)ô —9‘9˜T 3Ó'Ð'Ø”6œ5Ÿ8™8Ð$Ñ$Ø×"Ò"Ü�Ø×!Ò!Ü—y‘yÐ ð "ð %r@   N)	r«   r¬   r­   r}   r|   ra   r°   r¶   r§   rY   r@   r>   r4   r4     s#   … Ø€Jà€J�Óàñ!ó ñ!r@   r4   c                   ó0   — e Zd ZU dZdZeed<   ed„ «       Zy)r3   Té<   r|   c                 óÂ   — t        |t        j                  «      rEt        |t        j                  «      r*t        j                  t	        |«      t	        |«      z  «      S y y rF   )rG   rH   r›   rI   rP   )r¢   rƒ   rÝ  s      r>   r§   zFloatPow.eval(  sD   € ô �dœEŸL™LÔ)¬j¸¼e¿l¹lÔ.KÜ—;‘;œu T›{¬e°C«jÑ8Ó9Ð9ð /LÐ)r@   N©	r«   r¬   r­   r§  r|   ra   r°   r¶   r§   rY   r@   r>   r3   r3   #  s#   … Ø€Gà€J�Óàñ:ó ñ:r@   r3   c                   ó0   — e Zd ZU dZdZeed<   ed„ «       Zy)r*   Tr{   r|   c                 óð   — |j                   rt        d«      ‚t        |t        j                  «      rEt        |t        j                  «      r*t        j
                  t        |«      t        |«      z  «      S y y ©Nr“   )r–   r—   rG   rH   r›   rI   rP   rð   s      r>   r§   zFloatTrueDiv.eval>  sW   € ð
 �?Š?Ü#Ð$6Ó7Ð7ä�dœEŸL™LÔ)¬j¸Ä%Ç,Á,Ô.OÜ—;‘;œu T›{¬U°7«^Ñ;Ó<Ð<ð /PÐ)r@   Nrî  rY   r@   r>   r*   r*   9  s#   … Ø€Gà€J�Óàñ=ó ñ=r@   r*   c                   ó0   — e Zd ZU dZdZeed<   ed„ «       Zy)r)   Tr{   r|   c                 ód  — |j                   rt        d«      ‚t        |t        j                  «      r t        |t        j                  «      r†|t
        t
         t        j                  t        j                   fv s.|t
        t
         t        j                  t        j                   fv r*t        j                  t        |«      t        |«      z  «      S t        |t        j                  «      rEt        |t        j                  «      r*t        j                  t        |«      t        |«      z  «      S y y rñ  )r–   r—   rG   rH   r›   r   r˜   rI   rP   rb   ra   rð   s      r>   r§   zIntTrueDiv.evalW  sË   € à�?Š?Ü#Ð$6Ó7Ð7ô �tœUŸ\™\Ô*Ü˜7¤E§L¡LÔ1àœ¤& ¬%¯(©(´U·X±X°IÐ>Ñ>Øœv¬ w´·±¼5¿8¹8¸)ÐDÑDô
 —;‘;œu T›{¬U°7«^Ñ;Ó<Ð<Ü�dœEŸM™MÔ*¬z¸'Ä5Ç=Á=Ô/QÜ—;‘;œs 4›y¬3¨w«<Ñ7Ó8Ð8ð 0RÐ*r@   Nrî  rY   r@   r>   r)   r)   R  s#   … Ø€Gà€J�Óàñ9ó ñ9r@   r)   c                   ó    — e Zd ZdZed„ «       Zy)r-   Tc           	      óÊ  — t        |«      dz  dk(  sJ ‚t        |«      dz  }|d| }||d  }ddlm} t        d„ |D «       «      r7 ||D �cg c]  }t	        |«      ‘Œ c}|D �cg c]  }t	        |«      ‘Œ c}«      S |dk(  r0|d   j
                  r	|d   dk(  ry|d   j
                  r	|d   dk  ryt        d„ |D «       «      rŽ|dk7  sJ ‚t        t        t        ||«      t        j                  d«      ¬«      Ž \  }}t        d„ |d d	 D «       «      r?|d d	 d
z   } ||D �cg c]  }t	        |«      ‘Œ c}|D �cg c]  }t	        |«      ‘Œ c}«      S y c c}w c c}w c c}w c c}w )Nr9   r   )Ú!eval_is_non_overlapping_and_densec              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrF   ©rG   rH   rb   rJ   s     r>   rM   z9IsNonOverlappingAndDenseIndicator.eval.<locals>.<genexpr>€  s   è ø€ Ò:°Œz˜!œUŸ]™]×+Ñ:ùrN   r   c              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrF   rø  rJ   s     r>   rM   z9IsNonOverlappingAndDenseIndicator.eval.<locals>.<genexpr>•  s   è ø€ Ò=°Œz˜!œUŸ]™]×+Ñ=ùrN   )Úkeyc              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrF   rø  rJ   s     r>   rM   z9IsNonOverlappingAndDenseIndicator.eval.<locals>.<genexpr>�  s   è ø€ ÒF°A”:˜a¤§¡×/ÑFùrN   r”   )é*   )
r;   Ú%torch.fx.experimental.symbolic_shapesrö  rt   ra   rÖ   ÚzipÚsortedÚoperatorÚ
itemgetter)	r¢   rC   ÚdimÚsizesÚstridesrö  rL   Ús_sizesÚ	s_stridess	            r>   r§   z&IsNonOverlappingAndDenseIndicator.evalt  st  € ä�4‹y˜1‰} Ò!Ð!Ð!Ü�$‹i˜1‰nˆØ�Q�s�ˆØ�s�t�*ˆõ	
ô Ñ:°TÔ:Ô:Ù4Ø!&Ö'˜A”�Q•Ò'¸'Ö)B°Q¬#¨a­&Ò)Bóð ð �!Š8à�q‰z×#Ò#¨°©
°aªØà�Q‰x×!Ò! e¨A¡h°¢lØô Ñ=°WÔ=Ô=Ø˜!’8ˆO�8ô "%Üœ˜E 7Ó+´×1DÑ1DÀQÓ1GÔHð"ÑˆG�Yô ÑF¸ÀÀ"¸ÔFÔFØ! # 2˜,¨Ñ.�ñ 9Ø%,Ö- ”S˜•VÒ-À	Ö/J¸1´°AµÒ/Jóð ð ùòG (ùÒ)Bùò@ .ùÒ/Js   Á
EÁ"E
ÄEÄ7E 
Nrë   rY   r@   r>   r-   r-   q  s   „ Ø€Jàñ0ó ñ0r@   r-   c                   ó    — e Zd ZdZed„ «       Zy)r.   Tc                 óš   — t        |t        j                  «      r1t        j                  t	        j
                  t        |«      «      «      S y rF   )rG   rH   r›   rI   rd   ÚtruncrP   ré   s     r>   r§   zTruncToFloat.eval¬  s5   € ô �fœeŸl™lÔ+ô —;‘;œtŸz™z¬%°«-Ó8Ó9Ð9ð	 ,r@   N©r«   r¬   r­   r§  r¶   r§   rY   r@   r>   r.   r.   ©  s   „ Ø€Gàñ:ó ñ:r@   r.   c                   ó    — e Zd ZdZed„ «       Zy)r/   Tc                 ó  — |t         j                  t        fv rt        S |t         j                   t         fv rt         S t        |t         j                  «      r1t        j
                  t        j                  t        |«      «      «      S y rF   )	rH   r˜   r   rG   r›   rb   rd   r	  rP   ré   s     r>   r§   zTruncToInt.eval¹  se   € ð ”e—h‘h¤Ð'Ñ'ÜˆMØ”u—x‘x�i¤& Ð)Ñ)Ü�7ˆNÜ�fœeŸl™lÔ+Ü—=‘=¤§¡¬E°&«MÓ!:Ó;Ð;ð ,r@   Nrë   rY   r@   r>   r/   r/   ¶  s   „ Ø€Jàñ<ó ñ<r@   r/   c                   ó    — e Zd ZdZed„ «       Zy)r0   Tc                 óì   — |t         j                  u rt        S |t         j                   u rt         S t        |t         j                  «      r(t        j
                  t        t        |«      d«      «      S y r   )rH   r˜   r   rG   r›   rb   ÚroundrP   ré   s     r>   r§   zRoundToInt.evalÈ  sW   € ð ”U—X‘XÑÜˆMØ”e—h‘h�YÑÜ�7ˆNÜ�fœeŸl™lÔ+Ü—=‘=¤¤u¨V£}°aÓ!8Ó9Ð9ð ,r@   Nrë   rY   r@   r>   r0   r0   Å  s   „ Ø€Jàñ:ó ñ:r@   r0   c                   ó    — e Zd ZdZed„ «       Zy)r1   Tc                 óÐ   — t        |t        j                  «      rLt        |t        j                  «      r1t        j                  t        t        |«      t        |«      «      «      S y y rF   )rG   rH   r›   rb   rI   r  rP   ra   )r¢   rê   Úndigitss      r>   r§   zRoundDecimal.evalæ  sF   € ô �fœeŸl™lÔ+´
¸7ÄEÇMÁMÔ0RÜ—;‘;œu¤U¨6£]´C¸³LÓAÓBÐBð 1SÐ+r@   Nr
  rY   r@   r>   r1   r1   ã  s   „ Ø€GàñCó ñCr@   r1   c                   ó    — e Zd ZdZed„ «       Zy)r2   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 y rF   )rH   r˜   rG   rb   rI   ra   r   ré   s     r>   r§   zToFloat.evalñ  sk   € à”e—h‘h¤§¡ 	Ð*Ñ*ØˆMä�fœeŸm™mÔ,Ü—;‘;œs 6›{Ó+Ð+Ø”VÑÜ—8‘8ˆOØ”f�WÑÜ—H‘H�9Ðð r@   Nr
  rY   r@   r>   r2   r2   î  s   „ Ø€Gàñ	ó ñ	r@   r2   c                   ó,   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zy)r5   z4
    Prevents expansion and other optimizations
    é
   c                 ó(   — d| j                   d   › d�S )Nz	Identity(r   r�   r€   r�   s    r>   Ú__repr__zIdentity.__repr__  s   € Ø˜4Ÿ9™9 Q™<˜.¨Ð*Ð*r@   c                 ó4   — | j                   d   j                  S r   )rC   r§  r�   s    r>   rÁ  zIdentity._eval_is_real  s   € Ø�y‰y˜‰|×#Ñ#Ð#r@   c                 ó4   — | j                   d   j                  S r   rÊ   r�   s    r>   rË   zIdentity._eval_is_integer  s   € Ø�y‰y˜‰|×&Ñ&Ð&r@   c                 ó    — | j                   d   S r   r€   )r‚   Úhintss     r>   Ú_eval_expand_identityzIdentity._eval_expand_identity  r„   r@   N)	r«   r¬   r­   r®   r|   r  rÁ  rË   r  rY   r@   r>   r5   r5   þ  s"   „ ñð €Jò+ò$ò'ór@   r5   c                 ód   ‡ —  G ˆ fd„dt         j                  «      }d‰ z   }||_        ||_        |S )Nc                   ó,   •— e Zd ZdZW ° Zeˆ fd„«       Zy)ú+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 optimziations
        that change numerics for size compute.
        c                 ój  •— t        |t        j                  t        j                  f«      r3	 t        j                   t	        t
        ‰«      t        |«      «      «      S |t        j                  t        j                   t        j                  t        j                   t        t         fv rc|t        u rt        j                  }|t         u rt        j                   }‰dk(  rt        j                  |d«      S  t	        t        ‰«      |«      S y # t        $ r  t	        t        ‰«      |«      cY S w xY w)NÚlog2r9   )rG   rH   rb   rI   r  rd   rP   ÚOverflowErrorr˜   rê  r   Úlog)r¢   rL   Únames     €r>   r§   z0make_opaque_unary_fn.<locals>.OpaqueUnaryFn.eval!  så   ø€ ä˜!œeŸm™m¬U¯[©[Ð9Ô:ð3Ü Ÿ;™;Ð':¤w¬t°TÓ':¼5À»8Ó'DÓEÐEð
 ”u—x‘x¤%§(¡( ¬E¯I©I¼¿	¹	°zÄ6ÌFÈ7ÐSÑSØœ‘;ÜŸ™�AØœ˜‘<ÜŸ™˜	�AØ˜6’>Ü Ÿ9™9 Q¨›?Ð*Ø+”wœu dÓ+¨AÓ.Ð.Øøô %ò 3Ø/œ7¤5¨$Ó/°Ó2Ò2ð3ús   ­1D ÄD2Ä1D2N)r«   r¬   r­   r®   Ú_torch_handler_namer¶   r§   )r%  s   €r>   ÚOpaqueUnaryFnr     s"   ø„ ñ	ñ #Ðà	ó	ó 
ñ	r@   r'  ÚOpaqueUnaryFn_)rH   ÚFunctionr«   r­   )r%  r'  Únms   `  r>   Úmake_opaque_unary_fnr+    s6   ø€ ö#œŸ™ô #ðJ 
˜DÑ	 €BØ€MÔØ!#€MÔàÐr@   ÚsqrtÚcosÚcoshÚsinÚsinhÚtanÚtanhÚasinÚacosÚatanrÝ  r$  Úasinhr"  c                 ó²   ‡ ‡‡— ‰ 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_orÚ	BitwiseOrzunrecognized c                   ó:   •— e Zd ZU W ° ZW °Zeed<   eˆfd„«       Zy)ú)make_opaque_bitwise_fn.<locals>.BitwiseFnr|   c                 óð  •— |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«      r\t        |t        j                  t        f«      r<t        j                   t        t        ‰«      t        |«      t        |«      «      «      S y )Nr   r   )rÚ   r  r   rH   rb   rG   ra   )r¢   rL   ÚbÚreal_op_names      €r>   r§   z.make_opaque_bitwise_fn.<locals>.BitwiseFn.eval]  s®   ø€ à�|Š| §¢Ø6”wœx¨Ó6°q¸!Ó<Ð<Ø�|Š|Ü—M‘M¡q¡!¨aÓ0�Ø�|Š|Ü—M‘M¡q¡!¨aÓ0�Ü˜!œeŸm™m¬SÐ1Ô2´zØ”E—M‘M¤3Ð'ô8ô —}‘}Ð%D¤W¬X°|Ó%DÄSÈÃVÌSÐQRËVÓ%TÓUÐUØr@   N)	r«   r¬   r­   r&  r|   ra   r°   r¶   r§   )r%  Úprecr@  s   €€€r>   Ú	BitwiseFnr=  Y  s%   ø… Ù"ÐÙˆ
�CÓà	ó	ó 
ñ	r@   rB  Ú
BitwiseFn_)r   rJ  rH   r)  r«   )r%  r@  rB  rA  s   `` @r>   Úmake_opaque_bitwise_fnrD  Q  sc   ú€ Øˆ}ÒÜ˜,Ñ'‰Ø	�Ò	Ü˜+Ñ&‰ä˜}¨T¨FÐ3Ó4Ð4÷ð ”E—N‘Nô ð$ &¨Ñ,€IÔØÐr@   r8  Úand_r:  Úor_)crS   rd   r   rá  Útypingr   r   r   r   r   r   Útyping_extensionsr	   r
   rH   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   Únumbersr   Úcollections.abcr   r   r   Ú__all__r±   r?   rI   rU   rZ   rr   rw   r)  r    r!   r"   r#   r$   r%   r&   r'   r(   r+   r,   rû   r   r  rß  rÜ  r4   r3   r*   r)   r-   r.   r/   r0   r1   r2   r5   r+  Ú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_log2rD  ÚBitwiseFn_bitwise_andÚBitwiseFn_bitwise_orrY   r@   r>   ú<module>rf     st  ðã Û Û Û 
ß S× Sß 2ã Ý Ý Ý  Ý +ß 7Ñ 7Ý +ß 9Ý &Ý %Ý 0Ý *å ñ Ý(ñ ˆT˜Ô'€Ù�5Ó€òB€ð4 u§z¡zð °dó ðØ�˜‘�˜rÐ!Ñ"ðàˆv�c‰{ˆm˜U 2 u§{¡{ ?Ñ3Ð3Ñ4óð�˜‘ð  8¨D¡>ð °h¸t±nó ð)˜5Ÿ;™;ð )¨5¯;©;ð )¸5¿;¹;ó )ô|r*ˆu�~‰~ô r*ôjD6�e—n‘nô D6ôNˆE�N‰Nô ôB8:�—‘ô 8:ôx1ˆ%�.‰.ô 1ôhˆxô ô;�—‘ô ;ô<�—‘ô <ô;ˆe�n‰nô ;ô ˆU�^‰^ô ô(ˆU�^‰^ô (ôp?��yô p?ôf;ˆ*�kô ;ô$:ˆ*�kô :ò$'òô4!�5—>‘>ô !ô6:ˆu�~‰~ô :ô,=�5—>‘>ô =ô29�—‘ô 9ô>4¨¯©ô 4ôp
:�5—>‘>ô 
:ô<�—‘ô <ô:�—‘ô :ô<C�5—>‘>ô Côˆe�n‰nô ô ˆu�~‰~ô ò**ñ\ *¨&Ó1Ð Ù(¨Ó/Ð Ù)¨&Ó1Ð Ù(¨Ó/Ð Ù)¨&Ó1Ð Ù(¨Ó/Ð Ù)¨&Ó1Ð Ù)¨&Ó1Ð Ù)¨&Ó1Ð Ù)¨&Ó1Ð Ù(¨Ó/Ð Ù(¨Ó/Ð Ù*¨7Ó3Ð Ù)¨&Ó1Ð òñ< /¨}¸fÓEÐ Ù-¨l¸EÓBÑ r@   