§
    ]²Åj‘ª  ã                   ó4  — d dl mZ d dlmZ d dlmZ d dlmZ ddl	m
Z
 ddlmZ ddlmZmZmZ dd	lmZ dd
lmZmZ ddlmZ ddlmZ ddlmZmZ ddlmZ ddlm Z  d dl!m"Z"m#Z# d„ Z$d„ Z%d„ Z& G d„ dee¦  «        Z' ed¦  «        Z(ddl)m*Z*m+Z+m,Z, ddlm-Z- dS )é    )ÚTuple)Údefaultdict)Úreduce)Ú
attrgetteré   )Ú_args_sortkey)Úglobal_parameters)Ú_fuzzy_groupÚfuzzy_orÚ	fuzzy_not)ÚS)ÚAssocOpÚAssocOpDispatcher)Úcacheit)Úequal_valued)ÚilcmÚigcd)ÚExpr)ÚUndefinedKind)Úis_sequenceÚsiftc                 óü   — t          d„ | j        D ¦   «         ¦  «        }t          | j        ¦  «        |z
  }||k    rdS ||k     rdS t          |                      ¦   «         |                       ¦   «         k     ¦  «        S )Nc              3   óB   K  — | ]}|                      ¦   «         ¯d V — ŒdS )r   N)Úcould_extract_minus_sign©Ú.0Úis     ú?C:\Projects\Historical\venv\Lib\site-packages\sympy/core/add.pyú	<genexpr>z,_could_extract_minus_sign.<locals>.<genexpr>   sF   è è € ð )ð )˜aØ×%Ò%Ñ'Ô'ð)˜ð )ð )ð )ð )ð )ð )ó    FT)ÚsumÚargsÚlenÚboolÚsort_key)ÚexprÚnegative_argsÚpositive_argss      r   Ú_could_extract_minus_signr)      s�   € õ ð )ð ) 4¤9ð )ñ )ô )ñ )ô )€Må˜œ	‘N”N ]Ñ2€MØ�}Ò$Ð$ØˆuØ	˜Ò	&Ð	&Øˆtõ �—’‘” D 5×"2Ò"2Ñ"4Ô"4Ò4Ñ5Ô5Ð5r    c                 ó<   — |                       t          ¬¦  «         d S )N©Úkey)Úsortr   )r"   s    r   Ú_addsortr.   !   s   € à‡I‚I•-€IÑ Ô Ð Ð Ð r    c                  óv  — t          | ¦  «        } g }t          j        }| rZ|                      ¦   «         }|j        r|                      |j        ¦  «         n"|j        r||z  }n|                     |¦  «         | °Zt          |¦  «         |r| 
                    d|¦  «         t                               |¦  «        S )a�  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
    r   )Úlistr   ÚZeroÚpopÚis_AddÚextendr"   Ú	is_NumberÚappendr.   ÚinsertÚAddÚ
_from_args)r"   ÚnewargsÚcoÚas       r   Ú_unevaluated_Addr=   &   sÂ   € õ: �‰:Œ:€DØ€GÝ	
Œ€BØ
ð 	Ø�HŠH‰JŒJˆØŒ8ð 	ð �KŠK˜œÑÔÐÐØŒ[ð 	Ø�!‰GˆBˆBà�NŠN˜1ÑÔÐð ð 	õ ˆWÑÔÐØ	ð Ø�Š�q˜"ÑÔÐÝ�>Š>˜'Ñ"Ô"Ð"r    c                   ó8  ‡ — e Zd ZU dZdZeedf         ed<   dZeZ	e
d„ ¦   «         Ze
d„ ¦   «         Zed„ ¦   «         Zd	„ Zed
„ ¦   «         Zd>d„Zd„ Zed„ ¦   «         Zd?d„Zd„ Zd@d„Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d „ Z%d!„ Z&d"„ Z'd#„ Z(d$„ Z)d%„ Z*d&„ Z+d'„ Z,d(„ Z-d)„ Z.d*„ Z/ˆ fd+„Z0d,„ Z1d-„ Z2ˆ fd.„Z3d/„ Z4d0„ Z5d1„ Z6edAd2„¦   «         Z7dBd3„Z8dCd4„Z9d5„ Z:d6„ Z;d7„ Z<d8„ Z=dDd9„Z>ed:„ ¦   «         Z?d;„ Z@ed<„ ¦   «         ZAˆ fd=„ZBˆ xZCS )Er8   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

    © .r"   Tc                 ó²	  ‡— ddl m} ddlm} ddlm} d}t          |¦  «        dk    rS|\  }}|j        r||}}|j        r|j        r||gg df}|r,t          d„ |d         D ¦   «         ¦  «        r|S g |d         dfS i }t          j        }	g }
g }|D �]qŠ‰j        rA‰j        j        rŒ|
D ]}|                     ‰¦  «        rdŠ nŒ‰€Œ8‰gˆfd„|
D ¦   «         z   }
ŒK‰j        rx‰t          j        u s|	t          j        u r‰j        d	u r|st          j        gg dfc S |	j        st)          |	|¦  «        r'|	‰z  }	|	t          j        u r|st          j        gg dfc S ŒÊt)          ‰|¦  «        r‰                     |	¦  «        }	Œðt)          ‰|¦  «        r|                     ‰¦  «         �Œt)          ‰|¦  «        r|	r‰                     |	¦  «        n‰}	�ŒB‰t          j        u r+|	j        d	u r|st          j        gg dfc S t          j        }	�Œ{‰j        r|                     ‰j        ¦  «         �Œž‰j        r‰                     ¦   «         \  }}nq‰j        r\‰                     ¦   «         \  }}|j        r/|j        s|j        r!|j        r|                     ||z  ¦  «         �Œt          j        ‰}}nt          j        }‰}||v r:||xx         |z  cc<   ||         t          j        u r|st          j        gg dfc S �Œl|||<   �Œsg }d	}|                      ¦   «         D ]»\  }}|j        rŒ|t          j        u r|                     |¦  «         n€|j        r) |j!        |f|j        z   Ž }|                     |¦  «         nP|j        r&|                     tE          ||d	¬
¦  «        ¦  «         n#|                     tE          ||¦  «        ¦  «         |p|j#         }Œ¼|	t          j$        u rd„ |D ¦   «         }n|	t          j%        u rd„ |D ¦   «         }|	t          j        u rd„ |D ¦   «         }|
rig }|D ]7}|
D ]Š‰                     |¦  «        rd} nŒ|�|                     |¦  «         Œ8||
z   }|
D ]%Š‰                     |	¦  «        rt          j        }	 nŒ&tM          |¦  «         |	t          j        ur| '                    d|	¦  «         |r||z  }d}|rg |dfS |g dfS )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

        r   )ÚAccumBounds)Ú
MatrixExpr)ÚTensExprNé   c              3   ó$   K  — | ]}|j         V — Œd S ©N©Úis_commutative)r   Úss     r   r   zAdd.flatten.<locals>.<genexpr>Ó   s%   è è € Ð7Ð7¨A�qÔ'Ð7Ð7Ð7Ð7Ð7Ð7r    c                 ó>   •— g | ]}‰                      |¦  «        °|‘ŒS r?   )Úcontains)r   Úo1Úos     €r   ú
<listcomp>zAdd.flatten.<locals>.<listcomp>ì   s?   ø€ ð 'Fð 'Fð 'FØ°a·j²jÀ±n´nð'FØð'Fð 'Fð 'Fr    F©Úevaluatec                 ó.   — g | ]}|j         °	|j        °|‘ŒS r?   )Úis_extended_nonnegativeÚis_real©r   Úfs     r   rN   zAdd.flatten.<locals>.<listcomp>U  ó'   € ÐXÐXÐX˜A°Ô0IÐXÈQÌYÐX�aÐXÐXÐXr    c                 ó.   — g | ]}|j         °	|j        °|‘ŒS r?   )Úis_extended_nonpositiverS   rT   s     r   rN   zAdd.flatten.<locals>.<listcomp>X  rV   r    c                 ó.   — g | ]}|j         r|j        ­|‘ŒS rF   )Ú	is_finiteÚis_extended_real)r   Úcs     r   rN   zAdd.flatten.<locals>.<listcomp>c  s7   € ð Qð Qð Q˜A°´ð QØ01Ô0BÐ0Nð Ø0NÐ0NÐ0Nr    T)(Ú!sympy.calculus.accumulationboundsrA   Úsympy.matrices.expressionsrB   Úsympy.tensor.tensorrC   r#   Úis_RationalÚis_MulÚallr   r1   Úis_Orderr&   Úis_zerorK   r5   ÚNaNÚComplexInfinityrZ   Ú
isinstanceÚ__add__r6   r3   r4   r"   Úas_coeff_MulÚis_PowÚas_base_expÚ
is_IntegerÚis_negativeÚOneÚitemsÚ_new_rawargsÚMulrH   ÚInfinityÚNegativeInfinityr.   r7   )ÚclsÚseqrA   rB   rC   Úrvr<   ÚbÚtermsÚcoeffÚorder_factorsÚextrarL   r\   rI   ÚeÚnewseqÚnoncommutativeÚcsÚnewseq2ÚtrM   s                        @r   ÚflattenzAdd.flattenµ   sj  ø€ ð$ 	BÐAÐAÐAÐAÐAØ9Ð9Ð9Ð9Ð9Ð9Ø0Ð0Ð0Ð0Ð0Ð0ØˆÝˆs‰8Œ8�qŠ=ˆ=Ø‰DˆAˆqØŒ}ð Ø˜!�1�ØŒ}ð *Ø”8ð *Ø˜Q˜  TÐ)�BØð 'ÝÐ7Ð7°°A´Ð7Ñ7Ô7Ñ7Ô7ð Ø�IØ˜2˜aœ5 $�Ð&àˆõ ”ˆàˆàˆàð V	ñ V	ˆAð Œzð DØ”6”>ð ØØ'ð ð �BØ—{’{ 1‘~”~ð Ø ˜Ø˜ðð �9ØØ!" ð 'Fð 'Fð 'Fð 'FØ!.ð'Fñ 'Fô 'Fñ !F�àð ”ð 6Ø�œ�J�J %­1Ô+<Ð"<Ð"<Øœ uÐ,Ð,°eÐ,åœE˜7 B¨Ð,Ð,Ð,Ð,Ø”?ð 1¥j°¸Ñ&DÔ&Dð 1Ø˜Q‘J�EØ¥¤�~�~¨e�~å !¤˜w¨¨DÐ0Ð0Ð0Ð0Øå˜A˜{Ñ+Ô+ð *ØŸ	š	 %Ñ(Ô(�Øå˜A˜zÑ*Ô*ð &à—’˜Q‘”�Ùå˜A˜xÑ(Ô(ð !Ø,1Ð8˜Ÿ	š	 %Ñ(Ô(Ð(°q�Ùà•aÔ'Ð'Ð'Ø”? eÐ+Ð+°EÐ+åœE˜7 B¨Ð,Ð,Ð,Ð,ÝÔ)�Ùð ”ð à—
’
˜1œ6Ñ"Ô"Ð"Ùð ”ð Ø—~’~Ñ'Ô'‘��1�1ð ”ð Ø—}’}‘”‘��1Ø”;ð  A¤Lð Ø$%¤MðØ67´mðà—J’J˜q !™tÑ$Ô$Ð$ÙÝ”u˜a�1��õ ”E�Ø�ð �EˆzˆzØ�a��”˜A‘��‘Ø˜”8�qœuÐ$Ð$¨UÐ$åœE˜7 B¨Ð,Ð,Ð,Ð,ùà��a‘‘ð ˆØˆØ—K’K‘M”Mð 	Dð 	D‰DˆAˆqàŒyð -Øà•a”e��Ø—’˜aÑ Ô Ð Ð ð ”8ð 
-ð (˜œ¨1¨$°´©-Ð9�BØ—M’M "Ñ%Ô%Ð%Ð%Ø”Xð -à—M’M¥# a¨°UÐ";Ñ";Ô";Ñ<Ô<Ð<Ð<ð —M’M¥# a¨¡)¤)Ñ,Ô,Ð,à+ÐC°1Ô3CÐ/CˆNˆNð •A”JÐÐØXÐX ÐXÑXÔXˆFˆFà•aÔ(Ð(Ð(ØXÐX ÐXÑXÔXˆFà•AÔ%Ð%Ð%ðQð Q ð Qñ Qô QˆFð ð 	ØˆGØð &ð &�Ø&ð ð �Aà—z’z !‘}”}ð Ø ˜Ø˜ðð �=Ø—N’N 1Ñ%Ô%Ð%øØ˜}Ñ,ˆFà"ð ð �Ø—:’:˜eÑ$Ô$ð ÝœF�EØ�Eðõ
 	�ÑÔÐð �œÐÐØ�MŠM˜!˜UÑ#Ô#Ð#àð 	"Ø�e‰OˆFØ!ˆNð ð 	$Ø�v˜tÐ#Ð#à˜2˜tÐ#Ð#r    c                 ó   — dd| j         fS )Né   r   )Ú__name__)rt   s    r   Ú	class_keyzAdd.class_keyŠ  s   € à�!�S”\Ð!Ð!r    c                 óª   — t          d¦  «        }t          || j        ¦  «        }t          |¦  «        }t	          |¦  «        dk    rt
          }n|\  }|S )NÚkindr   )r   Úmapr"   Ú	frozensetr#   r   )ÚselfÚkÚkindsÚresults       r   rˆ   zAdd.kindŽ  sQ   € å�vÑÔˆÝ�A�t”yÑ!Ô!ˆÝ˜%Ñ Ô ˆÝˆu‰:Œ:˜Š?ˆ?õ #ˆFˆFà‰GˆFØˆr    c                 ó    — t          | ¦  «        S rF   )r)   ©r‹   s    r   r   zAdd.could_extract_minus_sign›  s   € Ý(¨Ñ.Ô.Ð.r    c                 ó"  ‡— ‰r6t          | j        ˆfd„d¬¦  «        \  }} | j        |Ž t          |¦  «        fS | j        d                              ¦   «         \  }}|t
          j        ur||| j        dd…         z   fS t
          j        | j        fS )aR  
        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                 ó   •—  | j         ‰Ž S rF   )Úhas_free)ÚxÚdepss    €r   ú<lambda>z"Add.as_coeff_add.<locals>.<lambda>®  s   ø€ ¨z¨q¬z¸4Ð/@€ r    T)Úbinaryr   r   N)r   r"   rp   ÚtupleÚas_coeff_addr   r1   )r‹   r•   Úl1Úl2ry   Únotrats    `    r   r™   zAdd.as_coeff_addž  s�   ø€ ð ð 	5Ý˜$œ)Ð%@Ð%@Ð%@Ð%@ÈÐNÑNÔN‰FˆB�Ø$�4Ô$ bÐ)­5°©9¬9Ð4Ð4Øœ	 !œ×1Ò1Ñ3Ô3‰ˆˆvØ�œÐÐØ˜& 4¤9¨Q¨R¨R¤=Ñ0Ð0Ð0ÝŒv�t”yÐ Ð r    FNc                 óŽ   — | j         d         | j         dd…         }}|j        r|r|j        r| | j        |Ž fS t          j        | fS )zE
        Efficiently extract the coefficient of a summation.
        r   r   N)r"   r5   r`   rp   r   r1   )r‹   Úrationalr•   ry   r"   s        r   Úas_coeff_AddzAdd.as_coeff_Addµ  sZ   € ð ”i ”l D¤I¨a¨b¨b¤MˆtˆàŒ?ð 	3 8ð 	3¨uÔ/@ð 	3ØÐ+˜$Ô+¨TÐ2Ð2Ð2ÝŒv�tˆ|Ðr    c                 ó†  ‡‡‡— ddl m} ddlm} t	          | j        ¦  «        dk    rÃt          d„ | j        D ¦   «         ¦  «        r¥|j        du rš ||t          j	        ¦  «        du r‚| j        \  }}| 
                    t          j        ¦  «        r||}}| 
                    t          j        ¦  «        }|r4|j        r-|j        r&|j        rt          j        S |j        rt          j        S d S |j        ró| j        rì || ¦  «        }|rÛ|\  }}	|j        dk    r™ddlm}
  |
|dz  |	dz  z   ¦  «        }|j        rvdd	lm} dd
lmŠ ddlm}  |
 |||z
  dz  ¦  «        ¦  «        |j        z  }| |||z   t;          |	¦  «        z   ‰|	¦  «        t          j        z  z   |j        z  ¦  «        z  S d S |dk    r.t=          ||	t          j        z  z
  d|dz  |	dz  z   z  ¦  «        S d S d S |j        rÍt;          |¦  «        dk    r¼tA          d„ | j        D ¦   «         Ž \  }}t          d„ |D ¦   «         ¦  «        rŠdŠ|D ]$}	t;          |	¦  «        ‰k    rt;          |	¦  «        ŠŒ%‰dk    r]tC          ‰d¦  «        sOdd
lmŠ ‰‰ fŠˆˆˆfd„|D ¦   «         }tE          d„ tA          ||¦  «        D ¦   «         Ž |z  }‰|z  |z  S d S d S d S d S d S )Nr   )Úpure_complex)Úis_eqrD   c              3   ó$   K  — | ]}|j         V — Œd S rF   ©Úis_infinite)r   Ú_s     r   r   z"Add._eval_power.<locals>.<genexpr>Æ  s$   è è € Ð&HÐ&H¸ q¤}Ð&HÐ&HÐ&HÐ&HÐ&HÐ&Hr    Fr   )Úsqrt)Úfactor_terms)Úsign)Úexpand_multinomialéÿÿÿÿc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r?   )ri   r   s     r   rN   z#Add._eval_power.<locals>.<listcomp>é  s"   € Ð=Ð=Ð=¨a˜ŸšÑ)Ô)Ð=Ð=Ð=r    c              3   ó$   K  — | ]}|j         V — Œd S rF   )Úis_Floatr   s     r   r   z"Add._eval_power.<locals>.<genexpr>ê  s$   è è € Ð)Ð) !�1”:Ð)Ð)Ð)Ð)Ð)Ð)r    c                 ó8   •— g | ]}|‰v r ‰|¦  «        n|‰z  ‘ŒS r?   r?   )r   r   ÚbigÚbigsr©   s     €€€r   rN   z#Add._eval_power.<locals>.<listcomp>ò  s1   ø€ ÐDÐDÐD¸Q A¨ I I˜˜˜a™œ˜°1°S±5ÐDÐDÐDr    c                 ó   — g | ]
\  }}||z  ‘ŒS r?   r?   )r   r\   Úms      r   rN   z#Add._eval_power.<locals>.<listcomp>ó  s    € Ð"=Ð"=Ð"=©4¨1¨a 1 Q¡3Ð"=Ð"=Ð"=r    )#Úevalfr¡   Ú
relationalr¢   r#   r"   Úanyrd   r   rn   ry   ÚImaginaryUnitr[   Úis_extended_negativer1   Úis_extended_positiverf   r`   Ú	is_numberÚqÚ(sympy.functions.elementary.miscellaneousr§   Ú	exprtoolsr¨   Ú$sympy.functions.elementary.complexesr©   Úfunctionrª   ÚpÚabsÚ_unevaluated_Mulr5   Úzipr   r8   )r‹   r|   r¡   r¢   r<   rw   ÚicoÚriÚrr   r§   ÚDr¨   rª   Úrootr\   r³   Úaddpowr°   r±   r©   s                     @@@r   Ú_eval_powerzAdd._eval_powerÃ  s²  øøø€ Ø'Ð'Ð'Ð'Ð'Ð'Ø%Ð%Ð%Ð%Ð%Ð%ÝˆtŒy‰>Œ>˜QÒÐ¥3Ð&HÐ&H¸d¼iÐ&HÑ&HÔ&HÑ#HÔ#HÐØŒy˜EÐ!Ð! e e¨A­q¬u¡o¤o¸Ð&>Ð&>à”y‘��1Ø—7’7�1œ?Ñ+Ô+ð  Ø˜a�q�AØ—g’g�aœoÑ.Ô.�Øð 1˜3Ô/ð 1°AÔ4Fð 1ØÔ-ð &Ý œv˜ØÔ-ð 1Ý Ô0Ð0ØˆFØŒ=ð !	)˜Tœ^ð !	)Ø�˜dÑ#Ô#ˆBØð )Ø‘��1Ø”3˜!’8�8ØMÐMÐMÐMÐMÐMØ˜˜Q ™T A q¡D™[Ñ)Ô)�AØ”}ð LØ;Ð;Ð;Ð;Ð;Ð;ØMÐMÐMÐMÐMÐMØ@Ð@Ð@Ð@Ð@Ð@à#˜t L L°!°a±%¸±Ñ$;Ô$;Ñ<Ô<¸a¼cÑA˜Ø#Ð$6Ð$6à ™U¥C¨¡F¤F™N¨T¨T°!©W¬WµQ´_Ñ-DÑDÀqÄsñ8Kñ %Lô %Lñ  Lð LðLð Lð ˜"’W�WÝ+Ø˜A�aœoÑ-Ñ-Ø˜1˜a™4 ! Q¡$™;™ñ)ô )ð )ð)ð )ð �Wð Œ[ð 	)�S ™VœV qš[˜[åÐ=Ð=°4´9Ð=Ñ=Ô=Ð>‰DˆAˆqÝÐ)Ð) qÐ)Ñ)Ô)Ñ)Ô)ð 
)Ø�Øð %ð %�AÝ˜1‘v”v ’}�}Ý! !™fœf˜øØ˜’7�7¥<°°QÑ#7Ô#7�7ØIÐIÐIÐIÐIÐIØ # ˜;�DØDÐDÐDÐDÐDÐDÀ!ÐDÑDÔD�AÝ Ð"=Ð"=µ3°q¸!±9´9Ð"=Ñ"=Ô"=Ð>ÀÑA�FØ ™6 &™=Ð(ð	)ð 	)˜[˜[ð
)ð 
)ð
 �7�7�7r    c                 ó:   ‡—  | j         ˆfd„| j        D ¦   «         Ž S )Nc                 ó:   •— g | ]}|                      ‰¦  «        ‘ŒS r?   )Údiff)r   r<   rI   s     €r   rN   z(Add._eval_derivative.<locals>.<listcomp>ø  s#   ø€ Ð8Ð8Ð8¨˜1Ÿ6š6 !™9œ9Ð8Ð8Ð8r    ©Úfuncr"   )r‹   rI   s    `r   Ú_eval_derivativezAdd._eval_derivativeö  s)   ø€ àˆtŒyÐ8Ð8Ð8Ð8¨d¬iÐ8Ñ8Ô8Ð9Ð9r    r   c                 óJ   ‡‡‡‡— ˆˆˆˆfd„| j         D ¦   «         } | j        |Ž S )Nc                 óB   •— g | ]}|                      ‰‰‰‰¬ ¦  «        ‘ŒS )©ÚnÚlogxÚcdir)Únseries)r   r�   rÖ   rÕ   rÔ   r”   s     €€€€r   rN   z%Add._eval_nseries.<locals>.<listcomp>û  s-   ø€ ÐLÐLÐL¸Q�—’˜1 ¨°4�Ñ8Ô8ÐLÐLÐLr    )r"   rÏ   )r‹   r”   rÔ   rÕ   rÖ   rx   s    ```` r   Ú_eval_nserieszAdd._eval_nseriesú  s9   øøøø€ ØLÐLÐLÐLÐLÐLÐLÀ$Ä)ÐLÑLÔLˆØˆtŒy˜%Ð Ð r    c                 ó˜   — |                       ¦   «         \  }}t          |¦  «        dk    r|d                              ||z
  |¦  «        S d S )Nr   r   )r™   r#   Úmatches)r‹   r&   Ú	repl_dictry   rx   s        r   Ú_matches_simplezAdd._matches_simpleþ  sI   € à×(Ò(Ñ*Ô*‰ˆˆuÝˆu‰:Œ:˜Š?ˆ?Ø˜”8×#Ò# D¨5¡L°)Ñ<Ô<Ð<Øˆr    c                 ó0   — |                       |||¦  «        S rF   )Ú_matches_commutative)r‹   r&   rÛ   Úolds       r   rÚ   zAdd.matches  s   € Ø×(Ò(¨¨y¸#Ñ>Ô>Ð>r    c                 ó  ‡
— ddl m} t          j        t          j        f} | j        |Ž s
 |j        |Ž rºddlm}  |d¦  «        Š
t          j        ‰
t          j        ‰
 i}d„ |                     ¦   «         D ¦   «         }|  	                    |¦  «        | 	                    |¦  «        z
  }|                     ‰
¦  «        r| 
                    ˆ
fd„d„ ¦  «        }| 	                    |¦  «        }n| |z
  } ||¦  «        }	|	j        r|	n|S )	zp
        Returns lhs - rhs, but treats oo like a symbol so oo - oo
        returns 0, instead of a nan.
        r   )Úsignsimpr   )ÚDummyÚooc                 ó   — i | ]\  }}||“Œ	S r?   r?   )r   rŒ   Úvs      r   ú
<dictcomp>z(Add._combine_inverse.<locals>.<dictcomp>  s   € Ð3Ð3Ð3™d˜a �Q˜Ð3Ð3Ð3r    c                 ó$   •— | j         o| j        ‰u S rF   )rj   Úbase)r”   rã   s    €r   r–   z&Add._combine_inverse.<locals>.<lambda>  s   ø€ ˜aœhÐ7¨1¬6°R¨<€ r    c                 ó   — | j         S rF   )rè   )r”   s    r   r–   z&Add._combine_inverse.<locals>.<lambda>  s   € ˜aœf€ r    )Úsympy.simplify.simplifyrá   r   rr   rs   ÚhasÚsymbolrâ   ro   ÚxreplaceÚreplacer5   )ÚlhsÚrhsrá   Úinfrâ   ÚrepsÚirepsÚeqrv   Úsrvrã   s             @r   Ú_combine_inversezAdd._combine_inverse  s.  ø€ ð 	5Ð4Ð4Ð4Ð4Ð4ÝŒz�1Ô-Ð.ˆØˆ3Œ7�Cˆ=ð 	˜G˜CœG S˜Mð 	Ø%Ð%Ð%Ð%Ð%Ð%Ø��t‘”ˆBå”
˜BÝÔ" R Cð)ˆDð 4Ð3 d§j¢j¡l¤lÐ3Ñ3Ô3ˆEØ—’˜dÑ#Ô# c§l¢l°4Ñ&8Ô&8Ñ8ˆBØ�vŠv�b‰zŒzð &Ø—Z’ZØ7Ð7Ð7Ð7Ø$Ð$ñ&ô &�ð —’˜UÑ#Ô#ˆBˆBà�s‘ˆBØˆh�r‰lŒlˆØ”mÐ+ˆsˆs¨Ð+r    c                 óJ   — | j         d          | j        | j         dd…         Ž fS )aZ  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   N©r"   rp   r�   s    r   Úas_two_termszAdd.as_two_terms"  s*   € ð$ Œy˜Œ|Ð.˜TÔ.°´	¸!¸"¸"´Ð>Ð>Ð>r    c                 óÀ  ‡
‡‡— |                       ¦   «         \  }}t          |t          ¦  «        s$t          ||d¬¦  «                             ¦   «         S |                     ¦   «         \  Š}t          t          ¦  «        }|j        D ]4}|                     ¦   «         \  }}||                              |¦  «         Œ5t          |¦  «        dk    r=| 
                    ¦   «         \  }}	 | j        ˆfd„|	D ¦   «         Ž t          ||¦  «        fS |                     ¦   «         D ]1\  }}	t          |	¦  «        dk    r|	d         ||<   Œ$ | j        |	Ž ||<   Œ2d„ t          t          |                     ¦   «         ¦  «        Ž D ¦   «         \  Š
Š | j        ˆ
ˆfd„t!          t          ‰¦  «        ¦  «        D ¦   «         Ž t          ‰
Ž }}	t          ‰|	¦  «        t          ||¦  «        fS )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
        FrO   r   c                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS r?   )Ú_keep_coeff)r   ÚniÚncons     €r   rN   z&Add.as_numer_denom.<locals>.<listcomp>Y  s#   ø€ Ð4Ð4Ð4¨B•+˜d BÑ'Ô'Ð4Ð4Ð4r    r   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r?   )r0   r   s     r   rN   z&Add.as_numer_denom.<locals>.<listcomp>c  s   € ÐBÐBÐB a�$˜q™'œ'ÐBÐBÐBr    c                 ób   •— g | ]+}t          ‰d |…         ‰|         gz   ‰|dz   d …         z   Ž ‘Œ,S )Nr   )rq   )r   r   ÚdenomsÚnumerss     €€r   rN   z&Add.as_numer_denom.<locals>.<listcomp>d  sR   ø€ ð 0ð 0ð 0Øõ  ¨¨¨¤¨v°a¬y¨kÑ!9¸FÀ1ÀqÁ5À6À6¼NÑ!JÐLð 0ð 0ð 0r    )Ú	primitiverg   r8   rq   Úas_numer_denomr   r0   r"   r6   r#   ÚpopitemrÏ   rü   ro   rÃ   ÚiterÚrange)r‹   Úcontentr&   ÚdconÚndrU   rý   ÚdiÚdrÔ   r  rþ   r  s             @@@r   r  zAdd.as_numer_denom6  s   øøø€ ð( ŸšÑ(Ô(‰ˆ�Ý˜$¥Ñ$Ô$ð 	GÝ�w ¨uÐ5Ñ5Ô5×DÒDÑFÔFÐFØ×+Ò+Ñ-Ô-‰
ˆˆdõ �ÑÔˆØ”ð 	ð 	ˆAØ×%Ò%Ñ'Ô'‰FˆB�ØˆrŒF�MŠM˜"ÑÔÐÐõ ˆr‰7Œ7�aŠ<ˆ<Ø—:’:‘<”<‰DˆAˆqØ�4”9Ø4Ð4Ð4Ð4°!Ð4Ñ4Ô4ð6Ý7BÀ4ÈÑ7KÔ7KðLð Lð —H’H‘J”Jð 	&ð 	&‰DˆAˆqÝ�1‰vŒv˜Š{ˆ{Ø˜!œ��1‘�à!˜œ	 1˜��1‘�ð CÐB­3µ°R·X²X±Z´ZÑ0@Ô0@Ð+AÐBÑBÔB‰ˆ�ØˆtŒyð 0ð 0ð 0ð 0ð 0Ý!¥# f¡+¤+Ñ.Ô.ð0ñ 0ô 0ð 1Ý25°v°,ð ˆõ ˜4 Ñ#Ô#¥[°°qÑ%9Ô%9Ð9Ð9r    c                 óD   ‡— t          ˆfd„| j        D ¦   «         ¦  «        S )Nc              3   óB   •K  — | ]}|                      ‰¦  «        V — Œd S rF   )Ú_eval_is_polynomial©r   ÚtermÚsymss     €r   r   z*Add._eval_is_polynomial.<locals>.<genexpr>j  s1   øè è € ÐHÐH°d�4×+Ò+¨DÑ1Ô1ÐHÐHÐHÐHÐHÐHr    ©rb   r"   ©r‹   r  s    `r   r  zAdd._eval_is_polynomiali  s(   ø€ ÝÐHÐHÐHÐH¸d¼iÐHÑHÔHÑHÔHÐHr    c                 óD   ‡— t          ˆfd„| j        D ¦   «         ¦  «        S )Nc              3   óB   •K  — | ]}|                      ‰¦  «        V — Œd S rF   )Ú_eval_is_rational_functionr  s     €r   r   z1Add._eval_is_rational_function.<locals>.<genexpr>m  s1   øè è € ÐOÐO¸T�4×2Ò2°4Ñ8Ô8ÐOÐOÐOÐOÐOÐOr    r  r  s    `r   r  zAdd._eval_is_rational_functionl  s(   ø€ ÝÐOÐOÐOÐOÀTÄYÐOÑOÔOÑOÔOÐOr    c                 óL   ‡‡— t          ˆˆfd„| j        D ¦   «         d¬¦  «        S )Nc              3   óD   •K  — | ]}|                      ‰‰¦  «        V — Œd S rF   )Úis_meromorphic)r   Úargr<   r”   s     €€r   r   z+Add._eval_is_meromorphic.<locals>.<genexpr>p  s3   øè è € ÐKÐK¸#˜S×/Ò/°°1Ñ5Ô5ÐKÐKÐKÐKÐKÐKr    T©Ú
quick_exit©r
   r"   )r‹   r”   r<   s    ``r   Ú_eval_is_meromorphiczAdd._eval_is_meromorphico  s:   øø€ ÝÐKÐKÐKÐKÐKÀÄÐKÑKÔKØ'+ð-ñ -ô -ð 	-r    c                 óD   ‡— t          ˆfd„| j        D ¦   «         ¦  «        S )Nc              3   óB   •K  — | ]}|                      ‰¦  «        V — Œd S rF   )Ú_eval_is_algebraic_exprr  s     €r   r   z.Add._eval_is_algebraic_expr.<locals>.<genexpr>t  s1   øè è € ÐLÐL¸$�4×/Ò/°Ñ5Ô5ÐLÐLÐLÐLÐLÐLr    r  r  s    `r   r"  zAdd._eval_is_algebraic_exprs  s(   ø€ ÝÐLÐLÐLÐLÀ$Ä)ÐLÑLÔLÑLÔLÐLr    c                 óB   — t          d„ | j        D ¦   «         d¬¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S rF   )rS   ©r   r<   s     r   r   zAdd.<lambda>.<locals>.<genexpr>x  s$   è è € Ð&Ð&�qˆŒÐ&Ð&Ð&Ð&Ð&Ð&r    Tr  r  r�   s    r   r–   zAdd.<lambda>w  s*   € ¥Ø&Ð&˜DœIÐ&Ñ&Ô&°4ð"9ñ "9ô "9€ r    c                 óB   — t          d„ | j        D ¦   «         d¬¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S rF   )r[   r%  s     r   r   zAdd.<lambda>.<locals>.<genexpr>z  ó%   è è € Ð/Ð/ ˆÔ	Ð/Ð/Ð/Ð/Ð/Ð/r    Tr  r  r�   s    r   r–   zAdd.<lambda>y  ó-   € ­,Ø/Ð/ T¤YÐ/Ñ/Ô/¸Dð+Bñ +Bô +B€ r    c                 óB   — t          d„ | j        D ¦   «         d¬¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S rF   )Ú
is_complexr%  s     r   r   zAdd.<lambda>.<locals>.<genexpr>|  ó$   è è € Ð)Ð)˜!ˆŒÐ)Ð)Ð)Ð)Ð)Ð)r    Tr  r  r�   s    r   r–   zAdd.<lambda>{  ó*   € ¥LØ)Ð)˜tœyÐ)Ñ)Ô)°dð%<ñ %<ô %<€ r    c                 óB   — t          d„ | j        D ¦   «         d¬¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S rF   )Úis_antihermitianr%  s     r   r   zAdd.<lambda>.<locals>.<genexpr>~  r(  r    Tr  r  r�   s    r   r–   zAdd.<lambda>}  r)  r    c                 óB   — t          d„ | j        D ¦   «         d¬¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S rF   )rZ   r%  s     r   r   zAdd.<lambda>.<locals>.<genexpr>€  s$   è è € Ð(Ð(˜ˆŒÐ(Ð(Ð(Ð(Ð(Ð(r    Tr  r  r�   s    r   r–   zAdd.<lambda>  s*   € ¥<Ø(Ð(˜dœiÐ(Ñ(Ô(°Tð$;ñ $;ô $;€ r    c                 óB   — t          d„ | j        D ¦   «         d¬¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S rF   )Úis_hermitianr%  s     r   r   zAdd.<lambda>.<locals>.<genexpr>‚  ó$   è è € Ð+Ð+˜AˆŒÐ+Ð+Ð+Ð+Ð+Ð+r    Tr  r  r�   s    r   r–   zAdd.<lambda>�  ó*   € ¥lØ+Ð+ ¤Ð+Ñ+Ô+¸ð'>ñ '>ô '>€ r    c                 óB   — t          d„ | j        D ¦   «         d¬¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S rF   )Ú
is_integerr%  s     r   r   zAdd.<lambda>.<locals>.<genexpr>„  r-  r    Tr  r  r�   s    r   r–   zAdd.<lambda>ƒ  r.  r    c                 óB   — t          d„ | j        D ¦   «         d¬¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S rF   ©Úis_rationalr%  s     r   r   zAdd.<lambda>.<locals>.<genexpr>†  s$   è è € Ð*Ð*˜1ˆŒÐ*Ð*Ð*Ð*Ð*Ð*r    Tr  r  r�   s    r   r–   zAdd.<lambda>…  s*   € ¥\Ø*Ð* ¤	Ð*Ñ*Ô*°tð&=ñ &=ô &=€ r    c                 óB   — t          d„ | j        D ¦   «         d¬¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S rF   )Úis_algebraicr%  s     r   r   zAdd.<lambda>.<locals>.<genexpr>ˆ  r7  r    Tr  r  r�   s    r   r–   zAdd.<lambda>‡  r8  r    c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S rF   rG   r%  s     r   r   zAdd.<lambda>.<locals>.<genexpr>‰  s6   è è € ð 5-ð 5-ØˆÔð5-ð 5-ð 5-ð 5-ð 5-ð 5-r    r  r�   s    r   r–   zAdd.<lambda>‰  s.   € ­ð 5-ð 5-Ø"&¤)ð5-ñ 5-ô 5-ñ )-ô )-€ r    c                 óP   — d}| j         D ]}|j        }|€ d S |du r	|du r d S d}Œ|S )NFT)r"   r¥   )r‹   Úsawinfr<   Úainfs       r   Ú_eval_is_infinitezAdd._eval_is_infiniteŒ  sO   € ØˆØ”ð 	ð 	ˆAØ”=ˆDØˆ|Ø�t�tØ˜��à˜T�>�>Ø˜4˜4Ø�øØˆr    c                 ó8  — g }g }| j         D ]Í}|j        r*|j        rŒ|j        du r|                     |¦  «         Œ0 d S |j        r#|                     |t
          j        z  ¦  «         Œ]|j        rgt
          j        |j         v rT|                     t
          j        ¦  «        \  }}|t
          j        fk    r|j        r|                     | ¦  «         ŒÈ d S  d S  | j	        |Ž }|| k    r.|j        rt           | j	        |Ž j        ¦  «        S |j        du rdS d S d S ©NF)r"   r[   rd   r6   Úis_imaginaryr   r·   ra   Úas_coeff_mulrÏ   r   )r‹   ÚnzÚim_Ir<   ry   Úairw   s          r   Ú_eval_is_imaginaryzAdd._eval_is_imaginary™  sG  € ØˆØˆØ”ð 	ð 	ˆAØÔ!ð Ø”9ð ØØ”Y %Ð'Ð'Ø—I’I˜a‘L”L�L�Là�F�FØ”ð 	Ø—’˜A�aœoÑ-Ñ.Ô.Ð.Ð.Ø”ð �aœo°´Ð7Ð7ØŸNšN­1¬?Ñ;Ô;‘	��rØ�!œ/Ð+Ò+Ð+°Ô0FÐ+Ø—K’K  Ñ'Ô'Ð'Ð'à�F�Fà��ØˆDŒI�rˆNˆØ�Š9ˆ9ØŒyð Ý   ¤¨DÐ!1Ô!9Ñ:Ô:Ð:Ø”˜eÐ#Ð#Ø�uð	 ˆ9ð $Ð#r    c                 ó\  — | j         du rd S g }d}d}d}| j        D ]¡}|j        r/|j        r|dz  }Œ|j        du r|                     |¦  «         Œ5 d S |j        r|dz  }ŒE|j        rSt          j        |j        v r@| 	                    t          j        ¦  «        \  }}|t          j        fk    r
|j        rd}Œœ d S  d S |t          | j        ¦  «        k    rdS t          |¦  «        dt          | j        ¦  «        fv rd S  | j        |Ž }|j        r|s|dk    rdS |dk    rdS |j        du rdS d S )NFr   r   T)rH   r"   r[   rd   r6   rK  ra   r   r·   rL  r#   rÏ   )	r‹   rM  ÚzÚim_or_zÚimr<   ry   rO  rw   s	            r   Ú_eval_is_zerozAdd._eval_is_zeroµ  s‚  € ØÔ %Ð'Ð'ð ˆFØˆØˆØˆØˆØ”ð 	ð 	ˆAØÔ!ð Ø”9ð Ø˜‘F�A�AØ”Y %Ð'Ð'Ø—I’I˜a‘L”L�L�Là�F�FØ”ð 	Ø�a‘��Ø”ð �aœo°´Ð7Ð7ØŸNšN­1¬?Ñ;Ô;‘	��rØ�!œ/Ð+Ò+Ð+°Ô0FÐ+Ø"�G�Gà�F�Fà��Ø•�D”I‘”ÒÐØ�4Ýˆr‰7Œ7�q�#˜dœi™.œ.Ð)Ð)Ð)Ø�4ØˆDŒI�rˆNˆØŒ9ð 	!Øð !Ø˜’7�7Ø˜4Ø˜1’W�WØ ˜5ØŒ9˜ÐÐØ�5ð Ðr    c                 óx   — d„ | j         D ¦   «         }|sdS |d         j        r | j        |dd …         Ž j        S d S )Nc                 ó$   — g | ]}|j         d u¯|‘ŒS ©T)Úis_evenrT   s     r   rN   z$Add._eval_is_odd.<locals>.<listcomp>ß  s$   € Ð=Ð=Ð=�1¨!¬)°tÐ*;Ð*;ˆQÐ*;Ð*;Ð*;r    Fr   r   )r"   Úis_oddrp   rY  )r‹   Úls     r   Ú_eval_is_oddzAdd._eval_is_oddÞ  sW   € Ø=Ð=˜œ	Ð=Ñ=Ô=ˆØð 	Ø�5ØˆQŒ4Œ;ð 	5Ø$�4Ô$ a¨¨¨¤eÐ,Ô4Ð4ð	5ð 	5r    c                 óÆ   — | j         D ]X}|j        }|rHt          | j         ¦  «        }|                     |¦  «         t	          d„ |D ¦   «         ¦  «        r dS  d S |€ d S ŒYdS )Nc              3   ó(   K  — | ]}|j         d u V — ŒdS )TNr>  )r   r”   s     r   r   z*Add._eval_is_irrational.<locals>.<genexpr>ë  s)   è è € Ð=Ð=°�q”}¨Ð,Ð=Ð=Ð=Ð=Ð=Ð=r    TF)r"   Úis_irrationalr0   Úremoverb   )r‹   r�   r<   Úotherss       r   Ú_eval_is_irrationalzAdd._eval_is_irrationalå  s„   € Ø”ð 		ð 		ˆAØ”ˆAØð Ý˜dœi™œ�Ø—’˜aÑ Ô Ð ÝÐ=Ð=°fÐ=Ñ=Ô=Ñ=Ô=ð  Ø˜4˜4Ø�t�tØˆyØ��ð àˆur    c                 ób   — dx}}| j         D ]"}|j        r|r dS d}Œ|j        r|r dS d}Œ  d S dS )Nr   Fr   T)r"   Úis_nonnegativeÚis_nonpositive)r‹   ÚnnÚnpr<   s       r   Ú_all_nonneg_or_nonpposzAdd._all_nonneg_or_nonpposò  sj   € ØˆˆˆRØ”ð 	ð 	ˆAØÔð 	Øð !Ø ˜5˜5Ø��ØÔ!ð Øð !Ø ˜5˜5Ø��à��à�4r    c                 ó  •— | j         r t          ¦   «                              ¦   «         S |                      ¦   «         \  }}|j        sbddlm}  ||¦  «        }|�O||z   }|| k    r|j        r	|j        rdS t          | j
        ¦  «        dk    r || ¦  «        }|�|| k    r	|j        rdS dx}x}x}}	t          ¦   «         }
d„ | j        D ¦   «         }|sdS |D ]f}|j        }|j        }|r4|
                     t          ||j        f¦  «        ¦  «         d|
v rd|
v r d S |rd}ŒK|j        rd}ŒU|j        rd}Œ_|€ d S d}	Œg|
r)t          |
¦  «        dk    rd S |
                     ¦   «         S |	rd S |s|s|rdS |s|rdS |s|sdS d S d S )Nr   ©Ú_monotonic_signTFc                 ó    — g | ]}|j         °	|‘ŒS r?   ©rd   r%  s     r   rN   z2Add._eval_is_extended_positive.<locals>.<listcomp>  ó   € Ð6Ð6Ð6�a¨A¬IÐ6�Ð6Ð6Ð6r    )rº   ÚsuperÚ_eval_is_extended_positiverŸ   rd   r½   rk  r¹   rR   r#   Úfree_symbolsÚsetr"   r¥   Úaddr   rX   r2   )r‹   r\   r<   rk  rå   rI   ÚposÚnonnegÚnonposÚunknown_signÚsaw_INFr"   ÚisposÚinfiniteÚ	__class__s                 €r   rp  zAdd._eval_is_extended_positive  óF  ø€ ØŒ>ð 	8Ý‘7”7×5Ò5Ñ7Ô7Ð7Ø× Ò Ñ"Ô"‰ˆˆ1ØŒyð 
	$Ø2Ð2Ð2Ð2Ð2Ð2Ø� Ñ"Ô"ˆAØˆ}Ø˜‘E�Ø˜’9�9 Ô!7�9¸AÔ<U�9Ø˜4Ý�tÔ(Ñ)Ô)¨QÒ.Ð.Ø'˜¨Ñ-Ô-�AØ�}¨¨dª¨°qÔ7M¨Ø#˜tØ/4Ð4ˆÐ4ˆfÐ4�v Ý‘%”%ˆØ6Ð6˜4œ9Ð6Ñ6Ô6ˆØð 	Ø�5Øð 	 ð 	 ˆAØÔ*ˆEØ”}ˆHØð Ø—’�H e¨QÔ-FÐ%GÑHÔHÑIÔIÐIØ˜7�?�? u°Ð'7Ð'7Ø�F�FØð Ø�ØØÔ*ð Ø�ØØÔ*ð Ø�ØàÐØ��ØˆLˆLàð 	Ý�7‰|Œ|˜aÒÐØ�Ø—;’;‘=”=Ð Øð 	ØˆFØð 	 ð 	¨3ð 	Ø�4Øð 	˜Cð 	Ø�4Øð 	˜Vð 	Ø�5ð	ð 	ð 	ð 	r    c                 ó0  — | j         s€|                      ¦   «         \  }}|j        sd|j        r_ddlm}  ||¦  «        }|�N||z   }|| k    r	|j        rdS t          | j        ¦  «        dk    r$ || ¦  «        }|�|| k    r|j        rdS d S d S d S d S d S d S d S d S ©Nr   rj  T)rº   rŸ   rd   rR   r½   rk  r#   rq  ©r‹   r\   r<   rk  rå   rI   s         r   Ú_eval_is_extended_nonnegativez!Add._eval_is_extended_nonnegative8  óñ   € ØŒ~ð 	(Ø×$Ò$Ñ&Ô&‰DˆAˆqØ”9ð 
( Ô!:ð 
(Ø6Ð6Ð6Ð6Ð6Ð6Ø#�O AÑ&Ô&�Ø�=Ø˜A™�AØ˜D’y�y QÔ%>�yØ#˜tÝ˜4Ô,Ñ-Ô-°Ò2Ð2Ø+˜O¨DÑ1Ô1˜Ø˜=¨Q°$ªY¨Y¸1Ô;T¨YØ#' 4ð	(ð 	(ð
(ð 
(ð 
(ð 
(ð !�=ð 3Ð2à(˜=¨Y¨Y¨Y¨Yr    c                 ó0  — | j         s€|                      ¦   «         \  }}|j        sd|j        r_ddlm}  ||¦  «        }|�N||z   }|| k    r	|j        rdS t          | j        ¦  «        dk    r$ || ¦  «        }|�|| k    r|j        rdS d S d S d S d S d S d S d S d S r~  )rº   rŸ   rd   rX   r½   rk  r#   rq  r  s         r   Ú_eval_is_extended_nonpositivez!Add._eval_is_extended_nonpositiveG  r�  r    c                 ó  •— | j         r t          ¦   «                              ¦   «         S |                      ¦   «         \  }}|j        sbddlm}  ||¦  «        }|�O||z   }|| k    r|j        r	|j        rdS t          | j
        ¦  «        dk    r || ¦  «        }|�|| k    r	|j        rdS dx}x}x}}	t          ¦   «         }
d„ | j        D ¦   «         }|sdS |D ]f}|j        }|j        }|r4|
                     t          ||j        f¦  «        ¦  «         d|
v rd|
v r d S |rd}ŒK|j        rd}ŒU|j        rd}Œ_|€ d S d}	Œg|
r)t          |
¦  «        dk    rd S |
                     ¦   «         S |	rd S |s|s|rdS |s|rdS |s|sdS d S d S )Nr   rj  TFc                 ó    — g | ]}|j         °	|‘ŒS r?   rm  r%  s     r   rN   z2Add._eval_is_extended_negative.<locals>.<listcomp>g  rn  r    )rº   ro  Ú_eval_is_extended_negativerŸ   rd   r½   rk  r¸   rX   r#   rq  rr  r"   r¥   rs  r   rR   r2   )r‹   r\   r<   rk  rå   rI   Únegrv  ru  rw  rx  r"   Úisnegrz  r{  s                 €r   r†  zAdd._eval_is_extended_negativeV  r|  r    c                 ó|  ‡‡— ‰j         s3‰t          j        u r#‰ | j        v r|                      ‰ ‰ i¦  «        S d S |                      ¦   «         \  }}‰                     ¦   «         \  }}|j        rD|j        r=||k    r|                      ‰|| ¦  «        S || k    r|                      ‰ ||¦  «        S |j        r|j        s||k    rð| j                             |¦  «        | j                             |¦  «        }}t          |¦  «        t          |¦  «        k     ršt          |¦  «        }	t          |¦  «        }
|
|	k     r#|	|
z
  } | j        ‰|| gˆˆfd„|D ¦   «         ¢R Ž S | j                             | ¦  «        }t          |¦  «        }
|
|	k     r'|	|
z
  } | j        ‰ ||gˆˆfd„|D ¦   «         ¢R Ž S d S d S d S )Nc                 ó<   •— g | ]}|                      ‰‰¦  «        ‘ŒS r?   ©Ú_subs©r   rI   Únewrß   s     €€r   rN   z"Add._eval_subs.<locals>.<listcomp>§  ó'   ø€ Ð DÐ DÐ D°q §¢¨¨cÑ!2Ô!2Ð DÐ DÐ Dr    c                 ó<   •— g | ]}|                      ‰‰¦  «        ‘ŒS r?   r‹  r�  s     €€r   rN   z"Add._eval_subs.<locals>.<listcomp>¯  r�  r    )r3   r   rr   r"   rí   rŸ   r`   rÏ   Ú	make_argsr#   rr  )r‹   rß   rŽ  Ú
coeff_selfÚ
terms_selfÚ	coeff_oldÚ	terms_oldÚargs_oldÚ	args_selfÚself_setÚold_setÚret_sets    ``         r   Ú
_eval_subszAdd._eval_subsŒ  sK  øø€ ØŒzð 	Ø•a”jÐ Ð  c T¨T¬YÐ%6Ð%6à—}’} s d¨S¨D \Ñ2Ô2Ð2Ø�4à!%×!2Ò!2Ñ!4Ô!4Ñˆ
�JØ"×/Ò/Ñ1Ô1Ñˆ	�9àÔ!ð 	> iÔ&;ð 	>Ø˜YÒ&Ð&Ø—y’y  j°9°*Ñ=Ô=Ð=Ø˜i˜ZÒ'Ð'Ø—y’y #  z°9Ñ=Ô=Ð=àÔ!ð 	F iÔ&;ð 	FØ Ò*Ð*Ø"&¤)×"5Ò"5Øñ#ô #Ø œI×/Ò/°
Ñ;Ô;ð  ˆHå�8‰}Œ}�s 9™~œ~Ò-Ð-Ý˜y™>œ>�Ý˜h™-œ-�à˜XÒ%Ð%Ø&¨Ñ0�GØ$˜4œ9 S¨*°y°jð FØ DÐ DÐ DÐ DÐ D¸GÐ DÑ DÔ DðFð Fð Fð Fð  œ9×.Ò.Ø�Jñ ô  �å˜h™-œ-�Ø˜XÒ%Ð%Ø&¨Ñ0�GØ$˜4œ9 c T¨:°yð FØ DÐ DÐ DÐ DÐ D¸GÐ DÑ DÔ DðFð Fð Fð Fð .Ð-ð +Ð*ð &Ð%r    c                 ó8   — d„ | j         D ¦   «         } | j        |Ž S )Nc                 ó    — g | ]}|j         °	|‘ŒS r?   ©rc   r%  s     r   rN   zAdd.removeO.<locals>.<listcomp>²  s   € Ð7Ð7Ð7�a¨A¬JÐ7�Ð7Ð7Ð7r    rø   ©r‹   r"   s     r   ÚremoveOzAdd.removeO±  s'   € Ø7Ð7˜4œ9Ð7Ñ7Ô7ˆØ ˆtÔ  $Ð'Ð'r    c                 ó@   — d„ | j         D ¦   «         }|r
 | j        |Ž S d S )Nc                 ó    — g | ]}|j         ¯	|‘ŒS r?   rž  r%  s     r   rN   zAdd.getO.<locals>.<listcomp>¶  s   € Ð3Ð3Ð3�a¨¬
Ð3�Ð3Ð3Ð3r    rø   rŸ  s     r   ÚgetOzAdd.getOµ  s9   € Ø3Ð3˜4œ9Ð3Ñ3Ô3ˆØð 	,Ø$�4Ô$ dÐ+Ð+ð	,ð 	,r    c                 ó´  ‡‡‡
— ddl mŠ
 g }t          t          ‰¦  «        r‰n‰g¦  «        Š‰sdgt	          ‰¦  «        z  Šˆ
ˆˆfd„| j        D ¦   «         }|D ]q\  }}|D ]$\  }}|                     |¦  «        r
||k    rd} nŒ%|€Œ/||fg}	|D ]8\  }}|                     |¦  «        r||k    rŒ!|	                     ||f¦  «         Œ9|	}Œrt          |¦  «        S )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   ©ÚOrderc           
      óB   •— g | ]}| ‰|gt          ‰‰¦  «        ¢R Ž f‘ŒS r?   )rÃ   )r   rU   r¦  ÚpointÚsymbolss     €€€r   rN   z-Add.extract_leading_order.<locals>.<listcomp>Ð  s:   ø€ ÐFÐFÐF°q��5�5˜Ð1�S ¨%Ñ0Ô0Ð1Ð1Ð1Ð2ÐFÐFÐFr    N)	Úsympy.series.orderr¦  r0   r   r#   r"   rK   r6   r˜   )r‹   r©  r¨  Úlstru   ÚefÚofr|   rM   Únew_lstr¦  s    ``       @r   Úextract_leading_orderzAdd.extract_leading_orderº  s3  øøø€ ð" 	-Ð,Ð,Ð,Ð,Ð,ØˆÝ¥+¨gÑ"6Ô"6ÐE�w�w¸W¸IÑFÔFˆØð 	%Ø�C�˜G™œÑ$ˆEØFÐFÐFÐFÐFÐF¸D¼IÐFÑFÔFˆØð 	ð 	‰FˆB�Øð ð ‘��1Ø—:’:˜b‘>”>ð  a¨2¢g gØ�BØ�EøØˆzØØ˜B�x�jˆGØð 'ð '‘��1Ø—;’;˜q‘>”>ð  a¨2¢g gØØ—’  1˜vÑ&Ô&Ð&Ð&ØˆCˆCÝ�S‰zŒzÐr    c                 óÐ   — | j         }g g }}|D ]E}|                     |¬¦  «        \  }}|                     |¦  «         |                     |¦  «         ŒF | j        |Ž  | j        |Ž fS )a4  
        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)
        )Údeep)r"   Úas_real_imagr6   rÏ   )	r‹   r±  ÚhintsÚsargsÚre_partÚim_partr  ÚrerT  s	            r   r²  zAdd.as_real_imagà  s�   € ð ”	ˆØ˜r�ˆØð 	ð 	ˆDØ×&Ò&¨DÐ&Ñ1Ô1‰FˆB�Ø�NŠN˜2ÑÔÐØ�NŠN˜2ÑÔÐÐØ�”	˜7Ð# Y T¤Y°Ð%8Ð9Ð9r    c           
      ó’  ‡‡‡‡— ddl m}m} ddlm} ddlmŠ ddlm}m	} ddl
m}	 |                      ¦   «         }
|
€ |d¦  «        }
|                      ¦   «         }|                     |¦  «        r ||¦  «        }t          ˆfd„| j        D ¦   «         ¦  «        rd	d	d
d
d
d
d
d
d
dœ	} |j        di |¤Ž} |	|¦  «        }|j        s|                     ‰|‰¬¦  «        S d„ |j        D ¦   «         }|€ |d¦  «        n|Šˆˆˆfd„|j        D ¦   «         } |d¦  «        d}}	 |D ]"} ||‰¦  «        }|r||vr|}|}Œ||v r||z  }Œ#n# t(          $ r |cY S w xY w|€|                     ‰ ‰‰¦  «        ¦  «        }|j        }|€-|                     ¦   «                              ¦   «         }|j        }|d	u rç	 |                     ¦   «         }n# t4          $ r t6          j        }Y nw xY w|                     |¦  «        rt6          j        } |d¦  «        }t6          j        }|j        r^|                     ‰||z   |‰¬¦  «                             ¦   «                              ¦   «                              ¦   «         }|dz  }|j        °^|                     ‰|‰¬¦  «        S |t6          j         u r|j!         "                    |¦  «        |
z   S |S )Nr   )râ   ÚSymbolr¥  )Úlog)Ú	PiecewiseÚpiecewise_foldr   )Ú
expand_mulc              3   ó8   •K  — | ]}t          |‰¦  «        V — Œd S rF   )rg   )r   r<   rº  s     €r   r   z,Add._eval_as_leading_term.<locals>.<genexpr>  s-   øè è € Ð5Ð5 a�z˜!˜SÑ!Ô!Ð5Ð5Ð5Ð5Ð5Ð5r    TF)	r±  rº  ÚmulÚ	power_expÚ
power_baseÚmultinomialÚbasicÚforceÚfactor©rÕ   rÖ   c                 ó    — g | ]}|j         ¯	|‘ŒS r?   r¤   ©r   r�   s     r   rN   z-Add._eval_as_leading_term.<locals>.<listcomp>  s   € Ð:Ð:Ð:˜!¨A¬MÐ:�AÐ:Ð:Ð:r    rÕ   c                 ó@   •— g | ]}|                      ‰‰‰¬ ¦  «        ‘ŒS )rÆ  )Úas_leading_term)r   r�   Ú_logxrÖ   r”   s     €€€r   rN   z-Add._eval_as_leading_term.<locals>.<listcomp>  s.   ø€ ÐXÐXÐXÈ˜×*Ò*¨1°5¸tÐ*ÑDÔDÐXÐXÐXr    rÓ   rD   r?   )#Úsympy.core.symbolrâ   r¹  rª  r¦  Ú&sympy.functions.elementary.exponentialrº  Ú$sympy.functions.elementary.piecewiser»  r¼  r¿   r½  r£  r   rë   r¶   r"   Úexpandr3   rÊ  Ú	TypeErrorÚsubsrd   ÚtrigsimpÚcancelÚgetnÚNotImplementedErrorr   rn   rc   rØ   Úpowsimpre   rÏ   r9   )r‹   r”   rÕ   rÖ   râ   r¹  r¦  r»  r¼  r½  rM   rß   Úlogflagsr&   rz  Úleading_termsÚminÚnew_exprr  Úorderrd   Ún0ÚresÚincrrË  rº  s    ` `                    @@r   Ú_eval_as_leading_termzAdd._eval_as_leading_term÷  s¡  øøøø€ Ø3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ø,Ð,Ð,Ð,Ð,Ð,Ø>Ð>Ð>Ð>Ð>Ð>ØRÐRÐRÐRÐRÐRÐRÐRØ(Ð(Ð(Ð(Ð(Ð(à�IŠI‰KŒKˆØˆ9Ø��a‘”ˆAØ�lŠl‰nŒnˆà�7Š7�9ÑÔð 	&Ø �. Ñ%Ô%ˆCõ Ð5Ð5Ð5Ð5¨4¬9Ð5Ñ5Ô5Ñ5Ô5ð 	)Ø $¨T¸%ÈeØ#°EÀEÐTYØð!ð !ˆHð �#”*Ð(Ð(˜xÐ(Ð(ˆCØˆz˜#‰ŒˆàŒ{ð 	AØ×'Ò'¨°¸4Ð'Ñ@Ô@Ð@à:Ð:˜tœyÐ:Ñ:Ô:ˆà!% ���f‘”�°4ˆØXÐXÐXÐXÐXÐXÈdÌiÐXÑXÔXˆà˜˜a™œ !ˆXˆð
	Ø%ð %ð %�Ø˜˜d A™œ�Øð %˜e¨3Ð.Ð.Ø�CØ#�H�HØ˜E�\�\Ø Ñ$�Høð%øõ ð 	ð 	ð 	ØˆKˆKˆKð	øøøð ˆ<Ø—}’} U¨C¨C°©F¬FÑ3Ô3ˆHàÔ"ˆØˆ?Ø×(Ò(Ñ*Ô*×1Ò1Ñ3Ô3ˆHØÔ&ˆGØ�dˆ?ˆ?ðØ—X’X‘Z”Z��øÝ&ð ð ð Ý”U���ðøøøà�vŠv�f‰~Œ~ð Ý”U�Ø�%˜‘(”(ˆCÝ”5ˆDØ”,ð Ø×'Ò'¨¨R°©W¸4ÀdÐ'ÑKÔK×RÒRÑTÔT×\Ò\Ñ^Ô^×gÒgÑiÔi�Ø˜‘	�ð ”,ð ð ×&Ò& q¨t¸$Ð&Ñ?Ô?Ð?à�œÐÐØ”8×&Ò& xÑ0Ô0°1Ñ4Ð4ð ˆOs$   Ä"%E ÅEÅEÆ6G ÇG$Ç#G$c                 ó4   —  | j         d„ | j        D ¦   «         Ž S )Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r?   )ÚadjointrÈ  s     r   rN   z%Add._eval_adjoint.<locals>.<listcomp>C  s    € Ð:Ð:Ð:¨1˜1Ÿ9š9™;œ;Ð:Ð:Ð:r    rÎ   r�   s    r   Ú_eval_adjointzAdd._eval_adjointB  s"   € ØˆtŒyÐ:Ð:°´	Ð:Ñ:Ô:Ð;Ð;r    c                 ó4   —  | j         d„ | j        D ¦   «         Ž S )Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r?   )Ú	conjugaterÈ  s     r   rN   z'Add._eval_conjugate.<locals>.<listcomp>F  ó    € Ð<Ð<Ð<¨Q˜1Ÿ;š;™=œ=Ð<Ð<Ð<r    rÎ   r�   s    r   Ú_eval_conjugatezAdd._eval_conjugateE  ó"   € ØˆtŒyÐ<Ð<°$´)Ð<Ñ<Ô<Ð=Ð=r    c                 ó4   —  | j         d„ | j        D ¦   «         Ž S )Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r?   )Ú	transposerÈ  s     r   rN   z'Add._eval_transpose.<locals>.<listcomp>I  rç  r    rÎ   r�   s    r   Ú_eval_transposezAdd._eval_transposeH  ré  r    c                 óf  — g }d}| j         D ]`}|                     ¦   «         \  }}|j        st          j        }|}|p|t          j        u }|                     |j        |j        |f¦  «         Œa|sAt          t          d„ |D ¦   «         d¦  «        }t          t          d„ |D ¦   «         d¦  «        }n@t          t          d„ |D ¦   «         d¦  «        }t          t          d„ |D ¦   «         d¦  «        }||cxk    rdk    rn nt          j        | fS |sCt          |¦  «        D ]2\  }\  }	}
}t          t          |	|z  ||
z  z  ¦  «        |¦  «        ||<   Œ3nft          |¦  «        D ]V\  }\  }	}
}|
r*t          t          |	|z  ||
z  z  ¦  «        |¦  «        ||<   Œ5t          t          |	|
¦  «        |¦  «        ||<   ŒW|d         j        s|d         t          j        u r|                     d¦  «        }nd}t#          |¦  «         |r|                     d|¦  «         t          ||¦  «         | j        |Ž fS )	a  
        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

        Fc                 ó   — g | ]
}|d          ‘ŒS ©r   r?   rÈ  s     r   rN   z!Add.primitive.<locals>.<listcomp>y  ó   € Ð 5Ð 5Ð 5¨!  1¤Ð 5Ð 5Ð 5r    r   c                 ó   — g | ]
}|d          ‘ŒS ©r   r?   rÈ  s     r   rN   z!Add.primitive.<locals>.<listcomp>z  rñ  r    r   c                 ó.   — g | ]}|d          ¯
|d         ‘ŒS )r   r   r?   rÈ  s     r   rN   z!Add.primitive.<locals>.<listcomp>|  ó%   € Ð =Ð =Ð =¨!¸¸!¼Ð =  1¤Ð =Ð =Ð =r    c                 ó.   — g | ]}|d          ¯
|d          ‘ŒS ró  r?   rÈ  s     r   rN   z!Add.primitive.<locals>.<listcomp>}  rõ  r    N)r"   ri   r`   r   rn   rf   r6   rÀ   r»   r   r   r   Ú	enumeraterü   ÚRationalr5   r2   r.   r7   rp   )r‹   rx   rñ   r<   r\   r³   ÚngcdÚdlcmr   rÀ   r»   r  s               r   r  zAdd.primitiveK  sƒ  € ðF ˆØˆØ”ð 	(ð 	(ˆAØ—>’>Ñ#Ô#‰DˆAˆqØ”=ð Ý”E�Ø�ØÐ/˜�aÔ/Ð/ˆCØ�LŠL˜!œ#˜qœs A˜Ñ'Ô'Ð'Ð'àð 	BÝ�$Ð 5Ð 5¨uÐ 5Ñ 5Ô 5°qÑ9Ô9ˆDÝ�$Ð 5Ð 5¨uÐ 5Ñ 5Ô 5°qÑ9Ô9ˆDˆDå�$Ð =Ð =¨uÐ =Ñ =Ô =¸qÑAÔAˆDÝ�$Ð =Ð =¨uÐ =Ñ =Ô =¸qÑAÔAˆDà�4ÐÐÒÐ˜1ÒÐÐÐÐÝ”5˜$�;ÐØð 	AÝ#,¨UÑ#3Ô#3ð Lð L‘�‘<�A�q˜$Ý&¥x°°D±¸4À¹7Ñ0CÑ'DÔ'DÀdÑKÔK��a‘�ðLõ $-¨UÑ#3Ô#3ð Að A‘�‘<�A�q˜$Øð AÝ*­8°Q¸±W¸tÀQ¹wÑ4GÑ+HÔ+HÈ$ÑOÔO�E˜!‘H�Hå*­8°A°q©>¬>¸4Ñ@Ô@�E˜!‘H�Hð �Œ8Ôð 	  q¤­QÔ->Ð!>Ð!>Ø—	’	˜!‘”ˆAˆAàˆAÝ�‰ŒˆØð 	Ø�LŠL˜˜AÑÔÐÝ˜˜dÑ#Ô#Ð%6 TÔ%6¸Ð%>Ð>Ð>r    c           	      óø  ‡‡‡‡—  | j         ˆˆfd„| j        D ¦   «         Ž                      ¦   «         \  }}‰sP|j        sI|j        rB|                     ¦   «         \  }}||z  }t          d„ |j        D ¦   «         ¦  «        r|}n||z  }‰�rí|j        �rå|j        }g }d}	|D �]}
t          t          ¦  «        }t          j
        |
¦  «        D ]p}|j        rg|                     ¦   «         \  }}|j        rI|j        rB||j                                      t!          t#          |¦  «        ¦  «        |j        z  ¦  «         Œq|s �n7|	€"t'          |                     ¦   «         ¦  «        }	n(|	t'          |                     ¦   «         ¦  «        z  }	|	s në|                     |¦  «         �Œ|D ]V}t          |                     ¦   «         ¦  «        D ]Š‰|	vr|                     ‰¦  «         Œ|D ]Št          |‰         Ž |‰<   ŒŒWg Š|	D ]PŠt-          t.          ˆfd„|D ¦   «         d¦  «        }|dk    r&‰                     |t1          d‰¦  «        z  ¦  «         ŒQ‰r$t          ‰Ž Šˆfd„|D ¦   «         }‰ |j         |Ž z  }||fS )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.
        c                 óL   •— g | ] }t          |                     ‰‰¬ ¦  «        Ž ‘Œ!S ))ÚradicalÚclear)rü   Úas_content_primitive)r   r<   rþ  rý  s     €€r   rN   z,Add.as_content_primitive.<locals>.<listcomp>¯  sK   ø€ ð  ?ð  ?ð  ?Ø/0õ !,¨Q×-CÒ-CØ 5ð .Dñ .*ô .*ð !+ð  ?ð  ?ð  ?r    c              3   óT   K  — | ]#}|                      ¦   «         d          j        V — Œ$dS )r   N)ri   rl   r%  s     r   r   z+Add.as_content_primitive.<locals>.<genexpr>´  s4   è è € ÐCÐC°a�1—>’>Ñ#Ô# AÔ&Ô1ÐCÐCÐCÐCÐCÐCr    Nc                 ó    •— g | ]
}|‰         ‘ŒS r?   r?   )r   rÆ   r»   s     €r   rN   z,Add.as_content_primitive.<locals>.<listcomp>Ù  s   ø€ Ð%9Ð%9Ð%9¨q a¨¤dÐ%9Ð%9Ð%9r    r   r   c                 ó   •— g | ]}|‰z  ‘ŒS r?   r?   )r   rO  ÚGs     €r   rN   z,Add.as_content_primitive.<locals>.<listcomp>Þ  s   ø€ Ð0Ð0Ð0 R˜B˜q™DÐ0Ð0Ð0r    )rÏ   r"   r  rl   r3   r  r¶   r   r0   rq   r‘  rj   rk   r`   r»   r6   rÁ   ÚintrÀ   rr  Úkeysr2   r   r   rø  )r‹   rý  rþ  ÚconÚprimr  Ú_pr"   ÚradsÚcommon_qr³   Ú	term_radsrO  rw   r|   rÆ   Úgr  r»   s    ``              @@r   rÿ  zAdd.as_content_primitive›  sý  øøøø€ ð( �D”Ið  ?ð  ?ð  ?ð  ?ð  ?Ø48´Ið ?ñ  ?ô  ?ð @ß@IÂ	ÁÄñ 	ˆˆTàð 	˜Sœ^ð 	°´ð 	Ø×'Ò'Ñ)Ô)‰FˆC�Ø�a‘ˆBÝÐCÐC¸2¼7ÐCÑCÔCÑCÔCð Ø��à�q‘�Øñ '	.�t”{ñ '	.à”9ˆDØˆDØˆHØð ".ñ ".�Ý'­Ñ-Ô-�	Ýœ-¨Ñ*Ô*ð Dð D�BØ”yð DØ!Ÿ~š~Ñ/Ô/™˜˜1Øœ=ð D¨Q¬\ð DØ% a¤cœN×1Ò1µ#µc¸!±f´f±+´+¸q¼sÑ2BÑCÔCÐCøØ ð Ø‘EØÐ#Ý" 9§>¢>Ñ#3Ô#3Ñ4Ô4�H�Hà'­#¨i¯nªnÑ.>Ô.>Ñ*?Ô*?Ñ?�HØ#ð Ø˜Ø—’˜IÑ&Ô&Ð&Ñ&ð ð *ð *�AÝ! !§&¢&¡(¤(™^œ^ð %ð %˜Ø HÐ,Ð,ØŸEšE !™HœH˜HøØð *ð *˜Ý" A a¤D˜z˜˜!™˜ð*ð �Ø!ð 4ð 4�AÝ�tÐ%9Ð%9Ð%9Ð%9°DÐ%9Ñ%9Ô%9¸1Ñ=Ô=�AØ˜A’v�vØŸš ¥H¨Q°¡N¤NÑ!2Ñ3Ô3Ð3øØð .Ý˜Q˜�AØ0Ð0Ð0Ð0¨4Ð0Ñ0Ô0�DØ˜Y˜TœY¨Ð-Ñ-�Dà�DˆyÐr    c                 óT   — ddl m} t          t          | j        |¬¦  «        ¦  «        S )Nr   )Údefault_sort_keyr+   )Úsortingr  r˜   Úsortedr"   )r‹   r  s     r   Ú_sorted_argszAdd._sorted_argsã  s2   € à-Ð-Ð-Ð-Ð-Ð-Ý•V˜DœIÐ+;Ð<Ñ<Ô<Ñ=Ô=Ð=r    c                 óN   ‡‡‡— ddl mŠ  | j        ˆˆˆfd„| j        D ¦   «         Ž S )Nr   )Údifference_deltac                 ó*   •— g | ]} ‰|‰‰¦  «        ‘ŒS r?   r?   )r   r<   ÚddrÔ   Ústeps     €€€r   rN   z.Add._eval_difference_delta.<locals>.<listcomp>ê  s%   ø€ Ð=Ð=Ð=¨a˜2˜2˜a  D™>œ>Ð=Ð=Ð=r    )Úsympy.series.limitseqr  rÏ   r"   )r‹   rÔ   r  r  s    ``@r   Ú_eval_difference_deltazAdd._eval_difference_deltaè  sC   øøø€ Ø@Ð@Ð@Ð@Ð@Ð@ØˆtŒyÐ=Ð=Ð=Ð=Ð=Ð=°4´9Ð=Ñ=Ô=Ð>Ð>r    c                 óè   — ddl m} |                      ¦   «         \  }}|                     ¦   «         \  }}|t          j        k    st          d¦  «        ‚ ||¦  «        j         ||¦  «        j        fS )z;
        Convert self to an mpmath mpc if possible
        r   )ÚFloatz@Cannot convert Add to mpc. Must be of the form Number + Number*I)Únumbersr  rŸ   ri   r   r·   ÚAttributeErrorÚ_mpf_)r‹   r  rµ  Úrestr¶  Ú	imag_units         r   Ú_mpc_z	Add._mpc_ì  s€   € ð
 	#Ð"Ð"Ð"Ð"Ð"Ø×)Ò)Ñ+Ô+‰ˆ�Ø!×.Ò.Ñ0Ô0Ñˆ�Ø�AœOÒ+Ð+õ !Ð!cÑdÔdÐdà��g‘”Ô$ e e¨G¡n¤nÔ&:Ð;Ð;r    c                 ó�   •— t           j        s t          ¦   «                              ¦   «         S t	          t
          j        | ¦  «        S rF   )r	   Ú
distributero  Ú__neg__rq   r   ÚNegativeOne)r‹   r{  s    €r   r#  zAdd.__neg__ü  s4   ø€ Ý Ô+ð 	%Ý‘7”7—?’?Ñ$Ô$Ð$Ý•1”= $Ñ'Ô'Ð'r    )FNrð  rJ  rF   rX  )Nr   )FT)Dr…   Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__ÚtTupler   Ú__annotations__r3   Ú
_args_typeÚclassmethodr‚   r†   Úpropertyrˆ   r   r   r™   rŸ   rÊ   rÐ   rØ   rÜ   rÚ   Ústaticmethodrö   rù   r  r  r  r  r"  Ú_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_commutativerH  rP  rU  r\  rb  rh  rp  r€  rƒ  r†  r›  r   r£  r¯  r²  rß  rã  rè  rí  r  rÿ  r  r  r   r#  Ú__classcell__)r{  s   @r   r8   r8   V   s9  ø€ € € € € € ðTð Tðl €Ià
��s�Ô
ÐÐÑà€Fà€JàðR$ð R$ñ „[ðR$ðh ð"ð "ñ „[ð"ð ð
ð 
ñ „Xð
ð/ð /ð /ð ð!ð !ñ „Wð!ð,ð ð ð ð1)ð 1)ð 1)ðf ð:ð :ñ „Wð:ð!ð !ð !ð !ðð ð ð?ð ?ð ?ð ?ð ð,ð ,ñ „\ð,ð2 ð?ð ?ñ „Wð?ð&1:ð 1:ð 1:ðfIð Ið IðPð Pð Pð-ð -ð -ðMð Mð Mð9ð 9€MðBð BÐð<ð <ÐðBð BÐð;ð ;€Oð>ð >Ðð<ð <Ðð=ð =Ðð>ð >Ðð-ð -Ððð ð ðð ð ð8'ð 'ð 'ðR5ð 5ð 5ðð ð ðð ð ð 4ð 4ð 4ð 4ð 4ðl(ð (ð (ð(ð (ð (ð4ð 4ð 4ð 4ð 4ðl#Fð #Fð #FðJ(ð (ð (ð,ð ,ð ,ð
 ð#ð #ð #ñ „Wð#ðJ:ð :ð :ð :ð.Ið Ið Ið IðV<ð <ð <ð>ð >ð >ð>ð >ð >ðN?ð N?ð N?ð`Fð Fð Fð FðP ð>ð >ñ „Xð>ð?ð ?ð ?ð ð<ð <ñ „Xð<ð(ð (ð (ð (ð (ð (ð (ð (ð (r    r8   rs  )rq   rü   rÂ   )rø  N).Útypingr   r)  Úcollectionsr   Ú	functoolsr   Úoperatorr   rÃ  r   Ú
parametersr	   Úlogicr
   r   r   Ú	singletonr   Ú
operationsr   r   Úcacher   r  r   Úintfuncr   r   r&   r   rˆ   r   Úsympy.utilities.iterablesr   r   r)   r.   r=   r8   rs  r¿  rq   rü   rÂ   rø  r?   r    r   ú<module>rE     sÜ  ðØ "Ð "Ð "Ð "Ð "Ð "Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø )Ð )Ð )Ð )Ð )Ð )Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø Ð Ð Ð Ð Ð Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7ð6ð 6ð 6ð !ð !ð !ð
-#ð -#ð -#ð`i(ð i(ð i(ð i(ð i(ˆ$�ñ i(ô i(ð i(ðV% Ð˜ÑÔ€à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø Ð Ð Ð Ð Ð Ð Ð r    