§
    OŠtja5 ã                  ó†  — 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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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&  G d„ d¦  «        Z'd„ Z(d„ Z) G d„ dee¦  «        Z* ed¦  «        Z+d#d„Z,d$d„Z-d„ Z.dd l/m0Z0 dd!l1m2Z2 dd"l3m4Z4m5Z5 dS )%é    )Úannotations)ÚTYPE_CHECKINGÚClassVar)Údefaultdict)Úreduce)ÚproductNé   )Úsympify)ÚBasicÚ_args_sortkey)ÚS)ÚAssocOpÚAssocOpDispatcher)Úcacheit)Úinteger_nthrootÚtrailing)Ú	fuzzy_notÚ_fuzzy_group)ÚExpr)Úglobal_parameters)ÚKindDispatcher©Ú	bottom_up)Úsiftc                  ó"   — e Zd ZdZdZdZdZdZdS )Ú	NC_MarkerFN)Ú__name__Ú
__module__Ú__qualname__Úis_OrderÚis_MulÚ	is_NumberÚis_PolyÚis_commutative© ó    úL/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/core/mul.pyr   r      s'   € € € € € Ø€HØ€FØ€IØ€Gà€N€N€Nr&   r   c                ó<   — |                       t          ¬¦  «         d S )N©Úkey)Úsortr   ©Úargss    r'   Ú_mulsortr.   "   s   € à‡I‚I•-€IÑ Ô Ð Ð Ð r&   c                 óú  — g }g }t          | ¦  «        } t          j        }| D ]Š}|j        rB|                     ¦   «         \  }}|                      |¦  «         |                     |¦  «         ŒK|j        r||z  }ŒX|j        r|                     |¦  «         Œu|                     |¦  «         Œ‹t          |¦  «         |t          j        ur| 
                    d|¦  «         t                               ||z   ¦  «        S )a   Return a well-formed unevaluated Mul: Numbers are collected and
    put in slot 0, any arguments that are Muls will be flattened, and args
    are sorted. Use this when args have changed but you still want to return
    an unevaluated Mul.

    Examples
    ========

    >>> from sympy.core.mul import _unevaluated_Mul as uMul
    >>> from sympy import S, sqrt, Mul
    >>> from sympy.abc import x
    >>> a = uMul(*[S(3.0), x, S(2)])
    >>> a.args[0]
    6.00000000000000
    >>> a.args[1]
    x

    Two unevaluated Muls with the same arguments will
    always compare as equal during testing:

    >>> m = uMul(sqrt(2), sqrt(3))
    >>> m == uMul(sqrt(3), sqrt(2))
    True
    >>> u = Mul(sqrt(3), sqrt(2), evaluate=False)
    >>> m == uMul(u)
    True
    >>> m == Mul(*m.args)
    False

    r   )Úlistr   ÚOner!   Úargs_cncÚextendr"   r$   Úappendr.   ÚinsertÚMulÚ
_from_args)r-   ÚcargsÚncargsÚcoÚaÚa_cÚa_ncs          r'   Ú_unevaluated_Mulr>   '   s÷   € ð> €EØ€FÝ�‰:Œ:€DÝ	
Œ€BØð 
ð 
ˆØŒ8ð 		ØŸ
š
™œ‰IˆC�Ø�KŠK˜ÑÔÐØ�MŠM˜$ÑÔÐÐØŒ[ð 	Ø�!‰GˆBˆBØÔð 	Ø�LŠL˜‰OŒOˆOˆOà�MŠM˜!ÑÔÐÐÝˆU�O„O€OØ	•”€€Ø�Š�Q˜ÑÔÐÝ�>Š>˜% ™,Ñ'Ô'Ð'r&   c                  ó  ‡ — e Zd ZU dZdZdZeZ edd¬¦  «        Z	de
d<   ed„ ¦   «         Zerdd	œdVd„ZedWd„¦   «         Zd„ Zd„ Zed„ ¦   «         Zd„ Zed„ ¦   «         Zd„ Zed„ ¦   «         Zed„ ¦   «         Zeddœd„¦   «         ZdXd„ZdYd„Zed „ ¦   «         Zd!„ Zed"„ ¦   «         Z eˆ fd#„¦   «         Z!d$„ Z"d%„ Z#dZd'„Z$ed(„ ¦   «         Z%ed[d)„¦   «         Z&ed*„ ¦   «         Z'ed+„ ¦   «         Z(ed,„ ¦   «         Z)ed-„ ¦   «         Z*ed.„ ¦   «         Z+d/„ Z,d0„ Z-d1„ Z.d2„ Z/d3„ Z0d4„ Z1d5„ Z2d6„ Z3d7„ Z4d8„ Z5d9„ Z6d:„ Z7d;„ Z8d<„ Z9d=„ Z:d>„ Z;d?„ Z<d@„ Z=dA„ Z>dB„ Z?dC„ Z@dD„ ZAdE„ ZBdF„ ZCdG„ ZDdH„ ZEdI„ ZFdJ„ ZGdK„ ZHdL„ ZId\dN„ZJdO„ ZKdP„ ZLdQ„ ZMdR„ ZNd]dS„ZOd[dT„ZPedU„ ¦   «         ZQˆ xZRS )^r6   aB  
    Expression representing multiplication operation for algebraic field.

    .. 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 ``Mul()`` must be ``Expr``. Infix operator ``*``
    on most scalar objects in SymPy calls this class.

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

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

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

    2. Identity removing
        ``Mul(x, 1, y)`` -> ``Mul(x, y)``

    3. Exponent collecting by ``.as_base_exp()``
        ``Mul(x, x**2)`` -> ``Pow(x, 3)``

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

    Since multiplication can be vector space operation, arguments may
    have the different :obj:`sympy.core.kind.Kind()`. Kind of the
    resulting object is automatically inferred.

    Examples
    ========

    >>> from sympy import Mul
    >>> from sympy.abc import x, y
    >>> Mul(x, 1)
    x
    >>> Mul(x, x)
    x**2

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

    >>> Mul(1, 2, evaluate=False)
    1*2
    >>> Mul(x, x, evaluate=False)
    x*x

    ``Mul()`` also represents the general structure of multiplication
    operation.

    >>> from sympy import MatrixSymbol
    >>> A = MatrixSymbol('A', 2,2)
    >>> expr = Mul(x,y).subs({y:A})
    >>> expr
    x*A
    >>> type(expr)
    <class 'sympy.matrices.expressions.matmul.MatMul'>

    See Also
    ========

    MatMul

    r%   TÚMul_kind_dispatcher)ÚcommutativezClassVar[Expr]Úidentityc                ó8   — d„ | j         D ¦   «         } | j        |Ž S )Nc              3  ó$   K  — | ]}|j         V — Œd S ©N)Úkind©Ú.0r;   s     r'   ú	<genexpr>zMul.kind.<locals>.<genexpr>¬   s$   è è € Ð/Ð/ �Q”VÐ/Ð/Ð/Ð/Ð/Ð/r&   )r-   Ú_kind_dispatcher)ÚselfÚ	arg_kindss     r'   rF   zMul.kindª   s'   € à/Ð/ T¤YÐ/Ñ/Ô/ˆ	Ø$ˆtÔ$ iÐ0Ð0r&   ©Úevaluater-   úExpr | complexrN   ÚboolÚreturnr   c               ó   — d S rE   r%   )ÚclsrN   r-   s      r'   Ú__new__zMul.__new__±   s   € ØˆCr&   útuple[Expr, ...]c                ó   — d S rE   r%   ©rK   s    r'   r-   zMul.args´   s   € àˆCr&   c                óJ   — | |  k    rdS | j         d         }|j        o|j        S )NFr   )r-   r"   Úis_extended_negative)rK   Úcs     r'   Úcould_extract_minus_signzMul.could_extract_minus_sign¸   s-   € Ø�T�EŠ?ˆ?Ø�5ØŒI�aŒLˆØŒ{Ð5˜qÔ5Ð5r&   c                óL  — |                       ¦   «         \  }}|d         t          j        ur| }|t          j        urN|d         j        r;t          |¦  «        }|t          j        u r|d          |d<   n|dxx         |z  cc<   n|f|z   }|                      || j        ¦  «        S ©Nr   )	Úas_coeff_mulr   ÚComplexInfinityr1   r"   r0   ÚNegativeOner7   r$   )rK   rZ   r-   s      r'   Ú__neg__zMul.__neg__¾   s¬   € Ø×#Ò#Ñ%Ô%‰ˆˆ4Ø�Œ7�!Ô+Ð+Ð+Ø�ˆAØ•A”Eˆ>ˆ>Ø�AŒwÔ ð #Ý˜D‘z”z�Ø�œÐ%Ð%Ø# Aœw˜h�D˜‘G�Gà˜�G�G”G˜q‘L�G�G‘G�Gà�t˜d‘{�Ø�Š˜t TÔ%8Ñ9Ô9Ð9r&   c                óî  ‡1‡2‡3‡4— ddl m} ddlmŠ1 d}t	          |¦  «        dk    rÄ|\  Š2Š3‰3j        r	‰3‰2cŠ2Š3‰2‰3g}‰2t          j        usJ ‚‰2j        r”‰2j        s�‰3 	                    ¦   «         \  }Š3‰3j
        ro|t          j        ur.‰2|z  }|t          j        u r‰3}n | ‰2|z  ‰3d¬¦  «        }|gg df}n3t          j        r'‰3j        r t          ˆ2fd„‰3j        D ¦   «         Ž }|gg df}|r|S g }g }	g }
t          j        Š4g }g }t          j        }i }d}|D �]Ï}|j        r|                     |¦  «        \  }}|j        ry|j        r|                     |j        ¦  «         nV|j        D ]4}|j        r|                     |¦  «         Œ|
                     |¦  «         Œ5|                     t,          ¦  «         Œ¢|j        rs|t          j        u s‰4t          j        u r|j        rt          j        gg dfc S ‰4j        st5          ‰4|¦  «        r%‰4|z  Š4‰4t          j        u rt          j        gg dfc S �Œt5          ||¦  «        r|                     ‰4¦  «        Š4�ŒC|t          j        u r"‰4st          j        gg dfc S t          j        Š4�Œs‰4sEt5          |t          ¦  «        r0t9          d	„ |j        D ¦   «         ¦  «        rt          j        gg dfc S |t          j        u r|t          j        z  }�ŒÙ|j        rü|                     ¦   «         \  Š3}|j         rÅ‰3j        r¾|j        r�|j!        r‰4tE          ‰3|¦  «        z  Š4�Œ(|j#        r%|                     tE          ‰3|¦  «        ¦  «         �ŒT‰3j#        r||z  }‰3 Š3‰3t          j        ur)| $                    ‰3g ¦  «                             |¦  «         �Œœ‰3j%        s|j&        r|                     ‰3|f¦  «         �ŒÃ|                     ‰3|f¦  «         �ŒÜ|t,          ur|
                     |¦  «         |
rÓ|
 '                    d¦  «        }|	s|	                     |¦  «         Œ/|	 '                    ¦   «         }|                     ¦   «         \  }}|                     ¦   «         \  }}||z   }||k    r@|j
        s9||z  }|j        r|                     |¦  «         Œ¥|
 (                    d|¦  «         n|	                     ||g¦  «         |
°Ó�ŒÑd
„ } ||¦  «        } ||¦  «        }tS          d¦  «        D �]G}g }d}|D �]\  Š3}|j        r_‰3j
        s‰3j        rPt9          ˆ3fd„t          j        t          j*        t          j+        fD ¦   «         ¦  «        rt          j        gg dfc c S Œl|t          j        u r‰3j        r‰4‰3z  Š4Œ‡‰3}|t          j        ur?tE          ‰3|¦  «        }|j         r(‰3j         s!‰3}|                     ¦   «         \  Š3}‰3|k    rd}|                     |¦  «         |                     ‰3|f¦  «         �Œ|r9t	          d„ |D ¦   «         ¦  «        t	          |¦  «        k    rg } ||¦  «        }�ŒH i } |D ].\  Š3}|  $                    |g ¦  «                             ‰3¦  «         Œ/|  ,                    ¦   «         D ]\  }Š3 | ‰3Ž | |<   Œ|                     d„ |  ,                    ¦   «         D ¦   «         ¦  «         i }!| ,                    ¦   «         D ]5\  Š3}|! $                    t          |Ž g ¦  «                             ‰3¦  «         Œ6~g }"|! ,                    ¦   «         D ]•\  }Š3 | ‰3Ž Š3|j-        dk    r‰4tE          ‰3|¦  «        z  Š4Œ)|j.        |j-        k    rEt_          |j.        |j-        ¦  «        \  }#}$‰4tE          ‰3|#¦  «        z  Š4ta          |$|j-        ¦  «        }|"                     ‰3|f¦  «         Œ–~!tc          td          ¦  «        }%d}|t	          |"¦  «        k     �rÊ|"|         \  }}&|dk    r|dz  }Œ+g }'tS          |dz   t	          |"¦  «        ¦  «        D ]ß}(|"|(         \  })}*| 3                    |)¦  «        }+|+t          j        ur¯|&|*z   }|j-        dk    r‰4tE          |+|¦  «        z  Š4nl|j.        |j-        k    rEt_          |j.        |j-        ¦  «        \  }#}$‰4tE          |+|#¦  «        z  Š4ta          |$|j-        ¦  «        }|'                     |+|f¦  «         |)|+z  |*f|"|(<   ||+z  }|t          j        u r nŒà|t          j        urutE          ||&¦  «        },|,j        r‰4|,z  Š4nXth           5                    |,¦  «        D ]=},|,j        r‰4|,z  Š4Œ|,j         sJ ‚|,j        \  }}&|%|&                              |¦  «         Œ>|"                     |'¦  «         |dz  }|t	          |"¦  «        k     �°Ê|% ,                    ¦   «         D ]\  }Š3 | ‰3Ž |%|<   Œ|rÈ| 6                    ¦   «         \  }}t_          ||¦  «        \  }-}|-dz  r‰4 Š4|dk    r |                     t          j        ¦  «         np|rnta          ||¦  «        }|% ,                    ¦   «         D ]\  }Š3||k    r‰3j%        r‰3 |%|<    n0Œ|                     tE          t          j7        |d¬¦  «        ¦  «         |                     d„ |% ,                    ¦   «         D ¦   «         ¦  «         ‰4t          j*        t          j+        fv r&d„ }. |.|d¦  «        \  }}/ |.|	|/¦  «        \  }	}/‰4|/z  Š4‰4t          j        u rd„ |D ¦   «         }d„ |	D ¦   «         }	nW‰4j        rPt9          ˆ1fd„|	D ¦   «         ¦  «        r‰4g|	|fS t9          d„ |D ¦   «         ¦  «        rt          j        gg |fS ‰4gg |fS g }0|D ]$}|j        r‰4|z  Š4Œ|0                     |¦  «         Œ%|0}tq          |¦  «         ‰4t          j        ur| (                    d‰4¦  «         t          j        re|	sct	          |¦  «        dk    rP|d         j        rC|d         j9        r6|d         j
        r)|d         Š4t          ˆ4fd„|d         j        D ¦   «         Ž g}||	|fS )a.  Return commutative, noncommutative and order arguments by
        combining related terms.

        Notes
        =====
            * In an expression like ``a*b*c``, Python process this through SymPy
              as ``Mul(Mul(a, b), c)``. This can have undesirable consequences.

              -  Sometimes terms are not combined as one would like:
                 {c.f. https://github.com/sympy/sympy/issues/4596}

                >>> from sympy import Mul, sqrt
                >>> from sympy.abc import x, y, z
                >>> 2*(x + 1) # this is the 2-arg Mul behavior
                2*x + 2
                >>> y*(x + 1)*2
                2*y*(x + 1)
                >>> 2*(x + 1)*y # 2-arg result will be obtained first
                y*(2*x + 2)
                >>> Mul(2, x + 1, y) # all 3 args simultaneously processed
                2*y*(x + 1)
                >>> 2*((x + 1)*y) # parentheses can control this behavior
                2*y*(x + 1)

                Powers with compound bases may not find a single base to
                combine with unless all arguments are processed at once.
                Post-processing may be necessary in such cases.
                {c.f. https://github.com/sympy/sympy/issues/5728}

                >>> a = sqrt(x*sqrt(y))
                >>> a**3
                (x*sqrt(y))**(3/2)
                >>> Mul(a,a,a)
                (x*sqrt(y))**(3/2)
                >>> a*a*a
                x*sqrt(y)*sqrt(x*sqrt(y))
                >>> _.subs(a.base, z).subs(z, a.base)
                (x*sqrt(y))**(3/2)

              -  If more than two terms are being multiplied then all the
                 previous terms will be re-processed for each new argument.
                 So if each of ``a``, ``b`` and ``c`` were :class:`Mul`
                 expression, then ``a*b*c`` (or building up the product
                 with ``*=``) will process all the arguments of ``a`` and
                 ``b`` twice: once when ``a*b`` is computed and again when
                 ``c`` is multiplied.

                 Using ``Mul(a, b, c)`` will process all arguments once.

            * The results of Mul are cached according to arguments, so flatten
              will only be called once for ``Mul(a, b, c)``. If you can
              structure a calculation so the arguments are most likely to be
              repeats then this can save time in computing the answer. For
              example, say you had a Mul, M, that you wished to divide by ``d[i]``
              and multiply by ``n[i]`` and you suspect there are many repeats
              in ``n``. It would be better to compute ``M*n[i]/d[i]`` rather
              than ``M/d[i]*n[i]`` since every time n[i] is a repeat, the
              product, ``M*n[i]`` will be returned without flattening -- the
              cached value will be returned. If you divide by the ``d[i]``
              first (and those are more unique than the ``n[i]``) then that will
              create a new Mul, ``M/d[i]`` the args of which will be traversed
              again when it is multiplied by ``n[i]``.

              {c.f. https://github.com/sympy/sympy/issues/5706}

              This consideration is moot if the cache is turned off.

            NB
            --
              The validity of the above notes depends on the implementation
              details of Mul and flatten which may change at any time. Therefore,
              you should only consider them when your code is highly performance
              sensitive.

              Removal of 1 from the sequence is already handled by AssocOp.__new__.
        r   )ÚAccumBounds)Ú
MatrixExprNé   FrM   c                ó0   •— g | ]}t          ‰|¦  «        ‘ŒS r%   ©Ú_keep_coeff)rH   Úbir;   s     €r'   ú
<listcomp>zMul.flatten.<locals>.<listcomp>1  s#   ø€ Ð$IÐ$IÐ$I¸B¥[°°BÑ%7Ô%7Ð$IÐ$IÐ$Ir&   c              3  óš   K  — | ]F}t                                |¦  «        D ])}|t          j        t          j        t          j        fv V — Œ*ŒGd S rE   )r6   Ú	make_argsr   ÚNegativeInfinityr_   ÚInfinity)rH   Ú__Ú_s      r'   rI   zMul.flatten.<locals>.<genexpr>†  su   è è € ð :Að :Aà­c¯mªm¸BÑ.?Ô.?ð:Að :Aà)*ð �!Ô,­aÔ.?ÅÄÐLÐLð:Að :Að :Að :Að :Að :Að :Ar&   c                óô  ‡— i }| D ]b\  Š}|                      ¦   «         }|                     ‰i ¦  «                             |d         g ¦  «                             |d         ¦  «         Œc|                     ¦   «         D ]+\  Š}|                     ¦   «         D ]\  }}t	          |Ž ||<   ŒŒ,g }|                     ¦   «         D ]8\  Š}|                     ˆfd„|                     ¦   «         D ¦   «         ¦  «         Œ9|S )Nr	   r   c                ó$   •— g | ]\  }}‰||z  f‘ŒS r%   r%   )rH   ÚtrZ   Úbs      €r'   rj   z0Mul.flatten.<locals>._gather.<locals>.<listcomp>î  s%   ø€ Ð$DÐ$DÐ$D±$°!°Q a¨¨1© XÐ$DÐ$DÐ$Dr&   )Úas_coeff_MulÚ
setdefaultr4   ÚitemsÚAddr3   )	Úc_powersÚcommon_bÚer:   ÚdÚdiÚliÚnew_c_powersrt   s	           @r'   Ú_gatherzMul.flatten.<locals>._gatherã  s  ø€ ØˆHØ ð -ð -‘��1Ø—^’^Ñ%Ô%�Ø×#Ò# A rÑ*Ô*×5Ò5Ø�q”E˜2ñô ß%šv b¨¤e™}œ}˜}˜}Ø ŸšÑ(Ô(ð %ð %‘��1ØŸgšg™iœið %ð %‘F�B˜Ý ˜H�A�b‘E�Eð%àˆLØ ŸšÑ(Ô(ð Fð F‘��1Ø×#Ò#Ð$DÐ$DÐ$DÐ$D¸!¿'º'¹)¼)Ð$DÑ$DÔ$DÑEÔEÐEÐEØÐr&   c              3  ó*   •K  — | ]}|‰j         v V — Œd S rE   r,   )rH   Úinftyrt   s     €r'   rI   zMul.flatten.<locals>.<genexpr>  s=   øè è € ð 6;ð 6;Ø!ð 7<¸q¼v°oð 6;ð 6;ð 6;ð 6;ð 6;ð 6;r&   Tc                ó   — h | ]\  }}|’ŒS r%   r%   )rH   rt   r{   s      r'   ú	<setcomp>zMul.flatten.<locals>.<setcomp>+  s)   € ð  0ð  0ð  0Ù˜!˜Q�Að 0ð  0ð  0r&   c                ó8   — g | ]\  }}|¯t          ||¦  «        ‘ŒS r%   ©ÚPow©rH   r{   rt   s      r'   rj   zMul.flatten.<locals>.<listcomp>;  s)   € ÐGÐGÐG¡T Q¨ÀQÐG•s˜1˜a‘y”yÐGÐGÐGr&   r	   c                ó4   — g | ]\  }}t          ||¦  «        ‘ŒS r%   r†   rˆ   s      r'   rj   zMul.flatten.<locals>.<listcomp>   s$   € Ð:Ð:Ð:¡T Q¨•s˜1˜a‘y”yÐ:Ð:Ð:r&   c                ól   — g }| D ],}|j         rŒ
|j        r|dz  }Œ|                     |¦  «         Œ-||fS ©Néÿÿÿÿ)Úis_extended_positiverY   r4   )Úc_partÚ
coeff_signÚ
new_c_partrs   s       r'   Ú_handle_for_ooz#Mul.flatten.<locals>._handle_for_oo¤  s^   € Ø�
Øð )ð )�AØÔ-ð !Ø ØÔ-ð !Ø" bÑ(˜
Ø Ø×%Ò% aÑ(Ô(Ð(Ð(Ø! :Ð-Ð-r&   c                óH   — g | ]}t          |j        ¦  «        r|j        ­|‘Œ S rE   ©r   Úis_zeroÚis_extended_real©rH   rZ   s     r'   rj   zMul.flatten.<locals>.<listcomp>¹  s?   € ð Qð Qð Q˜Aµ	¸!¼)Ñ0DÔ0Dð QØ01Ô0BÐ0Nð Ø0NÐ0NÐ0Nr&   c                óH   — g | ]}t          |j        ¦  «        r|j        ­|‘Œ S rE   r“   r–   s     r'   rj   zMul.flatten.<locals>.<listcomp>»  s?   € ð Sð Sð S˜Qµ)¸A¼IÑ2FÔ2Fð SØ23Ô2DÐ2Pð Ø2PÐ2PÐ2Pr&   c              3  ó8   •K  — | ]}t          |‰¦  «        V — Œd S rE   )Ú
isinstance)rH   rZ   rd   s     €r'   rI   zMul.flatten.<locals>.<genexpr>Â  s-   øè è € Ð>Ð>°•:˜a Ñ,Ô,Ð>Ð>Ð>Ð>Ð>Ð>r&   c              3  ó,   K  — | ]}|j         d k    V — ŒdS ©FN©Ú	is_finiter–   s     r'   rI   zMul.flatten.<locals>.<genexpr>Ä  s)   è è € Ð8Ð8¨A�1”; %Ò'Ð8Ð8Ð8Ð8Ð8Ð8r&   c                ó   •— g | ]}‰|z  ‘ŒS r%   r%   )rH   ÚfÚcoeffs     €r'   rj   zMul.flatten.<locals>.<listcomp>Ý  s   ø€ Ð<Ð<Ð<¨˜E !™GÐ<Ð<Ð<r&   ):Ú!sympy.calculus.accumulationboundsrc   Úsympy.matrices.expressionsrd   ÚlenÚis_Rationalr   r1   r”   ru   Úis_Addr   Ú
distributer$   rx   r-   ÚZeror    Úas_expr_variablesr!   r3   r4   r   r"   ÚNaNr_   r™   Ú__mul__ÚanyÚImaginaryUnitÚHalfÚas_base_expÚis_PowÚ
is_Integerr‡   Úis_negativerv   Úis_positiveÚ
is_integerÚpopr5   Úrangern   rm   rw   ÚqÚpÚdivmodÚRationalr   r0   Úgcdr6   rl   Úas_numer_denomr`   r.   r�   )5rS   Úseqrc   ÚrvÚrÚarÚarbÚnewbrŽ   Únc_partÚnc_seqry   Únum_expÚneg1eÚpnum_ratÚorder_symbolsÚor¶   r{   Úo1Úb1Úe1Úb2Úe2Únew_expÚo12r€   Úir   Úchangedr·   ri   Úinv_exp_dictÚcomb_eÚnum_ratÚe_iÚepÚpnewÚeiÚgrowÚjÚbjÚejÚgÚobjÚnr‘   r�   Ú_newrd   r;   rt   r    s5                                                    @@@@r'   ÚflattenzMul.flattenÍ   sâ  øøøø€ ð^ 	BÐAÐAÐAÐAÐAØ9Ð9Ð9Ð9Ð9Ð9ØˆÝˆs‰8Œ8�qŠ=ˆ=Ø‰DˆAˆqØŒ}ð Ø˜!���1Ø˜!�f�Ø�AœE�>�>�>�>ØŒ}ð . Q¤Yð .Ø—~’~Ñ'Ô'‘��1Ø”8ð .Ø¥¤�~�~à˜q™S˜Ø¥¤˜;˜;Ø"#˜C˜Cà"% # a¨¡c¨1°uÐ"=Ñ"=Ô"=˜CØ!˜U B¨˜_˜˜Ý*Ô5ð .¸!Ô:Jð .Ý"Ð$IÐ$IÐ$IÐ$IÀ!Ä&Ð$IÑ$IÔ$IÐJ˜Ø"˜V R¨Ð-˜Øð Ø�	ð ˆØˆàˆå”ˆð ˆð ˆõ ”ˆàˆð ˆð ð }	0ñ }	0ˆAàŒzð FØ#$×#6Ò#6°}Ñ#EÔ#EÑ ��=ð Œxð w0ØÔ#ð *Ø—J’J˜qœvÑ&Ô&Ð&Ð&ð œVð -ð -˜ØÔ+ð -ØŸJšJ q™MœM˜M˜Mà"ŸMšM¨!Ñ,Ô,Ð,Ð,ð —J’J�yÑ)Ô)Ð)àð ”ð d0Ø�œ�:�: ­!Ô*;Ð!;Ð!;ÀÄ	Ð!;åœE˜7 B¨Ð,Ð,Ð,Ð,Ø”_ð 1­
°5¸+Ñ(FÔ(Fð 1Ø˜Q‘J�EØ¥¤�~�~å !¤˜w¨¨DÐ0Ð0Ð0Ð0Ùå˜A˜{Ñ+Ô+ð Y0ØŸ	š	 %Ñ(Ô(�Ùà•aÔ'Ð'Ð'Øð -åœE˜7 B¨Ð,Ð,Ð,Ð,ÝÔ)�Ùàð N0�z¨!­SÑ1Ô1ð N0µcð :Að :Aàœfð:Añ :Aô :Añ 7Aô 7Að N0õ œ�w  DÐ(Ð(Ð(Ð(à•a”oÐ%Ð%Ø�œ‘�ÙàÔ!ð B0ð —}’}‘”‘��1ð ”8ð %Ø”{ð %ð
 œ=ð %Ø œ|ð 'Ø %­¨Q°©¬Ñ 2 Ù (Ø!"¤ð 'Ø #§
¢
­3¨q°!©9¬9Ñ 5Ô 5Ð 5Ù (Ø!"¤ð 'Ø %¨¡
 Ø%& B Ø ­¬˜~˜~Ø (× 3Ò 3°A°rÑ :Ô :× AÒ AÀ!Ñ DÔ DÐ DÙ$Øœ]ð %¨a¬lð %Ø#ŸNšN¨A¨q¨6Ñ2Ô2Ð2Ù$à—’  A Ñ'Ô'Ð'Ñ'ð
 �IÐ%Ð%Ø—M’M !Ñ$Ô$Ð$ð ð 0ØŸ
š
 1™œ�AØ"ð !ØŸš qÑ)Ô)Ð)Ø ð !Ÿš™œ�BØŸ^š^Ñ-Ô-‘F�B˜ØŸ]š]™_œ_‘F�B˜Ø  2™g�Gð
 ˜R’x�x¨¬�xØ  G™m˜ð Ô-ð 2ØŸJšJ s™OœO˜OØ$à"ŸMšM¨!¨SÑ1Ô1Ð1Ð1ð  Ÿš¨¨A wÑ/Ô/Ð/ð7 ð 0ùðT	 ð 	 ð 	 ð �7˜8Ñ$Ô$ˆð �'˜'Ñ"Ô"ˆõ0 �q‘”ð $	ñ $	ˆAØˆLØˆGØ ð ,ñ ,‘��1Ø”9ð àœð 1 A¤Hð 1µ#ð 6;ð 6;ð 6;ð 6;Ý&'Ô&7½¼Ý&'Ô&8ð&:ð6;ñ 6;ô 6;ñ 3;ô 3;ð 1õ !"¤˜w¨¨DÐ0Ð0Ð0Ð0Ð0Ð0ØØ�œ�:�:Ø”{ð !Ø ™
˜Ø Ø�AØ�AœE�>�>Ý˜A˜q™	œ	�Að ”xð +¨¬ð +Ø˜Ø Ÿ}š}™œ™˜˜1Ø š7˜7Ø&*˜GØ—’˜aÑ Ô Ð Ø×#Ò# Q¨ FÑ+Ô+Ð+Ñ+ð ð �3ð  0ð  0Ø".ð 0ñ  0ô  0ñ 1ô 1Ý47¸Ñ4EÔ4EòFð Fð �Ø"˜7 <Ñ0Ô0�‘àð ˆàð 	5ð 	5‰DˆAˆqØ×#Ò# A rÑ*Ô*×1Ò1°!Ñ4Ô4Ð4Ð4Ø ×&Ò&Ñ(Ô(ð 	&ð 	&‰DˆAˆqØ!˜c 1˜gˆL˜‰OˆOØ�ŠÐGÐG¨\×-?Ò-?Ñ-AÔ-AÐGÑGÔGÑHÔHÐHð ˆØ—N’NÑ$Ô$ð 	5ð 	5‰DˆAˆqØ×Ò�c 1˜g rÑ*Ô*×1Ò1°!Ñ4Ô4Ð4Ð4Øð ˆØ—L’L‘N”Nð 		#ð 		#‰DˆAˆqØ��Q�ˆAØŒs�aŠxˆxØ�˜Q ™œÑ"�ØØŒs�Q”SŠyˆyÝ  ¤ a¤cÑ*Ô*‘��RØ�˜Q ™œÑ$�Ý˜R ¤Ñ%Ô%�Ø�NŠN˜A˜q˜6Ñ"Ô"Ð"Ð"Øõ �4Ñ Ô ˆØˆØ•#�g‘,”,ÒÑØ˜Q”Z‰FˆB�Ø�QŠwˆwØ�Q‘�ØØˆDÝ˜1˜q™5¥# g¡,¤,Ñ/Ô/ð ð �Ø  œ‘��BØ—F’F˜2‘J”J�Ø�AœE�>�>ð ˜R™�AØ”s˜a’x�xØ¥ Q¨¡¤Ñ*˜˜àœ3 ¤š9˜9Ý&,¨Q¬S°!´#Ñ&6Ô&6™G˜C Ø!¥S¨¨C¡[¤[Ñ0˜EÝ (¨¨Q¬SÑ 1Ô 1˜AØŸš Q¨ FÑ+Ô+Ð+à"$ Q¡$¨ �G˜A‘Jà˜A™�BØ�QœU�{�{Ø˜øØ�œˆˆÝ˜"˜b‘k”k�Ø”=ð 
0Ø˜S‘L�E�Eõ  #Ÿ}š}¨SÑ1Ô1ð 0ð 0˜Øœ=ð 0Ø! S™L˜E˜Eà#&¤:Ð-Ð- :Ø%(¤X™F˜B Ø  œHŸOšO¨BÑ/Ô/Ð/Ð/à�NŠN˜4Ñ Ô Ð Ø�‰FˆAðU •#�g‘,”,ÒÑðZ —J’J‘L”Lð 	ð 	‰DˆAˆqØ�c˜1�gˆD�‰GˆGð ð 	Mà×(Ò(Ñ*Ô*‰DˆAˆqå˜!˜Q‘<”<‰DˆAˆqØ�1‰uð Ø˜�à�AŠvˆvØ—’�aœoÑ.Ô.Ð.Ð.Øð Mõ !  A™œ�Ø ŸJšJ™LœLð Mð M‘D�A�qØ˜E’z�z a¤m�zØ#$ "˜˜Q™Ø˜øð —M’M¥#¥a¤m°UÀUÐ"KÑ"KÔ"KÑLÔLÐLð 	�ŠÐ:Ð:¨T¯ZªZ©\¬\Ð:Ñ:Ô:Ñ;Ô;Ð;ð •Q”Z¥Ô!3Ð4Ð4Ð4ð	.ð 	.ð 	.ð "0 °¸Ñ!:Ô!:ÑˆF�JØ"0 .°¸*Ñ"EÔ"EÑˆG�ZØ�ZÑˆEð •AÔ%Ð%Ð%ðQð Q ð Qñ Qô QˆFðSð S 'ð Sñ Sô SˆGˆGð Œ]ð 	.õ Ð>Ð>Ð>Ð>°gÐ>Ñ>Ô>Ñ>Ô>ð 7Ø�w ¨Ð6Ð6ÝÐ8Ð8°Ð8Ñ8Ô8Ñ8Ô8ð 2Ýœ�w  MÐ1Ð1Ø�7˜B Ð-Ð-ð ˆØð 	ð 	ˆAØŒ{ð Ø˜‘
��à—’˜A‘”��Øˆõ 	�ÑÔÐð �œÐÐØ�MŠM˜!˜UÑ#Ô#Ð#õ Ô(ð 	?°ð 	?½SÀ¹[¼[ÈAÒ=MÐ=MØ�q”	Ô#ð >NØ(.¨q¬	Ô(;ð >NØ@FÀqÄ	Ô@Pð >Nð ˜1”IˆEÝÐ<Ð<Ð<Ð<¨V°A¬Y¬^Ð<Ñ<Ô<Ð=Ð>ˆFà�w Ð-Ð-r&   c                óè  ‡— |                       d¬¦  «        \  }}‰j        r@t          ˆfd„|D ¦   «         Ž t          t                               |¦  «        ‰d¬¦  «        z  S ‰j        rÕ‰j        dk    rÊ| j        rÃ|                      ¦   «         d         }|j        r¢t          |dz  ¦  «         
                    ¦   «         \  }}t          |d¦  «        \  }}|rft          |d¦  «        \  }}|rQddlm} t          |¦  «        |z  }	t          |	‰j        z  d ||¦  «        t"          j        z  z   ‰j        z  ¦  «        S t          | ‰d¬¦  «        }
‰j        s‰j        r|
                     ¦   «         S |
S )	NF)Úsplit_1c                ó4   •— g | ]}t          |‰d ¬¦  «        ‘ŒS )FrM   r†   )rH   rt   Úexpts     €r'   rj   z#Mul._eval_power.<locals>.<listcomp>ç  s(   ø€ ÐEÐEÐE¸!�˜Q ¨uÐ5Ñ5Ô5ÐEÐEÐEr&   rM   re   r	   r   ©Úsign)r2   r°   r6   r‡   r7   r¤   r¶   Úis_imaginaryÚas_real_imagÚabsr»   r   Ú$sympy.functions.elementary.complexesrç   r
   r>   r·   r   r¬   Úis_FloatÚ_eval_expand_power_base)rK   rå   r8   Úncr;   rß   r|   rs   rç   r¾   r·   s    `         r'   Ú_eval_powerzMul._eval_powerá  s˜  ø€ ð —M’M¨%�MÑ0Ô0‰	ˆˆràŒ?ð 	>ÝÐEÐEÐEÐE¸uÐEÑEÔEÐFÝ•C—N’N 2Ñ&Ô&¨°uÐ=Ñ=Ô=ñ>ð >àÔð 	f ¤¨!¢ ØÔ ð 
fØ×%Ò%Ñ'Ô'¨Ô*�Ø”=ð fÝ˜q ™s™8œ8×2Ò2Ñ4Ô4‘D�A�qÝ*¨1¨aÑ0Ô0‘D�A�qØð fÝ.¨q°!Ñ4Ô4™˜˜1Øð fØQÐQÐQÐQÐQÐQÝ '¨¡
¤
¨1¡˜AÝ#3°A°t´v±IÀÀDÀDÈÁGÄGÍAÌOÑD[Ñ@[Ð^bÔ^dÑ?dÑ#eÔ#eÐeå��d UÐ+Ñ+Ô+ˆàÔð 	/˜tœ}ð 	/Ø×,Ò,Ñ.Ô.Ð.àˆr&   c                ó   — dd| j         fS )Né   r   )r   ©rS   s    r'   Ú	class_keyzMul.class_keyý  s   € à�!�S”\Ð!Ð!r&   c                ó&  — |                       ¦   «         \  }}|t          j        u r;|j        rt	          j        ||¦  «         }n2|                     |¦  «        }|�|}| }nt	          j        | |¦  «        }|j        r|                     ¦   «         S |S rE   )ru   r   r`   r!   r   Ú_eval_evalfÚ	is_numberÚexpand)rK   ÚprecrZ   Úmr½   Úmnews         r'   rõ   zMul._eval_evalf  s™   € Ø× Ò Ñ"Ô"‰ˆˆ1Ø•”ÐÐØŒxð ÝÔ)¨!¨TÑ2Ô2Ð2��à—}’} TÑ*Ô*�ØÐ#Ø�AØ�R��åÔ$ T¨4Ñ0Ô0ˆBØŒ<ð 	Ø—9’9‘;”;ÐØˆ	r&   c                ó¶   — ddl m} |                      ¦   «         \  }}|t          j        urt          d¦  «        ‚ |d¦  «        j         ||¦  «        j        fS )z;
        Convert self to an mpmath mpc if possible
        r	   )ÚFloatz7Cannot convert Mul to mpc. Must be of the form Number*Ir   )Únumbersrü   ru   r   r¬   ÚAttributeErrorÚ_mpf_)rK   rü   Úim_partÚ	imag_units       r'   Ú_mpc_z	Mul._mpc_  sj   € ð
 	#Ð"Ð"Ð"Ð"Ð"Ø!×.Ò.Ñ0Ô0Ñˆ�Ø�AœOÐ+Ð+õ !Ð!ZÑ[Ô[Ð[à��a‘””   g¡¤Ô 4Ð5Ð5r&   c                ó°   — | j         }t          |¦  «        dk    rt          j        | fS t          |¦  «        dk    r|S |d          | j        |dd…         Ž fS )ao  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_mul() which gives the head and a tuple containing
          the arguments of the tail when treated as a Mul.
        - if you want the coefficient when self is treated as an Add
          then use self.as_coeff_add()[0]

        Examples
        ========

        >>> from sympy.abc import x, y
        >>> (3*x*y).as_two_terms()
        (3, x*y)
        r	   re   r   N)r-   r£   r   r1   Ú_new_rawargs)rK   r-   s     r'   Úas_two_termszMul.as_two_terms   s^   € ð* Œyˆåˆt‰9Œ9˜Š>ˆ>Ý”5˜$�;ÐÝ�‰YŒY˜!Š^ˆ^ØˆKð ˜”7Ð-˜DÔ-¨t°A°B°B¬xÐ8Ð8Ð8r&   )Úrationalc               óV  ‡— ‰r6t          | j        ˆfd„d¬¦  «        \  }} | j        |Ž t          |¦  «        fS | j        }|d         j        rO|r|d         j        r|d         |dd …         fS |d         j        r!t          j        |d          f|dd …         z   fS t          j	        |fS )Nc                ó   •—  | j         ‰Ž S rE   )Úhas)ÚxÚdepss    €r'   ú<lambda>z"Mul.as_coeff_mul.<locals>.<lambda>B  s   ø€ ¨u¨q¬u°d¨|€ r&   T)Úbinaryr   r	   )
r   r-   r  Útupler"   r¤   rY   r   r`   r1   )rK   r  r  ÚkwargsÚl1Úl2r-   s     `    r'   r^   zMul.as_coeff_mul?  sÊ   ø€ àð 	5Ý˜$œ)Ð%;Ð%;Ð%;Ð%;ÀDÐIÑIÔI‰FˆB�Ø$�4Ô$ bÐ)­5°©9¬9Ð4Ð4ØŒyˆØ�Œ7Ôð 	=Øð =˜t AœwÔ2ð =Ø˜A”w  Q R R¤Ð(Ð(Ø�a”Ô-ð =Ý”}¨¨Q¬ x k°D¸¸¸´HÑ&<Ð<Ð<ÝŒu�dˆ{Ðr&   Fc                ó  — | j         d         | j         dd…         }}|j        rT|r|j        r)t          |¦  «        dk    r
||d         fS | | j        |Ž fS |j        rt          j         | j        | f|z   Ž fS t          j        | fS )zC
        Efficiently extract the coefficient of a product.
        r   r	   N)	r-   r"   r¤   r£   r  rY   r   r`   r1   )rK   r  r    r-   s       r'   ru   zMul.as_coeff_MulL  s¨   € ð ”i ”l D¤I¨a¨b¨b¤MˆtˆàŒ?ð 	MØð M˜uÔ0ð MÝ�t‘9”9 ’>�>Ø  $ q¤'˜>Ð)à Ð"3 $Ô"3°TÐ":Ð:Ð:ØÔ+ð MÝ”}Ð&7 dÔ&7¸E¸6¸)ÀdÑ:JÐ&LÐLÐLÝŒu�dˆ{Ðr&   c                óÈ  — ddl m}m}m} g }g }g }t          j        }	| j        D ]ø}
|
                     ¦   «         \  }}|j        r| 	                    |¦  «         Œ6|j        r#| 	                    |t          j
        z  ¦  «         Œ`|
j        r||r|
                     ¦   «         nd }t          |¦  «        D ]1\  }}||k    r&| 	                     ||¦  «        dz  ¦  «         ||=  n#Œ2|
j        r|	|
z  }	ŒÍ| 	                    |
¦  «         Œã| 	                    |
¦  «         Œù | j        |Ž }|                     d¦  «        |k    rd S t#          |¦  «        dz  r ||                     d¦  «        ¦  «        }nt          j        } | j        ||z   Ž }| ||¦  «        z  | ||¦  «        z  }}|	dk    rI|dk    r&|j        r|t          j        fS t          j        ||z  fS |t          j        u r||fS | |z  ||z  fS ddlm}  ||	d¬¦  «                             ¦   «         \  }}|t          j        u r||z  ||z  z
  ||z  ||z  z   fS | |z  ||z  }}||z  ||z  z
  ||z  ||z  z   fS )	Nr   )ÚAbsÚimÚrere   Úignorer	   )Ú
expand_mulF)Údeep)rë   r  r  r  r   r1   r-   ré   r”   r4   r¬   r$   Ú	conjugateÚ	enumerater¥   ÚfuncÚgetr£   r´   r§   Úfunctionr  )rK   r  Úhintsr  r  r  ÚotherÚcoeffrÚcoeffiÚaddtermsr;   r¾   rÐ   Úaconjr
  rù   ÚimcoÚrecor  ÚaddreÚaddims                        r'   ré   zMul.as_real_imag\  sÞ  € ØDÐDÐDÐDÐDÐDÐDÐDÐDÐDØˆØˆØˆÝ”5ˆØ”ð 	 ð 	 ˆAØ—>’>Ñ#Ô#‰DˆAˆqØŒyð  Ø—’˜aÑ Ô Ð Ð Ø”ð  Ø—’˜a¥¤Ñ/Ñ0Ô0Ð0Ð0ØÔ!ð  Ø).Ð8˜Ÿš™œ˜°D�å% eÑ,Ô,ð 	(ð 	(‘D�A�qØ˜E’z�zØŸš c c¨!¡f¤f¨a¡iÑ0Ô0Ð0Ø! !˜HØ˜ð "ð
 ”xð (Ø  A™˜˜àŸš Q™œ˜øà—’˜Q‘”��ØˆDŒI�uÐˆØ�9Š9�XÑÔ !Ò#Ð#ØˆFÝˆv‰;Œ;˜‰?ð 	Ø�2�f—j’j ‘m”mÑ$Ô$ˆDˆDõ ”6ˆDØˆtŒy˜6 F™?Ð,ˆØ�R�R˜‘U”U‘
˜D   A¡¤™Jˆ1ˆØ�qŠ=ˆ=Ø�AŠvˆvØ”<ð /Ø ¥!¤&˜>Ð)åœF D¨¡IÐ.Ð.Ø•q”vˆ~ˆ~Ø˜1�v�Ø�E˜!‘G˜T !™VÐ$Ð$Ø(Ð(Ð(Ð(Ð(Ð(Ø!�z (°Ð7Ñ7Ô7×DÒDÑFÔF‰ˆˆuØ•1”6ˆ>ˆ>Ø�e‘G˜a ™gÑ% q¨¡w°°5±Ñ'8Ð9Ð9à�5˜‘7˜D ™FˆqˆAØ�e‘G˜a ™gÑ% q¨¡w°°5±Ñ'8Ð9Ð9r&   c                ó6  ‡— t          | ¦  «        }|dk    r| d         j        S g }t                               | d|dz  …         ¦  «        }t                               | |dz  d…         ¦  «        Šˆfd„|D ¦   «         }t	          |Ž }t	          j        |¦  «        S )zk
        Helper function for _eval_expand_mul.

        sums must be a list of instances of Basic.
        r	   r   Nre   c                ó:   •— g | ]}‰D ]}t          ||¦  «        ‘ŒŒS r%   )r6   )rH   r;   rt   Úrights      €r'   rj   z#Mul._expandsums.<locals>.<listcomp>¢  s.   ø€ Ð8Ð8Ð8˜q°%Ð8Ð8¨Q•�Q˜‘”Ð8Ð8Ð8Ð8r&   )r£   r-   r6   Ú_expandsumsrx   rl   )ÚsumsÚLÚtermsÚleftÚaddedr+  s        @r'   r,  zMul._expandsums“  s–   ø€ õ �‰IŒIˆØ�Š6ˆ6Ø˜”7”<ÐØˆÝ�Š˜t E Q¨¡T Eœ{Ñ+Ô+ˆÝ—’  Q¨¡T U U¤Ñ,Ô,ˆà8Ð8Ð8Ð8 DÐ8Ñ8Ô8ˆÝ�U�ˆÝŒ}˜UÑ#Ô#Ð#r&   c                óö  ‡— ddl m} | } ||‰                     dd¦  «        ¦  «        \  }}|j        rˆfd„||fD ¦   «         \  }}||z  }|j        s|S g g d}}}|j        D ]`}	|	j        r|                     |	¦  «         d}Œ!|	j        r|                     |	¦  «         Œ>|                     t          |	¦  «        ¦  «         Œa|s|S  | j	        |Ž }|r¦‰                     dd¦  «        }
| j	         
                    |¦  «        }g }|D ]h}|  	                    ||¦  «        }|j        r4t          d„ |j        D ¦   «         ¦  «        r|
r|                     ¦   «         }|                     |¦  «         Œit          |Ž S |S )	Nr   ©ÚfractionÚexactFc                ó<   •— g | ]}|j         r |j        d i ‰¤Žn|‘ŒS )r%   )r!   Ú_eval_expand_mul)rH   rÐ   r  s     €r'   rj   z(Mul._eval_expand_mul.<locals>.<listcomp>¯  sI   ø€ ð !ð !ð !Øð 45´8ÐBÐ&�AÔ&Ð/Ð/¨Ð/Ð/Ð/Àð !ð !ð !r&   Tr  c              3  ó$   K  — | ]}|j         V — Œd S rE   )r¥   rG   s     r'   rI   z'Mul._eval_expand_mul.<locals>.<genexpr>Ê  s$   è è € Ð'AÐ'A°Q¨¬Ð'AÐ'AÐ'AÐ'AÐ'AÐ'Ar&   )Úsympy.simplify.radsimpr4  r  r!   r-   r¥   r4   r$   r   r  r,  r«   r7  rx   )rK   r  r4  Úexprrß   r|   Úplainr-  ÚrewriteÚfactorr  r/  r-   Útermrs   s    `             r'   r7  zMul._eval_expand_mul¦  sá  ø€ Ø3Ð3Ð3Ð3Ð3Ð3ð ˆàˆx˜˜eŸiši¨°Ñ7Ô7Ñ8Ô8‰ˆˆ1ØŒ8ð 	!ð!ð !ð !ð !Ø˜Q˜ð!ñ !ô !‰DˆAˆqà�‰sˆØŒ{ð 	ØˆKà! 2 u�WˆtˆØ”ið 	/ð 	/ˆFØŒ}ð /Ø—’˜FÑ#Ô#Ð#Ø��àÔ(ð /Ø—L’L Ñ(Ô(Ð(Ð(à—K’K¥ f¡¤Ñ.Ô.Ð.Ð.àð 	ØˆKà�D”I˜uÐ%ˆEØð Ø—y’y ¨Ñ/Ô/�Øœ	×-Ò-¨dÑ3Ô3�Ø�Ø!ð #ð #�DØŸ	š	 %¨Ñ.Ô.�AØ”xð 1¥CÐ'AÐ'A¸!¼&Ð'AÑ'AÔ'AÑ$AÔ$Að 1Àdð 1Ø×.Ò.Ñ0Ô0˜Ø—K’K ‘N”N�N�NÝ˜D�zÐ!à�r&   c           
     ó`  — t          | j        ¦  «        }g }t          t          |¦  «        ¦  «        D ]h}||                              |¦  «        }|rI|                     t          d„ |d |…         |gz   ||dz   d …         z   t          j        ¦  «        ¦  «         Œit          j
        |¦  «        S )Nc                ó   — | |z  S rE   r%   )r
  Úys     r'   r  z&Mul._eval_derivative.<locals>.<lambda>Ú  s
   € °°1±€ r&   r	   )r0   r-   rµ   r£   Údiffr4   r   r   r1   rx   Úfromiter)rK   Úsr-   r/  rÐ   r|   s         r'   Ú_eval_derivativezMul._eval_derivativeÑ  s¨   € å�D”I‰ŒˆØˆÝ•s˜4‘y”yÑ!Ô!ð 	_ð 	_ˆAØ�Q”—’˜Q‘”ˆAØð _ð —’�VÐ$4Ð$4°t¸B¸Q¸B´xÀ1À#±~ÈÈQÐQRÉUÈVÈVÌÑ7TÕWXÔW\Ñ]Ô]Ñ^Ô^Ð^øÝŒ|˜EÑ"Ô"Ð"r&   c                óZ  •‡‡‡‡— ddl m} ddlm}m}m} t          ‰||f¦  «        s"t          ¦   «                              ‰‰¦  «        S ddl	m
} | j        Št          ‰¦  «        }t          ‰t          |f¦  «        r^g }	ddlm}
  |
|‰¦  «        D ]@\  Š}t!          ˆfd„t#          ‰‰¦  «        D ¦   «         Ž }|	                     ||z  ¦  «         ŒAt'          |	Ž S ddlm} dd	lm} dd
lm}  |d|z  |¬¦  «        Š‰t5          ‰¦  «        z
  } |‰¦  «        }|t7          t9          |‰¦  «        ¦  «        z   ||¦  «        z  t!          ˆˆˆfd„t;          |dz
  ¦  «        D ¦   «         Ž z  ‰d                              ‰ |d|¦  «        f¦  «        z  ˆfd„‰D ¦   «         }} ||g|¢R Ž S )Nr	   )ÚAppliedUndef)ÚSymbolÚsymbolsÚDummy)ÚIntegerr   )Ú!multinomial_coefficients_iteratorc                óD   •— g | ]\  }}|                      ‰|f¦  «        ‘ŒS r%   ©rB  )rH   ÚkÚargrD  s      €r'   rj   z0Mul._eval_derivative_n_times.<locals>.<listcomp>í  s-   ø€ ÐJÐJÐJ©v¨q°#˜#Ÿ(š( A q 6Ñ*Ô*ÐJÐJÐJr&   )ÚSum)Ú	factorial)ÚMaxzk1:%irò   c                óV   •— g | ]%}‰|                               ‰‰|         f¦  «        ‘Œ&S r%   rN  )rH   rs   r-   ÚkvalsrD  s     €€€r'   rj   z0Mul._eval_derivative_n_times.<locals>.<listcomp>ø  s1   ø€ ÐBÐBÐB°!�$�q”'—,’,  5¨¤8˜}Ñ-Ô-ÐBÐBÐBr&   rŒ   c                ó   •— g | ]}|d ‰f‘ŒS ©r   r%   )rH   rO  rß   s     €r'   rj   z0Mul._eval_derivative_n_times.<locals>.<listcomp>ú  s   ø€ Ð&Ð&Ð&˜1ˆa��AˆYÐ&Ð&Ð&r&   )r  rG  ÚsymbolrH  rI  rJ  r™   ÚsuperÚ_eval_derivative_n_timesrý   rK  r-   r£   ÚintÚsympy.ntheory.multinomialrL  r6   Úzipr4   rx   Úsympy.concrete.summationsrQ  Ú(sympy.functions.combinatorial.factorialsrR  Ú(sympy.functions.elementary.miscellaneousrS  ÚsumÚprodÚmaprµ   rB  )rK   rD  rß   rG  rH  rI  rJ  rK  rù   r/  rL  rZ   r·   rQ  rR  rS  ÚklastÚnfactr{   Úlr-   rU  Ú	__class__s    ``                 @@€r'   rZ  zMul._eval_derivative_n_timesÝ  sJ  øøøøø€ à*Ð*Ð*Ð*Ð*Ð*Ø2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ý˜!˜l¨FÐ3Ñ4Ô4ð 	:õ ‘7”7×3Ò3°A°qÑ9Ô9Ð9Ø$Ð$Ð$Ð$Ð$Ð$ØŒyˆÝ�‰IŒIˆÝ�a�#˜w˜Ñ(Ô(ð 	àˆEØSÐSÐSÐSÐSÐSØ=Ð=¸aÀÑCÔCð $ð $‘��qÝÐJÐJÐJÐJ½¸UÀDÑ9IÔ9IÐJÑJÔJÐK�Ø—’˜Q ™UÑ#Ô#Ð#Ð#Ý˜�;ÐØ1Ð1Ð1Ð1Ð1Ð1ØFÐFÐFÐFÐFÐFØ@Ð@Ð@Ð@Ð@Ð@Ø�˜ !™¨Ð/Ñ/Ô/ˆØ•C˜‘J”J‘ˆØ�	˜!‘”ˆà•$•s˜9 eÑ,Ô,Ñ-Ô-Ñ-¨i¨i¸Ñ.>Ô.>Ñ>ÝÐBÐBÐBÐBÐBÐBµu¸Q¸q¹S±z´zÐBÑBÔBÐCñDà�ŒH�MŠM˜1˜c˜c ! U™mœmÐ,Ñ-Ô-ñ.ð 'Ð&Ð&Ð& Ð&Ñ&Ô&ð	 ˆð
 ˆs�1ˆz�qˆzˆzˆzÐr&   c                óÄ   — ddl m} | j        d         }t          | j        dd …         Ž }|                     |||z   ¦  «         ||||¦  «        z   ||||¦  «        |z  z   S )Nr   )Údifference_deltar	   )Úsympy.series.limitseqri  r-   r6   Úsubs)rK   rß   ÚstepÚddÚarg0Úrests         r'   Ú_eval_difference_deltazMul._eval_difference_deltaý  s}   € Ø@Ð@Ð@Ð@Ð@Ð@ØŒy˜Œ|ˆÝ�D”I˜a˜b˜b”MÐ"ˆØ—	’	˜!˜Q ™XÑ&Ô&¨¨¨D°!°TÑ):Ô):Ñ:¸R¸RÀÀaÈÑ=NÔ=NØñ>ñ ð 	r&   c                óü   — |                       ¦   «         \  }}t                               |¦  «        }t          |¦  «        dk    r7| j                             ||¦  «        }|d                              ||¦  «        S d S )Nr	   r   )ru   r6   rl   r£   rg  Ú_combine_inverseÚmatches)rK   r:  Ú	repl_dictr    r/  Únewexprs         r'   Ú_matches_simplezMul._matches_simple  sm   € à×(Ò(Ñ*Ô*‰ˆˆuÝ—’˜eÑ$Ô$ˆÝˆu‰:Œ:˜Š?ˆ?Ø”n×5Ò5°d¸EÑBÔBˆGØ˜”8×#Ò# G¨YÑ7Ô7Ð7Øˆr&   Nc                ó  — t          |¦  «        }| j        r|j        r|                      |||¦  «        S | j        |j        urd S |                      ¦   «         \  }}|                     ¦   «         \  }}d„ ||fD ¦   «         \  }}t	          |Ž }t	          |Ž }	|                     |	||¦  «        }|s||k    rd S t                               |¦  «        }t                               |¦  «        }t                               |||¦  «        }|pd S )Nc                ó   — g | ]}|pd g‘ŒS ©r	   r%   r–   s     r'   rj   zMul.matches.<locals>.<listcomp>  s   € Ð-Ð-Ð-˜q�!�(˜�sÐ-Ð-Ð-r&   )r
   r$   Ú_matches_commutativer2   r6   rs  Ú_matches_expand_powsÚ_matches_noncomm)
rK   r:  rt  ÚoldÚc1Únc1Úc2Únc2Úcomm_mul_selfÚcomm_mul_exprs
             r'   rs  zMul.matches  s  € Ý�t‰}Œ}ˆØÔð 	 4Ô#6ð 	Ø×,Ò,¨T°9¸cÑBÔBÐBØÔ ¨Ô(;Ð;Ð;Ø�4ð —-’-‘/”/‰ˆˆCØ—-’-‘/”/‰ˆˆCØ-Ð- R¨ HÐ-Ñ-Ô-‰ˆˆBõ ˜R˜ˆÝ˜R˜ˆà!×)Ò)¨-¸ÀCÑHÔHˆ	ð ð 	˜R 2šX˜XØ�4õ ×&Ò& sÑ+Ô+ˆÝ×&Ò& sÑ+Ô+ˆå×(Ò(¨¨c°9Ñ=Ô=ˆ	àÐ ˜DÐ r&   c                óª   — g }| D ]M}|j         r/|j        dk    r$|                     |j        g|j        z  ¦  «         Œ8|                     |¦  «         ŒN|S r]   )r¯   Úexpr3   Úbaser4   )Úarg_listÚnew_argsrP  s      r'   r{  zMul._matches_expand_pows-  sd   € àˆØð 	%ð 	%ˆCØŒzð %˜cœg¨šk˜kØ—’ ¤ 
¨S¬WÑ 4Ñ5Ô5Ð5Ð5à—’ Ñ$Ô$Ð$Ð$Øˆr&   c                ó
  — |€i }n|                      ¦   «         }g }d}|\  }}i }|t          |¦  «        k     rË|t          | ¦  «        k     r¸| |         }|j        rt                               ||¦  «         t                               ||| |¦  «        }	|	r,|	\  }
}|                     |
¦  «         |r|D ]}||         ||<   Œ|sdS |                     ¦   «         }|\  }}|t          |¦  «        k     r|t          | ¦  «        k     °¸|S )zóNon-commutative multiplication matcher.

        `nodes` is a list of symbols within the matcher multiplication
        expression, while `targets` is a list of arguments in the
        multiplication expression being matched against.
        N)r   r   )Úcopyr£   Úis_Wildr6   Ú_matches_add_wildcardÚ_matches_new_statesr3   r´   )ÚnodesÚtargetsrt  ÚagendaÚstateÚnode_indÚ
target_indÚwildcard_dictÚnodeÚstates_matchesÚ
new_statesÚnew_matchesÚmatchs                r'   r|  zMul._matches_noncomm7  sB  € ð ÐØˆIˆIà!ŸšÑ(Ô(ˆIð ˆàˆØ$Ñˆ�*àˆà�3˜w™<œ<Ò'Ð'¨Hµs¸5±z´zÒ,AÐ,AØ˜”?ˆDàŒ|ð @Ý×)Ò)¨-¸Ñ?Ô?Ð?å ×4Ò4°]ÀEØ5:¸GñEô EˆNàð >Ø*8Ñ'�
˜KØ—’˜jÑ)Ô)Ð)Øð >Ø!,ð >ð >˜Ø+6°uÔ+=˜	 %Ñ(Ð(Øð -Ø�tàŸ
š
™œ�Ø',Ñ$�˜*ð% �3˜w™<œ<Ò'Ð'¨Hµs¸5±z´zÒ,AÐ,Að( Ðr&   c                óN   — |\  }}|| v r| |         \  }}||f| |<   d S ||f| |<   d S rE   r%   )Ú
dictionaryr‘  r’  r“  ÚbeginÚends         r'   rŒ  zMul._matches_add_wildcardb  sO   € à$Ñˆ�*Ø�zÐ!Ð!Ø# HÔ-‰JˆE�3Ø$)¨:Ð#6ˆJ�xÑ Ð Ð à$.°
Ð#;ˆJ�xÑ Ð Ð r&   c                ó  — |\  }}||         }||         }|t          |¦  «        dz
  k    r|t          |¦  «        dz
  k     rd S |j        rÑt                               | |||¦  «        }|r°t                               | ||¦  «        }	|	D ]R}
| |
         \  }}| |         \  }}|||dz   …         }|||dz   …         }t          ||¦  «        D ]\  }}||k    r  d S ŒŒS||dz   fg}|t          |¦  «        dz
  k     r|                     |dz   |dz   f¦  «         ||fS d S |t          |¦  «        dz
  k    r|t          |¦  «        dz
  k     rd S |                     |¦  «        }|r|dz   |dz   fg|fS ||k    r|dz   |dz   fgd fS d S )Nr	   )r£   r‹  r6   Ú_matches_match_wildsÚ_matches_get_other_nodesr]  r4   rs  )r›  r‘  rŽ  r�  r’  r“  r•  ÚtargetÚmatch_attemptÚother_node_indsÚindÚother_beginÚ	other_endÚ
curr_beginÚcurr_endÚother_targetsÚcurrent_targetsÚcurrr   Ú	new_states                       r'   r�  zMul._matches_new_statesk  s  € à$Ñˆ�*Ø�XŒˆØ˜Ô$ˆð �˜W™œ¨Ñ)Ò)Ð)¨h½¸U¹¼Àa¹Ò.GÐ.GØ�4àŒ<ð )	Ý×4Ò4°ZÀØ5:¸GñEô EˆMàð 0õ #&×">Ò">¸zØ?DÀhñ#Pô #P�à*ð 	(ð 	(�CØ-7¸¬_Ñ*�K Ø+5°hÔ+?Ñ(�J à$+¨K¸	ÀA¹Ð,EÔ$F�MØ&-¨j¸ÀA¹Ð.EÔ&F�Oå'*¨?¸MÑ'JÔ'Jð (ð (™˜˜eØ 5š=˜=Ø#' 4 4 4ð )ð(ð '¨
°Q©Ð7Ð8�	à�c %™jœj¨1™nÒ,Ð,Ø×$Ò$ h°¡l°JÀ±NÐ%CÑDÔDÐDØ  -Ð/Ð/ð/0ð 0ð8 �3˜u™:œ:¨™>Ò)Ð)¨j½3¸w¹<¼<È!Ñ;KÒ.KÐ.KØ�tà ŸLšL¨Ñ0Ô0ˆMàð Ø! A™ z°A¡~Ð6Ð7¸ÐFÐFØ˜’�Ø! A™ z°A¡~Ð6Ð7¸Ð=Ð=à�tr&   c                ó´   — ||         }| |         \  }}|||dz   …         }t          |¦  «        dk    r	t          |Ž n|d         }|                     |¦  «        S )z@Determine matches of a wildcard with sub-expression in `target`.r	   r   )r£   r6   rs  )	r›  Úwildcard_indrŽ  r�  Úwildcardrœ  r�  r/  Úmults	            r'   rŸ  zMul._matches_match_wilds   sa   € ð ˜Ô&ˆØ Ô-‰
ˆˆsØ˜˜c A™g˜Ô&ˆå! %™jœj¨1šn˜n�s�Eˆ{ˆ{°%¸´(ˆØ×Ò Ñ%Ô%Ð%r&   c                ó4   ‡‡— ‰|         Šˆˆfd„| D ¦   «         S )z8Find other wildcards that may have already been matched.c                ó,   •— g | ]}‰|         ‰k    ¯|‘ŒS r%   r%   )rH   r¤  Úind_noderŽ  s     €€r'   rj   z0Mul._matches_get_other_nodes.<locals>.<listcomp>®  s'   ø€ ÐDÐDÐD˜¨U°3¬Z¸8Ò-CÐ-C�Ð-CÐ-CÐ-Cr&   r%   )r›  rŽ  r’  r³  s    ` @r'   r   zMul._matches_get_other_nodesª  s,   øø€ ð ˜”?ˆØDÐDÐDÐDÐD˜zÐDÑDÔDÐDr&   c                óØ  — ddl m} ddlm} | |k    rt          j        S d„ } || |¦  «        s ||| ¦  «        rt          j        S t          d„ | |fD ¦   «         ¦  «        �ro |d¦  «        }t          j        |i}|t          j        i}|                      |¦  «         	                    ¦   «         }|                     |¦  «         	                    ¦   «         }	t          |	¦  «        }
t          |	                     ¦   «         ¦  «        D ]F}||v r@||xx         |	                     |¦  «        z  cc<   ||         s|                     |¦  «         ŒGt          |	¦  «        |
k    rpt          d„ |                     ¦   «         D ¦   «         Ž                      |¦  «        } t          d	„ |	                     ¦   «         D ¦   «         Ž                      |¦  «        }| |z  } ||¦  «        }|j        r|n|S )
z»
        Returns lhs/rhs, but treats arguments like symbols, so things
        like oo/oo return 1 (instead of a nan) and ``I`` behaves like
        a symbol instead of sqrt(-1).
        r   )Úsignsimpr	   )rJ  c                óž   — | j         rE|j        r>|                      d¦  «        |                     ¦   «                              d¦  «        k    S dS )Nr   F)rì   Úis_comparableÚ__add__Úevalf)rf  r¾   s     r'   Úcheckz#Mul._combine_inverse.<locals>.check¼  sG   € ØŒzð <˜aœoð <ð —y’y ‘|”| q§w¢w¡y¤y×'8Ò'8¸Ñ';Ô';Ò;Ð;Ø�5r&   c              3  ó2   K  — | ]}|j         p|j        V — Œd S rE   )r¯   r!   ©rH   rÐ   s     r'   rI   z'Mul._combine_inverse.<locals>.<genexpr>Å  s+   è è € Ð8Ð8¨ˆqŒxÐ#˜1œ8Ð8Ð8Ð8Ð8Ð8Ð8r&   ÚIc                ó   — g | ]
\  }}||z  ‘ŒS r%   r%   ©rH   rO  Úvs      r'   rj   z(Mul._combine_inverse.<locals>.<listcomp>Ô  ó    € Ð7Ð7Ð7¡T Q¨˜A˜q™DÐ7Ð7Ð7r&   c                ó   — g | ]
\  }}||z  ‘ŒS r%   r%   r¿  s      r'   rj   z(Mul._combine_inverse.<locals>.<listcomp>Õ  rÁ  r&   )Úsympy.simplify.simplifyrµ  rX  rJ  r   r1   r«   r¬   ÚxreplaceÚas_powers_dictr£   r  Úkeysr´   r6   rw   r"   )ÚlhsÚrhsrµ  rJ  rº  r|   Ú_iÚi_r;   rt   Úblenri   r½   Úsrvs                 r'   rr  zMul._combine_inverse°  sù  € ð 	5Ð4Ð4Ð4Ð4Ð4Ø!Ð!Ð!Ð!Ð!Ð!Ø�#Š:ˆ:Ý”5ˆLð	ð 	ð 	ð ˆ5��c‰?Œ?ð 	˜e˜e C¨™oœoð 	Ý”5ˆLÝÐ8Ð8¨c°3¨ZÐ8Ñ8Ô8Ñ8Ô8ñ 	Fð ��c‘
”
ˆAÝ”/ 1Ð%ˆBØ•Q”_Ð%ˆBØ—’˜RÑ Ô ×/Ò/Ñ1Ô1ˆAØ—’˜RÑ Ô ×/Ò/Ñ1Ô1ˆAÝ�q‘6”6ˆDÝ˜AŸFšF™HœH‘o”oð "ð "�Ø˜�7�7Ø�b�E�E”E˜QŸUšU 2™YœYÑ&�E�E‘EØ˜Rœ5ð "ØŸš˜b™	œ	˜	øÝ�1‰vŒv˜Š~ˆ~ÝÐ7Ð7¨Q¯WªW©Y¬YÐ7Ñ7Ô7Ð8×AÒAÀ"ÑEÔE�ÝÐ7Ð7¨Q¯WªW©Y¬YÐ7Ñ7Ô7Ð8×AÒAÀ"ÑEÔE�Ø�‰WˆØˆh�r‰lŒlˆØ”mÐ+ˆsˆs¨Ð+r&   c                óº   — t          t          ¦  «        }| j        D ]>}|                     ¦   «                              ¦   «         D ]\  }}||xx         |z  cc<   ŒŒ?|S rE   )r   r[  r-   rÅ  rw   )rK   r|   r>  rt   r{   s        r'   rÅ  zMul.as_powers_dictÚ  sl   € Ý�ÑÔˆØ”Ið 	ð 	ˆDØ×+Ò+Ñ-Ô-×3Ò3Ñ5Ô5ð ð ‘��1Ø�!��”˜‘	��‘�ðàˆr&   c                óz   — t          t          d„ | j        D ¦   «         Ž ¦  «        \  }} | j        |Ž  | j        |Ž fS )Nc                ó6   — g | ]}|                      ¦   «         ‘ŒS r%   )r»   )rH   rŸ   s     r'   rj   z&Mul.as_numer_denom.<locals>.<listcomp>å  s$   € Ð#JÐ#JÐ#J¸1 A×$4Ò$4Ñ$6Ô$6Ð#JÐ#JÐ#Jr&   )r0   r]  r-   r  )rK   ÚnumersÚdenomss      r'   r»   zMul.as_numer_denomá  sH   € õ �cÐ#JÐ#JÀÄ	Ð#JÑ#JÔ#JÐKÑLÔL‰ˆ�ØˆtŒy˜&Ð! 9 4¤9¨fÐ#5Ð5Ð5r&   c                óú   — d }g }d}| j         D ]b}|                     ¦   «         \  }}|j        s|dz  }|€|}n#||k    s|dk    s|j        s| t          j        fc S |                     |¦  «         Œc | j        |Ž |fS )Nr   r	   )r-   r®   r$   r°   r   r1   r4   r  )rK   rË   Úbasesrî   rù   rt   r{   s          r'   r®   zMul.as_base_expè  s¡   € ØˆØˆØˆØ”ð 	ð 	ˆAØ—=’=‘?”?‰DˆAˆqØÔ#ð Ø�a‘�ØˆzØ��Ø�b’�˜B šF˜F¨!¬,˜FØ�QœU�{Ð"Ð"Ð"Ø�LŠL˜‰OŒOˆOˆOØˆtŒy˜%Ð  "Ð$Ð$r&   c                óD   ‡— t          ˆfd„| j        D ¦   «         ¦  «        S )Nc              3  óB   •K  — | ]}|                      ‰¦  «        V — Œd S rE   )Ú_eval_is_polynomial©rH   r>  Úsymss     €r'   rI   z*Mul._eval_is_polynomial.<locals>.<genexpr>ø  s1   øè è € ÐHÐH°d�4×+Ò+¨DÑ1Ô1ÐHÐHÐHÐHÐHÐHr&   ©Úallr-   ©rK   rØ  s    `r'   rÖ  zMul._eval_is_polynomial÷  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 rE   )Ú_eval_is_rational_functionr×  s     €r'   rI   z1Mul._eval_is_rational_function.<locals>.<genexpr>û  s1   øè è € ÐOÐO¸T�4×2Ò2°4Ñ8Ô8ÐOÐOÐOÐOÐOÐOr&   rÙ  rÛ  s    `r'   rÞ  zMul._eval_is_rational_functionú  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 rE   )Úis_meromorphic)rH   rP  r;   r
  s     €€r'   rI   z+Mul._eval_is_meromorphic.<locals>.<genexpr>þ  s3   øè è € ÐKÐK¸#˜S×/Ò/°°1Ñ5Ô5ÐKÐKÐKÐKÐKÐKr&   T©Ú
quick_exit©r   r-   )rK   r
  r;   s    ``r'   Ú_eval_is_meromorphiczMul._eval_is_meromorphicý  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 rE   )Ú_eval_is_algebraic_exprr×  s     €r'   rI   z.Mul._eval_is_algebraic_expr.<locals>.<genexpr>  s1   øè è € ÐLÐL¸$�4×/Ò/°Ñ5Ô5ÐLÐLÐLÐLÐLÐLr&   rÙ  rÛ  s    `r'   rè  zMul._eval_is_algebraic_expr  s(   ø€ ÝÐLÐLÐLÐLÀ$Ä)ÐLÑLÔLÑLÔLÐLr&   c                ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3  ó$   K  — | ]}|j         V — Œd S rE   )r$   rG   s     r'   rI   zMul.<lambda>.<locals>.<genexpr>  s6   è è € ð 5-ð 5-ØˆÔð5-ð 5-ð 5-ð 5-ð 5-ð 5-r&   rä  rW   s    r'   r  zMul.<lambda>  s.   € ­ð 5-ð 5-Ø"&¤)ð5-ñ 5-ô 5-ñ )-ô )-€ r&   c                óÊ   — t          d„ | j        D ¦   «         ¦  «        }|du r@t          d„ | j        D ¦   «         ¦  «        r"t          d„ | j        D ¦   «         ¦  «        rd S dS |S )Nc              3  ó$   K  — | ]}|j         V — Œd S rE   )Ú
is_complexrG   s     r'   rI   z'Mul._eval_is_complex.<locals>.<genexpr>  s$   è è € Ð<Ð<¨Q˜AœLÐ<Ð<Ð<Ð<Ð<Ð<r&   Fc              3  ó$   K  — | ]}|j         V — Œd S rE   )Úis_infiniterG   s     r'   rI   z'Mul._eval_is_complex.<locals>.<genexpr>
  s$   è è € Ð4Ð4 Q�1”=Ð4Ð4Ð4Ð4Ð4Ð4r&   c              3  ó(   K  — | ]}|j         d uV — ŒdS r›   ©r”   rG   s     r'   rI   z'Mul._eval_is_complex.<locals>.<genexpr>  s)   è è € ÐAÐA°!�q”y¨Ð-ÐAÐAÐAÐAÐAÐAr&   )r   r-   r«   )rK   Úcomps     r'   Ú_eval_is_complexzMul._eval_is_complex  sz   € ÝÐ<Ð<°$´)Ð<Ñ<Ô<Ñ<Ô<ˆØ�5ˆ=ˆ=ÝÐ4Ð4¨$¬)Ð4Ñ4Ô4Ñ4Ô4ð ÝÐAÐA°t´yÐAÑAÔAÑAÔAð  Ø˜4Ø�uØˆr&   c                óº   — dx}}| j         D ]L}|j        r
|dur dS d}Œ|j        r
|dur dS d}Œ$|du r|j        €	|dur dS d }|du r|j        €	|dur dS d }ŒM||fS )NF)NNT)r-   r”   rï  )rK   Ú	seen_zeroÚseen_infiniter;   s       r'   Ú_eval_is_zero_infinite_helperz!Mul._eval_is_zero_infinite_helper  sÄ   € ðX %*Ð)ˆ	�Mà”ð 	)ð 	)ˆAØŒyð )Ø ¨Ð-Ð-Ø%˜:˜:Ø �	�	Ø”ð )Ø EÐ)Ð)Ø%˜:˜:Ø $��à Ð%Ð%¨!¬)Ð*;Ø$¨EÐ1Ð1Ø)˜z˜zØ $�IØ  EÐ)Ð)¨a¬mÐ.CØ ¨Ð-Ð-Ø)˜z˜zØ$(�Møà˜-Ð'Ð'r&   c                óT   — |                       ¦   «         \  }}|du rdS |du r|du rdS d S ©NFT©r÷  ©rK   rõ  rö  s      r'   Ú_eval_is_zerozMul._eval_is_zeroS  sI   € ð $(×#EÒ#EÑ#GÔ#GÑ ˆ	�=à˜ÐÐØ�5Ø˜$ÐÐ =°EÐ#9Ð#9Ø�4à�4r&   c                óT   — |                       ¦   «         \  }}|du r|du rdS |du rdS d S )NTFrú  rû  s      r'   Ú_eval_is_infinitezMul._eval_is_infinite_  sI   € ð $(×#EÒ#EÑ#GÔ#GÑ ˆ	�=à˜DÐ Ð  Y°%Ð%7Ð%7Ø�4Ø˜eÐ#Ð#Ø�5à�4r&   c                óš   — t          d„ | j        D ¦   «         d¬¦  «        }|r|S |du r t          d„ | j        D ¦   «         ¦  «        rdS d S d S )Nc              3  ó$   K  — | ]}|j         V — Œd S rE   )Úis_rationalrG   s     r'   rI   z(Mul._eval_is_rational.<locals>.<genexpr>o  s$   è è € Ð;Ð;¨A˜!œ-Ð;Ð;Ð;Ð;Ð;Ð;r&   Trâ  Fc              3  ó(   K  — | ]}|j         d u V — ŒdS r›   rñ  rG   s     r'   rI   z(Mul._eval_is_rational.<locals>.<genexpr>t  ó)   è è € Ð9Ð9¨!�1”9 Ð%Ð9Ð9Ð9Ð9Ð9Ð9r&   ©r   r-   rÚ  ©rK   r¾   s     r'   Ú_eval_is_rationalzMul._eval_is_rationaln  sr   € ÝÐ;Ð;°´Ð;Ñ;Ô;ÈÐMÑMÔMˆØð 	ØˆHØ�%ˆZˆZåÐ9Ð9¨t¬yÐ9Ñ9Ô9Ñ9Ô9ð Ø�uð ˆZðð r&   c                óš   — t          d„ | j        D ¦   «         d¬¦  «        }|r|S |du r t          d„ | j        D ¦   «         ¦  «        rdS d S d S )Nc              3  ó$   K  — | ]}|j         V — Œd S rE   )Úis_algebraicrG   s     r'   rI   z)Mul._eval_is_algebraic.<locals>.<genexpr>x  s$   è è € Ð<Ð<¨Q˜!œ.Ð<Ð<Ð<Ð<Ð<Ð<r&   Trâ  Fc              3  ó(   K  — | ]}|j         d u V — ŒdS r›   rñ  rG   s     r'   rI   z)Mul._eval_is_algebraic.<locals>.<genexpr>}  r  r&   r  r  s     r'   Ú_eval_is_algebraiczMul._eval_is_algebraicw  sr   € ÝÐ<Ð<°$´)Ð<Ñ<Ô<ÈÐNÑNÔNˆØð 	ØˆHØ�%ˆZˆZåÐ9Ð9¨t¬yÐ9Ñ9Ô9Ñ9Ô9ð Ø�uð ˆZðð r&   c                ój  ‡— |                       ¦   «         }|du rdS g }g }d}| j        D �]@}d}|j        r1t          |¦  «        t          j        ur|                     |¦  «         Œ=|j        rk|                     ¦   «         \  }}t          |¦  «        t          j        ur|                     |¦  «         |t          j        ur|                     |¦  «         Œ¯|j	        r‰| 
                    ¦   «         \  }	}
|	j        r|
j        sdx}}|
j        r?|                     |t          j        u rdnt          |t          j        ¦  «        ¦  «         �Œ%|s|
j        rJ ‚|
j        rJ ‚ d S  d S  d S |s|sdS d„ }d„ }d„ }ddlmŠ |s|rt'          ˆfd	„|D ¦   «         ¦  «        rdS |rd S  ||¦  «        r ||¦  «        rdS  ||¦  «        r	|dgk    rdS  ||¦  «        r! ||¦  «        rt)          |d
diŽdz
  j        rdS t+          |¦  «        dk    rE|d         }|j        r6|j        r/t1          d„ |D ¦   «         Ž t3          |j        ¦  «        z
  j        rdS t+          |¦  «        dk    rE|d         }|j        r8|j        r3t1          d„ |D ¦   «         Ž t3          |j        ¦  «        z
  j        rdS d S d S d S d S )NFTre   c                ó4   — t          d„ | D ¦   «         ¦  «        S )Nc              3  ó$   K  — | ]}|j         V — Œd S rE   )Úis_oddr¼  s     r'   rI   z9Mul._eval_is_integer.<locals>.<lambda>.<locals>.<genexpr>¬  s$   è è € Ð3Ð3¨A˜qœxÐ3Ð3Ð3Ð3Ð3Ð3r&   ©rÚ  ©r
  s    r'   r  z&Mul._eval_is_integer.<locals>.<lambda>¬  s   € �3Ð3Ð3°Ð3Ñ3Ô3Ñ3Ô3€ r&   c                ó4   — t          d„ | D ¦   «         ¦  «        S )Nc              3  ó$   K  — | ]}|j         V — Œd S rE   ©Úis_evenr¼  s     r'   rI   z9Mul._eval_is_integer.<locals>.<lambda>.<locals>.<genexpr>­  ó$   è è € Ð5Ð5¨a ¤	Ð5Ð5Ð5Ð5Ð5Ð5r&   r  r  s    r'   r  z&Mul._eval_is_integer.<locals>.<lambda>­  ó   € �CÐ5Ð5°1Ð5Ñ5Ô5Ñ5Ô5€ r&   c                ó4   — t          d„ | D ¦   «         ¦  «        S )Nc              3  ó$   K  — | ]}|j         V — Œd S rE   r  r¼  s     r'   rI   z9Mul._eval_is_integer.<locals>.<lambda>.<locals>.<genexpr>®  r  r&   )r«   r  s    r'   r  z&Mul._eval_is_integer.<locals>.<lambda>®  r  r&   r	   )Úis_gtc              3  óD   •K  — | ]} ‰|t           j        ¦  «        V — Œd S rE   )r   r1   )rH   rp   r  s     €r'   rI   z'Mul._eval_is_integer.<locals>.<genexpr>±  s@   øè è € ð 37ð 37Ø$%���a�œ‘”ð37ð 37ð 37ð 37ð 37ð 37r&   rN   r   c                óP   — g | ]#}|j         ¯	|                     ¦   «         d          ‘Œ$S ry  ©r  r®   r¼  s     r'   rj   z(Mul._eval_is_integer.<locals>.<listcomp>Ã  s;   € ð 1ð 1ð 1°Ø&'¤ið1˜!Ÿ-š-™/œ/¨!Ô,ð 1ð 1ð 1r&   c                óP   — g | ]#}|j         ¯	|                     ¦   «         d          ‘Œ$S ry  r  r¼  s     r'   rj   z(Mul._eval_is_integer.<locals>.<listcomp>Ì  s;   € ð 3ð 3ð 3°Ø()¬	ð3˜!Ÿ-š-™/œ/¨!Ô,ð 3ð 3ð 3r&   )r  r-   r³   rê   r   r1   r4   r¤   r»   r¯   r®   r±   r­   r‡   r`   r²   r”   Ú
relationalr  rÚ  r6   r£   r°   r  rx   r   r·   Úis_nonnegative)rK   r  Ú
numeratorsÚdenominatorsÚunknownr;   Úhitrß   r|   rt   r{   ÚalloddÚallevenÚanyevenr  s                 @r'   Ú_eval_is_integerzMul._eval_is_integerƒ  sÑ  ø€ Ø×,Ò,Ñ.Ô.ˆØ˜%ÐÐØ�5àˆ
ØˆØˆØ”ð 	ñ 	ˆAØˆCØŒ|ð Ý�q‘6”6¥¤Ð&Ð&Ø×%Ò% aÑ(Ô(Ð(øØ”ð Ø×'Ò'Ñ)Ô)‘��1Ý�q‘6”6¥¤Ð&Ð&Ø×%Ò% aÑ(Ô(Ð(Ø�AœE�>�>Ø ×'Ò'¨Ñ*Ô*Ð*øØ”ð Ø—}’}‘”‘��1Ø”|ð )¨1¬<ð )Ø$(Ð(�C˜'Ø”=ð Ø ×'Ò'¨Qµ!´&¨[¨[¨¨Ý˜A�qœ}Ñ-Ô-ñ/ô /ð /ñ /àð à œ}Ð,Ð,Ð,à œyÐ(Ð(˜=Ø�F�Fð �F�Fà��àð 	 Gð 	Ø�4à3Ð3ˆØ5Ð5ˆØ5Ð5ˆà%Ð%Ð%Ð%Ð%Ð%Øð 	˜lð 	­sð 37ð 37ð 37ð 37Ø)5ð37ñ 37ô 37ñ 07ô 07ð 	à�5Øð 		ØˆFØˆV�JÑÔð 	 G G¨LÑ$9Ô$9ð 	Ø�5ØˆW�ZÑ Ô ð 	 \°a°SÒ%8Ð%8Ø�4ØˆW�ZÑ Ô ð 	 V V¨Lñ &ô &ð 	Ý˜LÐ9°5Ð9Ð9¸AÑ=Üð	ð �5Ýˆ|ÑÔ Ò!Ð!Ø˜Q”ˆAØŒ|ð   ¤	ð  õ ð 1ð 1Ø"ð1ñ 1ô 1ð 2Ý4<¸Q¼S±M´MñBä(ð ð  ˜4Ýˆz‰?Œ?˜aÒÐØ˜1”ˆAØŒ|ð ! ¤	ð !õ ð 3ð 3Ø$ð3ñ 3ô 3ð 4Ý6>¸q¼s±m´mñDä%ð!ð !˜5ð  Ðð!ð !ð !ð !ð!ð !r&   c                ó~   — t          d„ | j        D ¦   «         ¦  «        }|ot          d„ | j        D ¦   «         ¦  «        S )Nc              3  ó$   K  — | ]}|j         V — Œd S rE   )Úis_polar©rH   rP  s     r'   rI   z%Mul._eval_is_polar.<locals>.<genexpr>Ò  s$   è è € Ð:Ð:¨˜œÐ:Ð:Ð:Ð:Ð:Ð:r&   c              3  ó2   K  — | ]}|j         p|j        V — Œd S rE   )r+  r²   r,  s     r'   rI   z%Mul._eval_is_polar.<locals>.<genexpr>Ô  s+   è è € ÐEÐE°C�”Ð/ ¤ÐEÐEÐEÐEÐEÐEr&   )r«   r-   rÚ  )rK   Ú	has_polars     r'   Ú_eval_is_polarzMul._eval_is_polarÑ  sK   € ÝÐ:Ð:°´	Ð:Ñ:Ô:Ñ:Ô:ˆ	Øð FÝÐEÐE¸4¼9ÐEÑEÔEÑEÔEð	Fr&   c                ó,   — |                       d¦  «        S ©NT)Ú_eval_real_imagrW   s    r'   Ú_eval_is_extended_realzMul._eval_is_extended_realÖ  s   € Ø×#Ò# DÑ)Ô)Ð)r&   c                óŒ  — d}d }| j         D ]�}|j        p|j        du r|j        du r dS |j        r| }Œ)|j        r9|s6|j        }|s|du r|}ŒB|r$t          d„ | j         D ¦   «         ¦  «        r dS  d S Œi|j        du r|r d S |}Œz|j        du r|r d S |}Œ‹ d S |r|j        du r|r|S |j        du r|s|S d S d S |du r|S |r|S d S )NFc              3  ó$   K  — | ]}|j         V — Œd S rE   rœ   rG   s     r'   rI   z&Mul._eval_real_imag.<locals>.<genexpr>è  s$   è è € Ð>Ð>¨q˜qœ{Ð>Ð>Ð>Ð>Ð>Ð>r&   T)r-   rí  rï  r•   rè   r”   rÚ  )rK   ÚrealÚzeroÚt_not_re_imrs   Úzs         r'   r2  zMul._eval_real_imagÙ  s…  € ØˆØˆà”ð 	ð 	ˆAØ”Ð- ¤°%Ð7Ð7¸AÔ<NÐRWÐ<WÐ<WØ�u�uØ”ð Ø�x��ØÔ#ð Øð Øœ	�AØð  ¨  Ø ˜˜Øð ÝÐ>Ð>°D´IÐ>Ñ>Ô>Ñ>Ô>ð (Ø#' 4 4Ø˜˜øØÔ# uÐ,Ð,àð Ø�F�FØ��Ø” 5Ð(Ð(Øð Ø�F�FØ��à��àð 
	ØÔ+¨uÐ4Ð4Øð  Ø�KØÔ'¨5Ð0Ð0Øð  Ø�Kð 1Ð0ð ð  à�Uˆ]ˆ]ØˆKØð 	ØˆKð	ð 	r&   c                ól   — t          d„ | j        D ¦   «         ¦  «        r|                      d¦  «        S d S )Nc              3  ó6   K  — | ]}|j         d u o|j        V — ŒdS r›   )r”   r�   rG   s     r'   rI   z)Mul._eval_is_imaginary.<locals>.<genexpr>  s0   è è € ÐEÐE°aˆqŒy˜EÐ!Ð1 a¤kÐEÐEÐEÐEÐEÐEr&   F)rÚ  r-   r2  rW   s    r'   Ú_eval_is_imaginaryzMul._eval_is_imaginary  sA   € ÝÐEÐE¸4¼9ÐEÑEÔEÑEÔEð 	/Ø×'Ò'¨Ñ.Ô.Ð.ð	/ð 	/r&   c                ó,   — |                       d¦  «        S r1  ©Ú_eval_herm_antihermrW   s    r'   Ú_eval_is_hermitianzMul._eval_is_hermitian  s   € Ø×'Ò'¨Ñ-Ô-Ð-r&   c                ó,   — |                       d¦  «        S ©NFr>  rW   s    r'   Ú_eval_is_antihermitianzMul._eval_is_antihermitian
  s   € Ø×'Ò'¨Ñ.Ô.Ð.r&   c                ó®   — | j         D ](}|j        �|j        € d S |j        rŒ|j        r| }Œ& d S |dur|S |                      ¦   «         }|rdS |du r|S d S rù  )r-   Úis_hermitianÚis_antihermitianrü  )rK   Úhermrs   r”   s       r'   r?  zMul._eval_herm_antiherm  s˜   € Ø”ð 	ð 	ˆAØŒ~Ð%¨Ô);Ð)CØ��ØŒ~ð ØØÔ#ð Ø�x��à��à�uÐÐØˆKà×$Ò$Ñ&Ô&ˆØð 	Ø�4Ø˜ÐÐØˆKð Ðr&   c                ó  — | j         D ]X}|j        }|rHt          | j         ¦  «        }|                     |¦  «         t	          d„ |D ¦   «         ¦  «        r dS  d S |€ d S ŒYt	          d„ | j         D ¦   «         ¦  «        rdS d S )Nc              3  óP   K  — | ]!}|j         ot          |j        ¦  «        d u V — Œ"dS )TN)r  r   r”   ©rH   r
  s     r'   rI   z*Mul._eval_is_irrational.<locals>.<genexpr>'  s8   è è € ÐXÐXÈA˜œÐ>­)°A´IÑ*>Ô*>À4ÐGÐXÐXÐXÐXÐXÐXr&   Tc              3  ó$   K  — | ]}|j         V — Œd S rE   )Úis_realrJ  s     r'   rI   z*Mul._eval_is_irrational.<locals>.<genexpr>,  s$   è è € Ð,Ð,˜QˆqŒyÐ,Ð,Ð,Ð,Ð,Ð,r&   F)r-   Úis_irrationalr0   ÚremoverÚ  )rK   rs   r;   Úotherss       r'   Ú_eval_is_irrationalzMul._eval_is_irrational!  s°   € Ø”ð 		ð 		ˆAØ”ˆAØð Ý˜dœi™œ�Ø—’˜aÑ Ô Ð ÝÐXÐXÐQWÐXÑXÔXÑXÔXð  Ø˜4˜4Ø��ØˆyØ��ð åÐ,Ð, $¤)Ð,Ñ,Ô,Ñ,Ô,ð 	Ø�5ð	ð 	r&   c                ó,   — |                       d¦  «        S )a‹  Return True if self is positive, False if not, and None if it
        cannot be determined.

        Explanation
        ===========

        This algorithm is non-recursive and works by keeping track of the
        sign which changes when a negative or nonpositive is encountered.
        Whether a nonpositive or nonnegative is seen is also tracked since
        the presence of these makes it impossible to return True, but
        possible to return False if the end result is nonpositive. e.g.

            pos * neg * nonpositive -> pos or zero -> None is returned
            pos * neg * nonnegative -> neg or zero -> False is returned
        r	   ©Ú_eval_pos_negrW   s    r'   Ú_eval_is_extended_positivezMul._eval_is_extended_positive/  s   € ð  ×!Ò! !Ñ$Ô$Ð$r&   c                óJ  — dx}}| j         D ]~}|j        rŒ
|j        r| }Œ|j        r$t	          d„ | j         D ¦   «         ¦  «        r dS  d S |j        r| }d}ŒM|j        rd}ŒW|j        du r| }|r d S d}Œk|j        du r|r d S d}Œ| d S |dk    r
|du r|du rdS |dk     rdS d S )NFc              3  ó$   K  — | ]}|j         V — Œd S rE   rœ   rG   s     r'   rI   z$Mul._eval_pos_neg.<locals>.<genexpr>I  s$   è è € Ð6Ð6 q�q”{Ð6Ð6Ð6Ð6Ð6Ð6r&   Tr	   r   )	r-   r�   rY   r”   rÚ  Úis_extended_nonpositiveÚis_extended_nonnegativer²   r±   )rK   rç   Úsaw_NONÚsaw_NOTrs   s        r'   rS  zMul._eval_pos_negA  s0  € Ø!Ð!ˆ�'Ø”ð 	ð 	ˆAØÔ%ð ØØÔ'ð Ø�u��Ø”ð ÝÐ6Ð6¨D¬IÐ6Ñ6Ô6Ñ6Ô6ð !Ø ˜5˜5Ø��ØÔ*ð Ø�u�Ø��ØÔ*ð Ø��ð ” %Ð'Ð'Ø�u�Øð Ø�F�FØ��Ø” %Ð'Ð'Øð Ø�F�FØ��à��Ø�1Š9ˆ9˜ EÐ)Ð)¨g¸Ð.>Ð.>Ø�4Ø�!Š8ˆ8Ø�5ð ˆ8r&   c                ó,   — |                       d¦  «        S r‹   rR  rW   s    r'   Ú_eval_is_extended_negativezMul._eval_is_extended_negatived  s   € Ø×!Ò! "Ñ%Ô%Ð%r&   c                óÀ  — |                       ¦   «         }|dur|S ddlm}  || ¦  «        \  }}|j        rP|j        rIt          d„ t                               |¦  «        D ¦   «         Ž t          |j	        ¦  «        z
  j
        rdS d S d\  }}| j        D ]K}t          |¦  «        t          j        u rŒ|j        r dS |du rn|dk    r||z   j        rd}n	|j        €d }|}ŒL|S )NTr   r3  c                óP   — g | ]#}|j         ¯	|                     ¦   «         d          ‘Œ$S ry  r  r¼  s     r'   rj   z$Mul._eval_is_odd.<locals>.<listcomp>q  ó;   € ð 3ð 3ð 3¨QØ()¬	ð3�a—m’m‘o”o aÔ(ð 3ð 3ð 3r&   F)Tr	   r	   )r(  r9  r4  r°   r  rx   r6   rl   r   r·   r²   r-   rê   r   r1   r  )rK   r³   r4  rß   r|   r¾   Úaccrs   s           r'   Ú_eval_is_oddzMul._eval_is_oddg  s0  € Ø×*Ò*Ñ,Ô,ˆ
Ø˜TÐ!Ð!ØÐà3Ð3Ð3Ð3Ð3Ð3Øˆx˜‰~Œ~‰ˆˆ1ØŒ<ð 	˜AœIð 	õ ð 3ð 3Ý—M’M !Ñ$Ô$ð3ñ 3ô 3ð 4Ý6>¸q¼s±m´mñDä!ðð �uØˆFØ‰ˆˆ3Ø”ð 	ð 	ˆAÝ�1‰vŒv�œˆˆØØŒyð Ø�u�uØ�EˆzˆzØØ˜’�˜s Q™wÔ.�Ø��Ø”Ð"Ø�ØˆCˆCØˆr&   c                óà   — ddl m}  || ¦  «        \  }}|j        rN|j        rIt	          d„ t
                               |¦  «        D ¦   «         Ž t          |j        ¦  «        z
  j	        rdS d S d S d S )Nr   r3  c                óP   — g | ]#}|j         ¯	|                     ¦   «         d          ‘Œ$S ry  r  r¼  s     r'   rj   z%Mul._eval_is_even.<locals>.<listcomp>Œ  r_  r&   F)
r9  r4  r°   r  rx   r6   rl   r   r·   r   )rK   r4  rß   r|   s       r'   Ú_eval_is_evenzMul._eval_is_even…  s¨   € Ø3Ð3Ð3Ð3Ð3Ð3Øˆx˜‰~Œ~‰ˆˆ1ØŒ<ð 	˜AœIð 	õ ð 3ð 3Ý—M’M !Ñ$Ô$ð3ñ 3ô 3ð 4Ý6>¸q¼s±m´mñDä$ðð �uð	ð 	ð 	ð 	ðð r&   c                ón   — d}| j         D ]"}|j        r|j        s dS |dz
  j        r|dz  }Œ#|dk    rdS dS )zì
        Here we count the number of arguments that have a minimum value
        greater than two.
        If there are more than one of such a symbol then the result is composite.
        Else, the result cannot be determined.
        r   Nr	   T)r-   r³   r²   )rK   Únumber_of_argsrP  s      r'   Ú_eval_is_compositezMul._eval_is_composite‘  sf   € ð ˆØ”9ð 	$ð 	$ˆCØ”Nð  s¤ð Ø�t�tØ�A‘Ô"ð $Ø !Ñ#�øà˜AÒÐØ�4ð Ðr&   c           	     ó@  ‡(‡)‡*‡+‡,— ddl mŠ, ddlm} ddlmŠ+ ddlm} |j        sd S |j	        d         j
        rN|j	        d         dk     r=| j	        d         j
        r+| j	        d         dk     r|                      | | ¦  «        S d S d„ Š(ˆ(ˆ+fd„}ˆ(fd„}d	„ }d } || ¦  «        \  }	}
| }|
t          j        urR|	                     ||¦  «        |
                     ||¦  «        z  }|j        s|                     ||¦  «        S || k    r|}|j	        d         }|j	        d         }d }|j        r#|j        r||k    r|                     |¦  «        }n	|j        r|S  ||¦  «        \  Š)} ||¦  «        \  Š*}|rx|j        rqt!          |¦  «        d
k    r^t           |t!          |¦  «        |¦  «        ¦  «        }‰)                     |¦  «         |‰)v r‰)|xx         |z  cc<   n|‰)|<   |||z  z  }nd
}d}t%          |¦  «        t%          |¦  «        k    rd}n t%          ‰*¦  «        t%          ‰)¦  «        k    rd}n}d„ |D ¦   «                              d„ |D ¦   «         ¦  «        rd}nQt)          ‰*¦  «                             t)          ‰)¦  «        ¦  «        rd}nt+          ˆ)ˆ*ˆ,fd„‰*D ¦   «         ¦  «        rd}|s|S ‰*sd }n^g }‰*                     ¦   «         D ]8\  }}‰)|         }|                      |||¦  «        ¦  «         |d         s|c S Œ9t1          |¦  «        }|s1d }t3          t%          |¦  «        ¦  «        D ]} |||         Ž ||<   Œ�nd}t%          |¦  «        }|pt          j        }g }d}|�r�||z   t%          |¦  «        k    �rvd}g }t3          |¦  «        D ]é}|||z            d         ||         d         k    r �n|dk    r;|                      ||||z            d
         ||         d
         ¦  «        ¦  «         n}||d
z
  k    r;|                      ||||z            d
         ||         d
         ¦  «        ¦  «         n9|||z            d
         ||         d
         k    r �n_|                     d
¦  «         |d
z  }Œêt1          |¦  «        } | �r2|d
k    r]|rt1          || ¦  «        } t7          || ¦  «         |||         d         ||         d
         | |d         d
         z  z
  ¦  «        z  ||<   nÃd
}  |||         d         ||         d
         | |d         d
         z  z
  ¦  «        }!|}"||z   d
z
  }#||#         d         ||#         d
         | |d         d
         z  z
  f}$|$d
         r=||z   t%          |¦  «        k     r|!|"z  |$g||||z   …<   n% ||$Ž }$|!|"z  |$z  g||||z   …<   n|!|"z  g||||z   …<   || z  }|| z  }d}|s|                     |¦  «         |d
z  }|r||z   t%          |¦  «        k    �°v|s|S |                     t3          |t%          |¦  «        ¦  «        ¦  «         |D ]$} |||         Ž                      ||¦  «        ||<   Œ%|€|}%n|€|}%nt1          ||¦  «        }%g }&‰)D ]s}|‰*v r4‰)|         ‰*|         |%z  z
  }'|&                      |||'¦  «        ¦  «         Œ:|&                      ||                     ||¦  «        ‰)|         ¦  «        ¦  «         Œt|r|st7          ||¦  «        g|&z   }&| |j        |&Ž z   |j        |Ž z  S )Nr   ræ   )Úmultiplicity)Ú	powdenestr3  c                ó€   — ddl m} | j        st          | |¦  «        r|                      ¦   «         S | t
          j        fS )Nr   )r…  )Ú&sympy.functions.elementary.exponentialr…  r¯   r™   r®   r   r1   )r;   r…  s     r'   Úbase_expz Mul._eval_subs.<locals>.base_exp²  sK   € ð CÐBÐBÐBÐBÐBØŒxð '�: a¨Ñ-Ô-ð 'Ø—}’}‘”Ð&Ø•a”e�8ˆOr&   c                óv  •— t          t          ¦  «        g }}t                               | ¦  «        D ]„} ‰	|¦  «        } ‰|¦  «        \  }}|t          j        ur,|                     ¦   «         \  }}t          |||z  ¦  «        }|}|j        r||xx         |z  cc<   Œm| 	                    ||g¦  «         Œ…||fS )zýbreak up powers of eq when treated as a Mul:
                   b**(Rational*e) -> b**e, Rational
                commutatives come back as a dictionary {b**e: Rational}
                noncommutatives come back as a list [(b**e, Rational)]
            )
r   r[  r6   rl   r   r1   r^   r‡   r$   r4   )
ÚeqrZ   rî   r;   rt   r{   r:   rp   rm  rj  s
           €€r'   ÚbreakupzMul._eval_subs.<locals>.breakup»  sÇ   ø€ õ #¥3Ñ'Ô'¨�ˆQÝ—]’] 2Ñ&Ô&ð 
&ð 
&�Ø�I˜a‘L”L�Ø!˜ !™œ‘��AØ�AœE�>�>ØŸnšnÑ.Ô.‘G�R˜Ý˜A˜q ™t™œ�AØ�AØÔ#ð &Ø�a�D�D”D˜A‘I�D�D‘D�Dà—I’I˜q !˜fÑ%Ô%Ð%Ð%Ø�r�7ˆNr&   c                óF   •—  ‰| ¦  «        \  } }t          | ||z  ¦  «        S )zº
            Put rational back with exponent; in general this is not ok, but
            since we took it from the exponent for analysis, it's ok to put
            it back.
            r†   )rt   r:   r{   rm  s      €r'   ÚrejoinzMul._eval_subs.<locals>.rejoinÐ  s(   ø€ ð �X˜a‘[”[‰FˆQ�Ý�q˜!˜B™$‘<”<Ðr&   c                óf   — |j         | j         z  r| j         |j         z  st          | |z  ¦  «        S dS )zÒif b divides a in an extractive way (like 1/4 divides 1/2
            but not vice versa, and 2/5 does not divide 1/3) then return
            the integer number of times it divides, else return 0.
            r   )r¶   r[  )r;   rt   s     r'   ÚndivzMul._eval_subs.<locals>.ndivÚ  s7   € ð
 ”3˜œ‘9ð   A¤C¨!¬#¡Ið  Ý˜1˜Q™3‘x”x�Ø�1r&   r	   TFc                ó   — h | ]
}|d          ’ŒS rW  r%   r¼  s     r'   r„   z!Mul._eval_subs.<locals>.<setcomp>  s   € Ð#Ð#Ð#�qˆa�ŒdÐ#Ð#Ð#r&   c                ó   — h | ]
}|d          ’ŒS rW  r%   r¼  s     r'   r„   z!Mul._eval_subs.<locals>.<setcomp>  s   € Ð/AÐ/AÐ/A¸°°!´Ð/AÐ/AÐ/Ar&   c              3  ó`   •K  — | ](} ‰‰|         ¦  «         ‰‰|         ¦  «        k    V — Œ)d S rE   r%   )rH   rt   rZ   Úold_crç   s     €€€r'   rI   z!Mul._eval_subs.<locals>.<genexpr>$  s@   øè è € Ð=Ð=°!���a˜”d‘”˜t˜t E¨!¤H™~œ~Ò-Ð=Ð=Ð=Ð=Ð=Ð=r&   rŒ   )rë   rç   Úsympy.ntheory.factor_ri  Úsympy.simplify.powsimprj  r9  r4  r!   r-   r"   Ú_subsr   r1   r¤   Úextract_multiplicativelyrê   r´   r£   Ú
differenceÚsetr«   rw   r4   Úminrµ   rn   r‡   r3   rk  r  )-rK   r}  Únewri  r4  rp  rr  rt  r½   rß   r|   Úself2Úco_selfÚco_oldÚco_xmulrî   Úold_ncr°  Úco_residualÚokÚcdidÚratrt   Úold_eÚc_eÚncdidrÐ   ÚtakeÚlimitÚfailedr$  rÚ   Úndorf  ÚmidÚirr¾   ÚdoÚmargsr{   rm  rZ   rx  rj  rç   s-                                           @@@@@r'   Ú
_eval_subszMul._eval_subs¢  sÕ  øøøøø€ Ø=Ð=Ð=Ð=Ð=Ð=Ø6Ð6Ð6Ð6Ð6Ð6Ø4Ð4Ð4Ð4Ð4Ð4Ø3Ð3Ð3Ð3Ð3Ð3àŒzð 	Ø�4ð Œ8�AŒ;Ô ð 	 S¤X¨a¤[°1¢_ _ØŒy˜Œ|Ô%ð Ø”9˜Q”< !Ò#Ð#ØŸ:š: s d¨S¨DÑ1Ô1Ð1Ø�tð	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð 	ð*	 ð 	 ð 	 ð 	 ð 	 ð	ð 	ð 	ð ˆØˆx˜‰~Œ~‰ˆˆ1ØˆØ•A”Eˆ>ˆ>Ø—G’G˜C Ñ%Ô% a§g¢g¨c°3Ñ&7Ô&7Ñ7ˆEØ”<ð -Ø—{’{ 3¨Ñ,Ô,Ð,Ø˜Š}ˆ}Ø�ð ”*˜Q”-ˆØ”˜!”ˆØˆØÔð 	 'Ô"5ð 	ð ˜Ò Ð Ø!×:Ò:¸6ÑBÔB�øØÔð 	ØˆIð �'˜%‘.”.‰ˆˆBØ!˜' #™,œ,‰ˆ�ð ð 		�wÔ*ð 		­s°6©{¬{¸aÒ/?Ð/?Ý�\�\¥# f¡+¤+¨wÑ7Ô7Ñ8Ô8ˆDØ�EŠE�'‰NŒNˆNØ˜ˆ{ˆ{Ø�&�	�	”	˜TÑ!�	�	‘	�	à ��&‘	Ø! &¨$¡,Ñ.ˆKˆKàˆKð ˆÝˆv‰;Œ;�˜R™œÒ Ð àˆBˆBÝ�‰ZŒZ�#˜a™&œ&Ò Ð àˆBˆBØ#Ð#˜FÐ#Ñ#Ô#×.Ò.Ð/AÐ/A¸bÐ/AÑ/AÔ/AÑBÔBð 	àˆBˆBÝ�‰ZŒZ×"Ò"¥3 q¡6¤6Ñ*Ô*ð 	àˆBˆBÝÐ=Ð=Ð=Ð=Ð=Ð=°uÐ=Ñ=Ô=Ñ=Ô=ð 	àˆBØð 	ØˆIàð 		ØˆDˆDàˆCØ#Ÿkšk™mœmð ð ‘
��EØ˜”d�Ø—
’
˜4˜4  UÑ+Ô+Ñ,Ô,Ð,Ø˜2”wð Ø�I�I�Iðå�s‘8”8ˆDàð W	:ØˆEÝ�3˜r™7œ7‘^”^ð 'ð '�Ø˜  1¤˜��1‘�ñ'ð ˆEÝ�v‘;”;ˆDØÐ&�AœJˆEØˆFØˆAØñ M:˜A ™H­¨B©¬Ò/Ñ/Ø�ð �Ý˜t™œð 3#ð 3#�AØ˜!˜a™%”y ”| v¨a¤y°¤|Ò3Ð3Ø™Ø˜aš˜ØŸ
š
 4 4¨¨1¨q©5¬	°!¬°f¸Q´iÀ´lÑ#CÔ#CÑDÔDÐDÐDØ˜d Q™hš˜ØŸ
š
 4 4¨¨1¨q©5¬	°!¬°f¸Q´iÀ´lÑ#CÔ#CÑDÔDÐDÐDØ˜A ™Eœ 1œ¨°¬°1¬Ò5Ð5Ø™àŸ
š
 1™œ˜Ø˜‘F�A�Aå˜c™(œ(�CØñ %#Ø 1š9˜9Ø#ð 5Ý&)¨$°¡n¤n Ý$'¨¨S¡M¤M°&°&¸¸A¼¸q¼Ø$& q¤E¨!¤H¨s°6¸!´9¸Q´<Ñ/?Ñ$?ñ3Aô 3Añ %A˜B˜q™E˜Eð #$˜Cð !'  r¨!¤u¨Q¤x°°A´°q´¸CØ$*¨1¤I¨a¤Lñ=1ñ 21ñ !2ô !2˜Að
 #&˜Cð "# T¡¨A¡˜BØ!# B¤¨¤¨B¨r¬F°1¬I¸Ø!'¨¤¨A¤ñ9/ñ -/ð !0˜Aà  œtð 
9Ø#$ t¡8­c°"©g¬gÒ#5Ð#5Ø67¸±e¸Q°Z B q¨¨T© z¡N Nà(.¨°¨
 AØ67¸±e¸A±g°Y B q¨¨T© z¡N Nð
 34°C±%°  1 Q¨¡X :¡à ™˜Ø ™˜Ø"˜Øð %ð —M’M !Ñ$Ô$Ð$Ø�Q‘�ðC ð M:˜A ™H­¨B©¬Ò/Ñ/ðH ð Ø�Ið —’�e A¥s¨2¡w¤wÑ/Ô/Ñ0Ô0Ð0Øð :ð :�AØ"˜F B q¤E˜N×/Ò/°°SÑ9Ô9�B�q‘E�Eð ˆ<ØˆBˆBØˆ]ØˆBˆBå�U˜DÑ!Ô!ˆBàˆØð 	=ð 	=ˆAØ�Eˆzˆzð �a”D˜5 œ8 B™;Ñ&�Ø—’˜V˜V A q™\œ\Ñ*Ô*Ð*Ð*à—’˜V˜V A§F¢F¨3°Ñ$4Ô$4°a¸´dÑ;Ô;Ñ<Ô<Ð<Ð<Øð 	-˜ð 	-õ ˜˜d‘^”^Ð$ uÑ,ˆEØ˜:˜5œ: uÐ-Ñ-¨j¨e¬j¸"¨oÑ=Ð=r&   r   c                ó.  ‡‡‡‡‡‡‡‡— ddl m} ddlmŠ ddlm} d„ Šg }	 | j        D ]M}|                     ‰¦  «        \  }	}
|	                     ‰¦  «        s| 	                    ||
f¦  «         ŒGt          ‚t          d„ |D ¦   «         ¦  «        Šg }|D ]q\  }} ‰‰‰z
  |j        r|ndz   ¦  «        }|                     ‰|‰‰¬¦  «        }|                     ¦   «         }|�||k     r‰||z
  z  Š| 	                    |¦  «         ŒrnÆ# t          t          t           |f$ r« t#          t          d	„ |D ¦   «         ¦  «        ¦  «        Š‰j        rt&          j        Šˆˆˆˆˆˆfd
„| j        D ¦   «         }ddlm}  | | j        |Ž                      ¦   «         dd¬¦  «        }|                     |¦  «        r| |‰‰z  ‰¦  «        z  }|cY S w xY wt&          j        }d„ |D ¦   «         }t3          |Ž D ]H}ˆˆfd„|D ¦   «         }t5          |Ž \  }}t          |¦  «        }|‰z
  j        r|t9          |Ž ‰|z  z  z  }ŒIˆfd„Š|                      ‰¦  «        rVddlm} ddl m!} 	  ‰| ‰¦  «        ‰k    s || ‰¦  «         ||‰¦  «        k    r| |‰‰z  ‰¦  «        z  }|S # |$ r Y nw xY w|| k    ri| |z
   "                    ‰d¦  «        t&          j        k    r0‰dk    r*|  #                    ‰‰‰¬¦  «        }|t&          j        k    r|S | |‰‰z  ‰¦  «        z  }|S )Nr	   )Ú	PoleErrorr   )Úceiling)ÚOrderc                óÐ   — |                       |¦  «        }|d                              |¦  «        r5	 |                      |¦  «        }n# t          $ r | t          j        fcY S w xY w|S r]   )Úas_coeff_exponentr	  ÚleadtermÚ
ValueErrorr   r§   )r>  r
  Últs      r'   Ú	coeff_expz$Mul._eval_nseries.<locals>.coeff_exp¯  su   € Ø×'Ò'¨Ñ*Ô*ˆBØ�!Œu�yŠy˜‰|Œ|ð (ð(ØŸš qÑ)Ô)�B�BøÝ!ð (ð (ð (Ø¥¤˜<Ð'Ð'Ð'ð(øøøàˆIs   ²A ÁA#Á"A#c              3  ó@   K  — | ]}|d          j         ¯|d          V — ŒdS ©r	   N©rö   ©rH   rs   s     r'   rI   z$Mul._eval_nseries.<locals>.<genexpr>Â  s1   è è € Ð:Ð:˜a¨1¨Q¬4¬>Ð:�Q�q”TÐ:Ð:Ð:Ð:Ð:Ð:r&   ©rß   ÚlogxÚcdirc              3  ó@   K  — | ]}|d          j         ¯|d          V — ŒdS r¡  r¢  r£  s     r'   rI   z$Mul._eval_nseries.<locals>.<genexpr>Ñ  s1   è è € ÐBÐB a°1°Q´4´>ÐB˜Q˜qœTÐBÐBÐBÐBÐBÐBr&   c           	     óZ   •— g | ]'}|                      ‰ ‰‰‰z
  ¦  «        ‰‰¬ ¦  «        ‘Œ(S )r¤  )Únseries)rH   rs   r¦  r˜  r¥  rß   Ún0r
  s     €€€€€€r'   rj   z%Mul._eval_nseries.<locals>.<listcomp>Ô  s9   ø€ Ð[Ð[Ð[ÈA�A—I’I˜a 7 7¨1¨R©4¡=¤=°tÀ$�IÑGÔGÐ[Ð[Ð[r&   )Úpowsimpr…  T)Úcombiner  c                ó6   — g | ]}t          j        |¦  «        ‘ŒS r%   )rx   rl   )rH   r=  s     r'   rj   z%Mul._eval_nseries.<locals>.<listcomp>Ü  s"   € Ð:Ð:Ð:¨6•”˜vÑ&Ô&Ð:Ð:Ð:r&   c                ó(   •— g | ]} ‰|‰¦  «        ‘ŒS r%   r%   )rH   r>  rŸ  r
  s     €€r'   rj   z%Mul._eval_nseries.<locals>.<listcomp>ß  s%   ø€ Ð8Ð8Ð8¨D�Y�Y˜t QÑ'Ô'Ð8Ð8Ð8r&   c                ó8  •‡— | ‰u rt           j        S | j        rt           j        S | j        r!t          ˆˆfd„| j        D ¦   «         ¦  «        S | j        rt          ˆˆfd„| j        D ¦   «         Ž S | j	        r ‰| j
        ‰¦  «        | j        z  S t           j        S )Nc              3  ó0   •K  — | ]} ‰|‰¦  «        V — Œd S rE   r%   ©rH   r;   Ú
max_degreer
  s     €€r'   rI   z8Mul._eval_nseries.<locals>.max_degree.<locals>.<genexpr>ë  s/   øè è € Ð<Ð<°˜:˜: a¨Ñ+Ô+Ð<Ð<Ð<Ð<Ð<Ð<r&   c                ó(   •— g | ]} ‰|‰¦  «        ‘ŒS r%   r%   r±  s     €€r'   rj   z9Mul._eval_nseries.<locals>.max_degree.<locals>.<listcomp>í  s%   ø€ Ð>Ð>Ð>°!˜Z˜Z¨¨1Ñ-Ô-Ð>Ð>Ð>r&   )r   r1   Úis_Atomr§   r¥   Úmaxr-   r!   rx   r¯   r†  r…  )r{   r
  r²  s    `€r'   r²  z%Mul._eval_nseries.<locals>.max_degreeå  s³   øø€ Ø�AˆvˆvÝ”u�ØŒyð Ý”v�ØŒxð =ÝÐ<Ð<Ð<Ð<Ð<°Q´VÐ<Ñ<Ô<Ñ<Ô<Ð<ØŒxð @ÝÐ>Ð>Ð>Ð>Ð>°q´vÐ>Ñ>Ô>Ð?Ð?ØŒxð 3Ø!�z !¤&¨!Ñ,Ô,¨Q¬UÑ2Ð2Ý”6ˆMr&   )ÚPolynomialError)Údegree©r¥  r¦  )$r  r—  Ú#sympy.functions.elementary.integersr˜  Úsympy.series.orderr™  r-   rœ  r	  r4   r�  ra  rö   r©  ÚgetnÚNotImplementedErrorÚ	TypeErrorr
   r   r   r§   rz  r«  r  r÷   r   r]  r±   r6   Úis_polynomialÚsympy.polys.polyerrorsr¶  Úsympy.polys.polytoolsr·  rk  Ú_eval_as_leading_term)rK   r
  rß   r¥  r¦  r—  r™  Úordsrs   r    r…  Úfacsrù   Ún1rD  Únsr«  ÚresÚords2ÚfacÚords3ÚcoeffsÚpowersÚpowerr¶  r·  rž  r˜  rŸ  r²  rª  s    ````                      @@@@r'   Ú_eval_nserieszMul._eval_nseriesª  s.  øøøøøøøø€ Ø'Ð'Ð'Ð'Ð'Ð'Ø?Ð?Ð?Ð?Ð?Ð?Ø,Ð,Ð,Ð,Ð,Ð,ð	ð 	ð 	ð ˆð	Ø”Yð %ð %�ØŸZšZ¨™]œ]‘
��sØ—y’y ‘|”|ð %Ø—K’K  C Ñ)Ô)Ð)Ð)å$Ð$åÐ:Ð: 4Ð:Ñ:Ô:Ñ:Ô:ˆBØˆDØð ð ‘��1Ø�W˜Q ™V¨A¬KÐ'> q q¸QÑ?Ñ@Ô@�Ø—I’I˜a 2¨D°t�IÑ<Ô<�Ø—V’V‘X”X�Ø�>Ø˜B’w�wØ˜R "™W™˜Ø—’˜A‘”��ðøõ Õ/µ¸IÐFð 	ð 	ð 	õ �ÐBÐB¨4ÐBÑBÔBÑBÔBÑCÔCˆBØÔ ð Ý”V�Ø[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[ÐQUÔQZÐ[Ñ[Ô[ˆDØ6Ð6Ð6Ð6Ð6Ð6Ø�'˜)˜$œ) TÐ*×1Ò1Ñ3Ô3¸UÈÐNÑNÔNˆCØ�wŠw�u‰~Œ~ð &Ø�u�u˜Q ™T 1‘~”~Ñ%�ØˆJˆJˆJð	øøøõ ŒfˆØ:Ð:°TÐ:Ñ:Ô:ˆå˜E�?ð 	/ð 	/ˆCØ8Ð8Ð8Ð8Ð8°CÐ8Ñ8Ô8ˆEÝ  %˜[‰NˆF�FÝ˜‘K”KˆEØ˜‘	Ô&ð /Ø•s˜F�| Q¨¡XÑ.Ñ.�øð	ð 	ð 	ð 	ð 	ð ×Ò˜aÑ Ô ð 		Ø>Ð>Ð>Ð>Ð>Ð>Ø4Ð4Ð4Ð4Ð4Ð4ðØ�:˜d AÑ&Ô&¨!Ò+Ð+¨v¨v°d¸A©¬À&À&ÈÈaÁ.Ä.Ò/PÐ/PØ˜5˜5  A¡ q™>œ>Ñ)�Cð �
øð #ð ð ð Ø�ðøøøð
 �$Š;ˆ;Ø�s‘
× Ò   AÑ&Ô&­!¬&Ò0Ð0°Q¸²U°UØ×/Ò/°¸À4Ð/ÑHÔH�Ø�œ’<�<Ø�JØ�5�5˜˜A™˜q‘>”>Ñ!ˆCØˆ
s%   ¡C$D ÄC G	ÇG	É<J ÊJ#Ê"J#c                óB   ‡‡‡—  | j         ˆˆˆfd„| j        D ¦   «         Ž S )Nc                ó@   •— g | ]}|                      ‰‰‰¬ ¦  «        ‘ŒS )r¸  )Úas_leading_term)rH   rs   r¦  r¥  r
  s     €€€r'   rj   z-Mul._eval_as_leading_term.<locals>.<listcomp>  s.   ø€ ÐYÐYÐYÈ!˜1×,Ò,¨Q°TÀÐ,ÑEÔEÐYÐYÐYr&   ©r  r-   )rK   r
  r¥  r¦  s    ```r'   rÁ  zMul._eval_as_leading_term  s1   øøø€ ØˆtŒyÐYÐYÐYÐYÐYÐYÈtÌyÐYÑYÔYÐZÐZr&   c                ó4   —  | j         d„ | j        D ¦   «         Ž S )Nc                ó6   — g | ]}|                      ¦   «         ‘ŒS r%   )r  r£  s     r'   rj   z'Mul._eval_conjugate.<locals>.<listcomp>	  s    € Ð<Ð<Ð<¨Q˜1Ÿ;š;™=œ=Ð<Ð<Ð<r&   rÑ  rW   s    r'   Ú_eval_conjugatezMul._eval_conjugate  s"   € ØˆtŒyÐ<Ð<°$´)Ð<Ñ<Ô<Ð=Ð=r&   c                óF   —  | j         d„ | j        d d d…         D ¦   «         Ž S )Nc                ó6   — g | ]}|                      ¦   «         ‘ŒS r%   )Ú	transposer£  s     r'   rj   z'Mul._eval_transpose.<locals>.<listcomp>  s    € ÐBÐBÐB¨Q˜1Ÿ;š;™=œ=ÐBÐBÐBr&   rŒ   rÑ  rW   s    r'   Ú_eval_transposezMul._eval_transpose  s,   € ØˆtŒyÐBÐB°$´)¸D¸D¸b¸D´/ÐBÑBÔBÐCÐCr&   c                óF   —  | j         d„ | j        d d d…         D ¦   «         Ž S )Nc                ó6   — g | ]}|                      ¦   «         ‘ŒS r%   )Úadjointr£  s     r'   rj   z%Mul._eval_adjoint.<locals>.<listcomp>  s    € Ð@Ð@Ð@¨1˜1Ÿ9š9™;œ;Ð@Ð@Ð@r&   rŒ   rÑ  rW   s    r'   Ú_eval_adjointzMul._eval_adjoint  s,   € ØˆtŒyÐ@Ð@°´	¸$¸$¸B¸$´Ð@Ñ@Ô@ÐAÐAr&   c                óÎ   — t           j        }g }| j        D ]D}|                     ||¬¦  «        \  }}||z  }|t           j        ur|                     |¦  «         ŒE| | j        |Ž fS )aU  Return the tuple (R, self/R) where R is the positive Rational
        extracted from self.

        Examples
        ========

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

        See docstring of Expr.as_content_primitive for more examples.
        )ÚradicalÚclear)r   r1   r-   Úas_content_primitiver4   r  )rK   rÞ  rß  Úcoefr-   r;   rZ   r·   s           r'   rà  zMul.as_content_primitive  sw   € õ ŒuˆØˆØ”ð 	ð 	ˆAØ×)Ò)°'ÀÐ)ÑGÔG‰DˆAˆqØ�A‰IˆDØ�œˆ~ˆ~Ø—’˜A‘”�øð �Y�T”Y Ð%Ð%Ð%r&   c                ón   ‡— |                       ¦   «         \  }}|                     ˆfd„¬¦  «         ||z   S )a  Transform an expression into an ordered list of factors.

        Examples
        ========

        >>> from sympy import sin, cos
        >>> from sympy.abc import x, y

        >>> (2*x*y*sin(x)*cos(x)).as_ordered_factors()
        [2, x, y, sin(x), cos(x)]

        c                ó0   •— |                       ‰¬¦  «        S )N)Úorder)Úsort_key)r:  rä  s    €r'   r  z(Mul.as_ordered_factors.<locals>.<lambda>9  s   ø€  D§M¢M¸ MÑ$>Ô$>€ r&   r)   )r2   r+   )rK   rä  ÚcpartÚncparts    `  r'   Úas_ordered_factorszMul.as_ordered_factors+  s>   ø€ ð Ÿš™œ‰ˆˆvØ�
Š
Ð>Ð>Ð>Ð>ˆ
Ñ?Ô?Ð?Ø�v‰~Ðr&   c                óD   — t          |                      ¦   «         ¦  «        S rE   )r  rè  rW   s    r'   Ú_sorted_argszMul._sorted_args<  s   € å�T×,Ò,Ñ.Ô.Ñ/Ô/Ð/r&   )r-   rO   rN   rP   rQ   r   )rQ   rU   )F)TrB  rE   rW  )FT)Sr   r   r   Ú__doc__Ú	__slots__r!   r   Ú
_args_typer   rJ   Ú__annotations__ÚpropertyrF   r   rT   r-   r[   ra   Úclassmethodrá   rï   ró   rõ   r  r   r  r^   ru   ré   Ústaticmethodr,  r7  rE  rZ  rp  rv  rs  r{  r|  rŒ  r�  rŸ  r   rr  rÅ  r»   r®   rÖ  rÞ  rå  rè  Ú_eval_is_commutativeró  r÷  rü  rþ  r  r  r(  r/  r3  r2  r<  r@  rC  r?  rP  rT  rS  r\  ra  rd  rg  r•  rÍ  rÁ  rÔ  rØ  rÜ  rà  rè  rê  Ú__classcell__)rg  s   @r'   r6   r6   [   s£  ø€ € € € € € ðDð DðJ €Ià€Fà€JØ%�~Ð&;ÈÐNÑNÔNÐàÐÐÑàð1ð 1ñ „Xð1ð ð à?Cð 	ð 	ð 	ð 	ð 	ð 	ð 
ð	ð 	ð 	ñ 
Œð	ð6ð 6ð 6ð:ð :ð :ð ðQ.ð Q.ñ „[ðQ.ðfð ð ð8 ð"ð "ñ „[ð"ðð ð ð  ð6ð 6ñ „Xð6ð ð9ð 9ñ „Wð9ð< Ø+/ð 
ð 
ð 
ð 
ñ „Wð
ðð ð ð ð 5:ð 5:ð 5:ð 5:ðn ð$ð $ñ „\ð$ð$)ð )ð )ðV ð	#ð 	#ñ „Wð	#ð ðð ð ð ñ „Wðð>ð ð ðð ð ð!ð !ð !ð !ð@ ðð ñ „\ðð ð(ð (ð (ñ „\ð(ðT ð<ð <ñ „\ð<ð ð2ð 2ñ „\ð2ðh ð&ð &ñ „\ð&ð ðEð Eñ „\ðEð
 ð',ð ',ñ „\ð',ðRð ð ð6ð 6ð 6ð%ð %ð %ðIð Ið IðPð Pð Pð-ð -ð -ðMð Mð Mð-ð -Ððð ð ðA(ð A(ð A(ðF
ð 
ð 
ð
ð 
ð 
ðð ð ðð ð ðL!ð L!ð L!ð\Fð Fð Fð
*ð *ð *ð(ð (ð (ðT/ð /ð /ð.ð .ð .ð/ð /ð /ðð ð ð(ð ð ð%ð %ð %ð$!ð !ð !ðF&ð &ð &ðð ð ð<
ð 
ð 
ðð ð ð"F>ð F>ð F>ðPYð Yð Yð Yðv[ð [ð [ð>ð >ð >ðDð Dð DðBð Bð Bð&ð &ð &ð &ð4ð ð ð ð" ð0ð 0ñ „Xð0ð 0ð 0ð 0ð 0r&   r6   Úmulc                ó8   — t          t          j        | |¦  «        S )a‹  Return product of elements of a. Start with int 1 so if only
       ints are included then an int result is returned.

    Examples
    ========

    >>> from sympy import prod, S
    >>> prod(range(3))
    0
    >>> type(_) is int
    True
    >>> prod([S(2), 3])
    6
    >>> _.is_Integer
    True

    You can start the product at something other than 1:

    >>> prod([1, 2], 3)
    6

    )r   Úoperatorrô  )r;   Ústarts     r'   rb  rb  C  s   € õ. •(”,  5Ñ)Ô)Ð)r&   TFc                ó  ‡ — ‰ j         s|j         r‰ |c}Š n‰ |z  S |t          j        u r‰ S ‰ t          j        u r|S ‰ t          j        u r|s| S |j        r||sh‰ j        ra‰ j        dk    rVd„ |j        D ¦   «         }ˆ fd„|D ¦   «         }t          d„ |D ¦   «         ¦  «        rt          j
        d„ |D ¦   «         ¦  «        S t          ‰ |d¬¦  «        S |j        rƒt          |j        ¦  «        }|d         j         r2|dxx         ‰ z  cc<   |d         dk    r|                     d¦  «         n|                     d‰ ¦  «         t           
                    |¦  «        S ‰ |z  }|j         r#|j         st           
                    ‰ |f¦  «        }|S )	aà  Return ``coeff*factors`` unevaluated if necessary.

    If ``clear`` is False, do not keep the coefficient as a factor
    if it can be distributed on a single factor such that one or
    more terms will still have integer coefficients.

    If ``sign`` is True, allow a coefficient of -1 to remain factored out.

    Examples
    ========

    >>> from sympy.core.mul import _keep_coeff
    >>> from sympy.abc import x, y
    >>> from sympy import S

    >>> _keep_coeff(S.Half, x + 2)
    (x + 2)/2
    >>> _keep_coeff(S.Half, x + 2, clear=False)
    x/2 + 1
    >>> _keep_coeff(S.Half, (x + 2)*y, clear=False)
    y*(x + 2)/2
    >>> _keep_coeff(S(-1), x + y)
    -x - y
    >>> _keep_coeff(S(-1), x + y, sign=True)
    -(x + y)
    r	   c                ó6   — g | ]}|                      ¦   «         ‘ŒS r%   )ru   r¼  s     r'   rj   z_keep_coeff.<locals>.<listcomp>…  s"   € Ð;Ð;Ð;¨�A—N’NÑ$Ô$Ð;Ð;Ð;r&   c                ó:   •— g | ]\  }}t          |‰¦  «        |f‘ŒS r%   rg   )rH   rZ   rù   r    s      €r'   rj   z_keep_coeff.<locals>.<listcomp>†  s,   ø€ Ð@Ð@Ð@±4°1°a•[  EÑ*Ô*¨AÐ.Ð@Ð@Ð@r&   c              3  ó*   K  — | ]\  }}|j         V — Œd S rE   )r°   )rH   rZ   rp   s      r'   rI   z_keep_coeff.<locals>.<genexpr>‡  s(   è è € Ð1Ð1¡D A q�1”<Ð1Ð1Ð1Ð1Ð1Ð1r&   c                ón   — g | ]2}t                                |d          dk    r
|dd…         n|¦  «        ‘Œ3S )r   r	   N)r6   r7   r¼  s     r'   rj   z_keep_coeff.<locals>.<listcomp>ˆ  sQ   € ð '>ð '>ð '>Ø34õ (+§~¢~Ø˜qœT QšY˜Y�A�a�b�b”E�E¨Añ(/ô (/ð '>ð '>ð '>r&   FrM   r   )r"   r   r1   r`   r¥   r¤   r¶   r-   r«   rx   r7   r6   r!   r0   r´   r5   )r    Úfactorsrß  rç   r-   r”  rù   s   `      r'   rh   rh   ]  sÝ  ø€ ð6 Œ?ð !ØÔð 	!Ø" GˆNˆG�U�Uà˜‘=Ð Ø•!”%ÐÐØˆØ•”€~€~ØˆØ	•!”-Ð	Ð	¨Ð	ØˆxˆØ	Œð Øð 	?˜Ô*ð 	?¨u¬w¸!ª|¨|Ø;Ð;¨g¬lÐ;Ñ;Ô;ˆDØ@Ð@Ð@Ð@¸4Ð@Ñ@Ô@ˆDÝÐ1Ð1¨DÐ1Ñ1Ô1Ñ1Ô1ð ?Ý”~ð '>ð '>Ø8<ð'>ñ '>ô '>ñ ?ô ?ð ?å�5˜'¨EÐ2Ñ2Ô2Ð2Ø	Œð Ý�W”\Ñ"Ô"ˆØ�Œ8Ôð 	#Ø�!ˆHˆHŒH˜ÑˆHˆH‰HØ�QŒx˜1Š}ˆ}Ø—	’	˜!‘”�øà�LŠL˜˜EÑ"Ô"Ð"Ý�~Š~˜eÑ$Ô$Ð$à�'‰MˆØŒ;ð 	1˜wÔ0ð 	1Ý—’  wÐ/Ñ0Ô0ˆAØˆr&   c                ó(   — d„ }t          | |¦  «        S )Nc                ó”   ‡— | j         r?|                      ¦   «         \  Š}‰j        r!|j        rt	          ˆfd„|j        D ¦   «         Ž S | S )Nc                ó   •— g | ]}‰|z  ‘ŒS r%   r%   )rH   ÚrirZ   s     €r'   rj   z+expand_2arg.<locals>.do.<locals>.<listcomp>Ÿ  s   ø€ Ð)@Ð)@Ð)@°2¨!¨B©$Ð)@Ð)@Ð)@r&   )r!   ru   r"   r¥   Ú_unevaluated_Addr-   )r{   r¾   rZ   s     @r'   r“  zexpand_2arg.<locals>.do›  s]   ø€ ØŒ8ð 	BØ—>’>Ñ#Ô#‰DˆAˆqØŒ{ð B˜qœxð BÝ'Ð)@Ð)@Ð)@Ð)@¸¼Ð)@Ñ)@Ô)@ÐAÐAØˆr&   r   )r{   r“  s     r'   Úexpand_2argr  š  s#   € ðð ð õ �Q˜ÑÔÐr&   )r¹   r†   )rx   r  ry  )TF)6Ú
__future__r   Útypingr   r   Úcollectionsr   Ú	functoolsr   Ú	itertoolsr   rö  r
   Úbasicr   r   Ú	singletonr   Ú
operationsr   r   Úcacher   Úintfuncr   r   Úlogicr   r   r:  r   Ú
parametersr   rF   r   Ú	traversalr   Úsympy.utilities.iterablesr   r   r.   r>   r6   rô  rb  rh   r  rý   r¹   rÌ  r‡   Úaddrx   r  r%   r&   r'   ú<module>r     sh  ðØ "Ð "Ð "Ð "Ð "Ð "Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€à Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø  Ð  Ð  Ð  Ð  Ð  Ø  Ð  Ð  Ð  Ð  Ð  Ø *Ð *Ð *Ð *Ð *Ð *ð
ð ð ð ð ñ ô ð ð!ð !ð !ð
1(ð 1(ð 1(ðhc0ð c0ð c0ð c0ð c0ˆ$�ñ c0ô c0ð c0ðJ? Ð˜ÑÔ€ð*ð *ð *ð *ð4;ð ;ð ;ð ;ðzð ð ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &r&   