ó
    "Eñig×  ã                   ó6  • S SK r S SKrS SKrS SKrS SKJr  S SKJrJrJ	r	  S SK
JrJr  S SKrS SKJr  S SKJr  S SKJr  S SKJr  S S	KJrJrJr  S S
KJr  S SKJrJr  S SKJr  S SK J!r!  S SK"J#r#  S SK$J%r%  S SK&J'r'  SSK(J)r)J*r*  \(       a  S SKJ+r+  \	" S\S9r,\" S5      r-/ SQr.S\R$                  S\/4S jr0S\\\-   /\,4   S\\\-   /\,\Rb                  -  4   4S jr2S\/S-  S\/S-  S\/S-  4S jr3S \Rh                  S!\Rh                  S\Rh                  4S" jr5 " S# S$\Rl                  5      r7 " S% S&\Rl                  5      r8 " S' S(\Rl                  5      r9 " S) S*\Rl                  5      r: " S+ S,\Rl                  5      r; " S- S.\75      r< " S/ S0\Rl                  5      r= " S1 S2\Rl                  5      r> " S3 S4\Rl                  5      r? " S5 S6\Rl                  5      r@ " S7 S8\Rl                  5      rA " S9 S:\\5      rB " S; S<\B\5      rC " S= S>\B\5      rDS? rES@ rF " SA SB\Rl                  5      rG " SC SD\Rl                  5      rH " SE SF\Rl                  5      rI " SG SH\Rl                  5      rJ " SI SJ\Rl                  5      rK " SK SL\Rl                  5      rL " SM SN\Rl                  5      rM " SO SP\Rl                  5      rN " SQ SR\Rl                  5      rO " SS ST\Rl                  5      rP " SU SV\Rl                  5      rQSW rR\R" SX5      rS\R" SY5      rT\R" SZ5      rU\R" S[5      rV\R" S\5      rW\R" S]5      rX\R" S^5      rY\R" S_5      rZ\R" S`5      r[\R" Sa5      r\\R" Sb5      r]\R" Sc5      r^\R" Sd5      r_\R" Se5      r`Sf ra\a" SgSh5      rb\a" SiSj5      rc\a" SkSl5      rdg)mé    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)ÚFloorDivÚModularIndexingÚWhereÚ	PythonModÚModÚCleanDivÚ	CeilToIntÚ
FloorToIntÚCeilDivÚ
IntTrueDivÚFloatTrueDivÚLShiftÚRShiftÚ!IsNonOverlappingAndDenseIndicatorÚTruncToFloatÚ
TruncToIntÚ
RoundToIntÚRoundDecimalÚToFloatÚFloatPowÚPowByNaturalÚIdentityÚexprÚreturnc                 ód  • [        U [        R                  5      =(       a�    U R                  =(       a}    [	        U R
                  5      S:H  =(       a^    U R
                  S   R                  =(       a>    U R
                  S   R                  =(       a    U R
                  S   U R
                  S   L$ )Né   r   r   )Ú
isinstanceÚsympyr   Úis_AddÚlenÚ_argsÚ	is_symbol)r6   s    ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/utils/_sympy/functions.pyÚ_is_symbols_binary_summationrA   \   s‡   € ô 	�4œŸ™Ó$÷ 	/Ø�K‰K÷	/ä�—
‘
‹O˜qÑ ÷	/ð �J‰J�q‰M×#Ñ#÷	/ð �J‰J�q‰M×#Ñ#÷		/ð
 �J‰J�q‰M §¡¨A¡Ð.ðó    Úfc                 ó’   ^ • [         R                  " T 5      S[        [           S[        [
        R                  -  4U 4S jj5       nU$ )NÚargsr7   c                  ó¼   >• T" U 6 n[        S U  5       5      (       a>  [        U[        R                  5      (       d  [        R                  " [	        U5      5      nU$ )Nc              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7f©N)r:   r;   ÚFloat©Ú.0Úas     r@   Ú	<genexpr>Ú-_keep_float.<locals>.inner.<locals>.<genexpr>n   s   é € Ð8²4¨aŒz˜!œUŸ[™[×)Ð)²4ùó   ‚'))Úanyr:   r;   rI   Úfloat)rE   ÚrrC   s     €r@   ÚinnerÚ_keep_float.<locals>.innerk   sM   ø€ á ˜hˆÜÑ8±4Ó8×8Ñ8ÄØŒu�{‰{÷B
ñ B
ô —’œE !›HÓ%ˆAØˆrB   )Ú	functoolsÚwrapsr   r   r   r;   rI   )rC   rS   s   ` r@   Ú_keep_floatrW   h   sB   ø€ ô ‡_‚_�QÓð”VœC‘[ð ¤R¬%¯+©+Ñ%5ö ó ðð €LrB   ÚxÚyc                 ó   • S X4;   a  g X:H  $ rH   © )rX   rY   s     r@   Úfuzzy_eqr\   x   s   € Ø�ˆvƒ~ØØ‰6€MrB   ÚpÚqc                 óö  ^^• S[         R                  S[        4S jmS[         R                  S[        4U4S jjn[        R                  " U" U 5      U" U5      5      nX-  X-  p[        [        [         R                  R                  [         R                  R                  U 5      5      5      n[         R                  R                  U5      nU H$  m[        U4S jU 5       5      (       d  M  UT-  nM&     U$ )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.
rX   r7   c                 ó  • [         R                  R                  U 5       Vs/ s H>  n[        U[        [         R
                  45      (       d  M*  [        [	        U5      5      PM@     nn[        R                  " U5      $ s  snf rH   )	r;   ÚMulÚ	make_argsr:   ÚintÚIntegerÚabsÚmathÚprod)rX   ÚargÚinteger_coefficientss      r@   Úinteger_coefficientÚ0simple_floordiv_gcd.<locals>.integer_coefficient�   sg   € ô —y‘y×*Ñ*¨1Ô-ó+
â-�Ü˜#¤¤U§]¡]Ð3×4ó ŒC”�C“ŽMÙ-ð 	ð +
ô
 �yŠyÐ-Ó.Ð.ùò+
s   ¢)A?ÁA?r6   c                 ó    >• [        T[        R                  R                  U 5      5      n[        R
                  " [        R                  U5      $ rH   )Úmapr;   ÚAddrb   rU   Úreducerf   Úgcd)r6   Úinteger_factorsrj   s     €r@   Úinteger_factorÚ+simple_floordiv_gcd.<locals>.integer_factor—   s:   ø€ Ü),Ø¤§¡×!4Ñ!4°TÓ!:ó*
ˆô ×Ò¤§¡¨/Ó:Ð:rB   c              3   ó.   >#   • U  H
  nTU;   v •  M     g 7frH   r[   )rK   Ú
base_splitrX   s     €r@   rM   Ú&simple_floordiv_gcd.<locals>.<genexpr>¥   s   øé € Ð=² :ˆq�JŽ²ùs   ƒ)r;   ÚBasicrc   rf   rp   Úlistrm   ra   rb   rn   Úall)r]   r^   rr   rp   Úbase_splitsÚdivisor_splitrj   rX   s         @@r@   Úsimple_floordiv_gcdr|   ~   sÆ   ù€ ð"/œuŸ{™{ð /¬sô /ð;œUŸ[™[ð ;¬S÷ ;ô �xŠx™ qÓ)©>¸!Ó+<Ó=€CØ‰7�A‘G€qä15ÜŒE�I‰I×Ñ¤§¡×!4Ñ!4°QÓ!7Ó8ó2€Kô .3¯Y©Y×-@Ñ-@ÀÓ-C€MÛˆÜÔ=±Ó=×=Ó=Ø˜‘'ŠCñ ð €JrB   c                   óV  • \ rS rSr% SrSr\\S4   \S'   Sr	\\S'   Sr
\\S	'   \S
\R                  4S j5       r\S
\R                  4S j5       rS\R"                  R$                  S
\4S jr\S\R,                  S\R,                  S
\R                  S-  4S j5       rS
\S-  4S jrSrg)r    é¼   zú
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                 ó    • U R                   S   $ ©Nr   ©rE   ©Úselfs    r@   ÚbaseÚFloorDiv.baseÉ   ó   € ð �y‰y˜‰|ÐrB   c                 ó    • U R                   S   $ ©Nr   r†   r‡   s    r@   ÚdivisorÚFloorDiv.divisorÎ   r‹   rB   Úprinterc                 ó¬   • UR                  U R                  [        S   S-
  5      nUR                  U R                  [        S   S-
  5      nSU SU S3$ )NÚAtomç      à?Ú(z//Ú))Úparenthesizer‰   r   rŽ   ©rˆ   r�   r‰   rŽ   s       r@   Ú	_sympystrÚFloorDiv._sympystrÓ   sW   € Ø×#Ñ# D§I¡I¬z¸&Ñ/AÀCÑ/GÓHˆØ×&Ñ& t§|¡|´ZÀÑ5GÈ#Ñ5MÓNˆØ�4�&˜˜7˜) 1Ð%Ð%rB   r‰   rŽ   Nc                 ó†	  • UR                   (       a  [        S5      e[        U5      (       a   [        U5      (       a  [        R                  $ U[        R                  L d  U[        R                  L a  [        R                  $ UR                   (       a  [        R
                  R                  $ UR                  (       a  [        US5      (       a  U$ UR                  (       a(  [        US5      (       a  [        R                  " US5      $ X:X  a  [        R
                  R                  $ [        U[        R                  5      (       aá  [        U[        R                  5      (       aÂ  [        U5      (       d  [        U5      (       a¢  [        U5      [        U5      -  nU[        R                  :X  a  [         $ U[        R                  * :X  a  [         * $ [        R"                  " U5      (       a  [        R                  $ [        R$                  " [        R&                  " U5      5      $ [        U[        R$                  5      (       aJ  [        U[        R$                  5      (       a+  [        R$                  " [)        U5      [)        U5      -  5      $ [        U[*        5      (       a)  [+        UR,                  S   UR,                  S   U-  5      $ [        U[        R$                  5      (       Ga  Sn/ n[        R.                  R1                  U5       H¿  nXb-  nS n[        U[        R                  5      (       am  [3        [        R4                  5      [3        S5      :  aG  UR7                  [        R8                  5      n	[;        S U	 5       5      n
UR                  =(       a    U
nOUR                  nU(       d  Mª  UR=                  U5        XG-  nMÁ     [?        U5      S:w  a&  [+        U[        R.                  " USS06-
  U5      U-   $  [A        X5      n[        US5      (       a5  [        U[        R.                  5      (       a  [        RB                  " X5      n[        US5      (       d8  [+        [        RD                  " X-  5      [        RD                  " X+-  5      5      $  g ! [        RF                   a     g f = f)	Núdivision by zeror   éÿÿÿÿr   z1.15.0c              3   ó>   #   • U  H  oR                   S :H  v •  M     g7f)r   N)r^   )rK   rR   s     r@   rM   Ú FloorDiv.eval.<locals>.<genexpr>  s   é € Ð,Iºy¸!¯S©S°A®Xºyùs   ‚ÚevaluateF)$Úis_zeroÚZeroDivisionErrorr   r;   Únanr	   ÚZerorƒ   r   ra   ÚOner:   ÚNumberrQ   rf   Úinfr   Úisnanrd   Úfloorrc   r    rE   rn   rb   r   Ú__version__ÚatomsÚRationalry   Úappendr=   r|   rp   ÚsimplifyÚPolynomialError)Úclsr‰   rŽ   rR   Ú	quotientsÚtermsÚtermÚquotientÚquotient_is_integerÚ	rationalsÚall_rationals_intsrp   s               r@   ÚevalÚFloorDiv.evalÚ   sc  € ð �?�?Ü#Ð$6Ó7Ð7Ü�t×Ñ¤¨W×!5Ñ!5Ü—9‘9ÐØ”5—9‘9Ò ¬5¯9©9Ò 4Ü—9‘9Ðà�<�<Ü—7‘7—<‘<ÐØ�?�?œ|¨G°Q×7Ñ7ØˆKØ�?�?œ|¨G°R×8Ñ8Ü—9’9˜T 2Ó&Ð&Ø‹?Ü—7‘7—;‘;Ðô �tœUŸ\™\×*Ñ*Ü˜7¤E§L¡L×1Ñ1Ü˜T×"Ñ"¤k°'×&:Ñ&:ä�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Ñ/QÜ—=’=¤ T£¬c°'«lÑ!:Ó;Ð;Ü�dœH×%Ñ%Ü˜DŸI™I a™L¨$¯)©)°A©,¸Ñ*@ÓAÐAô �gœuŸ}™}×-Ò-ØˆIØˆEÜŸ	™	×+Ñ+¨DÖ1�Ø™>�ð
 '+Ð#Ü˜h¬¯	©	×2Ñ2´|Ü×%Ñ%ó8ä  Ó*ó8+ð !)§¡¬u¯~©~Ó >�IÜ),Ñ,I¹yÓ,IÓ)IÐ&Ø*2×*=Ñ*=×*TÐBTÑ'à*2×*=Ñ*=Ð'ç&Ð&Ø—L‘L Ô&ØÑ)’Iñ% 2ô( �5‹z˜Q‹ô ˜T¤E§I¢I¨uÐ$E¸uÑ$EÑEÀwÓOØñ ðð
		Ü% dÓ4ˆCÜ˜C ×#Ñ#¬
°7¼E¿I¹I×(FÑ(FÜ—i’i Ó.�Ü  Q×'Ñ'ÜÜ—N’N 4¡:Ó.´·²¸w¹}Ó0Móð ð (ð øô ×$Ñ$ó 	Øàð	ús   ÐBR) Ò)S Ò?S c                 ó    • U R                   S S u  p[        UR                  UR                  UR                  UR                  /5      (       a  gg )Nr9   T)rE   ry   rƒ   Úis_nonnegative©rˆ   r]   r^   s      r@   Ú_eval_is_nonnegativeÚFloorDiv._eval_is_nonnegative3  sA   € à�y‰y˜˜!ˆ}‰ˆÜ�—‘˜aŸl™l¨A×,<Ñ,<¸a×>NÑ>NÐO×PÑPØØrB   r[   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r€   Útuplerc   Ú__annotations__r‚   rƒ   ÚboolÚpropertyr;   rw   r‰   rŽ   ÚprintingÚ
StrPrinterÚstrr˜   Úclassmethodrd   r·   r¼   Ú__static_attributes__r[   rB   r@   r    r    ¼   sÙ   ‡ ñð "€Eˆ5��c�‰?Ó!Ø€J�ÓØ€J�Óàð�e—k‘kó ó ðð ð˜Ÿ™ó ó ðð& §¡×!:Ñ!:ð &¸sô &ð ðV˜Ÿ™ð V°·±ð VÀ%Ç+Á+ÐPTÑBTó Vó ðVðp d¨T¡k÷ rB   r    c            
       óÜ   • \ rS rSr% SrSr\\S4   \S'   Sr	\
\S'   Sr\\S	'   \S
\R                  S\R                  S\R                  S\R                  S-  4S j5       rS\
S-  4S jrSrg)r!   i;  zC
ModularIndexing(a, b, c) => (a // b) % c where % is the C modulus
©é   .r€   Trƒ   r�   r‚   r‰   rŽ   Úmodulusr7   Nc                 óà  • US:X  d  US:X  a  [         R                  R                  $ [        U[         R                  5      (       aE  [        U[         R                  5      (       a&  [        U[         R                  5      (       a  X-  U-  $  US:w  aU  [         R
                  " X5      nUS:w  a9  [        [         R                  " X-  5      [         R                  " X$-  5      U5      $ [        U[         R                  5      (       Ga  / nSnUR                   H¼  n[         R
                  " XsU-  5      X2-  :w  d  M$  [        U[         R                  5      (       a  US:  d^  [        U[         R                  5      (       aC  [        UR                  S   [         R                  5      (       a  UR                  S   S:  a  Sn  OUR                  U5        M¾     [        U5      [        UR                  5      :w  a  U(       a  [        [        U5      X#5      $ [        U[        5      (       a*  [        UR                  S   UR                  S   U-  U5      $ g ! [         R                   a     GN…f = f)Nr   r   TF)r;   r	   r£   r:   rd   rp   r!   r­   r®   rn   rE   ra   r¬   r=   Úsumr    )r¯   r‰   rŽ   rÏ   rp   Ú	new_termsÚall_positiver²   s           r@   r·   ÚModularIndexing.evalD  sÐ  € ð �1‹9˜ 1›Ü—7‘7—<‘<Ðä�tœUŸ]™]×+Ñ+Ü˜7¤E§M¡M×2Ñ2Ü˜7¤E§M¡M×2Ñ2à‘O wÑ.Ð.ð
	Ø˜!‹|Ü—i’i Ó.�Ø˜!“8Ü*ÜŸš t¡zÓ2ÜŸš w¡}Ó5Øóð ô �dœEŸI™I×&Ò&Ø-/ˆIØ!%ˆLØŸ	œ	�Ü—9’9˜T¨WÑ#4Ó5¸Ñ9JÕJÜ" 4¬¯©×7Ñ7¸DÀ1»HÜ" 4¬¯©×3Ñ3Ü& t§y¡y°¡|´U·]±]×CÑ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I ÉI-É,I-c                 ód   • U R                   S S u  p[        UR                  UR                  5      $ )Nr9   )rE   r\   rº   r»   s      r@   r¼   Ú$ModularIndexing._eval_is_nonnegativex  s,   € à�y‰y˜˜!ˆ}‰ˆÜ˜×(Ñ(¨!×*:Ñ*:Ó;Ð;rB   r[   )r¾   r¿   rÀ   rÁ   rÂ   r€   rÃ   rc   rÄ   rƒ   rÅ   r‚   rÊ   r;   rd   rw   r·   r¼   rË   r[   rB   r@   r!   r!   ;  s‡   ‡ ñð "€Eˆ5��c�‰?Ó!Ø€J�ÓØ€J�Óàð1Ø—=‘=ð1Ø+0¯=©=ð1ØCHÇ=Á=ð1à	�‰�tÑ	ó1ó ð1ðf< d¨T¡k÷ <rB   r!   c            
       óö   • \ rS rSr% SrSr\\S4   \S'   Sr	\\S'   S\
S	-  4S
 jrS\
S	-  4S jrS\
S	-  4S jr\S\R                   S\R                   S\R                   S\R                   S	-  4S j5       rSrg	)r"   i~  z
Good ol' ternary operator
rÍ   .r€   r�   r‚   r7   Nc                 ó‚   • U R                   S   R                  (       a   U R                   S   R                  (       a  S$ S $ ©Nr   r9   T©rE   rƒ   r‡   s    r@   Ú_eval_is_integerÚWhere._eval_is_integer†  s.   € Ø—y‘y ‘|×.×.°4·9±9¸Q±<×3J×3JˆtÐTÐPTÐTrB   c                 ó‚   • U R                   S   R                  (       a   U R                   S   R                  (       a  S$ S $ rÙ   )rE   rº   r‡   s    r@   r¼   ÚWhere._eval_is_nonnegative‰  s9   € ð �y‰y˜‰|×*×*¨t¯y©y¸©|×/J×/Jð ð	
ð ð	
rB   c                 ó‚   • U R                   S   R                  (       a   U R                   S   R                  (       a  S$ S $ rÙ   ©rE   Úis_positiver‡   s    r@   Ú_eval_is_positiveÚWhere._eval_is_positive�  s.   € Ø—y‘y ‘|×/×/°D·I±I¸a±L×4L×4LˆtÐVÐRVÐVrB   Úcr]   r^   c                 ó\   • U[         R                  :X  a  U$ U[         R                  :X  a  U$ g rH   )r;   ÚtrueÚfalse)r¯   rä   r]   r^   s       r@   r·   Ú
Where.eval“  s&   € à”—
‘
‹?ØˆHØ”%—+‘+ÓØˆHØrB   r[   )r¾   r¿   rÀ   rÁ   rÂ   r€   rÃ   rc   rÄ   r‚   rÅ   rÛ   r¼   râ   rÊ   r;   rw   r·   rË   r[   rB   r@   r"   r"   ~  sŸ   ‡ ñð "€Eˆ5��c�‰?Ó!Ø€J�ÓðU $¨¡+ô Uð
 d¨T¡kô 
ðW 4¨$¡;ô Wð ð�U—[‘[ð  U§[¡[ð °U·[±[ð ÀUÇ[Á[ÐSWÑEWó ó órB   r"   c                   óâ   • \ rS rSr% Sr\\S4   \S'   Sr\\S'   Sr	\
\S'   \S	\R                  S
\R                  S\R                  S-  4S j5       rS\
S-  4S jrS\
S-  4S jrS\4S jrSrg)r#   i�  r   .r€   r�   r‚   Trƒ   r]   r^   r7   Nc                 óª  • UR                   (       a  [        S5      eU[        R                  L d  XU* 4;   d  US:X  a  [        R                  $ UR                  (       a  UR                  (       a  X-  $ UR                  (       aH  US:X  aB  UR
                  (       a  [        R                  $ UR                  (       a  [        R                  $ X-  nUR                  (       a  [        R                  $ X:  nUR                  (       a#  [        U5      (       a  UR                  (       a  U$ [        R                  " X5      S:X  a  [        R                  $ g )NúModulo by zeror   r9   r   )r    r¡   r	   r£   Ú	is_NumberÚis_evenÚis_oddr¤   rƒ   Ú
is_BooleanrÅ   rá   r;   r$   ©r¯   r]   r^   rR   Úlesss        r@   r·   ÚPythonMod.eval£  sÚ   € ð �9�9Ü#Ð$4Ó5Ð5ð ”—‘Š;˜! A 2˜w›,¨!¨q«&Ü—6‘6ˆMð �;�;˜1Ÿ;Ÿ;Ø‘5ˆLð �;�;˜1 ›6Ø�y�yÜ—v‘v�Ø�x�xÜ—u‘u�ð ‰EˆØ�<�<Ü—6‘6ˆMð
 ‰uˆà�?�?œt DŸz™z¨a¯m¯mØˆHä�9Š9�Q‹?˜aÓÜ—6‘6ˆMàrB   c                 óF   • U R                   S   R                  (       a  S$ S $ ©Nr   Trà   r‡   s    r@   r¼   ÚPythonMod._eval_is_nonnegativeÒ  ó   € Ø—y‘y ‘|×/×/ˆtÐ9°TÐ9rB   c                 óF   • U R                   S   R                  (       a  S$ S $ rô   )rE   Úis_negativer‡   s    r@   Ú_eval_is_nonpositiveÚPythonMod._eval_is_nonpositiveÕ  rö   rB   c                 ó2  • UR                  U R                  S   [        S   S-
  5      nUR                  U R                  S   [        S   S-
  5      nU R                  S   R                  (       a  [	        U5      OSU S3nSU SU S	U SU S
U SU SU 3$ )Nr   r’   r“   r   zabs(r•   r”   z % z) < 0 ? z + z : )r–   rE   r   rá   rÉ   )rˆ   r�   r]   r^   Úabs_qs        r@   Ú_ccodeÚPythonMod._ccodeØ  sž   € à× Ñ  §¡¨1¡¬z¸&Ñ/AÀCÑ/GÓHˆà× Ñ  §¡¨1¡¬z¸&Ñ/AÀCÑ/GÓHˆàŸ)™) A™,×2×2”�A”¸$¸q¸cÀ¸ˆØ�1�#�S˜˜˜8 A 3 c¨!¨¨C°¨w°c¸!¸¸CÀ¸sÐCÐCrB   r[   )r¾   r¿   rÀ   rÁ   r€   rÃ   rc   rÄ   r‚   rƒ   rÅ   rÊ   r;   r   r·   r¼   rù   rÉ   rý   rË   r[   rB   r@   r#   r#   �  s�   ‡ Ø!€Eˆ5��c�‰?Ó!à€J�ÓØ€J�Óàð+�U—Z‘Zð + E§J¡Jð +°5·:±:ÀÑ3Dó +ó ð+ð\: d¨T¡kô :ð: d¨T¡kô :ðD ÷ DrB   r#   c                   ó@   • \ rS rSr% SrSr\\S'   SrSr	\
S 5       rSrg)	r$   iã  r   r�   r‚   Tc                 óž  • UR                   (       a  [        S5      eU[        R                  L d  XU* 4;   d  US:X  a  [        R                  $ UR                  (       a7  UR                  (       a&  US:  a  [        U5      eUS:  a  [        U5      eX-  $ UR                  (       aH  US:X  aB  UR                  (       a  [        R                  $ UR                  (       a  [        R                  $ X-  nUR                  (       a  [        R                  $ X:  nUR                  (       a%  [        U5      (       a  UR                  (       a  U$ g g g )Nrë   r   r   r9   )r    r¡   r	   r£   rì   ÚAssertionErrorrí   rî   r¤   rƒ   rï   rÅ   rá   rð   s        r@   r·   ÚMod.evalê  së   € ð �9�9Ü#Ð$4Ó5Ð5ð ”—‘Š;˜! A 2˜w›,¨!¨q«&Ü—6‘6ˆMð �;�;˜1Ÿ;Ÿ;Ø�1‹uÜ$ QÓ'Ð'Ø�1‹uÜ$ QÓ'Ð'Ø‘5ˆLð �;�;˜1 ›6Ø�y�yÜ—v‘v�Ø�x�xÜ—u‘u�ð ‰EˆØ�<�<Ü—6‘6ˆMð
 ‰uˆØ�?�?œt DŸz™z¨a¯m¯mØˆHð /<˜zˆ?rB   r[   N)r¾   r¿   rÀ   rÁ   r€   r‚   rc   rÄ   rƒ   rº   rÊ   r·   rË   r[   rB   r@   r$   r$   ã  s-   ‡ Ø€EØ€J�Óà€JØ€Nàñ+ó ó+rB   r$   c                   ó   • \ rS rSrSrSrg)r%   i  zN
Div where we can assume no rounding.
This is to enable future optimizations.
r[   N)r¾   r¿   rÀ   rÁ   rÂ   rË   r[   rB   r@   r%   r%     s   † ôrB   r%   c                   ó6   • \ rS rSrSr\S 5       rS\4S jrSr	g)r&   i"  Tc                 ó.  • U[         R                  [        4;   a  [        $ U[         R                  * [        * 4;   a  [        * $ [        U[         R                  5      (       a3  [         R
                  " [        R                  " [        U5      5      5      $ g rH   )	r;   Úoor   r:   r¥   rd   rf   ÚceilrQ   ©r¯   Únumbers     r@   r·   ÚCeilToInt.eval%  sh   € ð ”e—h‘h¤Ð'Ó'ÜˆMØ”u—x‘x�i¤& Ð)Ó)Ü�7ˆNÜ�fœeŸl™l×+Ñ+Ü—=’=¤§¢¬5°«=Ó!9Ó:Ð:ð ,rB   r7   c                 ó€   • UR                  U R                  S   U R                  S   R                  S-
  5      nSU S3$ )Nr   r“   zceil(r•   )r–   rE   r‚   )rˆ   r�   r	  s      r@   rý   ÚCeilToInt._ccode/  s>   € à×%Ñ% d§i¡i°¡l°D·I±I¸a±L×4KÑ4KÈcÑ4QÓRˆØ�v�h˜aÐ Ð rB   r[   N)
r¾   r¿   rÀ   rÁ   rƒ   rÊ   r·   rÉ   rý   rË   r[   rB   r@   r&   r&   "  s%   † Ø€Jàñ;ó ð;ð! ÷ !rB   r&   c                   ó(   • \ rS rSrSr\S 5       rSrg)r'   i5  Tc                 ón  • U[         R                  [        4;   a  [        $ U[         R                  * [        4;   a  [        * $ [        U[         R                  5      (       a  U$ [        U[         R
                  5      (       a3  [         R                  " [        R                  " [        U5      5      5      $ g rH   )	r;   r  r   r:   rd   r¥   rf   r¨   rQ   r  s     r@   r·   ÚFloorToInt.eval8  sz   € à”e—h‘h¤Ð'Ó'ÜˆMØ”u—x‘x�i¤Ð(Ó(Ü�7ˆNÜ�fœeŸm™m×,Ñ,ØˆMÜ�fœeŸl™l×+Ñ+Ü—=’=¤§¢¬E°&«MÓ!:Ó;Ð;ð ,rB   r[   N©r¾   r¿   rÀ   rÁ   rƒ   rÊ   r·   rË   r[   rB   r@   r'   r'   5  s   † Ø€Jàñ<ó ó<rB   r'   c                   ó"   • \ rS rSrSrSrS rSrg)r(   iD  z&
Div used in indexing that rounds up.
Tc                 óÆ   • [         R                  " U5      n[         R                  " U5      n[         R                  " X5      U:X  a  [        X5      $ [	        XS-
  -   U5      $ r�   )r;   r   rp   r%   r    ©r¯   r‰   rŽ   s      r@   Ú__new__ÚCeilDiv.__new__K  sN   € Ü�}Š}˜TÓ"ˆÜ—-’- Ó(ˆÜ�9Š9�TÓ# wÓ.Ü˜DÓ*Ð*ä˜D¨a¡KÑ0°'Ó:Ð:rB   r[   N)r¾   r¿   rÀ   rÁ   rÂ   rƒ   r  rË   r[   rB   r@   r(   r(   D  s   † ñð €Jõ;rB   r(   c                   ó(   • \ rS rSrSr\S 5       rSrg)r+   iT  Tc                 ó4   • US:  a  [        S5      eUSU-  -  $ ©Nr   znegative shift countr9   )Ú
ValueError©r¯   r‰   Úshifts      r@   r·   ÚLShift.evalW  s#   € à�1‹9ÜÐ3Ó4Ð4Ø�a˜‘h‰ÐrB   r[   Nr  r[   rB   r@   r+   r+   T  s   † Ø€Jàñó órB   r+   c                   ó(   • \ rS rSrSr\S 5       rSrg)r,   i^  Tc                 óB   • US:  a  [        S5      e[        USU-  5      $ r  )r  r    r  s      r@   r·   ÚRShift.evala  s&   € à�1‹9ÜÐ3Ó4Ð4Ü˜˜a ™hÓ'Ð'rB   r[   Nr  r[   rB   r@   r,   r,   ^  s   † Ø€Jàñ(ó ó(rB   r,   c                   óø  • \ rS rSrS r\S\\R                  R                  R                     S-  4S j5       r\ S&S\\R                  R                  R                     S-  S\\R                  R                  R                     S-  4S jj5       r\S 5       r\S	 5       r\S
 5       rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S r$S  r%S! r&S" r'S# r(S$ r)S%r*g)'Ú
MinMaxBaseih  c                 óH  • SSK Jn  UR                  SUR                  5      nS U 5       nU(       d  S OU R	                  U5      nU(       aD   [        U R                  U5      5      nUc&  U R                  " U40 UD6nU R                  " U40 UD6n[        U5      nU(       d  U R                  $ [        U5      S:X  a  [        U5      R                  5       $ [        R                  " U /[!        U5      Q70 UD6nXWl        Xgl        U$ ! [         a    U R                  s $ f = f)Nr   )Úglobal_parametersrŸ   c              3   ó8   #   • U  H  n[        U5      v •  M     g 7frH   r
   )rK   rh   s     r@   rM   Ú%MinMaxBase.__new__.<locals>.<genexpr>m  s   é € Ð6ª ”˜—�ªùó   ‚r   )Úsympy.core.parametersr#  ÚpoprŸ   Ú"_satisfy_unique_summations_symbolsÚ	frozensetÚ_new_args_filterr   ÚzeroÚ_collapse_argumentsÚ_find_localzerosÚidentityr=   rx   r   r  r   Ú_argsetÚunique_summations_symbols)r¯   Úoriginal_argsÚassumptionsr#  rŸ   rE   r1  Úobjs           r@   r  ÚMinMaxBase.__new__i  s  € Ý;à—?‘? :Ð/@×/IÑ/IÓJˆÙ6©Ó6ˆö
 ñ à×7Ñ7¸ÓFð 	"ö ð ô ! ×!5Ñ!5°dÓ!;Ó<�ð )Ñ0à×.Ò.¨tÑC°{ÑC�ð ×+Ò+¨DÑ@°KÑ@�ä˜‹ˆæØ—<‘<Ðäˆt‹9˜‹>Ü˜“:—>‘>Ó#Ð#ô �lŠl˜3Ð>¤¨£Ò>°+Ñ>ˆØŒà(AÔ%Øˆ
øô3  ó  Ø—x‘x’ð ús   ÁD ÄD!Ä D!r7   Nc                 óT  • [        U5      S:w  a  g[        US   [        5      (       a
  US   US   4O	US   US   4u  p#[        U5      (       d  g[        U5      (       a  U R	                  U5      $ [        U[        5      (       a#  [        USS5      nUb  U R	                  U/U5      $ g)au  
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   r1  )r=   r:   r!  rA   Ú_unique_symbolsÚgetattr)r¯   rE   ÚlhsÚrhsÚlhs_unique_summations_symbolss        r@   r)  Ú-MinMaxBase._satisfy_unique_summations_symbols–  s¿   € ô< ˆt‹9˜‹>Øô ˜$˜q™'¤:×.Ñ.ð �!‰W�d˜1‘gÑà�q‘'˜4 ™7Ð#ñ 	ˆô ,¨C×0Ñ0Øô (¨×,Ñ,Ø×&Ñ& tÓ,Ð,ô �cœ:×&Ñ&Ü,3ØÐ0°$ó-Ð)ð -Ñ8Ø×*Ñ*¨C¨5Ð2OÓPÐPàrB   Úinitial_setc                 ó  • Uc
  [        5       OUnU Hi  nUR                  5        HR  n[        U[        R                  R
                  R                  5      (       d      gXS;   a      gUR                  U5        MT     Mk     U$ )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)Úsetrª   r:   r;   ÚcoreÚsymbolÚSymbolÚadd)r¯   rE   r=  Úseen_symbolsrh   Úelements         r@   r7  ÚMinMaxBase._unique_symbolsÎ  sk   € ð !,Ñ 3”s”u¸ˆÛˆCØŸ9™9ž;�Ü! '¬5¯:©:×+<Ñ+<×+CÑ+C×DÑDÚØÓ,Úà ×$Ñ$ WÖ-ó 'ñ ð ÐrB   c                 ó|  ^ ^^• U(       d  U$ [        [        U5      5      nT [        L a  [        mO[        mUS   R                  (       Ga  / / 4=nu  pEU Ha  n[        U[        [        5       HE  nUR                  S   R                  (       d  M#  U[        U[        5         R                  U5        MG     Mc     [        R                  nU H1  nUR                  S   nUR                  (       d  M%  Xx:  S:X  d  M/  UnM3     [        R                  n	U H1  nUR                  S   nUR                  (       d  M%  Xy:„  S:X  d  M/  Un	M3     T [        L a)  U H"  n
U
R                  (       d    OCX¨:  S:X  d  M   U
nM$     O2T [        :X  a(  U H"  n
U
R                  (       d    OX©:„  S:X  d  M   U
n	M$     SnT [        L a  U[        R                  :w  a  [        mUnOU	[        R                  :w  a  [        mU	nUbg  [        [        U5      5       HO  nX   n[        UT5      (       d  M  UR                  S   nT[        :X  a  XÛ:„  OXÛ:  S:X  d  MA  T R                  X'   MQ     U U4S jm[        U5       H(  u  plXS-   S  Vs/ s H  nT" Xì5      PM     snXS-   S& M*     U U4S jn[        U5      S:”  a  U" U5      nU$ s  snf )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           	      ó|  >• [        U [        [        45      (       d  U $ XR                  ;   nU(       d3  U R                  " U R                   Vs/ s H  nT" X15      PM     snSS06$ [        U T5      (       a:  U R                  " U R                   Vs/ s H  o3U:w  d  M
  T" X15      PM     snSS06$ U$ s  snf s  snf )NrŸ   F)r:   ÚMinÚMaxrE   Úfunc)ÚairL   ÚcondÚir¯   Údos       €€r@   rO  Ú*MinMaxBase._collapse_arguments.<locals>.do8  s¡   ø€ Ü˜b¤3¬ *×-Ñ-Ø�	ØŸ™‘<ˆDÞØ—w’w°2·7²7Ó ;²7¨a¡ A¦±7Ñ ;ÐLÀeÑLÐLÜ˜"˜c×"Ñ"à—w’w°2·7²7Ó E²7¨aÀ1¹f£¡ A¦±7Ñ EÐVÐPUÑVÐVØˆHùò	 !<ùò !Fs   ÁB4Â	B9ÂB9r   c                 ó°  >• U4S jn[        XSS9u  p#U(       d  U $ U Vs/ s H  n[        UR                  5      PM     nn[        R                  " U6 nU(       d  U $ [	        U5      nU Vs/ s H  oˆU-
  PM	     n	n[        U	5      (       a/  U	 V
s/ s H  n
T" U
SS06PM     nn
UR                  T" USS065        T" USS06nX</-   $ s  snf s  snf s  sn
f )Nc                 ó   >• [        U T5      $ rH   )r:   )rh   Úothers    €r@   Ú<lambda>ÚGMinMaxBase._collapse_arguments.<locals>.factor_minmax.<locals>.<lambda>N  s   ø€ ¤:¨c°5Ô#9rB   T)ÚbinaryrŸ   F)r   r?  rE   Úintersectionrx   ry   r¬   )rE   Úis_otherÚ
other_argsÚremaining_argsrh   Úarg_setsÚcommonÚnew_other_argsÚarg_setÚarg_sets_diffÚsÚother_args_diffÚother_args_factoredr¯   rS  s                €€r@   Úfactor_minmaxÚ5MinMaxBase._collapse_arguments.<locals>.factor_minmaxM  så   ø€ Ü9ˆHÜ)-¨dÀTÑ)JÑ&ˆJÞØ�ñ 2<Ó<²¨#œ˜CŸH™Hž±ˆHÐ<Ü×%Ò% xÐ0ˆFÞØ�ä! &›\ˆNÙ=EÓFºX°' vÔ-¹XˆMÐFô �=×!Ñ!ÙFSÓ"TÂmÀ¡5¨!Ð#<°eÔ#<Ám�Ð"TØ×%Ñ%¡c¨?Ð&KÀUÑ&KÔLá"'¨Ð"HÀ%Ñ"HÐØ!Ð$9Ñ9Ð9ùò =ùò Gùò
 #Us   ¡C	Á-CÂC)rx   r   rI  rJ  Ú	is_numberr   rE   Úis_comparabler:   r¬   r/  Úranger=   Ú	enumerate)r¯   rE   r3  ÚsiftedÚminsÚmaxsrN  ÚvÚsmallÚbigrh   ÚTrL   Úa0rL  rc  rO  rS  s   `               @@r@   r-  ÚMinMaxBase._collapse_argumentsá  sb  ú€ ö0 ØˆKÜ”G˜D“MÓ"ˆØ”#Š:Ü‰EäˆEð
 �‰7××ÐØ"$ b &Ð(ˆF‘Z�TÛ�Ü˜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ØŸ=Ÿ=ÙØ™¨Õ,Ø #šò	  ð
 œ“Û�CØŸ=Ÿ=ÙØ™	 dÕ*Ø!šñ	  ð
 ˆAØ”cŠzØœCŸL™LÓ(Ü�EØ�AøØœŸ™Ó$Ü�Ø�Ø‰}äœs 4›yÖ)�AØ™�AÜ! ! U×+Ó+ØŸV™V A™Y˜à(-´«˜RšV¸2¹6Ø!õ"ð '*§l¡l˜D›Gñ *ö		ô ˜d–O‰DˆAØ15¸!±e°g±Ó?²¨2™R žY±Ñ?ˆD�Q‘�ŠMñ $ö	:ô0 ˆt‹9�q‹=Ù  Ó&ˆDàˆùòI @s   É;J9c              #   óv  #   • U H­  n[        U[        5      (       a1  UR                  SL d"  UR                  (       a   UR                  (       d  [        SU S35      eX R                  :X  a  [        U5      eX R                  :X  a  Mƒ  UR                  U :X  a  UR                   Sh  v•N   M©  Uv •  M¯     g N7f)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_realre  rf  r  r,  r   r/  rK  rE   )r¯   Úarg_sequencerh   s      r@   r+  ÚMinMaxBase._new_args_filterj  s•   é € ó  ˆCô ˜s¤D×)Ñ)Ø×'Ñ'¨5Ò0Ø—M—M¨#×*;×*;ä  >°#°Ð6JÐ!KÓLÐLà—h‘h‹Ü" 3Ó'Ð'ØŸ™Ó$ÙØ—‘˜S“ØŸ8™8×#Ò#à”	ò!  ñ $ùs   ‚B%B9Â'B7Â(B9c                 ó   • [        5       nSnU Hf  nUR                  (       aA  Uc  UnM  U [        L a  [        XE5      nM1  U [        L a  [        XE5      nMG  [        SU  35      eUR                  U5        Mh     Uc  U$ [        U5      S:X  a  U1$ [        U5      S:X  a^  [        [        U5      5      nUS;   a  UR                  (       a  U [        L a  U$ U1$ US:X  a  UR                  (       a  U [        L a  U$ U1$ UR                  U5        U$ )aV  
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ì   rJ  ÚmaxrI  Úminr  rC  r=   ÚnextÚiterrº   rá   )r¯   ÚvaluesÚoptionsÚother_valuesÚ	num_valuerh   Úother_values          r@   r.  ÚMinMaxBase._find_localzeros…  s  € ô “uˆØˆ	ÛˆCØ�}�}ØÑ$Ø #’Iàœc’zÜ$'¨	Ó$7š	Ø¤šÜ$'¨	Ó$7š	ä,¨{¸3¸%Ð-@ÓAÐAà× Ñ  Ö%ñ ð ÑØÐäˆ|Ó Ó!Ø�;Ðäˆ|Ó Ó!Üœt LÓ1Ó2ˆKØ˜HÓ$¨×)C×)CØ'*¬c¢z�|ÐB¸	°{ÐBØ˜A‹~ +×"9×"9Ø'*¬c¢z�|ÐB¸	°{ÐBà×Ñ˜Ô#ØÐrB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   )Úis_algebraic©rK   rN  s     r@   rM   Ú&MinMaxBase.<lambda>.<locals>.<genexpr>´  ó   é € Ð(HÂ¸A¯®Âùr&  ©r   rE   ©r`  s    r@   rT  ÚMinMaxBase.<lambda>´  ó   € ¤5Ñ(HÀÇÂÓ(HÔ#HrB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó:   #   • U  H  nUR                   v •  M     g 7frH   )Úis_antihermitianr„  s     r@   rM   r…  µ  ó   é € ð -âˆAð 	
×ÖÚùó   ‚r‡  rˆ  s    r@   rT  r‰  µ  ó   € ¤uñ -à—’ó-ô (rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó:   #   • U  H  nUR                   v •  M     g 7frH   )Úis_commutativer„  s     r@   rM   r…  ¹  ó   é € ð +âˆAð 	
×ÖÚùr�  r‡  rˆ  s    r@   rT  r‰  ¹  ó   € ¤Uñ +à—’ó+ô &rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   )Ú
is_complexr„  s     r@   rM   r…  ½  ó   é € Ð&DºV¸§|¦|ºVùr&  r‡  rˆ  s    r@   rT  r‰  ½  ó   € ¤Ñ&D¸Q¿VºVÓ&DÔ!DrB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   )Úis_compositer„  s     r@   rM   r…  ¾  r†  r&  r‡  rˆ  s    r@   rT  r‰  ¾  rŠ  rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   )rí   r„  s     r@   rM   r…  ¿  ó   é € Ð#>²v°!§I¦I²vùr&  r‡  rˆ  s    r@   rT  r‰  ¿  ó   € œeÑ#>°q·v²vÓ#>Ô>rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   )Ú	is_finiter„  s     r@   rM   r…  À  s   é € Ð%Bº6°a§k¦kº6ùr&  r‡  rˆ  s    r@   rT  r‰  À  s   € ¤Ñ%B¸1¿6º6Ó%BÔ BrB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   )Úis_hermitianr„  s     r@   rM   r…  Á  r†  r&  r‡  rˆ  s    r@   rT  r‰  Á  rŠ  rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   )Úis_imaginaryr„  s     r@   rM   r…  Â  r†  r&  r‡  rˆ  s    r@   rT  r‰  Â  rŠ  rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   )r   r„  s     r@   rM   r…  Ã  ó   é € Ð'Fºv¸!¯®ºvùr&  r‡  rˆ  s    r@   rT  r‰  Ã  ó   € ¤%Ñ'F¸q¿vºvÓ'FÔ"FrB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   )rƒ   r„  s     r@   rM   r…  Ä  r™  r&  r‡  rˆ  s    r@   rT  r‰  Ä  rš  rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   )Úis_irrationalr„  s     r@   rM   r…  Å  ó   é € Ð)JÂ6¸a¯/®/Â6ùr&  r‡  rˆ  s    r@   rT  r‰  Å  ó   € ¤EÑ)JÀ1Ç6Â6Ó)JÔ$JrB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   ©rø   r„  s     r@   rM   r…  Æ  r­  r&  r‡  rˆ  s    r@   rT  r‰  Æ  r®  rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   )Úis_nonintegerr„  s     r@   rM   r…  Ç  r´  r&  r‡  rˆ  s    r@   rT  r‰  Ç  rµ  rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó:   #   • U  H  nUR                   v •  M     g 7frH   ©rº   r„  s     r@   rM   r…  È  r”  r�  r‡  rˆ  s    r@   rT  r‰  È  r•  rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó:   #   • U  H  nUR                   v •  M     g 7frH   )Úis_nonpositiver„  s     r@   rM   r…  Ì  r”  r�  r‡  rˆ  s    r@   rT  r‰  Ì  r•  rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   )Ú
is_nonzeror„  s     r@   rM   r…  Ð  r™  r&  r‡  rˆ  s    r@   rT  r‰  Ð  rš  rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   )rî   r„  s     r@   rM   r…  Ñ  s   é € Ð"<²V°§8¦8²Vùr&  r‡  rˆ  s    r@   rT  r‰  Ñ  s   € œUÑ"<°Q·V²VÓ"<Ô<rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   )Úis_polarr„  s     r@   rM   r…  Ò  ó   é € Ð$@º°A§Z¦Zºùr&  r‡  rˆ  s    r@   rT  r‰  Ò  ó   € œuÑ$@¸¿ºÓ$@Ô@rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   ©rá   r„  s     r@   rM   r…  Ó  r­  r&  r‡  rˆ  s    r@   rT  r‰  Ó  r®  rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   )Úis_primer„  s     r@   rM   r…  Ô  rÊ  r&  r‡  rˆ  s    r@   rT  r‰  Ô  rË  rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   )Úis_rationalr„  s     r@   rM   r…  Õ  r­  r&  r‡  rˆ  s    r@   rT  r‰  Õ  r®  rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   )Úis_realr„  s     r@   rM   r…  Ö  r   r&  r‡  rˆ  s    r@   rT  r‰  Ö  r¡  rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó:   #   • U  H  nUR                   v •  M     g 7frH   )rs  r„  s     r@   rM   r…  ×  rŽ  r�  r‡  rˆ  s    r@   rT  r‰  ×  r�  rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó:   #   • U  H  nUR                   v •  M     g 7frH   )Úis_transcendentalr„  s     r@   rM   r…  Û  s   é € ð .âˆAð 	
×ÖÚùr�  r‡  rˆ  s    r@   rT  r‰  Û  s   € ¬ñ .à—’ó.ô )rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   )r    r„  s     r@   rM   r…  ß  r   r&  r‡  rˆ  s    r@   rT  r‰  ß  r¡  rB   r[   rH   )+r¾   r¿   rÀ   rÁ   r  rÊ   r?  r;   r@  rA  rB  r)  r7  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_zerorË   r[   rB   r@   r!  r!  h  s†  † ò+ðZ ð5à	ˆU�Z‰Z×Ñ×%Ñ%Ñ	&¨Ñ	-ó5ó ð5ðn àGKñØ # E§J¡J×$5Ñ$5×$<Ñ$<Ñ =ÀÑ Dðà	ˆU�Z‰Z×Ñ×%Ñ%Ñ	&¨Ñ	-ôó ðð$ ñFó ðFðP ñó ðð4 ñ,ó ð,ñ\ IÐñÐñÐñ EÐÙHÐÙ>€MÙB€OÙHÐÙHÐÙFÐÙDÐÙJÐÙFÐÙJÐñÐñÐñ EÐÙ<€LÙ@€NÙFÐÙ@€NÙFÐÙ>€MñÐñÐñ ?ƒMrB   r!  c                   óZ   • \ rS rSrSr\R                  r\R                  r	S r
S rS rSrg)rJ  iâ  z5
Return, if possible, the maximum value of the list.
c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   rÎ  rJ   s     r@   rM   Ú(Max._eval_is_positive.<locals>.<genexpr>ë  ó   é € Ð9ªy¨!Ÿžªyùr&  ©r   rE   r‡   s    r@   râ   ÚMax._eval_is_positiveê  s   € ÜÑ9¨t¯yªyÓ9Ó9Ð9rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   r¾  rJ   s     r@   rM   Ú+Max._eval_is_nonnegative.<locals>.<genexpr>î  s   é € Ð<²)¨Q×(Ö(²)ùr&  rú  r‡   s    r@   r¼   ÚMax._eval_is_nonnegativeí  s   € ÜÑ<°$·)²)Ó<Ó<Ð<rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   r¸  rJ   s     r@   rM   Ú(Max._eval_is_negative.<locals>.<genexpr>ò  ó   é € Ð:²	¨1Ÿž²	ùr&  ©r   rE   r‡   s    r@   rê  ÚMax._eval_is_negativeð  s   € äÑ:°·	²	Ó:Ó:Ð:rB   r[   N)r¾   r¿   rÀ   rÁ   rÂ   r	   ÚInfinityr,  ÚNegativeInfinityr/  râ   r¼   rê  rË   r[   rB   r@   rJ  rJ  â  s,   † ñð �:‰:€DØ×!Ñ!€Hò:ò=õ;rB   rJ  c                   óZ   • \ rS rSrSr\R                  r\R                  r	S r
S rS rSrg)rI  iõ  z5
Return, if possible, the minimum value of the list.
c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   rÎ  rJ   s     r@   rM   Ú(Min._eval_is_positive.<locals>.<genexpr>þ  r  r&  r  r‡   s    r@   râ   ÚMin._eval_is_positiveý  s   € ÜÑ:°·	²	Ó:Ó:Ð:rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   r¾  rJ   s     r@   rM   Ú+Min._eval_is_nonnegative.<locals>.<genexpr>  s   é € Ð=²9¨a×)Ö)²9ùr&  r  r‡   s    r@   r¼   ÚMin._eval_is_nonnegative   s   € ÜÑ=°4·9²9Ó=Ó=Ð=rB   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frH   r¸  rJ   s     r@   rM   Ú(Min._eval_is_negative.<locals>.<genexpr>  rù  r&  rú  r‡   s    r@   rê  ÚMin._eval_is_negative  s   € äÑ9¨t¯yªyÓ9Ó9Ð9rB   r[   N)r¾   r¿   rÀ   rÁ   rÂ   r	   r  r,  r  r/  râ   r¼   rê  rË   r[   rB   r@   rI  rI  õ  s,   † ñð ×Ñ€DØ�z‰z€Hò;ò>õ:rB   rI  c                 óN   • SnU S:  a  U * n US-  S:X  a  SOSnU[        X5      -  $ )Nr   r   r9   rœ   )Ú	_safe_pow)r‰   ÚexpÚsigns      r@   Úsafe_powr    s6   € Ø€DØˆaƒxØˆuˆØ˜!‘G˜q“L‰q bˆØ”)˜DÓ&Ñ&Ð&rB   c                 óú   • US:  a  [        S5      eUS:X  a  g[        XS-  5      nU[        L a  [        $ X"-  nU[        R                  :”  a  [        $ US-  S:X  a  X0-  nU[        R                  :”  a  [        $ U$ )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ƒ}Øä˜¨!™mÓ,€HØ”6ÒÜˆð
 Ñ €FØ”—‘ÓÜˆà�!�|�qÓØ‰ˆØ”C—K‘KÓÜˆMà€MrB   c                   ó8   • \ rS rSr% SrSr\\S'   \S 5       r	Sr
g)r4   i+  Té2   r‚   c                 óø  • [        U[        R                  5      (       aS  [        U[        R                  5      (       a4  [        X5      nU[        * [        4;   a  U$ [        R                  " U5      $ [        U[        R                  5      (       a  [        R
                  " X5      $ U[        [        R                  4;   a9  UR                  (       a  [        $ UR                  (       a  [        R                  $ g g rH   )
r:   r;   rd   r  r   ÚPowr  rº   rø   Úzoo)r¯   r‰   r  rR   s       r@   r·   ÚPowByNatural.eval0  s®   € ä�dœEŸM™M×*Ñ*¬z¸#¼u¿}¹}×/MÑ/MÜ˜Ó#ˆAØ”f�WœfÐ%Ó%Ø�Ü—=’= Ó#Ð#Ü�cœ5Ÿ=™=×)Ñ)ô —9’9˜TÓ'Ð'Ø”6œ5Ÿ8™8Ð$Ó$Ø×"×"Ü�Ø×!×!Ü—y‘yÐ ð "ð %rB   r[   N)r¾   r¿   rÀ   rÁ   rƒ   r‚   rc   rÄ   rÊ   r·   rË   r[   rB   r@   r4   r4   +  s#   ‡ Ø€Jà€J�Óàñ!ó ó!rB   r4   c                   ó8   • \ rS rSr% SrSr\\S'   \S 5       r	Sr
g)r3   iF  Té<   r‚   c                 óØ   • [        U[        R                  5      (       aK  [        U[        R                  5      (       a+  [        R                  " [	        U5      [	        U5      -  5      $ g g rH   )r:   r;   r¥   rI   rQ   )r¯   r‰   r  s      r@   r·   ÚFloatPow.evalK  sJ   € ô �dœEŸL™L×)Ñ)¬j¸¼e¿l¹l×.KÑ.KÜ—;’;œu T›{¬e°C«jÑ8Ó9Ð9ð /LÐ)rB   r[   N©r¾   r¿   rÀ   rÁ   r×  r‚   rc   rÄ   rÊ   r·   rË   r[   rB   r@   r3   r3   F  s#   ‡ Ø€Gà€J�Óàñ:ó ó:rB   r3   c                   ó8   • \ rS rSr% SrSr\\S'   \S 5       r	Sr
g)r*   i\  Tr�   r‚   c                 ó  • UR                   (       a  [        S5      e[        U[        R                  5      (       aK  [        U[        R                  5      (       a+  [        R
                  " [        U5      [        U5      -  5      $ g g ©Nr›   )r    r¡   r:   r;   r¥   rI   rQ   r  s      r@   r·   ÚFloatTrueDiv.evala  s]   € ð
 �?�?Ü#Ð$6Ó7Ð7ä�dœEŸL™L×)Ñ)¬j¸Ä%Ç,Á,×.OÑ.OÜ—;’;œu T›{¬U°7«^Ñ;Ó<Ð<ð /PÐ)rB   r[   Nr*  r[   rB   r@   r*   r*   \  s#   ‡ Ø€Gà€J�Óàñ=ó ó=rB   r*   c                   óF   • \ rS rSr% SrSr\\S'   \S 5       r	S\
4S jrSrg	)
r)   iu  Tr�   r‚   c                 ó"  • UR                   (       a  [        S5      e[        U[        R                  5      (       aj  [        U[        R                  5      (       aK  [        U5      (       d  [        U5      (       a+  [        R                  " [        U5      [        U5      -  5      $ [        U[        R                  5      (       aK  [        U[        R                  5      (       a+  [        R                  " [        U5      [        U5      -  5      $ g g r-  )
r    r¡   r:   r;   r¥   r   rI   rQ   rd   rc   r  s      r@   r·   ÚIntTrueDiv.evalz  s²   € à�?�?Ü#Ð$6Ó7Ð7ô �tœUŸ\™\×*Ñ*Ü˜7¤E§L¡L×1Ñ1Ü˜T×"Ñ"¤k°'×&:Ñ&:ô —;’;œu T›{¬U°7«^Ñ;Ó<Ð<Ü�dœEŸM™M×*Ñ*¬z¸'Ä5Ç=Á=×/QÑ/QÜ—;’;œs 4›y¬3¨w«<Ñ7Ó8Ð8ð 0RÐ*rB   r7   c                 ó¸   • UR                  U R                  S   [        S   S-
  5      nUR                  U R                  S   [        S   S-
  5      nSU SU S3$ )Nr   r’   r“   r   z((int)z/(int)r•   )r–   rE   r   r—   s       r@   rý   ÚIntTrueDiv._ccodeŠ  s_   € à×#Ñ# D§I¡I¨a¡L´*¸VÑ2DÀsÑ2JÓKˆà×&Ñ& t§y¡y°¡|´ZÀÑ5GÈ#Ñ5MÓNˆØ˜�v˜V G 9¨AÐ.Ð.rB   r[   N)r¾   r¿   rÀ   rÁ   r×  r‚   rc   rÄ   rÊ   r·   rÉ   rý   rË   r[   rB   r@   r)   r)   u  s/   ‡ Ø€Gà€J�Óàñ9ó ð9ð/ ÷ /rB   r)   c                   ó(   • \ rS rSrSr\S 5       rSrg)r-   i˜  Tc           
      óT  • [        U5      S-  S:w  a  [        S[        U5       35      e[        U5      S-  nUSU nXS  nSSKJn  [	        S U 5       5      (       a=  U" U Vs/ s H  n[        U5      PM     snU Vs/ s H  n[        U5      PM     sn5      $ US:X  a<  US   R                  (       a
  US   S:X  a  gUS   R                  (       a
  US   S:  a  g[	        S U 5       5      (       a¡  US:X  a  [        S5      e[        [        [        X4S	S
9[        R                  " S5      S9SS	06u  px[	        S US S  5       5      (       aE  US S S-   nU" U Vs/ s H  n[        U5      PM     snU Vs/ s H  n[        U5      PM     sn5      $ g s  snf s  snf s  snf s  snf )Nr9   r   z*expected an even number of arguments, got )Ú!eval_is_non_overlapping_and_densec              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frH   ©r:   r;   rd   rJ   s     r@   rM   Ú9IsNonOverlappingAndDenseIndicator.eval.<locals>.<genexpr>ª  s   é € Ð:²T°Œz˜!œUŸ]™]×+Ð+²TùrO   r   c              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frH   r8  rJ   s     r@   rM   r9  ¿  s   é € Ð=²W°Œz˜!œUŸ]™]×+Ð+²WùrO   zdim must not be zeroT)Ústrict)Úkeyr;  c              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frH   r8  rJ   s     r@   rM   r9  É  s   é € ÐFº°A”:˜a¤§¡×/Ð/ºùrO   rœ   )é*   )r=   r  Ú%torch.fx.experimental.symbolic_shapesr6  ry   rc   rì   ÚzipÚsortedÚoperatorÚ
itemgetter)	r¯   rE   ÚdimÚsizesÚstridesr6  rL   Ús_sizesÚ	s_stridess	            r@   r·   Ú&IsNonOverlappingAndDenseIndicator.eval›  s±  € äˆt‹9�q‰=˜AÓÜ Ø<¼SÀ»Y¸KÐHóð ô �$‹i˜1‰nˆØ�Q�s�ˆØ�t�*ˆõ	
ô Ñ:±TÓ:×:Ñ:Ù4Ù!&Ó'¢˜A”�Q–¡Ñ'¹'Ó)Bº'°Q¬#¨a®&¹'Ñ)Bóð ð �!‹8à�q‰z×#×#¨°©
°a«Øà�Q‰x×!×! e¨A¡h°£lØô Ñ=±WÓ=×=Ñ=Ø�a‹xÜ$Ð%;Ó<Ð<ô "%Üœ˜E°4Ñ8¼h×>QÒ>QÐRSÓ>TÑUð"àñ"ÑˆGô
 ÑF¸ÀÀ"¹ÓF×FÑFØ! # 2˜,¨Ñ.�ñ 9Ù%,Ó-¢W ”S˜–V¡WÑ-Á	Ó/JÂ	¸1´°A¶Á	Ñ/Jóð ð ùòK (ùÒ)BùòD .ùÒ/Js   Á$FÁ?F
ÅF Å9F%
r[   Nr  r[   rB   r@   r-   r-   ˜  s   † Ø€Jàñ5ó ó5rB   r-   c                   ó(   • \ rS rSrSr\S 5       rSrg)r.   iÕ  Tc                 óö   • U[         R                  [         R                  * 4;   a  U$ [        U[         R                  5      (       a3  [         R                  " [
        R                  " [        U5      5      5      $ g rH   )r;   r  r:   r¥   rI   rf   ÚtruncrQ   r  s     r@   r·   ÚTruncToFloat.evalØ  sR   € à”e—h‘h¤§¡ 	Ð*Ó*ØˆMä�fœeŸl™l×+Ñ+ô —;’;œtŸzšz¬%°«-Ó8Ó9Ð9ð	 ,rB   r[   N©r¾   r¿   rÀ   rÁ   r×  rÊ   r·   rË   r[   rB   r@   r.   r.   Õ  s   † Ø€Gàñ:ó ó:rB   r.   c                   ó(   • \ rS rSrSr\S 5       rSrg)r/   iä  Tc                 ó.  • U[         R                  [        4;   a  [        $ U[         R                  * [        * 4;   a  [        * $ [        U[         R                  5      (       a3  [         R
                  " [        R                  " [        U5      5      5      $ g rH   )	r;   r  r   r:   r¥   rd   rf   rL  rQ   r  s     r@   r·   ÚTruncToInt.evalç  sh   € ð ”e—h‘h¤Ð'Ó'ÜˆMØ”u—x‘x�i¤& Ð)Ó)Ü�7ˆNÜ�fœeŸl™l×+Ñ+Ü—=’=¤§¢¬E°&«MÓ!:Ó;Ð;ð ,rB   r[   Nr  r[   rB   r@   r/   r/   ä  s   † Ø€Jàñ<ó ó<rB   r/   c                   ó(   • \ rS rSrSr\S 5       rSrg)r0   ió  Tc                 óü   • U[         R                  L a  [        $ U[         R                  * L a  [        * $ [        U[         R                  5      (       a)  [         R
                  " [        [        U5      S5      5      $ g r…   )r;   r  r   r:   r¥   rd   ÚroundrQ   r  s     r@   r·   ÚRoundToInt.evalö  sZ   € ð ”U—X‘XÒÜˆMØ”e—h‘h�YÒÜ�7ˆNÜ�fœeŸl™l×+Ñ+Ü—=’=¤¤u¨V£}°aÓ!8Ó9Ð9ð ,rB   r[   Nr  r[   rB   r@   r0   r0   ó  s   † Ø€Jàñ:ó ó:rB   r0   c                   ó(   • \ rS rSrSr\S 5       rSrg)r1   i  Tc                 óæ   • [        U[        R                  5      (       aR  [        U[        R                  5      (       a2  [        R                  " [        [        U5      [        U5      5      5      $ g g rH   )r:   r;   r¥   rd   rI   rT  rQ   rc   )r¯   r	  Úndigitss      r@   r·   ÚRoundDecimal.eval  sL   € ô �fœeŸl™l×+Ñ+´
¸7ÄEÇMÁM×0RÑ0RÜ—;’;œu¤U¨6£]´C¸³LÓAÓBÐBð 1SÐ+rB   r[   NrN  r[   rB   r@   r1   r1     s   † Ø€GàñCó óCrB   r1   c                   ó(   • \ rS rSrSr\S 5       rSrg)r2   i  Tc                 ó6  • U[         R                  [         R                  * 4;   a  U$ [        U[         R                  5      (       a  [         R                  " [        U5      5      $ U[        L a  [         R                  $ U[        * L a  [         R                  * $ g rH   )r;   r  r:   rd   rI   rc   r   r  s     r@   r·   ÚToFloat.eval  sn   € à”e—h‘h¤§¡ 	Ð*Ó*ØˆMä�fœeŸm™m×,Ñ,Ü—;’;œs 6›{Ó+Ð+Ø”VÒÜ—8‘8ˆOØ”f�WÒÜ—H‘H�9Ðð rB   r[   NrN  r[   rB   r@   r2   r2     s   † Ø€Gàñ	ó ó	rB   r2   c                   óÄ   ^ • \ rS rSrSrSrS\4S jrS\4S jrS r	S r
\S	 5       r\S
 5       rS rS\4S jrS rU 4S jrU 4S jrU 4S jrU 4S jrS\4S jrSrU =r$ )r5   i,  z,
Prevents expansion and other optimizations
é
   r7   c                 ó(   • SU R                   S    S3$ )Nz	Identity(r   r•   r†   r‡   s    r@   Ú__repr__ÚIdentity.__repr__3  s   € à˜4Ÿ9™9 Q™<˜.¨Ð*Ð*rB   c                 óF   • SUR                  U R                  S   5       S3$ )z+Controls how sympy's StrPrinter prints thisr”   r   r•   )ÚdoprintrE   )rˆ   r�   s     r@   r˜   ÚIdentity._sympystr7  s%   € ð �7—?‘? 4§9¡9¨Q¡<Ó0Ð1°Ð3Ð3rB   c                 ó4   • U R                   S   R                  $ r…   )rE   r×  r‡   s    r@   rñ  ÚIdentity._eval_is_real<  s   € à�y‰y˜‰|×#Ñ#Ð#rB   c                 ó4   • U R                   S   R                  $ r…   rÚ   r‡   s    r@   rÛ   ÚIdentity._eval_is_integer@  s   € Ø�y‰y˜‰|×&Ñ&Ð&rB   c                 ó†   • [        U R                  S   R                  =(       a    U R                  S   R                  5      $ r…   )rÅ   rE   re  rf  r‡   s    r@   re  ÚIdentity.is_numberC  s0   € ô
 �D—I‘I˜a‘L×*Ñ*×I¨t¯y©y¸©|×/IÑ/IÓJÐJrB   c                 óF   • [        U R                  S   R                  5      $ r…   )rÅ   rE   rf  r‡   s    r@   rf  ÚIdentity.is_comparableJ  s   € ô �D—I‘I˜a‘L×.Ñ.Ó/Ð/rB   c                 ó    • U R                   S   $ r…   r†   )rˆ   Úhintss     r@   Ú_eval_expand_identityÚIdentity._eval_expand_identityP  r‹   rB   c                 ó2   • [        U R                  S   5      $ r…   )rc   rE   r‡   s    r@   Ú__int__ÚIdentity.__int__U  s   € ä�4—9‘9˜Q‘<Ó Ð rB   c                 ó  • U R                   S   n[        U[        5      (       a  [        R                  " U5      n[        U[        R
                  5      (       d  gUR                  (       a"  UR                  (       a  UR                  (       d  gUR                  (       a"  UR                  (       a  UR                  (       d  gU" X15      (       a  [        R                  R                  $ [        R                  R                  $ )zŒ
Fast path for comparing wrapped numeric atomics against other numeric atomics.
Keep compound expressions on SymPy's default symbolic path.
r   N)rE   r:   rc   r;   rd   r   Úis_Atomre  rf  r	   ræ   rç   )rˆ   rS  Úoprh   s       r@   Ú_identity_atom_compareÚIdentity._identity_atom_compareY  s“   € ð
 �i‰i˜‰lˆÜ�eœS×!Ñ!Ü—M’M %Ó(ˆEÜ˜%¤§¡×,Ñ,ØØ—— §§°#×2C×2CØØ—— %§/§/°e×6I×6IØÙ! #Ÿ~™~Œu�w‰w�|‰|Ð@´5·7±7·=±=Ð@rB   c                 óR   >• U R                  US 5      nUb  U$ [        TU ]	  U5      $ )Nc                 ó
   • X:¬  $ rH   r[   ©rL   Úbs     r@   rT  Ú!Identity.__ge__.<locals>.<lambda>j  ó   € ¸aºfrB   )rw  ÚsuperÚ__ge__©rˆ   rS  ÚoutÚ	__class__s      €r@   r€  ÚIdentity.__ge__i  ó.   ø€ Ø×)Ñ)¨%Ñ1DÓEˆØ‘oˆsÐ@¬5©7©>¸%Ó+@Ð@rB   c                 óR   >• U R                  US 5      nUb  U$ [        TU ]	  U5      $ )Nc                 ó
   • X:„  $ rH   r[   r{  s     r@   rT  Ú!Identity.__gt__.<locals>.<lambda>n  ó   € ¸aºerB   )rw  r  Ú__gt__r�  s      €r@   rŠ  ÚIdentity.__gt__m  ó.   ø€ Ø×)Ñ)¨%Ñ1CÓDˆØ‘oˆsÐ@¬5©7©>¸%Ó+@Ð@rB   c                 óR   >• U R                  US 5      nUb  U$ [        TU ]	  U5      $ )Nc                 ó
   • X:*  $ rH   r[   r{  s     r@   rT  Ú!Identity.__le__.<locals>.<lambda>r  r~  rB   )rw  r  Ú__le__r�  s      €r@   r�  ÚIdentity.__le__q  r…  rB   c                 óR   >• U R                  US 5      nUb  U$ [        TU ]	  U5      $ )Nc                 ó
   • X:  $ rH   r[   r{  s     r@   rT  Ú!Identity.__lt__.<locals>.<lambda>v  r‰  rB   )rw  r  Ú__lt__r�  s      €r@   r•  ÚIdentity.__lt__u  rŒ  rB   c                 ó2   • [        U R                  S   5      $ r…   )rQ   rE   r‡   s    r@   Ú	__float__ÚIdentity.__float__y  s   € ä�T—Y‘Y˜q‘\Ó"Ð"rB   r[   )r¾   r¿   rÀ   rÁ   rÂ   r‚   rÉ   r`  r˜   rñ  rÛ   rÆ   re  rf  ro  rc   rr  rw  r€  rŠ  r�  r•  rQ   r˜  rË   Ú__classcell__)rƒ  s   @r@   r5   r5   ,  s›   ø† ñð €Jð+˜#ô +ð4 Cô 4ò
$ò'ð ñKó ðKð ñ0ó ð0ò
ð
!˜ô !òAõ AõAõAõAð#˜5÷ #ò #rB   r5   c                 ób   ^ •  " U 4S jS[         R                  5      nST -   nX!l        X!l        U$ )Nc                   ó:   >• \ rS rSrSr Y r\r\U 4S j5       r	Sr
g)Ú+make_opaque_unary_fn.<locals>.OpaqueUnaryFni  a¼  
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                 ó„  >• [        U[        R                  [        R                  45      (       a4   [        R                  " [	        [
        T5      " [        U5      5      5      $ U[        R                  [        R                  * [        R                  [        R                  * [        [        * 4;   ag  U[        L a  [        R                  nU[        * L a  [        R                  * nTS:X  a  [        R                  " US5      $ [	        [        T5      " U5      $ g ! [         a    [	        [        T5      " U5      s $ f = f)NÚlog2r9   )r:   r;   rd   rI   r8  rf   rQ   ÚOverflowErrorr  r$  r   Úlog)r¯   rL   Únames     €r@   r·   Ú0make_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¨›?Ð*Üœu dÔ+¨AÓ.Ð.Øøô %ó 3Ü"¤5¨$Ô/°Ó2Ò2ð3ús   ²2D Ä D?Ä>D?r[   N)r¾   r¿   rÀ   rÁ   rÂ   Ú_torch_handler_nameÚmake_opaque_unary_fnÚ_torch_unpicklerrÊ   r·   rË   )r¢  s   €r@   ÚOpaqueUnaryFnr�    s(   ø† ñ	ñ #ÐØ/Ðà	ô	ó 
ó	rB   r§  ÚOpaqueUnaryFn_)r;   ÚFunctionr¾   rÀ   )r¢  r§  Únms   `  r@   r¥  r¥  ~  s2   ø€ ÷$œŸ™ô $ðL 
˜DÑ	 €BØÔØ!#ÔàÐrB   ÚsqrtÚcosÚcoshÚsinÚsinhÚtanÚtanhÚasinÚacosÚatanr  r¡  ÚasinhrŸ  c                 óæ   ^ ^^• T S:X  a
  [         S   mO.T S:X  a
  [         S   mOT S:X  a
  [         S   mO[        ST  35      e " U UU4S jS	[        R                  5      nS
T -   nX2l        X2l        U$ )NÚbitwise_andÚ
BitwiseAndÚbitwise_xorÚ
BitwiseXorÚ
bitwise_orÚ	BitwiseOrzunrecognized c                   óh   >• \ rS rSr%  Y r Yr\\S'   \R                  " \
 YS9r\U4S j5       rSrg)Ú)make_opaque_bitwise_fn.<locals>.BitwiseFniÇ  r‚   )Úreal_op_namec                 óD  >• UR                   (       a'  UR                   (       a  [        [        T5      " X5      $ UR                   (       a  [        R                  " U(       a  SOS5      nUR                   (       a  [        R                  " U(       a  SOS5      n[        U[        R                  [        45      (       ab  [        U[        R                  [        45      (       a=  [        R                  " [        [        T5      " [        U5      [        U5      5      5      $ g )Nr   r   )rï   r8  rB  r;   rd   r:   rc   )r¯   rL   r|  r¿  s      €r@   r·   Ú.make_opaque_bitwise_fn.<locals>.BitwiseFn.evalÎ  s¯   ø€ à�|�| §§Üœx¨Ô6°qÓ<Ð<Ø�|�|Ü—M’M¦q¡!¨aÓ0�Ø�|�|Ü—M’M¦q¡!¨aÓ0�Ü˜!œeŸm™m¬SÐ1×2Ñ2´zØ”E—M‘M¤3Ð'÷8ñ 8ô —}’}¤W¬X°|Ô%DÄSÈÃVÌSÐQRËVÓ%TÓUÐUØrB   r[   N)r¾   r¿   rÀ   rÁ   r¤  r‚   rc   rÄ   rU   ÚpartialÚmake_opaque_bitwise_fnr¦  rÊ   r·   rË   )r¢  Úprecr¿  s   €€€r@   Ú	BitwiseFnr¾  Ç  s=   ø‡ Ù"ÐÙˆ
�CÓØ$×,Ò,Ø"±ñ
Ðð 
ô	ó 
ó	rB   rÅ  Ú
BitwiseFn_)r   r  r;   r©  r¾   rÀ   )r¢  r¿  rÅ  rª  rÄ  s   ``  @r@   rÃ  rÃ  ½  s~   ú€ Øˆ}ÓÜ˜,Ñ'‰Ø	�Ó	Ü˜,Ñ'‰Ø	�Ó	Ü˜+Ñ&‰ä˜}¨T¨FÐ3Ó4Ð4÷ñ ”E—N‘Nô ð* 
˜Ñ	€BØÔØÔàÐrB   r·  Úand_r»  Úor_r¹  Úxor)erU   rf   rB  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   Ú__all__rÅ   rA   rI   rW   r\   rw   r|   r©  r    r!   r"   r#   r$   r%   r&   r'   r(   r+   r,   r!  rJ  rI  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_log2rÃ  ÚBitwiseFn_bitwise_andÚBitwiseFn_bitwise_orÚBitwiseFn_bitwise_xorr[   rB   r@   Ú<module>rë     s‹  ðã Û Û Û 
Ý $ß 8Ñ 8ß 2ã Ý Ý Ý  Ý +ß 7Ñ 7Ý +ß 9Ý &Ý %Ý 0Ý *å ,ç (ö Ý(ñ ˆT˜Ñ'€Ù�5Ó€òB€ð4	 u§z¡zð 	°dô 	ðØ�˜‘�˜rÐ!Ñ"ðàˆv�c‰{ˆm˜R %§+¡+Ñ-Ð-Ñ.ôð ��t‘ð   t¡ð °°t±ô ð)˜5Ÿ;™;ð )¨5¯;©;ð )¸5¿;¹;ô )ô||ˆu�~‰~ô |ô~@<�e—n‘nô @<ôFˆE�N‰Nô ô>BD�—‘ô BDôL3ˆ%�.‰.ô 3ôlˆxô ô!�—‘ô !ô&<�—‘ô <ô;ˆe�n‰nô ;ô ˆU�^‰^ô ô(ˆU�^‰^ô (ôw?��yô w?ôt;ˆ*�kô ;ô&:ˆ*�kô :ò&'òô4!�5—>‘>ô !ô6:ˆu�~‰~ô :ô,=�5—>‘>ô =ô2/�—‘ô /ôF9¨¯©ô 9ôz:�5—>‘>ô :ô<�—‘ô <ô:�—‘ô :ô<C�5—>‘>ô Côˆe�n‰nô ô O#ˆu�~‰~ô O#òd+ñ^ *¨&Ó1Ð Ù(¨Ó/Ð Ù)¨&Ó1Ð Ù(¨Ó/Ð Ù)¨&Ó1Ð Ù(¨Ó/Ð Ù)¨&Ó1Ð Ù)¨&Ó1Ð Ù)¨&Ó1Ð Ù)¨&Ó1Ð Ù(¨Ó/Ð Ù(¨Ó/Ð Ù*¨7Ó3Ð Ù)¨&Ó1Ð ò#ñL /¨}¸fÓEÐ Ù-¨l¸EÓBÐ Ù.¨}¸eÓDÑ rB   