+
    i                    T   ^ RI Ht ^ RIHtHt ^ RIHt ^ RIHt ^ RI	H
t
 ^RIHt ^RIHt ^RIHtHtHt ^R	IHt ^R
IHtHt ^RIHt ^RIHtHt ^RIHt ^RIH t  ^ RI!H"t"H#t# ]'       d   ^ RI$H%t% ^ RI&H't' R t(R t)R t* ! R R]]4      t+]! R4      t,^RI-H.t.H/t/H0t0 ^RI1H2t2 R# )    )annotations)TYPE_CHECKINGClassVar)defaultdict)reduce)
attrgetter)_args_sortkey)global_parameters)_fuzzy_groupfuzzy_or	fuzzy_not)S)AssocOpAssocOpDispatcher)cacheit)ilcmigcd)Expr)UndefinedKind)is_sequencesift)NumberOrderc                    \        R  V P                   4       4      p\        V P                  4      V,
          pW!8  d   R# W!8  d   R# \        V P	                  4       V ) P	                  4       8  4      # )c              3  V   "   T F  pVP                  4       '       g   K  ^x  K!  	  R# 5i   N)could_extract_minus_sign).0is   & L/var/www/html/photoedit/myenv/lib/python3.14/site-packages/sympy/core/add.py	<genexpr>,_could_extract_minus_sign.<locals>.<genexpr>   s#      )9a%%' 9s   )
)FT)sumargslenboolsort_key)exprnegative_argspositive_argss   &  r"   _could_extract_minus_signr-      se      )499 ) )M		N]2M$		& D5"2"2"4455    c                2    V P                  \        R 7       R# )keyN)sortr	   )r&   s   &r"   _addsortr3   (   s    II-I r.   c                    \        V 4      p . p\        P                  pV '       do   V P                  4       pVP                  '       d   V P                  VP                  4       KG  VP                  '       d   W#,          pKc  VP                  V4       Kv  \        V4       V'       d   VP                  ^ V4       \        P                  V4      # )aA  Return a well-formed unevaluated Add: Numbers are collected and
put in slot 0 and args are sorted. Use this when args have changed
but you still want to return an unevaluated Add.

Examples
========

>>> from sympy.core.add import _unevaluated_Add as uAdd
>>> from sympy import S, Add
>>> from sympy.abc import x, y
>>> a = uAdd(*[S(1.0), x, S(2)])
>>> a.args[0]
3.00000000000000
>>> a.args[1]
x

Beyond the Number being in slot 0, there is no other assurance of
order for the arguments since they are hash sorted. So, for testing
purposes, output produced by this in some other function can only
be tested against the output of this function or as one of several
options:

>>> opts = (Add(x, y, evaluate=False), Add(y, x, evaluate=False))
>>> a = uAdd(x, y)
>>> assert a in opts and a == uAdd(x, y)
>>> uAdd(x + 1, x + 2)
x + x + 3
)listr   Zeropopis_Addextendr&   	is_Numberappendr3   insertAdd
_from_args)r&   newargscoas   *   r"   _unevaluated_AddrB   -   s    : :DG	
B
HHJ888 KK[[[GBNN1W	q">>'""r.   c                  P  a  ] tR t^]t$ RtRBtRt]tR]	R&   ]
'       d   RR/R R llt]R R	 l4       t]R
 R l4       t]R 4       t]R 4       tR t]R 4       tRCR R lltR t]R 4       tRDR ltR tRER lt]R 4       t]R 4       tR R ltR tR t R t!R t"R t#R  t$R! t%R" t&R# t'R$ t(R% t)R& t*R' t+R( t,R) t-R* t.R+ t/R, t0R- t1R. t2V 3R/ lt3R0 t4R1 t5V 3R2 lt6R3 t7R4 t8R5 t9]RFR6 l4       t:RGR7 lt;R8 t<R9 t=R: t>R; t?R< t@RHR= ltA]R> 4       tBR? tC]R@ 4       tDV 3RA ltERBtFV ;tG# )Ir=   a  
Expression representing addition operation for algebraic group.

.. deprecated:: 1.7

   Using arguments that aren't subclasses of :class:`~.Expr` in core
   operators (:class:`~.Mul`, :class:`~.Add`, and :class:`~.Pow`) is
   deprecated. See :ref:`non-expr-args-deprecated` for details.

Every argument of ``Add()`` must be ``Expr``. Infix operator ``+``
on most scalar objects in SymPy calls this class.

Another use of ``Add()`` is to represent the structure of abstract
addition so that its arguments can be substituted to return different
class. Refer to examples section for this.

``Add()`` evaluates the argument unless ``evaluate=False`` is passed.
The evaluation logic includes:

1. Flattening
    ``Add(x, Add(y, z))`` -> ``Add(x, y, z)``

2. Identity removing
    ``Add(x, 0, y)`` -> ``Add(x, y)``

3. Coefficient collecting by ``.as_coeff_Mul()``
    ``Add(x, 2*x)`` -> ``Mul(3, x)``

4. Term sorting
    ``Add(y, x, 2)`` -> ``Add(2, x, y)``

If no argument is passed, identity element 0 is returned. If single
element is passed, that element is returned.

Note that ``Add(*args)`` is more efficient than ``sum(args)`` because
it flattens the arguments. ``sum(a, b, c, ...)`` recursively adds the
arguments as ``a + (b + (c + ...))``, which has quadratic complexity.
On the other hand, ``Add(a, b, c, d)`` does not assume nested
structure, making the complexity linear.

Since addition is group operation, every argument should have the
same :obj:`sympy.core.kind.Kind()`.

Examples
========

>>> from sympy import Add, I
>>> from sympy.abc import x, y
>>> Add(x, 1)
x + 1
>>> Add(x, x)
2*x
>>> 2*x**2 + 3*x + I*y + 2*y + 2*x/5 + 1.0*y + 1
2*x**2 + 17*x/5 + 3.0*y + I*y + 1

If ``evaluate=False`` is passed, result is not evaluated.

>>> Add(1, 2, evaluate=False)
1 + 2
>>> Add(x, x, evaluate=False)
x + x

``Add()`` also represents the general structure of addition operation.

>>> from sympy import MatrixSymbol
>>> A,B = MatrixSymbol('A', 2,2), MatrixSymbol('B', 2,2)
>>> expr = Add(x,y).subs({x:A, y:B})
>>> expr
A + B
>>> type(expr)
<class 'sympy.matrices.expressions.matadd.MatAdd'>

Note that the printers do not display in args order.

>>> Add(x, 1)
x + 1
>>> Add(x, 1).args
(1, x)

See Also
========

MatAdd

TzClassVar[Expr]identityevaluatec               $    V ^8  d   QhRRRRRR/# )   r&   zExpr | complexrE   r(   returnr    )formats   "r"   __annotate__Add.__annotate__   s!     	 	 	$ 	 	r.   c               	    R # NrI   )clsrE   r&   s   &$*r"   __new__Add.__new__   s    r.   c                   V ^8  d   QhRR/# )rG   rH   ztuple[Expr, ...]rI   )rJ   s   "r"   rK   rL      s     	 	* 	r.   c                	    R # rN   rI   selfs   &r"   r&   Add.args   s    r.   c                    V ^8  d   QhRRRR/# )rG   seqz
list[Expr]rH   z#tuple[list[Expr], list[Expr], None]rI   )rJ   s   "r"   rK   rL      s     P$ P$* P$)L P$r.   c           	       aa ^ RI Hp ^ RIHp ^ RIHpHp Rp\        V4      ^8X  d   Vw  rxVP                  '       d   YrVP                  '       d   VP                  '       d   Wx.. R3pV'       dW   \        ;QJ d#    R V^ ,           4       F  '       d   K   RM	  RM! R V^ ,           4       4      '       d   V# . V^ ,          R3# / p	\        P                  p
. p. pV EF  oSP                  '       d   SP                  P                  '       d   K4  \         ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       d   Kv  V Uu. uF  pSP#                  V4      '       d   K  VNK   	  ppS.V,           pK  SP$                  '       d   S\        P&                  J g%   V
\        P(                  J d/   SP*                  RJ d   V'       g   \        P&                  .. R3u # V
P$                  '       g   \-        W4      '       d<   V
S,          p
V
\        P&                  J d   V'       g   \        P&                  .. R3u # EKu  \-        SV4      '       d   SP/                  V
4      p
EK  \-        SV4      '       d   VP1                  S4       EK  \-        SV4      '       d   V! SV
4      P3                  RR	7      p
EK  S\        P(                  J dB   V
P*                  RJ d   V'       g   \        P&                  .. R3u # \        P(                  p
EKD  SP4                  '       d!   SP6                  pVP9                  V4       EKv  SP                  '       d   SP;                  4       w  ppMSP<                  '       d   SP?                  4       w  ppVP$                  '       dR   VP@                  '       g%   VP                  '       d.   VPB                  '       d   VP1                  VV,          4       EK$  \        PD                  SppM\        PD                  pSpVV	9   dU   V	V;;,          V,          uu&   V	V,          \        P&                  J d"   V'       g   \        P&                  .. R3u # EK  EK  WV&   EK  	  . pRpV	PG                  4        F  w  ppVP                  '       d   K  V\        PD                  J d   VP1                  V4       MVP                  '       d5   VPH                  ! V3VP6                  ,           !  pVP1                  V4       MKVP4                  '       d   VP1                  \K        VVRR
7      4       MVP1                  \K        VV4      4       T;'       g    VPL                  '       * pK  	  V
\        PN                  J d;   V Uu. uF-  pVPP                  '       d   K  VPR                  '       d   K+  VNK/  	  ppMMV
\        PT                  J d:   V Uu. uF-  pVPV                  '       d   K  VPR                  '       d   K+  VNK/  	  ppV
\        P(                  J d3   V Uu. uF&  qP*                  '       d   VPX                  e   K$  VNK(  	  ppV'       d   . pV FV  o\         ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       d   KE  VP1                  S4       KX  	  VV,           pV F,  oSP#                  V
4      '       g   K  \        P                  p
 M	  \[        V4       V
\        P                  Jd   VP]                  ^ V
4       V'       d   VV,          pRpV'       d   . VR3# V. R3# u upi u upi u upi u upi )a=  
Takes the sequence "seq" of nested Adds and returns a flatten list.

Returns: (commutative_part, noncommutative_part, order_symbols)

Applies associativity, all terms are commutable with respect to
addition.

NB: the removal of 0 is already handled by AssocOp.__new__

See Also
========

sympy.core.mul.Mul.flatten

)AccumBounds)
MatrixExpr)TensExprTensAddNc              3  8   "   T F  qP                   x  K  	  R # 5irN   is_commutative)r    ss   & r"   r#   Add.flatten.<locals>.<genexpr>   s     7A''   FTc              3  D   <"   T F  qP                  S4      x  K  	  R # 5irN   contains)r    o1os   & r"   r#   rb      s     >"{{1~~    deeprE   c              3  D   <"   T F  qP                  S4      x  K  	  R # 5irN   re   )r    rh   ts   & r"   r#   rb   ~  s     @-Q::a==-ri   )/!sympy.calculus.accumulationboundsrZ   sympy.matrices.expressionsr[   sympy.tensor.tensorr\   r]   r'   is_Rationalis_Mulallr   r6   is_Orderr*   is_zeroanyrf   r:   NaNComplexInfinity	is_finite
isinstance__add__r;   doitr8   r&   r9   as_coeff_Mulis_Powas_base_exp
is_Integeris_negativeOneitems_new_rawargsMulr`   Infinityis_extended_nonnegativeis_realNegativeInfinityis_extended_nonpositiveis_extended_realr3   r<   )rO   rX   rZ   r[   r\   r]   rvrA   btermscoefforder_factorsextrarg   o_argscra   enewseqnoncommutativecsfnewseq2rh   rn   s   &&                     @@r"   flattenAdd.flatten   s   $ 	B99s8q=DA}}}1}}}888T)B37A73337A777I2a5$& %' ff%'"$A zzz66>>>3>>333>>>>.; Rm1::b>m R!"m 3 J%1+<+<"<u,eEE7B,,???j&D&DQJE~e !wD00A{++		%(Az**QAx((5)..E.:a'''??e+EEE7B,,)) +,66

6" ~~'1 }}1;;;ALLL$%MMMammmJJq!t$uua11 EE EzaA8quu$UEE7B,, .3$ ag n KKMDAqyyyaeea  888 1$-9BMM"%XXXMM#aU";< MM#a),+CC13C3C/CN1 "6 AJJ!'XA0I0IaQYYaaFXFa(((!'XA0I0IaQYYaaFXA%%% "( QA010B0B aF Q Gs@-@sss@-@@@NN1%  },F"::e$$FFE # 	 MM!U#eOF!N vt##2t##w !SZ Y YQs<   ]*9]**]/]/]/8]4]4%]4!]9+]9c                	     ^^V P                   3# )   )__name__)rO   s   &r"   	class_keyAdd.class_key  s    !S\\!!r.   c                	    \        R 4      p\        WP                  4      p\        V4      p\	        V4      ^8w  d	   \
        pV# Vw  pV# )kind)r   mapr&   	frozensetr'   r   )rU   kkindsresults   &   r"   r   Add.kind  sK    vAyy!% u:? #F  GFr.   c                	    \        V 4      # rN   )r-   rT   s   &r"   r   Add.could_extract_minus_sign  s    (..r.   c                b  a S'       d:   \        V P                  V3R lRR7      w  r#V P                  ! V!  \        V4      3# V P                  ^ ,          P	                  4       w  rEV\
        P                  Jd   WEV P                  R,          ,           3# \
        P                  V P                  3# )a  
Returns a tuple (coeff, args) where self is treated as an Add and coeff
is the Number term and args is a tuple of all other terms.

Examples
========

>>> from sympy.abc import x
>>> (7 + 3*x).as_coeff_add()
(7, (3*x,))
>>> (7*x).as_coeff_add()
(0, (7*x,))
c                $   < V P                   ! S!  # rN   )has_free)xdepss   &r"   <lambda>"Add.as_coeff_add.<locals>.<lambda>  s    qzz4/@r.   T)binaryr   NN)r   r&   r   tupleas_coeff_addr   r6   )rU   r   l1l2r   notrats   &j    r"   r   Add.as_coeff_add  s     $))%@NFB$$b)5944		!113499R=000vvtyy  r.   c                   V ^8  d   QhRR/# )rG   rH   ztuple[Number, Expr]rI   )rJ   s   "r"   rK   rL     s      9L r.   c                    V P                   ^ ,          V P                   R,          rCVP                  '       d	   V'       d   VP                  '       d   W0P                  ! V!  3# \        P
                  V 3# )z5
Efficiently extract the coefficient of a summation.
r   )r&   r:   rr   r   r   r6   )rU   rationalr   r   r&   s   &&&  r"   as_coeff_AddAdd.as_coeff_Add  sS     iilDIIbMt???8u/@/@/@++T222vvt|r.   c                	   ^RI Hp ^RIHp \	        V P
                  4      ^8X  Ed@   \        ;QJ d&    R V P
                   4       F  '       g   K   RM	  RM! R V P
                   4       4      '       d   VP                  RJ d   V! V\        P                  4      RJ d   V P
                  w  rEVP                  \        P                  4      '       d   YTrTVP                  \        P                  4      pV'       di   VP                  '       dW   VP                  '       dE   VP                  '       d   \        P                  # VP                  '       d   \        P                   # R# VP"                  '       EdV   V P$                  '       EdA   V! V 4      pV'       Ed.   Vw  rVP&                  ^8X  d   ^ RIHp
 V
! V^,          V	^,          ,           4      pVP"                  '       d   ^RIHp ^ R	IHp ^R
IHp V
! V! W,
          ^,          4      4      VP8                  ,          pW! W,           \;        V	4      ,          V! V	4      \        P                  ,          ,           VP8                  ,          4      ,          # R# VR8X  dD   \=        W\        P                  ,          ,
          ^V^,          V	^,          ,           ,          4      # R# R# R# R# )r   )pure_complex)is_eqc              3  8   "   T F  qP                   x  K  	  R # 5irN   )is_infinite)r    _s   & r"   r#   "Add._eval_power.<locals>.<genexpr>  s     &Hi}}irc   TFN)sqrt)factor_terms)sign)expand_multinomial)evalfr   
relationalr   r'   r&   rw   rv   r   r   r   ImaginaryUnitr   is_extended_negativer6   is_extended_positivery   rr   	is_numberq(sympy.functions.elementary.miscellaneousr   	exprtoolsr   $sympy.functions.elementary.complexesr   functionr   pabs_unevaluated_Mul)rU   exptr   r   rA   r   icorirr!   r   Dr   r   r   roots   &&              r"   _eval_powerAdd._eval_power  s   '%tyy>Q33&Hdii&H333&Hdii&H#H#H||u$tQUU);u)Dyy771??++qggaoo.3///A4F4F4F000 vv000 000d#Br66Q;MQTAqD[)A}}};M@#L!%$;<dffD#$6UCFNT!WQ__-DDtvv8N %O  O O % RZ+aoo--1a4!Q$;) )    !/r.   c                	|    V P                   ! V P                   Uu. uF  q"P                  V4      NK  	  up!  # u upi rN   )funcr&   diff)rU   ra   rA   s   && r"   _eval_derivativeAdd._eval_derivative  s-    yydii8i66!9i8998s   9c           
     	    V P                    Uu. uF  qUP                  WW4R 7      NK  	  ppV P                  ! V!  # u upi )nlogxcdir)r&   nseriesr   )rU   r   r   r   r   rn   r   s   &&&&&  r"   _eval_nseriesAdd._eval_nseries  s:    BF))L)Q18)Lyy%   Ms   <c                	    V P                  4       w  r4\        V4      ^8X  d    V^ ,          P                  W,
          V4      # R# r   )r   r'   matches)rU   r*   	repl_dictr   r   s   &&&  r"   _matches_simpleAdd._matches_simple  s9    ((*u:?8##DL)<<r.   c                	&    V P                  WV4      # rN   )_matches_commutative)rU   r*   r   olds   &&&&r"   r   Add.matches  s    ((#>>r.   c                v  a ^ RI Hp \        P                  \        P                  3pV P
                  ! V!  '       g   VP
                  ! V!  '       d   ^RIHp V! R4      o\        P                  S\        P                  S) /pVP                  4        UUu/ uF  w  rgWvbK	  	  pppV P                  V4      VP                  V4      ,
          p	V	P                  S4      '       d   V	P                  V3R lR 4      p	V	P                  V4      p
MW,
          p
V! V
4      pVP                  '       d   V# T
# u uppi )zX
Returns lhs - rhs, but treats oo like a symbol so oo - oo
returns 0, instead of a nan.
)signsimp)Dummyooc                H   < V P                   ;'       d    V P                  SJ # rN   )r   base)r   r   s   &r"   r   &Add._combine_inverse.<locals>.<lambda>  s    ahh77166R<7r.   c                    V P                   # rN   )r   )r   s   &r"   r   r     s    affr.   )sympy.simplify.simplifyr   r   r   r   hassymbolr   r   xreplacereplacer:   )lhsrhsr   infr   repsr   virepseqr   srvr   s   &&          @r"   _combine_inverseAdd._combine_inverse  s     	5zz1--.77C==CGGSMM%tB

B""RC)D '+jjl3ldaQTlE3d#cll4&88BvvbzzZZ7$& U#BBrlmmms++ 4s   D5c                j    V P                   ^ ,          V P                  ! V P                   R,          !  3# )a  Return head and tail of self.

This is the most efficient way to get the head and tail of an
expression.

- if you want only the head, use self.args[0];
- if you want to process the arguments of the tail then use
  self.as_coef_add() which gives the head and a tuple containing
  the arguments of the tail when treated as an Add.
- if you want the coefficient when self is treated as a Mul
  then use self.as_coeff_mul()[0]

>>> from sympy.abc import x, y
>>> (3*x - 2*y + 5).as_two_terms()
(5, 3*x - 2*y)
r   )r&   r   rT   s   &r"   as_two_termsAdd.as_two_terms"  s*    $ yy|T..		">>>r.   c                   V ^8  d   QhRR/# )rG   rH   ztuple[Expr, Expr]rI   )rJ   s   "r"   rK   rL   6  s     -: -: 1 -:r.   c                   V P                  4       w  r\        V\        4      '       g   \        WRR7      P	                  4       # VP	                  4       w  r4\        \        4      pVP                   F,  pVP	                  4       w  rxWX,          P                  V4       K.  	  \        V4      ^8X  dG   VP                  4       w  rV P                  ! V
 Uu. uF  p\        W74      NK  	  up!  \        WI4      3# VP                  4        U	U
u/ uF/  w  rT	\        V
4      ^8  d   V P                  ! V
!  MV
^ ,          bK1  	  pp	p
\        \        VP                  4       4      !   Uu. uF  p\        V4      NK  	  upw  rV P                  ! \!        \        V4      4       Uu. uF-  p\        VRV W,          .,           W^,           R ,           !  NK/  	  up!  \        V!  r\        W:4      \        WI4      3# u upi u up
p	i u upi u upi )a  
Decomposes an expression to its numerator part and its
denominator part.

Examples
========

>>> from sympy.abc import x, y, z
>>> (x*y/z).as_numer_denom()
(x*y, z)
>>> (x*(y + 1)/y**7).as_numer_denom()
(x*(y + 1), y**7)

See Also
========

sympy.core.expr.Expr.as_numer_denom
Frl   N)	primitiver{   r=   r   as_numer_denomr   r5   r&   r;   r'   popitemr   _keep_coeffr   zipiterrange)rU   contentr*   ncondconndr   nididr   nd2r!   denomsnumerss   &              r"   r  Add.as_numer_denom6  s   ( ($$$wu5DDFF++-
 A%%'FBFMM" 
 r7a<::<DA99234!B+d'!467B47KL L EGHHJOJDAq3q6A:$))Q-1Q47JO ,/SYY[0A+BC+Ba$q'+BCyy!#f+.0.q vyk!9Fq56N!JL.0 125v,  4#[%999 5 P D0s   G5
5G:$H 3Hc                	   a \         ;QJ d)    V3R  lV P                   4       F  '       d   K   R# 	  R# ! V3R  lV P                   4       4      # )c              3  D   <"   T F  qP                  S4      x  K  	  R # 5irN   )_eval_is_polynomialr    termsymss   & r"   r#   *Add._eval_is_polynomial.<locals>.<genexpr>f  s     Hid++D11iri   FTrt   r&   rU   r+  s   &fr"   r(  Add._eval_is_polynomiale  s4    sHdiiHssHsHsHdiiHHHr.   c                	   a \         ;QJ d)    V3R  lV P                   4       F  '       d   K   R# 	  R# ! V3R  lV P                   4       4      # )c              3  D   <"   T F  qP                  S4      x  K  	  R # 5irN   )_eval_is_rational_functionr)  s   & r"   r#   1Add._eval_is_rational_function.<locals>.<genexpr>i  s     OYT22488Yri   FTr-  r.  s   &fr"   r2  Add._eval_is_rational_functionh  s4    sOTYYOssOsOsOTYYOOOr.   c                	J   aa \        VV3R  lV P                   4       RR7      # )c              3  F   <"   T F  qP                  SS4      x  K  	  R # 5irN   )is_meromorphic)r    argrA   r   s   & r"   r#   +Add._eval_is_meromorphic.<locals>.<genexpr>l  s     K#//155s   !T
quick_exitr   r&   )rU   r   rA   s   &ffr"   _eval_is_meromorphicAdd._eval_is_meromorphick  s    KK'+- 	-r.   c                	   a \         ;QJ d)    V3R  lV P                   4       F  '       d   K   R# 	  R# ! V3R  lV P                   4       4      # )c              3  D   <"   T F  qP                  S4      x  K  	  R # 5irN   )_eval_is_algebraic_exprr)  s   & r"   r#   .Add._eval_is_algebraic_expr.<locals>.<genexpr>p  s     L)$//55)ri   FTr-  r.  s   &fr"   rA  Add._eval_is_algebraic_expro  s4    sL$))LssLsLsL$))LLLr.   c                	>    \        R  V P                   4       RR7      # )c              3  8   "   T F  qP                   x  K  	  R # 5irN   )r   r    rA   s   & r"   r#   Add.<lambda>.<locals>.<genexpr>t  s     &IqIrc   Tr:  r<  rT   s   &r"   r   Add.<lambda>s  s    &DII&4"9r.   c                	>    \        R  V P                   4       RR7      # )c              3  8   "   T F  qP                   x  K  	  R # 5irN   )r   rF  s   & r"   r#   rG  v       /Y		Yrc   Tr:  r<  rT   s   &r"   r   rH  u      ,/TYY/D+Br.   c                	>    \        R  V P                   4       RR7      # )c              3  8   "   T F  qP                   x  K  	  R # 5irN   )
is_complexrF  s   & r"   r#   rG  x       )y!yrc   Tr:  r<  rT   s   &r"   r   rH  w      L)tyy)d%<r.   c                	>    \        R  V P                   4       RR7      # )c              3  8   "   T F  qP                   x  K  	  R # 5irN   )is_antihermitianrF  s   & r"   r#   rG  z  rK  rc   Tr:  r<  rT   s   &r"   r   rH  y  rL  r.   c                	>    \        R  V P                   4       RR7      # )c              3  8   "   T F  qP                   x  K  	  R # 5irN   )rz   rF  s   & r"   r#   rG  |  s     (iirc   Tr:  r<  rT   s   &r"   r   rH  {  s    <(dii(T$;r.   c                	>    \        R  V P                   4       RR7      # )c              3  8   "   T F  qP                   x  K  	  R # 5irN   )is_hermitianrF  s   & r"   r#   rG  ~       +Arc   Tr:  r<  rT   s   &r"   r   rH  }      l++'>r.   c                	>    \        R  V P                   4       RR7      # )c              3  8   "   T F  qP                   x  K  	  R # 5irN   )
is_integerrF  s   & r"   r#   rG    rP  rc   Tr:  r<  rT   s   &r"   r   rH    rQ  r.   c                	>    \        R  V P                   4       RR7      # )c              3  8   "   T F  qP                   x  K  	  R # 5irN   is_rationalrF  s   & r"   r#   rG    s     *	1	rc   Tr:  r<  rT   s   &r"   r   rH    s    \*		*t&=r.   c                	>    \        R  V P                   4       RR7      # )c              3  8   "   T F  qP                   x  K  	  R # 5irN   )is_algebraicrF  s   & r"   r#   rG    rZ  rc   Tr:  r<  rT   s   &r"   r   rH    r[  r.   c                	:    \        R  V P                   4       4      # )c              3  8   "   T F  qP                   x  K  	  R # 5irN   r_   rF  s   & r"   r#   rG    s      5-"+Q)rc   r<  rT   s   &r"   r   rH    s     5-"&))5- )-r.   c                	|    R pV P                    F)  pVP                  pVf    R# VRJ g   K  VRJ d    R# RpK+  	  V# FNT)r&   r   )rU   sawinfrA   ainfs   &   r"   _eval_is_infiniteAdd._eval_is_infinite  sC    A==D|T>  r.   c                	&   . p. pV P                    EF  pVP                  '       d;   VP                  '       d   K*  VP                  R J d   VP                  V4       KM   R# VP                  '       d)   VP                  V\
        P                  ,          4       K  VP                  '       d   \
        P                  VP                   9   db   VP                  \
        P                  4      w  rEV\
        P                  38X  d(   VP                  '       d   VP                  V) 4       EK   R#  R# 	  V P                  ! V!  pW`8w  dJ   VP                  '       d$   \        V P                  ! V!  P                  4      # VP                  R J d   R # R# R# FN)r&   r   rv   r;   is_imaginaryr   r   rs   as_coeff_mulr   r   )rU   nzim_IrA   r   air   s   &      r"   _eval_is_imaginaryAdd._eval_is_imaginary  s   A!!!999YY%'IIaLAaoo-.aoo7NN1??;	!//++0F0F0FKK'# $ IIrN9yyy D!1!9!9::e# $ r.   c                	j   V P                   R J d   R# . p^ pR p^ pV P                   F  pVP                  '       dD   VP                  '       d   V^,          pK2  VP                  R J d   VP	                  V4       KU   R# VP
                  '       d   V^,          pKu  VP                  '       dp   \        P                  VP                  9   dQ   VP                  \        P                  4      w  rgV\        P                  38X  d   VP                  '       d   RpK   R#  R# 	  V\        V P                  4      8X  d   R# \        V4      ^ \        V P                  4      39   d   R# V P                  ! V!  pVP                  '       d   V'       g   V^ 8X  d   R# V^8X  d   R # VP                  R J d   R # R# ri  )r`   r&   r   rv   r;   rp  rs   r   r   rq  r'   r   )	rU   rr  zim_or_zimrA   r   rt  r   s	   &        r"   _eval_is_zeroAdd._eval_is_zero  sD   %' A!!!999FAYY%'IIaLaaoo7NN1??;	!//++0F0F0F"G# $ DIIr7q#dii.))IIrN99971W 99 r.   c                	    V P                    Uu. uF  qP                  R J d   K  VNK  	  ppV'       g   R# V^ ,          P                  '       d"   V P                  ! VR,          !  P                  # R# u upi )TFr   N)r&   is_evenis_oddr   )rU   r   ls   &  r"   _eval_is_oddAdd._eval_is_odd  s]    		=	1))t*;QQ	=Q4;;;$$ae,444  >s
   A3A3c                	.   V P                    F  pVP                  pV'       dg   \        V P                   4      pVP                  V4       \        ;QJ d    R  V 4       F  '       d   K   RM	  RM! R  V 4       4      '       d    R#  R# Ve   K   R# 	  R# )c              3  <   "   T F  qP                   R J x  K  	  R# 5i)TNra  )r    r   s   & r"   r#   *Add._eval_is_irrational.<locals>.<genexpr>  s     =f}},fs   FTN)r&   is_irrationalr5   removert   )rU   rn   rA   otherss   &   r"   _eval_is_irrationalAdd._eval_is_irrational  si    AAdiia 3=f=333=f===y  r.   c                	    ^ ;rV P                    FF  pVP                  '       d   V'       d    R# ^pK$  VP                  '       d   V'       d    R# ^pKE   R# 	  R# )r   FTN)r&   is_nonnegativeis_nonpositive)rU   nnnprA   s   &   r"   _all_nonneg_or_nonpposAdd._all_nonneg_or_nonppos  sM    A !!!   r.   c                	`  < V P                   '       d   \        SV `	  4       # V P                  4       w  rVP                  '       g   ^RIHp V! V4      pVeu   WA,           pWP8w  d'   VP                  '       d   VP                  '       d   R# \        V P                  4      ^8X  d'   V! V 4      pVe   W@8w  d   VP                  '       d   R# R;p;p;r\        4       p
V P                   Uu. uF  q"P                  '       d   K  VNK  	  ppV'       g   R# V F  pVP                  pVP                  pV'       d7   V
P                  \        WP                  34      4       RV
9   d   RV
9   d    R# V'       d   RpKe  VP                  '       d   RpK{  VP                   '       d   RpK  Vf    R# Rp	K  	  V
'       d#   \        V
4      ^8  d   R# V
P#                  4       # V	'       d   R# V'       g   V'       g   V'       d   R# V'       g   V'       d   R# V'       g   V'       g   R# R# R# u upi r   _monotonic_signNTF)r   super_eval_is_extended_positiver   rv   r   r  r   r   r'   free_symbolssetr&   r   addr   r   r7   )rU   r   rA   r  r	  ra   posnonnegnonposunknown_signsaw_INFr&   isposinfinite	__class__s   &             r"   r  Add._eval_is_extended_positive     >>>7577  "yyy2"A}E9!7!7!7A<U<U<Ut(()Q.'-A}q7M7M7M#/444f4v%9969aII96A**E}}HHe-F-F%GHI7?u'7******L' * 7|a;;= 3CV $E 7   +H+H+c                	   V P                   '       g   V P                  4       w  rVP                  '       g   VP                  '       d   ^RIHp V! V4      pVek   WA,           pWP8w  d   VP                  '       d   R# \        V P                  4      ^8X  d-   V! V 4      pVe   W@8w  d   VP                  '       d   R# R# R# R# R# R# R# R# R# r   r  NT)r   r   rv   r   r   r  r'   r  rU   r   rA   r  r	  ra   s   &     r"   _eval_is_extended_nonnegative!Add._eval_is_extended_nonnegative4      ~~~$$&DA999!:!:!:6#A&=AyQ%>%>%>#4,,-2+D1=QY1;T;T;T#' <UY= 3	 ! ";9 r.   c                	   V P                   '       g   V P                  4       w  rVP                  '       g   VP                  '       d   ^RIHp V! V4      pVek   WA,           pWP8w  d   VP                  '       d   R# \        V P                  4      ^8X  d-   V! V 4      pVe   W@8w  d   VP                  '       d   R# R# R# R# R# R# R# R# R# r  )r   r   rv   r   r   r  r'   r  r  s   &     r"   _eval_is_extended_nonpositive!Add._eval_is_extended_nonpositiveC  r  r.   c                	`  < V P                   '       d   \        SV `	  4       # V P                  4       w  rVP                  '       g   ^RIHp V! V4      pVeu   WA,           pWP8w  d'   VP                  '       d   VP                  '       d   R# \        V P                  4      ^8X  d'   V! V 4      pVe   W@8w  d   VP                  '       d   R# R;p;p;r\        4       p
V P                   Uu. uF  q"P                  '       d   K  VNK  	  ppV'       g   R# V F  pVP                  pVP                  pV'       d7   V
P                  \        WP                  34      4       RV
9   d   RV
9   d    R# V'       d   RpKe  VP                  '       d   RpK{  VP                   '       d   RpK  Vf    R# Rp	K  	  V
'       d#   \        V
4      ^8  d   R# V
P#                  4       # V	'       d   R# V'       g   V'       g   V'       d   R# V'       g   V'       d   R# V'       g   V'       g   R# R# R# u upi r  )r   r  _eval_is_extended_negativer   rv   r   r  r   r   r'   r  r  r&   r   r  r   r   r7   )rU   r   rA   r  r	  ra   negr  r  r  r  r&   isnegr  r  s   &             r"   r  Add._eval_is_extended_negativeR  r  r  c           
     	*   VP                   '       g>   V\        P                  J d(   V) V P                  9   d   V P	                  V) V) /4      # R # V P                  4       w  r4VP                  4       w  rVVP                  '       dF   VP                  '       d4   WF8X  d   V P                  W#V) 4      # WF) 8X  d   V P                  V) W54      # VP                  '       d   VP                  '       g   W58X  Ed   V P                  P                  V4      V P                  P                  V4      r\        V4      \        V4      8  d   \        V4      p	\        V4      p
W8  d=   W,
          pV P                  ! W#V) .V Uu. uF  qP                  W4      NK  	  upO5!  # V P                  P                  V) 4      p\        V4      p
W8  d=   W,
          pV P                  ! V) W5.V Uu. uF  qP                  W4      NK  	  upO5!  # R # R # R # u upi u upi rN   )r8   r   r   r&   r  r   rr   r   	make_argsr'   r  _subs)rU   r   new
coeff_self
terms_self	coeff_old	terms_oldargs_old	args_selfself_setold_setret_setra   s   &&&          r"   
_eval_subsAdd._eval_subs  s   zzzajj cTTYY%6}}sdSD\22!%!2!2!4
"//1	!!!i&;&;&;&yy9*==Z'yy#z==!!!i&;&;&;*"&))"5"5# II//
;  8}s9~-y>h-%&0G99Syj F<C DGq!2G DF F  99..J h-%&0G99cT: F<C DGq!2G DF F & . + !E !Es   <H
%H
c                	    V P                    Uu. uF  qP                  '       d   K  VNK  	  ppV P                  ! V!  # u upi rN   r&   ru   r   rU   rA   r&   s   &  r"   removeOAdd.removeO  s6    9979aJJ97  $'' 8s   ??c                	    V P                    Uu. uF  qP                  '       g   K  VNK  	  ppV'       d   V P                  ! V!  # R # u upi rN   r  r  s   &  r"   getOAdd.getO  s>    9939a

93$$d++  4s
   A	A	c                   ^ RI Hp . p\        \        V4      '       d   TMV.4      pV'       g   ^ .\	        V4      ,          pV P
                   Uu. uF  qUV! V.\        W4      O5!  3NK  	  ppV F{  w  rxV F(  w  rV
P                  V4      '       g   K  W8w  g   K&  Rp M	  Vf   K9  Wx3.pV F6  w  rVP                  V
4      '       d	   W8w  d   K$  VP                  W34       K8  	  TpK}  	  \        V4      # u upi )a  
Returns the leading term and its order.

Examples
========

>>> from sympy.abc import x
>>> (x + 1 + 1/x**5).extract_leading_order(x)
((x**(-5), O(x**(-5))),)
>>> (1 + x).extract_leading_order(x)
((1, O(1)),)
>>> (x + x**2).extract_leading_order(x)
((x, O(x)),)

r   N)
sympy.series.orderr   r5   r   r'   r&   r  rf   r;   r   )rU   symbolspointr   lstr   rX   efofr   rh   new_lsts   &&&         r"   extract_leading_orderAdd.extract_leading_order  s    " 	-+g"6"6wWIFCG$E<@IIFIq51S012IFFB::b>>agB  zxjG;;q>>agv&  C  Sz Gs   C<c                    V P                   p. . rTV F9  pVP                  VR7      w  rxVP                  V4       VP                  V4       K;  	  V P                  ! V!  V P                  ! V!  3# )z
Return a tuple representing a complex number.

Examples
========

>>> from sympy import I
>>> (7 + 9*I).as_real_imag()
(7, 9)
>>> ((1 + I)/(1 - I)).as_real_imag()
(0, 1)
>>> ((1 + 2*I)*(1 + 3*I)).as_real_imag()
(-5, 5)
rj   )r&   as_real_imagr;   r   )	rU   rk   hintssargsre_partim_partr*  rerz  s	   &&,      r"   r  Add.as_real_imag  sj     		rD&&D&1FBNN2NN2  		7#TYY%899r.   c                	  a ^ RI HpHp ^ RIHp ^ RIHo ^ RIHpH	p ^RI
Hp	 V P                  4       p
V
f	   V! ^ 4      p
V P                  4       pVP                  V4      '       d	   V! V4      p\        ;QJ d)    V3R lV P                    4       F  '       g   K   RM	  RM! V3R lV P                    4       4      '       d'   R	RR
RRRRRRRRRRRRRRR/	pVP"                  ! R/ VB pV	! V4      pVP$                  '       g   VP'                  WVR7      # VP                    Uu. uF  qP(                  '       g   K  VNK  	  ppVf	   V! R4      MTpVP                    Uu. uF  qP'                  VVVR7      NK  	  ppV! ^ 4      \*        P,                  pp V F3  pV! VV4      pV'       d   VV9  d   TpTpK!  VV9   g   K*  VV,          pK5  	  Tf   TP1                  TS! T4      4      pTP2                  pTf+   TP5                  4       P7                  4       pTP2                  pTRJ d    TP9                  4       pTP                  T4      '       d   \*        P<                  pT! ^4      p\*        P<                  pTP>                  '       dQ   TPA                  TTT,           Y#R7      P7                  4       PC                  4       P5                  4       pT^,          pKb  TP'                  YTR7      # T\*        PD                  J d#   TPF                  PI                  T4      T
,           # T# u upi u upi   \.         d    Tu # i ; i  \:         d    \*        P<                  p EL'i ; i)r   )r   Symbolr   )log)	Piecewisepiecewise_fold)
expand_mulc              3  <   <"   T F  p\        VS4      x  K  	  R # 5irN   )r{   )r    rA   r  s   & r"   r#   ,Add._eval_as_leading_term.<locals>.<genexpr>  s     59az!S!!9s   TFrk   r  mul	power_exp
power_basemultinomialbasicforcefactor)r   r   r   r   rI   )%sympy.core.symbolr   r  r  r   &sympy.functions.elementary.exponentialr  $sympy.functions.elementary.piecewiser  r  r   r  r  r  r  rw   r&   expandr8   as_leading_termr   r   r6   	TypeErrorsubsrv   trigsimpcancelgetnNotImplementedErrorr   ru   r   powsimprx   r   r>   )rU   r   r   r   r   r  r   r  r  r  rh   r   logflagsr*   rn   r  _logxleading_termsminnew_exprr*  orderrv   n0resincrr  s   &&&&                      @r"   _eval_as_leading_termAdd._eval_as_leading_term  s   3,>R(IIK9aAlln779 %C 3549953335499555eT5%ee]E7E7TY%!H **(x(C#{{{''4'@@#yy:y!MMAAy:!%f4NRiiXi**15t*DiXa!&&X
	%dAe3.C#HE\$H & <}}UCF3H""?((*113H&&Gd?XXZ vvf~~UU(C55D,,,''RW4'KRRT\\^ggi	&&q$&??88&&x0144 O] ; Y  	K	 ' UUs<   $L)<L) L.'L3 L3 -M 3MMM%$M%c                	z    V P                   ! V P                   Uu. uF  qP                  4       NK  	  up!  # u upi rN   )r   r&   adjointrU   rn   s   & r"   _eval_adjointAdd._eval_adjoint>  s+    yy		:	199;	:;;:   8c                	z    V P                   ! V P                   Uu. uF  qP                  4       NK  	  up!  # u upi rN   )r   r&   	conjugater  s   & r"   _eval_conjugateAdd._eval_conjugateA  +    yy$))<)Q;;=)<==<r  c                	z    V P                   ! V P                   Uu. uF  qP                  4       NK  	  up!  # u upi rN   )r   r&   	transposer  s   & r"   _eval_transposeAdd._eval_transposeD  r  r  c                   . pRpV P                    F}  pVP                  4       w  rEVP                  '       g   \        P                  pTpT;'       g    V\        P
                  J pVP                  VP                  VP                  V34       K  	  V'       gP   \        \        V Uu. uF  qf^ ,          NK  	  up^ 4      p\        \        V Uu. uF  qf^,          NK  	  up^4      pMp\        \        V Uu. uF  qf^,          '       g   K  V^ ,          NK  	  up^ 4      p\        \        V Uu. uF  qf^,          '       g   K  V^,          NK  	  up^4      pYxu;8X  d   ^8X  d   M M\        P                  V 3# V'       gD   \        V4       F3  w  p	w  rp\        \        W,          W,          ,          4      V4      W&   K5  	  Mc\        V4       FT  w  p	w  rpV'       d-   \        \        W,          W,          ,          4      V4      W&   K=  \        \        W4      V4      W&   KV  	  V^ ,          P                  '       g   V^ ,          \        P
                  J d   VP!                  ^ 4      pMRp\#        V4       V'       d   VP%                  ^ V4       \        Wx4      V P&                  ! V!  3# u upi u upi u upi u upi )aw  
Return ``(R, self/R)`` where ``R``` is the Rational GCD of ``self```.

``R`` is collected only from the leading coefficient of each term.

Examples
========

>>> from sympy.abc import x, y

>>> (2*x + 4*y).primitive()
(2, x + 2*y)

>>> (2*x/3 + 4*y/9).primitive()
(2/9, 3*x + 2*y)

>>> (2*x/3 + 4.2*y).primitive()
(1/3, 2*x + 12.6*y)

No subprocessing of term factors is performed:

>>> ((2 + 2*x)*x + 2).primitive()
(1, x*(2*x + 2) + 2)

Recursive processing can be done with the ``as_content_primitive()``
method:

>>> ((2 + 2*x)*x + 2).as_content_primitive()
(2, x*(x + 1) + 1)

See also: primitive() function in polytools.py

FN)r&   r~   rr   r   r   ry   r;   r   r   r   r   r   	enumerater  Rationalr:   r7   r3   r<   r   )rU   r   r  rA   r   mrn   ngcddlcmr!   r   r   r*  s   &            r"   r  Add.primitiveG  s!   F A>>#DA===EE//a///CLL!##qssA'  $u 5u!1u 5q9D$u 5u!1u 5q9D$u =u!!1u =qAD$u =u!!1u =qAD155$;#,U#3<A$&x470C'DdK $4 $-U#3<A$*8QWtw4G+H$OEH*8A>4@EH	 $4 8qQ->->!>		!AALLA#T%6%6%>>>A !6 5 = =s$   (J2
J7
7J<
J<
/K
K
c                   V P                   ! V P                   Uu. uF  p\        VP                  WR7      !  NK  	  up!  P	                  4       w  rEV'       g   VP
                  '       g   VP                  '       dt   VP                  4       w  rFWV,          p\        ;QJ d&    R VP                   4       F  '       g   K   RM	  RM! R VP                   4       4      '       d   TpMWF,          pV'       EdP   VP                  '       Ed=   VP                  p. p	Rp
V EF)  p\        \        4      p\        P                  ! V4       F  pVP                  '       g   K  VP                  4       w  rVP                  '       g   K=  VP
                  '       g   KQ  WP                   ,          P#                  \%        \'        V4      4      VP(                  ,          4       K  	  V'       g    WE3# V
f   \+        VP-                  4       4      p
M,V
\+        VP-                  4       4      ,          p
V
'       g    WE3# V	P#                  V4       EK,  	  V	 FY  p\        VP-                  4       4       F  pVV
9  g   K  VP/                  V4       K  	  V F  p\        VV,          !  VV&   K  	  K[  	  . pV
 FV  p\1        \2        V	 Uu. uF  pVV,          NK  	  up^ 4      pV^8w  g   K4  VP#                  V\5        ^V4      ,          4       KX  	  V'       d8   \        V!  pV Uu. uF  qV,          NK  	  ppVVP                   ! V!  ,          pWE3# u upi u upi u upi )a  Return the tuple (R, self/R) where R is the positive Rational
extracted from self. If radical is True (default is False) then
common radicals will be removed and included as a factor of the
primitive expression.

Examples
========

>>> from sympy import sqrt
>>> (3 + 3*sqrt(2)).as_content_primitive()
(3, 1 + sqrt(2))

Radical content can also be factored out of the primitive:

>>> (2*sqrt(2) + 4*sqrt(10)).as_content_primitive(radical=True)
(2, sqrt(2)*(1 + 2*sqrt(5)))

See docstring of Expr.as_content_primitive for more examples.
)radicalclearc              3  b   "   T F%  qP                  4       ^ ,          P                  x  K'  	  R# 5i)r   N)r~   r   rF  s   & r"   r#   +Add.as_content_primitive.<locals>.<genexpr>  s      C7a>>#A&117s   -/TFN)r   r&   r  as_content_primitiver  r   r8   r  rw   r   r5   r   r  r   r   rr   r   r;   r   intr   r  keysr7   r   r   r  )rU   r  r  rA   conprimr!  _pr&   radscommon_qr  	term_radsrt  r   r   r   r   Ggs   &&&                 r"   r  Add.as_content_primitive  s   ( II48II ?4=q !,Q-C-C .D .* !+4= ? @@I	 	S^^^'')FCBsC277CsssC277CCC7t{{{99DDH'-	--*Byyy!~~/===Q\\\%ccN11#c!f+qss2BC	 +
 !8 y7 #"9>>#34H'#inn.>*??H#, y+ I& & A!!&&(^H,EE!H , "AaDz! 	  !AtD%9DqaddD%91=AAvHQN!23 " QA+/04RqDD4D0TYY--Dye ?T &:
 1s   "MMMc                	N    ^RI Hp \        \        V P                  VR7      4      # )r   )default_sort_keyr0   )sortingr+  r   sortedr&   )rU   r+  s   & r"   _sorted_argsAdd._sorted_args  s    -VDII+;<==r.   c           
     	x    ^ RI Hp V P                  ! V P                   Uu. uF  qC! WAV4      NK  	  up!  # u upi )r   )difference_delta)sympy.series.limitseqr1  r   r&   )rU   r   stepddrA   s   &&&  r"   _eval_difference_deltaAdd._eval_difference_delta  s0    @yy499=9a2aD>9=>>=s   7c                    ^RI Hp V P                  4       w  r#VP                  4       w  rEV\        P
                  8X  g   \        R4      hV! V4      P                  V! V4      P                  3# )z+
Convert self to an mpmath mpc if possible
)Floatz@Cannot convert Add to mpc. Must be of the form Number + Number*I)numbersr8  r   r~   r   r   AttributeError_mpf_)rU   r8  r  restr  	imag_units   &     r"   _mpc_	Add._mpc_  sa    
 	#))+!..0AOO+ !!cddg$$eGn&:&:;;r.   c                	   < \         P                  '       g   \        SV `  4       # \	        \
        P                  V 4      # rN   )r
   
distributer  __neg__r   r   NegativeOne)rU   r  s   &r"   rB  Add.__neg__  s-     +++7?$$1==$''r.   rI   ro  )r   )NFrN   )T)FT)Hr   
__module____qualname____firstlineno____doc__	__slots__r8   r   
_args_type__annotations__r   rP   propertyr&   classmethodr   r   r   r   r   r   r   r   r   r   r   r   staticmethodr  r  r  r(  r2  r=  rA  _eval_is_real_eval_is_extended_real_eval_is_complex_eval_is_antihermitian_eval_is_finite_eval_is_hermitian_eval_is_integer_eval_is_rational_eval_is_algebraic_eval_is_commutativerl  ru  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r.  r5  r>  rB  __static_attributes____classcell__)r  s   @r"   r=   r=   ]   s   Tl IFJ	t 	 
	 
	 P$ P$d " " 
 
/ ! !,#)J : :!? , ,2 ? ?&-:^IP-M9MB<B;O><=>-8'R5 4l((4l#FJ(,
 # #J:.IV<>>N?`FP > >? < <( (r.   r=   r  )r   r  r   )r  N)3
__future__r   typingr   r   collectionsr   	functoolsr   operatorr   r  r	   
parametersr
   logicr   r   r   	singletonr   
operationsr   r   cacher   intfuncr   r   r*   r   r   r   sympy.utilities.iterablesr   r   sympy.core.numbersr   r  r   r-   r3   rB   r=   r  r  r   r  r   r9  r  rI   r.   r"   <module>rh     sv    " * #     ) 4 4  2     7 )(6 !
-#`^($ ^(@%  3 3 r.   