§
    OŠtj�©  ã                  óT  — d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
 ddlmZ ddlmZ dd	lmZmZmZ dd
lmZ ddl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# erd dl$m%Z% d dl&m'Z' d„ Z(d„ Z)d„ Z* G d„ dee¦  «        Z+ ed¦  «        Z,ddl-m.Z.m/Z/m0Z0 ddl1m2Z2 dS )é    )Ú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                óü   — 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     úL/var/www/html/CA-Chatbot/venv/lib/python3.11/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"   Ú_addsortr2   (   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Úappendr2   ÚinsertÚAddÚ
_from_args)r&   ÚnewargsÚcoÚas       r"   Ú_unevaluated_AddrA   -   sÂ   € õ: �‰:Œ:€DØ€GÝ	
Œ€BØ
ð 	Ø�HŠH‰JŒJˆØŒ8ð 	ð �KŠK˜œÑÔÐÐØŒ[ð 	Ø�!‰GˆBˆBà�NŠN˜1ÑÔÐð ð 	õ ˆWÑÔÐØ	ð Ø�Š�q˜"ÑÔÐÝ�>Š>˜'Ñ"Ô"Ð"r$   c                  óV  ‡ — e Zd ZU dZdZdZeZded<   e	rddœdMd„Z
edNd„¦   «         ZedOd„¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zed„ ¦   «         ZdPdQd„Zd„ Zed„ ¦   «         ZdRd„Zd „ ZdSd!„Zed"„ ¦   «         Zed#„ ¦   «         ZdTd%„Zd&„ Zd'„ Zd(„ Z d)„ Z!d*„ Z"d+„ Z#d,„ Z$d-„ Z%d.„ Z&d/„ Z'd0„ Z(d1„ Z)d2„ Z*d3„ Z+d4„ Z,d5„ Z-d6„ Z.d7„ Z/d8„ Z0d9„ Z1ˆ fd:„Z2d;„ Z3d<„ Z4ˆ fd=„Z5d>„ Z6d?„ Z7d@„ Z8edUdA„¦   «         Z9dVdB„Z:dC„ Z;dD„ Z<dE„ Z=dF„ Z>dG„ Z?dWdH„Z@edI„ ¦   «         ZAdJ„ ZBedK„ ¦   «         ZCˆ fdL„ZDˆ xZES )Xr<   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©Úevaluater&   úExpr | complexrF   r(   Úreturnr   c               ó   — d S ©NrC   )ÚclsrF   r&   s      r"   Ú__new__zAdd.__new__¾   s   € ØˆCr$   útuple[Expr, ...]c                ó   — d S rJ   rC   ©Úselfs    r"   r&   zAdd.argsÁ   s   € àˆCr$   Úseqú
list[Expr]ú#tuple[list[Expr], list[Expr], None]c                óº	  ‡‡— ddl m} ddlm} ddlm}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 �]wŠ‰j        r>‰j        j        rŒt!          ˆfd„|D ¦   «         ¦  «        rŒ3ˆfd	„|D ¦   «         }‰g|z   }ŒH‰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" |‰|
¦  «                             d
¬¦  «        }
�ŒF‰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 �Œr||	|<   �Œyg }d
}|	 "                    ¦   «         D ]»\  }}|j        rŒ|t          j!        u r|                     |¦  «         n€|j	        r) |j#        |f|j        z   Ž }|                     |¦  «         nP|j        r&|                     tI          ||d
¬¦  «        ¦  «         n#|                     tI          ||¦  «        ¦  «         |p|j%         }Œ¼|
t          j&        u rd„ |D ¦   «         }n|
t          j'        u rd„ |D ¦   «         }|
t          j        u rd„ |D ¦   «         }|rdg }|D ]2Št!          ˆfd„|D ¦   «         ¦  «        s|                     ‰¦  «         Œ3||z   }|D ]%Š‰ (                    |
¦  «        rt          j        }
 nŒ&tS          |¦  «         |
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)ÚTensExprÚTensAddNé   c              3  ó$   K  — | ]}|j         V — Œd S rJ   ©Úis_commutative)r    Úss     r"   r#   zAdd.flatten.<locals>.<genexpr>ã   s%   è è € Ð7Ð7¨A�qÔ'Ð7Ð7Ð7Ð7Ð7Ð7r$   c              3  óB   •K  — | ]}|                      ‰¦  «        V — Œd S rJ   ©Úcontains©r    Úo1Úos     €r"   r#   zAdd.flatten.<locals>.<genexpr>ù   s-   øè è € Ð>Ð>¨"�r—{’{ 1‘~”~Ð>Ð>Ð>Ð>Ð>Ð>r$   c                ó>   •— g | ]}‰                      |¦  «        °|‘ŒS rC   r_   ra   s     €r"   ú
<listcomp>zAdd.flatten.<locals>.<listcomp>û   s(   ø€ Ð RÐ RÐ R¨À1Ç:Â:ÈbÁ>Ä>Ð R Ð RÐ RÐ Rr$   F©ÚdeeprE   c                ó.   — g | ]}|j         °	|j        °|‘ŒS rC   )Úis_extended_nonnegativeÚis_real©r    Úfs     r"   re   zAdd.flatten.<locals>.<listcomp>h  ó'   € ÐXÐXÐX˜A°Ô0IÐXÈQÌYÐX�aÐXÐXÐXr$   c                ó.   — g | ]}|j         °	|j        °|‘ŒS rC   )Úis_extended_nonpositiverj   rk   s     r"   re   zAdd.flatten.<locals>.<listcomp>k  rm   r$   c                ó.   — g | ]}|j         r|j        ­|‘ŒS rJ   )Ú	is_finiteÚis_extended_real)r    Úcs     r"   re   zAdd.flatten.<locals>.<listcomp>v  s7   € ð Qð Qð Q˜A°´ð QØ01Ô0BÐ0Nð Ø0NÐ0NÐ0Nr$   c              3  óB   •K  — | ]}|                      ‰¦  «        V — Œd S rJ   r_   )r    rc   Úts     €r"   r#   zAdd.flatten.<locals>.<genexpr>~  s-   øè è € Ð@Ð@¨Q˜1Ÿ:š: a™=œ=Ð@Ð@Ð@Ð@Ð@Ð@r$   T)+Ú!sympy.calculus.accumulationboundsrU   Úsympy.matrices.expressionsrV   Úsympy.tensor.tensorrW   rX   r'   Úis_RationalÚis_MulÚallr   r5   Úis_Orderr*   Úis_zeroÚanyr9   ÚNaNÚComplexInfinityrq   Ú
isinstanceÚ__add__r:   Údoitr7   r&   r8   Úas_coeff_MulÚis_PowÚas_base_expÚ
is_IntegerÚis_negativeÚOneÚitemsÚ_new_rawargsÚMulr\   ÚInfinityÚNegativeInfinityr`   r2   r;   )rK   rQ   rU   rV   rW   rX   Úrvr@   ÚbÚtermsÚcoeffÚorder_factorsÚextraÚo_argsrs   r]   ÚeÚnewseqÚnoncommutativeÚcsÚnewseq2rc   ru   s                        @@r"   ÚflattenzAdd.flattenÅ   sF  øø€ ð$ 	BÐAÐAÐAÐAÐAØ9Ð9Ð9Ð9Ð9Ð9Ø9Ð9Ð9Ð9Ð9Ð9Ð9Ð9ØˆÝˆs‰8Œ8�qŠ=ˆ=Ø‰DˆAˆqØŒ}ð Ø˜!�1�ØŒ}ð *Ø”8ð *Ø˜Q˜  TÐ)�BØð 'ÝÐ7Ð7°°A´Ð7Ñ7Ô7Ñ7Ô7ð Ø�IØ˜2˜aœ5 $�Ð&ð %'ˆõ ”fˆà%'ˆà"$ˆàð S	ñ S	ˆAð Œzð AØ”6”>ð ØÝÐ>Ð>Ð>Ð>°Ð>Ñ>Ô>Ñ>Ô>ð ØØ RÐ RÐ RÐ R¨mÐ RÑ RÔ R�Ø!"  mÑ 3�Øð ”ð 7Ø�œ�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Ñ(Ô(ð "Ø˜  5Ñ)Ô)×.Ò.°EÐ.Ñ:Ô:�Ùà•aÔ'Ð'Ð'Ø”? eÐ+Ð+°EÐ+åœE˜7 B¨Ð,Ð,Ð,Ð,ÝÔ)�Ùð ”ð à+,¬6�Ø—
’
˜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Øð &ð &�åÐ@Ð@Ð@Ð@°-Ð@Ñ@Ô@Ñ@Ô@ð &Ø—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__)rK   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   )rP   ÚkÚkindsÚresults       r"   r¡   zAdd.kindœ  sQ   € å�vÑÔˆÝ�A�t”yÑ!Ô!ˆÝ˜%Ñ Ô ˆÝˆu‰:Œ:˜Š?ˆ?õ #ˆFˆFà‰GˆFØˆr$   c                ó    — t          | ¦  «        S rJ   )r-   rO   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 rJ   )Ú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&   r‹   ÚtupleÚas_coeff_addr   r5   )rP   r¬   Úl1Úl2r’   Ú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$   FNútuple[Number, Expr]c                óŽ   — | 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&   r9   ry   r‹   r   r5   )rP   Úrationalr¬   r’   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    r2t=          ||	t          j        z  z
  d|dz  |	dz  z   z  ¦  «        S d S d S d S d S )Nr	   )Úpure_complex)Úis_eqrY   c              3  ó$   K  — | ]}|j         V — Œd S rJ   ©Ú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éÿÿÿÿ)Úevalfr¹   Ú
relationalrº   r'   r&   r~   r}   r   r‰   r’   ÚImaginaryUnitrr   Úis_extended_negativer5   Úis_extended_positiver€   ry   Ú	is_numberÚqÚ(sympy.functions.elementary.miscellaneousr¿   Ú	exprtoolsrÀ   Ú$sympy.functions.elementary.complexesrÁ   ÚfunctionrÂ   ÚpÚabsÚ_unevaluated_Mul)rP   Úexptr¹   rº   r@   r�   ÚicoÚriÚrr!   r¿   ÚDrÀ   rÁ   rÂ   Úroots                   r"   Ú_eval_powerzAdd._eval_powerÑ  s•  € Ø'Ð'Ð'Ð'Ð'Ð'Ø%Ð%Ð%Ð%Ð%Ð%ÝˆtŒy‰>Œ>˜QÒÐ¥3Ð&HÐ&H¸d¼iÐ&HÑ&HÔ&HÑ#HÔ#HÐØŒ|˜uÐ$Ð$¨¨¨tµQ´UÑ);Ô);¸uÐ)DÐ)Dà”y‘��1Ø—7’7�1œ?Ñ+Ô+ð  Ø˜a�q�AØ—g’g�aœoÑ.Ô.�Øð 1˜3Ô/ð 1°AÔ4Fð 1ØÔ0ð &Ý œv˜ØÔ0ð 1Ý Ô0Ð0ØˆFØÔð 	) ¤ð 	)Ø�˜dÑ#Ô#ˆBØð )Ø‘��1Ø”6˜Q’;�;ØMÐMÐMÐMÐMÐMØ˜˜Q ™T A q¡D™[Ñ)Ô)�AØ”}ð OØ;Ð;Ð;Ð;Ð;Ð;ØMÐMÐMÐMÐMÐMØ@Ð@Ð@Ð@Ð@Ð@à#˜t L L°!°a±%¸±Ñ$;Ô$;Ñ<Ô<¸d¼fÑD˜Ø#Ð$6Ð$6à ™U¥C¨¡F¤F™N¨T¨T°!©W¬WµQ´_Ñ-DÑDÀtÄvñ8Nñ %Oô %Oñ  Oð OðOð Oð ˜R’Z�ZÝ+Ø˜A�aœoÑ-Ñ-Ø˜1˜a™4 ! Q¡$™;™ñ)ô )ð )ð#	)ð 	)ð 	)ð 	)ð)ð )ð  �Zr$   c                ó:   ‡—  | j         ˆfd„| j        D ¦   «         Ž S )Nc                ó:   •— g | ]}|                      ‰¦  «        ‘ŒS rC   )Údiff)r    r@   r]   s     €r"   re   z(Add._eval_derivative.<locals>.<listcomp>ø  s#   ø€ Ð8Ð8Ð8¨˜1Ÿ6š6 !™9œ9Ð8Ð8Ð8r$   ©Úfuncr&   )rP   r]   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    ru   rä   rã   râ   r«   s     €€€€r"   re   z%Add._eval_nseries.<locals>.<listcomp>û  s-   ø€ ÐLÐLÐL¸Q�—’˜1 ¨°4�Ñ8Ô8ÐLÐLÐLr$   )r&   rÝ   )rP   r«   râ   rã   rä   r‘   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)rP   r*   Ú	repl_dictr’   r‘   s        r"   Ú_matches_simplezAdd._matches_simpleþ  sI   € à×(Ò(Ñ*Ô*‰ˆˆuÝˆu‰:Œ:˜Š?ˆ?Ø˜”8×#Ò# D¨5¡L°)Ñ<Ô<Ð<Øˆr$   c                ó0   — |                       |||¦  «        S rJ   )Ú_matches_commutative)rP   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 rC   rC   )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 rJ   )r…   Úbase)r«   rñ   s    €r"   r­   z&Add._combine_inverse.<locals>.<lambda>  s   ø€ ˜aœhÐ7¨1¬6°R¨<€ r$   c                ó   — | j         S rJ   )rö   )r«   s    r"   r­   z&Add._combine_inverse.<locals>.<lambda>  s   € ˜aœf€ r$   )Úsympy.simplify.simplifyrï   r   r�   rŽ   ÚhasÚsymbolrð   rŠ   ÚxreplaceÚreplacer9   )ÚlhsÚrhsrï   Úinfrð   ÚrepsÚirepsÚeqr�   Ú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&   r‹   rO   s    r"   Úas_two_termszAdd.as_two_terms"  s*   € ð$ Œy˜Œ|Ð.˜TÔ.°´	¸!¸"¸"´Ð>Ð>Ð>r$   útuple[Expr, Expr]c                óv  ‡ ‡‡‡— ‰                       ¦   «         \  }}t          |t          ¦  «        s$t          ||d¬¦  «                             ¦   «         S |                     ¦   «         \  Š}t          t          ¦  «        }|j        D ]4}|                     ¦   «         \  }}||                              |¦  «         Œ5t          |¦  «        dk    r=| 
                    ¦   «         \  }}	 ‰ j        ˆfd„|	D ¦   «         Ž t          ||¦  «        fS ˆ fd„|                     ¦   «         D ¦   «         }
d„ 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
        FrE   r	   c                ó0   •— g | ]}t          ‰|¦  «        ‘ŒS rC   )Ú_keep_coeff)r    ÚniÚncons     €r"   re   z&Add.as_numer_denom.<locals>.<listcomp>Y  s#   ø€ Ð4Ð4Ð4¨B•+˜d BÑ'Ô'Ð4Ð4Ð4r$   c                ób   •— i | ]+\  }}|t          |¦  «        d k    r
 ‰j        |Ž n|d         “Œ,S ©r	   r   )r'   rÝ   )r    Údrâ   rP   s      €r"   rô   z&Add.as_numer_denom.<locals>.<dictcomp>\  s=   ø€ ÐOÐOÐO¹D¸A¸qˆq¥3 q¡6¤6¨A¢: :�)�$”)˜Q�-�-°1°Q´4ÐOÐOÐOr$   c                ó,   — g | ]}t          |¦  «        ‘ŒS rC   )r4   r   s     r"   re   z&Add.as_numer_denom.<locals>.<listcomp>_  s   € ÐCÐCÐC a�$˜q™'œ'ÐCÐCÐCr$   c                ób   •— g | ]+}t          ‰d |…         ‰|         gz   ‰|dz   d …         z   Ž ‘Œ,S )Nr	   )rŒ   )r    r!   ÚdenomsÚnumerss     €€r"   re   z&Add.as_numer_denom.<locals>.<listcomp>`  sR   ø€ ð 0ð 0ð 0Øõ  ¨¨¨¤¨v°a¬y¨kÑ!9¸FÀ1ÀqÁ5À6À6¼NÑ!JÐLð 0ð 0ð 0r$   )Ú	primitiver�   r<   rŒ   Úas_numer_denomr   r4   r&   r:   r'   ÚpopitemrÝ   r  rŠ   ÚzipÚiterÚrange)rP   Úcontentr*   ÚdconÚndrl   r  Údir  râ   Únd2r  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ð PÐOÐOÐOÀBÇHÂHÁJÄJÐOÑOÔOˆð DÐC­3µ°S·Y²Y±[´[Ñ0AÔ0AÐ+BÐCÑCÔC‰ˆ�Øˆ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 rJ   )Ú_eval_is_polynomial©r    ÚtermÚsymss     €r"   r#   z*Add._eval_is_polynomial.<locals>.<genexpr>f  s1   øè è € ÐHÐH°d�4×+Ò+¨DÑ1Ô1ÐHÐHÐHÐHÐHÐHr$   ©r{   r&   ©rP   r%  s    `r"   r"  zAdd._eval_is_polynomiale  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 rJ   )Ú_eval_is_rational_functionr#  s     €r"   r#   z1Add._eval_is_rational_function.<locals>.<genexpr>i  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_functionh  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 rJ   )Úis_meromorphic)r    Úargr@   r«   s     €€r"   r#   z+Add._eval_is_meromorphic.<locals>.<genexpr>l  s3   øè è € ÐKÐK¸#˜S×/Ò/°°1Ñ5Ô5ÐKÐKÐKÐKÐKÐKr$   T©Ú
quick_exit©r   r&   )rP   r«   r@   s    ``r"   Ú_eval_is_meromorphiczAdd._eval_is_meromorphick  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 rJ   )Ú_eval_is_algebraic_exprr#  s     €r"   r#   z.Add._eval_is_algebraic_expr.<locals>.<genexpr>p  s1   øè è € ÐLÐL¸$�4×/Ò/°Ñ5Ô5ÐLÐLÐLÐLÐLÐLr$   r&  r'  s    `r"   r5  zAdd._eval_is_algebraic_expro  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 rJ   )rj   ©r    r@   s     r"   r#   zAdd.<lambda>.<locals>.<genexpr>t  s$   è è € Ð&Ð&�qˆŒÐ&Ð&Ð&Ð&Ð&Ð&r$   Tr/  r1  rO   s    r"   r­   zAdd.<lambda>s  s*   € ¥Ø&Ð&˜DœIÐ&Ñ&Ô&°4ð"9ñ "9ô "9€ r$   c                óB   — t          d„ | j        D ¦   «         d¬¦  «        S )Nc              3  ó$   K  — | ]}|j         V — Œd S rJ   )rr   r8  s     r"   r#   zAdd.<lambda>.<locals>.<genexpr>v  ó%   è è € Ð/Ð/ ˆÔ	Ð/Ð/Ð/Ð/Ð/Ð/r$   Tr/  r1  rO   s    r"   r­   zAdd.<lambda>u  ó-   € ­,Ø/Ð/ T¤YÐ/Ñ/Ô/¸Dð+Bñ +Bô +B€ r$   c                óB   — t          d„ | j        D ¦   «         d¬¦  «        S )Nc              3  ó$   K  — | ]}|j         V — Œd S rJ   )Ú
is_complexr8  s     r"   r#   zAdd.<lambda>.<locals>.<genexpr>x  ó$   è è € Ð)Ð)˜!ˆŒÐ)Ð)Ð)Ð)Ð)Ð)r$   Tr/  r1  rO   s    r"   r­   zAdd.<lambda>w  ó*   € ¥LØ)Ð)˜tœyÐ)Ñ)Ô)°dð%<ñ %<ô %<€ r$   c                óB   — t          d„ | j        D ¦   «         d¬¦  «        S )Nc              3  ó$   K  — | ]}|j         V — Œd S rJ   )Úis_antihermitianr8  s     r"   r#   zAdd.<lambda>.<locals>.<genexpr>z  r;  r$   Tr/  r1  rO   s    r"   r­   zAdd.<lambda>y  r<  r$   c                óB   — t          d„ | j        D ¦   «         d¬¦  «        S )Nc              3  ó$   K  — | ]}|j         V — Œd S rJ   )rq   r8  s     r"   r#   zAdd.<lambda>.<locals>.<genexpr>|  s$   è è € Ð(Ð(˜ˆŒÐ(Ð(Ð(Ð(Ð(Ð(r$   Tr/  r1  rO   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 rJ   )Úis_hermitianr8  s     r"   r#   zAdd.<lambda>.<locals>.<genexpr>~  ó$   è è € Ð+Ð+˜AˆŒÐ+Ð+Ð+Ð+Ð+Ð+r$   Tr/  r1  rO   s    r"   r­   zAdd.<lambda>}  ó*   € ¥lØ+Ð+ ¤Ð+Ñ+Ô+¸ð'>ñ '>ô '>€ r$   c                óB   — t          d„ | j        D ¦   «         d¬¦  «        S )Nc              3  ó$   K  — | ]}|j         V — Œd S rJ   )Ú
is_integerr8  s     r"   r#   zAdd.<lambda>.<locals>.<genexpr>€  r@  r$   Tr/  r1  rO   s    r"   r­   zAdd.<lambda>  rA  r$   c                óB   — t          d„ | j        D ¦   «         d¬¦  «        S )Nc              3  ó$   K  — | ]}|j         V — Œd S rJ   ©Úis_rationalr8  s     r"   r#   zAdd.<lambda>.<locals>.<genexpr>‚  s$   è è € Ð*Ð*˜1ˆŒÐ*Ð*Ð*Ð*Ð*Ð*r$   Tr/  r1  rO   s    r"   r­   zAdd.<lambda>�  s*   € ¥\Ø*Ð* ¤	Ð*Ñ*Ô*°tð&=ñ &=ô &=€ r$   c                óB   — t          d„ | j        D ¦   «         d¬¦  «        S )Nc              3  ó$   K  — | ]}|j         V — Œd S rJ   )Úis_algebraicr8  s     r"   r#   zAdd.<lambda>.<locals>.<genexpr>„  rJ  r$   Tr/  r1  rO   s    r"   r­   zAdd.<lambda>ƒ  rK  r$   c                ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3  ó$   K  — | ]}|j         V — Œd S rJ   r[   r8  s     r"   r#   zAdd.<lambda>.<locals>.<genexpr>…  s6   è è € ð 5-ð 5-ØˆÔð5-ð 5-ð 5-ð 5-ð 5-ð 5-r$   r1  rO   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½   )rP   Ú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&   rr   r}   r:   Úis_imaginaryr   rÆ   rz   Úas_coeff_mulrÝ   r   )rP   ÚnzÚim_Ir@   r’   Úair�   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)r\   r&   rr   r}   r:   r^  rz   r   rÆ   r_  r'   rÝ   )	rP   r`  ÚzÚim_or_zÚimr@   r’   rb  r�   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_evenrk   s     r"   re   z$Add._eval_is_odd.<locals>.<listcomp>Û  s$   € Ð=Ð=Ð=�1¨!¬)°tÐ*;Ð*;ˆQÐ*;Ð*;Ð*;r$   Fr   r	   )r&   Úis_oddr‹   rl  )rP   Ú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 )TNrQ  )r    r«   s     r"   r#   z*Add._eval_is_irrational.<locals>.<genexpr>ç  s)   è è € Ð=Ð=°�q”}¨Ð,Ð=Ð=Ð=Ð=Ð=Ð=r$   TF)r&   Úis_irrationalr4   Úremover{   )rP   ru   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)rP   Ú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 rC   ©r}   r8  s     r"   re   z2Add._eval_is_extended_positive.<locals>.<listcomp>  ó   € Ð6Ð6Ð6�a¨A¬IÐ6�Ð6Ð6Ð6r$   )rÉ   ÚsuperÚ_eval_is_extended_positiver·   r}   rÌ   r~  rÈ   ri   r'   Úfree_symbolsÚsetr&   r½   Úaddr   ro   r6   )rP   rs   r@   r~  ró   r]   ÚposÚnonnegÚnonposÚunknown_signÚsaw_INFr&   ÚisposÚinfiniteÚ	__class__s                 €r"   rƒ  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	   r}  T)rÉ   r·   r}   ri   rÌ   r~  r'   r„  ©rP   rs   r@   r~  ró   r]   s         r"   Ú_eval_is_extended_nonnegativez!Add._eval_is_extended_nonnegative4  óñ   € ØŒ~ð 	(Ø×$Ò$Ñ&Ô&‰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·   r}   ro   rÌ   r~  r'   r„  r’  s         r"   Ú_eval_is_extended_nonpositivez!Add._eval_is_extended_nonpositiveC  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	   r}  TFc                ó    — g | ]}|j         °	|‘ŒS rC   r€  r8  s     r"   re   z2Add._eval_is_extended_negative.<locals>.<listcomp>c  r�  r$   )rÉ   r‚  Ú_eval_is_extended_negativer·   r}   rÌ   r~  rÇ   ro   r'   r„  r…  r&   r½   r†  r   ri   r6   )rP   rs   r@   r~  ró   r]   Únegr‰  rˆ  rŠ  r‹  r&   Úisnegr�  rŽ  s                 €r"   r™  zAdd._eval_is_extended_negativeR  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 rC   ©Ú_subs©r    r]   Únewrí   s     €€r"   re   z"Add._eval_subs.<locals>.<listcomp>£  ó'   ø€ Ð DÐ DÐ D°q §¢¨¨cÑ!2Ô!2Ð DÐ DÐ Dr$   c                ó<   •— g | ]}|                      ‰‰¦  «        ‘ŒS rC   rž  r   s     €€r"   re   z"Add._eval_subs.<locals>.<listcomp>«  r¢  r$   )r7   r   r�   r&   rû   r·   ry   rÝ   Ú	make_argsr'   r…  )rP   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 rC   ©r|   r8  s     r"   re   zAdd.removeO.<locals>.<listcomp>®  s   € Ð7Ð7Ð7�a¨A¬JÐ7�Ð7Ð7Ð7r$   r  ©rP   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 rC   r±  r8  s     r"   re   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   r   c           
     óB   •— g | ]}| ‰|gt          ‰‰¦  «        ¢R Ž f‘ŒS rC   )r  )r    rl   r   ÚpointÚsymbolss     €€€r"   re   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   r4   r   r'   r&   r`   r:   r¯   )rP   rº  r¹  ÚlstrQ   ÚefÚofr–   rc   Ú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)
        rf   )r&   Úas_real_imagr:   rÝ   )	rP   rg   ÚhintsÚsargsÚre_partÚim_partr$  Úrerg  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¦  «        t(          j        }}	 |D ]"} ||‰¦  «        }|r||vr|}|}Œ||v r||z  }Œ#n# t,          $ r |cY S w xY w|€|                     ‰ ‰‰¦  «        ¦  «        }|j        }|€-|                     ¦   «                              ¦   «         }|j        }|d	u rç	 |                     ¦   «         }n# t8          $ r t(          j        }Y nw xY w|                     |¦  «        rt(          j        } |d¦  «        }t(          j        }|j        r^|                     ‰||z   |‰¬¦  «                             ¦   «                               ¦   «                              ¦   «         }|dz  }|j        °^|                     ‰|‰¬¦  «        S |t(          j!        u r|j"         #                    |¦  «        |
z   S |S )Nr   )rð   ÚSymbolr   )Úlog)Ú	PiecewiseÚpiecewise_foldr	   )Ú
expand_mulc              3  ó8   •K  — | ]}t          |‰¦  «        V — Œd S rJ   )r�   )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)	rg   rÊ  ÚmulÚ	power_expÚ
power_baseÚmultinomialÚbasicÚforceÚfactor©rã   rä   c                ó    — g | ]}|j         ¯	|‘ŒS rC   r¼   ©r    ru   s     r"   re   z-Add._eval_as_leading_term.<locals>.<listcomp>  s   € Ð:Ð:Ð:˜!¨A¬MÐ:�AÐ:Ð:Ð:r$   rã   c                ó@   •— g | ]}|                      ‰‰‰¬ ¦  «        ‘ŒS )rÖ  )Úas_leading_term)r    ru   Ú_logxrä   r«   s     €€€r"   re   z-Add._eval_as_leading_term.<locals>.<listcomp>  s.   ø€ ÐXÐXÐXÈ˜×*Ò*¨1°5¸tÐ*ÑDÔDÐXÐXÐXr$   rá   rY   rC   )$Úsympy.core.symbolrð   rÉ  r»  r   Ú&sympy.functions.elementary.exponentialrÊ  Ú$sympy.functions.elementary.piecewiserË  rÌ  rÎ   rÍ  r¶  r³  rù   r~   r&   Úexpandr7   rÚ  r   r5   Ú	TypeErrorÚsubsr}   ÚtrigsimpÚcancelÚgetnÚNotImplementedErrorr‰   r|   ræ   Úpowsimpr   rÝ   r=   )rP   r«   rã   rä   rð   rÉ  r   rË  rÌ  rÍ  rc   rí   Úlogflagsr*   r�  Úleading_termsÚminÚnew_exprr$  Úorderr}   Ú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!Ç G ÇG.Ç-G.c                ó4   —  | j         d„ | j        D ¦   «         Ž S )Nc                ó6   — g | ]}|                      ¦   «         ‘ŒS rC   )ÚadjointrØ  s     r"   re   z%Add._eval_adjoint.<locals>.<listcomp>?  s    € Ð:Ð:Ð:¨1˜1Ÿ9š9™;œ;Ð:Ð:Ð:r$   rÜ   rO   s    r"   Ú_eval_adjointzAdd._eval_adjoint>  s"   € ØˆtŒyÐ:Ð:°´	Ð:Ñ:Ô:Ð;Ð;r$   c                ó4   —  | j         d„ | j        D ¦   «         Ž S )Nc                ó6   — g | ]}|                      ¦   «         ‘ŒS rC   )Ú	conjugaterØ  s     r"   re   z'Add._eval_conjugate.<locals>.<listcomp>B  ó    € Ð<Ð<Ð<¨Q˜1Ÿ;š;™=œ=Ð<Ð<Ð<r$   rÜ   rO   s    r"   Ú_eval_conjugatezAdd._eval_conjugateA  ó"   € ØˆtŒyÐ<Ð<°$´)Ð<Ñ<Ô<Ð=Ð=r$   c                ó4   —  | j         d„ | j        D ¦   «         Ž S )Nc                ó6   — g | ]}|                      ¦   «         ‘ŒS rC   )Ú	transposerØ  s     r"   re   z'Add._eval_transpose.<locals>.<listcomp>E  r÷  r$   rÜ   rO   s    r"   Ú_eval_transposezAdd._eval_transposeD  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   rC   rØ  s     r"   re   z!Add.primitive.<locals>.<listcomp>u  ó   € Ð 5Ð 5Ð 5¨!  1¤Ð 5Ð 5Ð 5r$   r   c                ó   — g | ]
}|d          ‘ŒS ©r	   rC   rØ  s     r"   re   z!Add.primitive.<locals>.<listcomp>v  r  r$   r	   c                ó.   — g | ]}|d          ¯
|d         ‘ŒS r  rC   rØ  s     r"   re   z!Add.primitive.<locals>.<listcomp>x  ó%   € Ð =Ð =Ð =¨!¸¸!¼Ð =  1¤Ð =Ð =Ð =r$   c                ó.   — g | ]}|d          ¯
|d          ‘ŒS r  rC   rØ  s     r"   re   z!Add.primitive.<locals>.<listcomp>y  r  r$   N)r&   r„   ry   r   r‰   r€   r:   rÏ   rÊ   r   r   r   Ú	enumerater  ÚRationalr9   r6   r2   r;   r‹   )rP   r‘   rÿ   r@   rs   ÚmÚngcdÚdlcmr!   rÏ   rÊ   r$  s               r"   r  zAdd.primitiveG  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"   re   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)r„   r‡   r8  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 rC   rC   )r    rÕ   rÊ   s     €r"   re   z,Add.as_content_primitive.<locals>.<listcomp>Õ  s   ø€ Ð%9Ð%9Ð%9¨q a¨¤dÐ%9Ð%9Ð%9r$   r   r	   c                ó   •— g | ]}|‰z  ‘ŒS rC   rC   )r    rb  ÚGs     €r"   re   z,Add.as_content_primitive.<locals>.<listcomp>Ú  s   ø€ Ð0Ð0Ð0 R˜B˜q™DÐ0Ð0Ð0r$   )rÝ   r&   r  r‡   r7   r  r~   r   r4   rŒ   r¤  r…   r†   ry   rÊ   r:   rÐ   ÚintrÏ   r…  Úkeysr6   r   r   r  )rP   r  r  ÚconÚprimr  Ú_pr&   ÚradsÚcommon_qr	  Ú	term_radsrb  r�   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&   )rP   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 rC   rC   )r    r@   Úddrâ   Ústeps     €€€r"   re   z.Add._eval_difference_delta.<locals>.<listcomp>æ  s%   ø€ Ð=Ð=Ð=¨a˜2˜2˜a  D™>œ>Ð=Ð=Ð=r$   )Úsympy.series.limitseqr$  rÝ   r&   )rP   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·   r„   r   rÆ   ÚAttributeErrorÚ_mpf_)rP   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 rJ   )r   Ú
distributer‚  Ú__neg__rŒ   r   ÚNegativeOne)rP   rŽ  s    €r"   r4  zAdd.__neg__ø  s4   ø€ Ý Ô+ð 	%Ý‘7”7—?’?Ñ$Ô$Ð$Ý•1”= $Ñ'Ô'Ð'r$   )r&   rG   rF   r(   rH   r   )rH   rM   )rQ   rR   rH   rS   )FN)rH   r´   r   r]  )rH   r  rJ   rk  )FT)Frž   Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r7   r   Ú
_args_typeÚ__annotations__r   rL   Úpropertyr&   Úclassmethodr›   rŸ   r¡   r   r   r°   r·   rØ   rÞ   ræ   rê   rè   Ústaticmethodr  r  r  r"  r*  r2  r5  Ú_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_commutativer[  rc  rh  ro  ru  r{  rƒ  r“  r–  r™  r®  r³  r¶  rÀ  rÂ  rï  ró  rø  rý  r  r  r"  r)  r1  r4  Ú__classcell__)rŽ  s   @r"   r<   r<   ]   s…  ø€ € € € € € ðTð Tðl €Ià€Fà€JàÐÐÑàð à?Cð 	ð 	ð 	ð 	ð 	ð 	ð 
ð	ð 	ð 	ñ 
Œð	ð ðP$ð P$ð P$ñ „[ðP$ðd ð"ð "ñ „[ð"ð ð
ð 
ñ „Xð
ð/ð /ð /ð ð!ð !ñ „Wð!ð,ð ð ð ð ð#)ð #)ð #)ðJ ð:ð :ñ „Wð:ð!ð !ð !ð !ðð ð ð?ð ?ð ?ð ?ð ð,ð ,ñ „\ð,ð2 ð?ð ?ñ „Wð?ð&-:ð -:ð -:ð -:ð^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ðV<ð <ð <ð>ð >ð >ð>ð >ð >ðN?ð N?ð N?ð`Fð Fð Fð FðP ð>ð >ñ „Xð>ð?ð ?ð ?ð ð<ð <ñ „Xð<ð(ð (ð (ð (ð (ð (ð (ð (ð (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-   r2   rA   r<   r†  rÏ  rŒ   r  rÑ   r,  r  rC   r$   r"   ú<module>rW     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ð !ð !ð !ð
-#ð -#ð -#ð`^(ð ^(ð ^(ð ^(ð ^(ˆ$�ñ ^(ô ^(ð ^(ð@% Ð˜ÑÔ€à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø Ð Ð Ð Ð Ð Ð Ð r$   