
    \hh                        S SK Jr  S SKJr  S SKJr  S SKJrJrJ	r	  S SK
JrJrJrJrJrJrJrJrJr  S SKJrJr  S SKJrJrJr  S SKJr  S S	KJr  S S
KJ r J!r!J"r"J#r#J$r$J%r%  S SK&J'r'  S SK(J)r)J*r*  S SK+J,r,  SSS\4S jr-SS jr.\" S5      r/S r0g)    )defaultdict)reduce)prod)
expand_log	count_ops_coeff_isneg)	sympifyBasicDummySAddMulPow
expand_mulfactor_terms)ordereddefault_sort_key)IntegerRationalequal_valued)_keep_coeff)	Transform)	exp_polarexplogrootpolarify
unpolarify)MatrixSymbol)lcmgcd)multiplicityFallc                 Z  ^^^^^7^8^9^:^; UUUU4S jn[        U 5      n [        U [        5      (       a@  [        U [        5      (       d+  U R                  (       d  U [        S5      [        S5      4;   a  U $ T(       d6  U R                  (       d%  U R                  (       aC  [        U R                  ;  a/  U R                  " U R                   Vs/ s H
  oe" U5      PM     sn6 n U R                  (       a  U" U [        -  SS9[        -  $ U R                  (       d  U $ TS;   Ga  [        [        5      n/ n/ n	[        R                  n
U R                   GHO  nUR                   (       a  X-  n
M  UR                  (       a  [#        U5      nUR$                  (       a  UR'                  5       u  pT(       a  X4 Vs/ s H
  o" U5      PM     snu  pUR                  (       d  [        U[(        5      (       a  X-  [        R                  pX|   R+                  U5        M  U(       am  US   R'                  5       u  nnUR'                  5       u  nnUU:X  a>  UR$                  (       a-  UR$                  (       a  [-        U[/        UU5      5      US'   GM>  UR+                  U5        GMR     [1        [3        UR5                  5       5      5       H  u  pU(       a  UR                   (       a  [7        S U 5       5      (       dt  U
[        R                  Laa  U[        R                  [        R8                  4;  a=  [;        [=        U5      [=        U
5      5      nU(       a  UR+                  U5        XU-  -  n
[/        U6 X|'   M     U
[        R                  La2  X;   a  Xz==   [        R                  -  ss'   O[        R                  Xz'   [?        U5      n[        UR5                  5       5      n[A        5       nU H  u  pUU;   a  M  URB                  =(       d    URD                  nU(       d  M5  SU-  nURF                  (       a%  [I        US5      (       a  [        R                  X|'   Mp  UU:w  d  Mx  UU;   d  M  URK                  5       S   [        R                  L a   URM                  U5        UU==   U-  ss'   M  URO                  U5        URM                  U5      nX|==   U-  ss'   M     [        UR5                  5       5      n[        R8                  nU H  u  pURP                  (       d  UR                  (       d  M)  U* U;   d  M2  X;   d  M9  URB                  c  URR                  (       d  MY  URR                  (       d  URT                  (       a  X|* ==   URM                  U5      -  ss'   OURM                  U* 5      nX|==   U-  ss'   UU;   a  UU==   U-  ss'   M  XU'   M     UR5                  5        VVs/ s H  u  pU(       d  M  X4PM     nnnU94S	 jm;SU94S
 jjm9U8U9U:4S jn0 m:/ n/ m8U HX  u  pT9" X5      u  pUT:;   a  T:U   U-   T:U'   OUT:U'   US   S:w  d  M1  US   R                  (       d  MG  T8R+                  U5        MZ     T8RW                  [X        S9  T8RW                  TSS9  T8 GH	  nUT:;  a  M  Uu  nnSnSn UnUn / n!/ n"[Z        R\                  " U5       HJ  n#T9" U#5      u  n$n%U$T:;  d	  T:U$   U%:  a  / =n"n!  O+U"R+                  U%T:U$   /5        U!R+                  U$5        ML     U"(       a  U"S   S   U"S   S   -  n&[_        S[a        U"5      5       H(  nU"U   S   U"U   S   -  n'U'S:  a    Ob[c        U&U'5      n&M*     [_        [a        U!5      5       H'  nT:U!U   ==   U&U"U   S   -  -  ss'   U" U!U   5        M)     T:U==   U&U -  U-  -  ss'   U(       d&  [a        T:5      S:X  d  [7        S T: 5       5      (       a  Oz[e        [Z        R\                  " U5       V#s/ s H  n#T;" U#5      PM     sn#5      nUS:X  a  O=UU-  nUU -  n[7        U;4S j[Z        R\                  " U5       5       5      (       a  SnGM  Uu  nn(UR+                  UT:RM                  U5      [g        SU(5      -  45        GM     UnT:R5                  5        H  u  u  nn(nUR                  (       d  [        U[(        5      (       aJ  U([        R                  La7  UR(                  R                   (       d  UR'                  5       u  nnUUU(-  -  nO[i        UU(5      nUR+                  X45        M     [a        U5      n)[?        U5      n[a        U5      U):X  d   eU R                  " XR5                  5        VVs/ s H  u  p[-        X5      PM     snn-   6 n	TS:X  a  U R                  XR                  " U6 5      $ U" U R                  " U6 SS9U" U	SS9-  $ TS:X  Gac  / n/ nU R                   HO  nUR$                  (       a*  UR+                  [        UR'                  5       5      5        M>  UR+                  U5        MQ     [_        [a        U5      5       H  nX~   u  p[7        S URK                  5        5       5      (       d+  URR                  (       d  T(       d  URD                  (       d  MY  URk                  SS9u  n*n+U*[        R                  Ld  M  U+[        R                  Ld  M  [-        UU*5      U+/X~'   M     [        [        5      n,U H~  u  pT(       a  U" U5      nUR                  (       aE  URB                  (       d  URR                  (       a#  [m        U5      n[o        U5      (       a  U* nSU-  nU,U   R+                  U5        M     A[        [        5      nU, GHM  nU,U   m8[a        T85      S:X  a  T8S   n-GOURR                  (       d  T(       a  U R                  " T86 n-GO/ n./ n// n0T8 H  n#U#RT                  (       a  U0R+                  U#5        M'  U#Rp                  (       a  U/R+                  U#5        MK  U#RD                  (       a  U/R+                  U#5        Mo  U.R+                  U#5        M     [a        U.5      S:X  a  U0(       a  [a        U05      S:X  a   U.(       d  U/Rs                  U.U0-   5        / =n.n0OU0(       a  Sn1UR                   (       a  Sn1O7URK                  5       u  n2n3U2RR                  (       a  U3RR                  (       a  Sn1U1(       a?  U0 Vs/ s H  of* PM     n0nU.Rs                  [        R8                  /[a        U05      -  5        OU.Rs                  U05        / n0A1U. H  nX|   R+                  U5        M     U R                  " U/U0-   6 n-U74S jm7[u        U-SS9n4[a        [.        R\                  " U45      5      T7" U-5      :  a  [m        U45      n-UU-   R+                  U5        GMP     UR5                  5        VVV5s/ s H  u  pU  H  n5[-        UU55      PM     M     n6nnn5U R                  " U6U-   6 $ [w        S5      es  snf s  snf s  snnf s  sn#f s  snnf s  snf s  sn5nnf )a	  
Reduce expression by combining powers with similar bases and exponents.

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

If ``deep`` is ``True`` then powsimp() will also simplify arguments of
functions. By default ``deep`` is set to ``False``.

If ``force`` is ``True`` then bases will be combined without checking for
assumptions, e.g. sqrt(x)*sqrt(y) -> sqrt(x*y) which is not true
if x and y are both negative.

You can make powsimp() only combine bases or only combine exponents by
changing combine='base' or combine='exp'.  By default, combine='all',
which does both.  combine='base' will only combine::

     a   a          a                          2x      x
    x * y  =>  (x*y)   as well as things like 2   =>  4

and combine='exp' will only combine
::

     a   b      (a + b)
    x * x  =>  x

combine='exp' will strictly only combine exponents in the way that used
to be automatic.  Also use deep=True if you need the old behavior.

When combine='all', 'exp' is evaluated first.  Consider the first
example below for when there could be an ambiguity relating to this.
This is done so things like the second example can be completely
combined.  If you want 'base' combined first, do something like
powsimp(powsimp(expr, combine='base'), combine='exp').

Examples
========

>>> from sympy import powsimp, exp, log, symbols
>>> from sympy.abc import x, y, z, n
>>> powsimp(x**y*x**z*y**z, combine='all')
x**(y + z)*y**z
>>> powsimp(x**y*x**z*y**z, combine='exp')
x**(y + z)*y**z
>>> powsimp(x**y*x**z*y**z, combine='base', force=True)
x**y*(x*y)**z

>>> powsimp(x**z*x**y*n**z*n**y, combine='all', force=True)
(n*x)**(y + z)
>>> powsimp(x**z*x**y*n**z*n**y, combine='exp')
n**(y + z)*x**(y + z)
>>> powsimp(x**z*x**y*n**z*n**y, combine='base', force=True)
(n*x)**y*(n*x)**z

>>> x, y = symbols('x y', positive=True)
>>> powsimp(log(exp(x)*exp(y)))
log(exp(x)*exp(y))
>>> powsimp(log(exp(x)*exp(y)), deep=True)
x + y

Radicals with Mul bases will be combined if combine='exp'

>>> from sympy import sqrt
>>> x, y = symbols('x y')

Two radicals are automatically joined through Mul:

>>> a=sqrt(x*sqrt(y))
>>> a*a**3 == a**4
True

But if an integer power of that radical has been
autoexpanded then Mul does not join the resulting factors:

>>> a**4 # auto expands to a Mul, no longer a Pow
x**2*y
>>> _*a # so Mul doesn't combine them
x**2*y*sqrt(x*sqrt(y))
>>> powsimp(_) # but powsimp will
(x*sqrt(y))**(5/2)
>>> powsimp(x*y*a) # but won't when doing so would violate assumptions
x*y*sqrt(x*sqrt(y))

c                    > UR                  ST5      nUR                  ST5      nUR                  ST5      nUR                  ST	5      n[        XX4U5      $ )Ndeepcombineforcemeasure)getpowsimp)
argkwargs_deep_combine_force_measurer'   r&   r(   r)   s
         N/var/www/auris/envauris/lib/python3.13/site-packages/sympy/simplify/powsimp.pyrecursepowsimp.<locals>.recurseg   sR    

64(::i1GU+::i1s8X>>    r      F)r&   )r   r#   c              3   8   #    U  H  oR                   v   M     g 7fN)	is_Number).0eis     r2   	<genexpr>powsimp.<locals>.<genexpr>   s     /Iqq   c                     > T" U 5      S   S   $ )zLReturn Rational part of x's exponent as it appears in the bkey.
            r   r6    )xbkeys    r2   ratqpowsimp.<locals>.ratq   s     71:a= r5   c                 b  > UGb  UR                   (       a  U [        R                  4U4$ UR                  (       a,  U [	        UR
                  5      4[	        UR                  5      4$ UR                  SS9u  p#U[        R                  Lan  UR                  (       a/  U [	        UR
                  5      4U[	        UR                  5      -  4$ X-  [	        UR
                  5      4[	        UR                  5      4$ X-  [        R                  4[        R                  4$ T" U R                  5       6 $ )zReturn (b**s, c.q), c.p where e -> c*s. If e is not given then
it will be taken by using as_base_exp() on the input b.
e.g.
    x**3/2 -> (x, 2), 3
    x**y -> (x**y, 1), 1
    x**(2*y/3) -> (x**y, 3), 2
    exp(x/2) -> (exp(a), 2), 1

Trational)

is_Integerr   Oneis_Rationalr   qpas_coeff_Mul
is_integeras_base_exp)becmrC   s       r2   rC   powsimp.<locals>.bkey   s     }<<quu:q=(]]wqss|,gaccl::>>4>8DA~<<$%wqss|#4an#DD !gaccl3WQSS\AA !aee}aee33Q]]_--r5   c                 2  > [        TU    U S   5      u  pU(       d{  TR                  U 5        U(       ab  [        R                  " U S   U-  5       HA  nT" U5      u  pU T;  a  STU '   TU ==   U-  ss'   U S   S:w  d  M0  TR	                  U 5        MC     ggg)a  Decide what to do with base, b. If its exponent is now an
integer multiple of the Rational denominator, then remove it
and put the factors of its base in the common_b dictionary or
update the existing bases if necessary. If it has been zeroed
out, simply remove the base.
r6   r   N)divmodpopr   	make_argsappend)rQ   newerrT   rR   basesrC   common_bs        r2   updatepowsimp.<locals>.update  s     Xa[!A$/GDQ ]]1Q4:6#AwH,*+HQK q(Q419!LLO 7  r5   )keyT)ra   reversec              3   0   #    U  H  oS    S :H  v   M     g7fr6   NrA   )r;   ks     r2   r=   r>   O  s     7hQ419hs   c              3   :   >#    U  H  nT" U5      S :H  v   M     g7frd   rA   )r;   birD   s     r2   r=   r>   \  s     @/?tBx1}/?s   r   base)r'   c              3   8   #    U  H  oR                   v   M     g 7fr9   )is_nonnegative)r;   rB   s     r2   r=   r>     s     E2DQ((2Dr?   rG   c                    > U R                   (       a  [        U4S jU R                   5       5      $ U R                  (       a,  [	        U R                   Vs/ s H  nT" U5      PM     sn5      $ gs  snf )Nc              3   4   >#    U  H  nT" U5      v   M     g 7fr9   rA   )r;   ai_termss     r2   r=   *powsimp.<locals>._terms.<locals>.<genexpr>  s     "?"6"::s   r6   )is_Addsumargsis_Mulr   )rR   mirn   s     r2   rn   powsimp.<locals>._terms  sS     xx""?"???xx#!&&$A&BVBZ&$ABB %Bs   A0z.combine must be one of ('all', 'exp', 'base').r9   )<r	   
isinstancer
   r   is_Atomr   rp   rs   _yrr   funcis_Powr   listr   rJ   rK   _denest_powis_commutativerP   r   rZ   r   r   r   iteritemsr#   NegativeOner"   absdictsetis_positiveis_polaris_Floatr   as_numer_denomrX   add	is_SymbolrO   is_negativesortr   r   rY   rangelenminr    r   r   rN   r   r   rj   extendr   
ValueError)<exprr&   r'   r(   r)   r3   wc_powersnc_partnewexprcoefftermrQ   rR   ib1e1b2e2rT   beskipbposbinv_nr_   donerh   exponentlastqlcmbstartqstartbbeerg   bibbiemin1ratrL   checkexp_cexp_tc_expnew_baseunknonnegnegisratrM   d	xnew_baser<   c_partrn   r]   rC   r^   rD   s<    ````                                                  @@@@@r2   r+   r+      s   j? ? 4=DtU##z$'E'ELLDYq\9Q<$@@t{{dkkb		.Ayytyy9y!71:y9:{{tBwU+B..;; .  t$IID{{"4(""'')1271GAJ7DA88z!S11 4q""1% $R[446FB!--/FBb--"2C2C&)"c"bk&: t$3 8 D!123DA ammC/Iq/I,I,I&aeeQ]]33 QU4HHQKTMEq'HK 4  155("#%% > (.."#uDADy==.AJJDts::,q!"4"4"#%%HK9!1'')!,5 Q !+$LL. q(# ( (.."#]]DAqxxxaR8^MM-||q}} Q7$LL!, q(X~ )'(  (0~~'7='7tq1FQF'7=	!
	.4	,* DA:DAH}&qkAotqyQqT[[[Q  	

'
(

w
-D8#KAxDD--*B#BxHC(*hsmc.A"$RIIsHSM23IIcN +  a58RU1X-D"1c"g. eAh1a07!"4~	 / "'s2wA$RUOtBqE!H}<O"2a5M "0 !$v+h*>>8})7h777 s}}V/DE/DDH/DEF19DL@s}}Q/?@@@Dc h DAqKKHLL.x1~=>?w |  ")IFQAJq#..QUUN155+<+<21IAJOOQF# * H>8}%%% ))g~~?O(P?OtqQ?O(PPRe99Wii&9::499g.?01 1 
F	 IID""T%5%5%7 89t$	  s8}%A;DAE!2B2B2DEEEY^bcblbl>>4>8LE5AEE!e155&8"1e}e4 & D!DAAJxxQ]]all O??A!A!HOOA   t$A!HE 5zQ 899e, B~~

2**b)  

2   s8q=CAcMM#), "NC# "E}} $ //11<<ALL$(E+./3ar3/

AMM?3s8#;<

3  AK&&q)   99v|5 'xe<	s}}Y/06(3CC+I6HX%%a(E J *2)9F)9Ab#a*A*)9F yy6G+-- IJJs :2 8^ >t F< )Qj 0< Gs0   z6z8z	z*z
3zz!"z&c           	      >  ^
 SSK Jn  U(       a  U
4S jm
/ nU R                  [        [        5       HT  n[        UR                  [        [        45      (       d  M*  T
" UR                  6 u  pgUSLd  MB  UR                  XW45        MV     U(       a  U R                  U5      n U" U 5      u  p[        U SUS9R                  U5      $ U(       a*  [        U 5      u  p[        [        [        U SS95      U5      $ [        U 5      n	U	R                  [        [         S S	95      $ )
a	  
Collect exponents on powers as assumptions allow.

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

Given ``(bb**be)**e``, this can be simplified as follows:
    * if ``bb`` is positive, or
    * ``e`` is an integer, or
    * ``|be| < 1`` then this simplifies to ``bb**(be*e)``

Given a product of powers raised to a power, ``(bb1**be1 *
bb2**be2...)**e``, simplification can be done as follows:

- if e is positive, the gcd of all bei can be joined with e;
- all non-negative bb can be separated from those that are negative
  and their gcd can be joined with e; autosimplification already
  handles this separation.
- integer factors from powers that have integers in the denominator
  of the exponent can be removed from any term and the gcd of such
  integers can be joined with e

Setting ``force`` to ``True`` will make symbols that are not explicitly
negative behave as though they are positive, resulting in more
denesting.

Setting ``polar`` to ``True`` will do simplifications on the Riemann surface of
the logarithm, also resulting in more denestings.

When there are sums of logs in exp() then a product of powers may be
obtained e.g. ``exp(3*(log(a) + 2*log(b)))`` - > ``a**3*b**6``.

Examples
========

>>> from sympy.abc import a, b, x, y, z
>>> from sympy import Symbol, exp, log, sqrt, symbols, powdenest

>>> powdenest((x**(2*a/3))**(3*x))
(x**(2*a/3))**(3*x)
>>> powdenest(exp(3*x*log(2)))
2**(3*x)

Assumptions may prevent expansion:

>>> powdenest(sqrt(x**2))
sqrt(x**2)

>>> p = symbols('p', positive=True)
>>> powdenest(sqrt(p**2))
p

No other expansion is done.

>>> i, j = symbols('i,j', integer=True)
>>> powdenest((x**x)**(i + j)) # -X-> (x**x)**i*(x**x)**j
x**(x*(i + j))

But exp() will be denested by moving all non-log terms outside of
the function; this may result in the collapsing of the exp to a power
with a different base:

>>> powdenest(exp(3*y*log(x)))
x**(3*y)
>>> powdenest(exp(y*(log(a) + log(b))))
(a*b)**y
>>> powdenest(exp(3*(log(a) + log(b))))
a**3*b**3

If assumptions allow, symbols can also be moved to the outermost exponent:

>>> i = Symbol('i', integer=True)
>>> powdenest(((x**(2*i))**(3*y))**x)
((x**(2*i))**(3*y))**x
>>> powdenest(((x**(2*i))**(3*y))**x, force=True)
x**(6*i*x*y)

>>> powdenest(((x**(2*a/3))**(3*y/i))**x)
((x**(2*a/3))**(3*y/i))**x
>>> powdenest((x**(2*i)*y**(4*i))**z, force=True)
(x*y**2)**(2*i*z)

>>> n = Symbol('n', negative=True)

>>> powdenest((x**i)**y, force=True)
x**(i*y)
>>> powdenest((n**i)**x, force=True)
(n**i)**x

r   )posifyc                    > [        U [        [        45      (       d  U R                  [        XSS94$ T" U R                  U R                  U-  5      $ )NF)evaluate)rv   r   r   r   rh   )rQ   rR   _denests     r2   r   powdenest.<locals>._denestO  sC    a#s,,}}c!&???1661557++r5   F)r(   polarT)exponents_onlyc                 H    U R                   =(       d    [        U [        5      $ r9   )rz   rv   r   )rT   s    r2   <lambda>powdenest.<locals>.<lambda>d  s    ahh&D*Q2D&Dr5   )filter)sympy.simplify.simplifyr   atomsr   r   rv   rh   rr   rZ   subs	powdenestxreplacer   r   r+   r   r|   )eqr(   r   r   repsrM   okdprepnewr   s             @r2   r   r     s    v /	, #s#A!&&3*-- !&&)U?KK(	 $
 B":56??EE2,)Jr$$GH#NN
"+C<<	DF G Gr5   yc                 	   SSK Jn  U R                  5       u  p#UR                  (       d  [	        U[
        5      (       a.  US:w  a(  UR                  U5      nUb  Un UR                  5       u  p#U[        R                  L a  UR                  (       a  / n/ nUR                   HR  n[        S [        R                  " U5       5       5      (       a  UR                  U5        MA  UR                  U5        MT     U" [        U6 5      n[!        [        U5      [        U6 5      $ UR                  5       u  pU	[        R"                  L aE  UR                  (       d4  UR$                  (       a  UR&                  S:w  d  UR(                  (       d  U $ / / p[        R                  " U5       HF  nUR*                  (       a!  U
R                  UR                  5       5        M5  UR                  U5        MH     [-        U
5      S:X  aG  U
S   S   R                  (       d0  [!        U
S   S   U
S   S   U-  5      [/        [        U6 U-  5      -  $ U
(       a@  [        U
 VVs/ s H  u  p[/        XU-  -  5      PM     snn6 [/        [        U6 U-  5      -  $ UR0                  (       aR  [3        [5        U5      5      nUR                  (       a-  UR                  u  pX?-  nUR                  S   n[!        UU5      $ UR                  (       a+  [        S [        R                  " U5       5       5      (       a  U $ S n[3        [5        U5      5      nUR6                  (       aZ  UR                  n[9        UU5      nUS:w  a<  UR;                  5       u  nn[=        UU[        U Vs/ s H  nUU-  PM
     sn6 -  5      n[	        U[4        5      (       d  UR                  (       d  UR                  S   R                  (       d"  [	        UR                  S   [
        5      (       aW  [?        UR                  S   5      n[A        UR
                  5      S:  S:X  a#  [!        URB                  UR
                  U-  5      $ U $ / n/ nUR                   H8  nUR6                  (       a  UR                  U5        M'  UR                  U5        M:     [!        [        U" [        U6 5      5      U[        U6 -  5      $ s  snnf s  snf )zb
Denest powers.

This is a helper function for powdenest that performs the actual
transformation.
r   )
logcombiner6   c              3   B   #    U  H  n[        U[        5      v   M     g 7fr9   )rv   r   )r;   rm   s     r2   r=   _denest_pow.<locals>.<genexpr>~  s     C1B2:b#&&1Bs   c              3   8   #    U  H  oR                   v   M     g 7fr9   )rw   )r;   ss     r2   r=   r     s     ?.>99.>r?   c                    X4 Vs/ s H  o"R                  5       PM     snu  p4[        US   US   5      R                  5       S   n[        US   R	                  SS9S   US   R	                  SS9S   -  6 n[        XV5      $ s  snf )Nr   r6   T)cset)rN   r!   r   r   args_cncr   )aar   r   arQ   rS   gs          r2   nc_gcd_denest_pow.<locals>.nc_gcd  s    +-(3(Q (3!adO**,Q/!A$--T-*1-!40H0KKM1   4s   BT)"r   r   rP   rz   rv   r   _eval_powerr   Exp1rs   rr   anyr   rY   rZ   r   r   rJ   rK   rL   r   r   r   r   rI   r   r   rp   r   rN   r   r|   r   rh   )r   r   rQ   rR   r   logsotherr<   _r   polars	nonpolarsr   r   logbrS   rh   r   glogbrr   r   cgrgr   r   s                            r2   r|   r|   i  s    3>>DAxx:a%%!q&mmA?B??$DA 	AFF{qxx&&BCr1BCCCBR 	 
 #t*%3t9c5k**MMOEA	QUU{AHHMMaccQhMM	 BImmA;;MM"..*+R 	 
 6{aq	! 3 36!9Q<1a03	?A;M1NNN	6B6xYrqDz*6BCsI)*+ 	+ 	||#a&!;;iiGAFA99Q<DtQ< 88s?cmmA.>???	! s1vE||zz64 6^^%FBBs$,?$QQqS$,?'@$@AE %U\\::a=:ejjmS#A#A

1.EEII"t+5::uyy{33	 CEZZ88JJqMLLO	 
 s:c3i()1S%[=99m CH -@s   S"
S(N)FF)1collectionsr   	functoolsr   mathr   sympy.core.functionr   r   r   
sympy.corer	   r
   r   r   r   r   r   r   r   sympy.core.sortingr   r   sympy.core.numbersr   r   r   sympy.core.mulr   sympy.core.rulesr   sympy.functionsr   r   r   r   r   r   "sympy.matrices.expressions.matexprr   sympy.polysr    r!   sympy.ntheory.factor_r"   r+   r   rx   r|   rA   r5   r2   <module>r      sg    #   C C X X X 8 > > & & K K ;   . e5) \K~sGj 3Ze:r5   