
    g                       d dl mZ d dlmZ d dlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ dd	lmZ dd
lmZmZmZmZmZ ddlmZmZ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*  G d de          Z+ e*d          Z,e,-                    e.e.fe+           ddl-m/Z/ ddl0m1Z1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z7m8Z8m9Z9 dS )    )annotations)Callable)product   )_sympify)cacheit)S)Expr)PrecisionExhausted)expand_complexexpand_multinomial
expand_mul_mexpand	PoleError)
fuzzy_bool	fuzzy_not	fuzzy_andfuzzy_or)global_parameters)is_gtis_lt)
NumberKindUndefinedKind)sift)sympy_deprecation_warning)as_int)
Dispatcherc                      e Zd ZU dZdZdZded<   ded<   edCd            ZdDd
Z	e
dEd            Ze
dEd            Ze
d             Zed             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd  Zd! Z d" Z!d# Z"d$ Z#d% Z$d& Z%d' Z&d( Z'd) Z(dFd*Z)d+ Z*d, Z+d- Z,d. Z-d/ Z.d0 Z/d1 Z0d2 Z1d3 Z2d4 Z3dGd6Z4dHd8Z5dId9Z6ed:             Z7 fd;Z8d< Z9d= Z:d> Z;d? Z<dJd@Z=dA Z>dB Z? xZ@S )KPowa%  
    Defines the expression x**y as "x raised to a power y"

    .. 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.

    Singleton definitions involving (0, 1, -1, oo, -oo, I, -I):

    +--------------+---------+-----------------------------------------------+
    | expr         | value   | reason                                        |
    +==============+=========+===============================================+
    | z**0         | 1       | Although arguments over 0**0 exist, see [2].  |
    +--------------+---------+-----------------------------------------------+
    | z**1         | z       |                                               |
    +--------------+---------+-----------------------------------------------+
    | (-oo)**(-1)  | 0       |                                               |
    +--------------+---------+-----------------------------------------------+
    | (-1)**-1     | -1      |                                               |
    +--------------+---------+-----------------------------------------------+
    | S.Zero**-1   | zoo     | This is not strictly true, as 0**-1 may be    |
    |              |         | undefined, but is convenient in some contexts |
    |              |         | where the base is assumed to be positive.     |
    +--------------+---------+-----------------------------------------------+
    | 1**-1        | 1       |                                               |
    +--------------+---------+-----------------------------------------------+
    | oo**-1       | 0       |                                               |
    +--------------+---------+-----------------------------------------------+
    | 0**oo        | 0       | Because for all complex numbers z near        |
    |              |         | 0, z**oo -> 0.                                |
    +--------------+---------+-----------------------------------------------+
    | 0**-oo       | zoo     | This is not strictly true, as 0**oo may be    |
    |              |         | oscillating between positive and negative     |
    |              |         | values or rotating in the complex plane.      |
    |              |         | It is convenient, however, when the base      |
    |              |         | is positive.                                  |
    +--------------+---------+-----------------------------------------------+
    | 1**oo        | nan     | Because there are various cases where         |
    | 1**-oo       |         | lim(x(t),t)=1, lim(y(t),t)=oo (or -oo),       |
    |              |         | but lim( x(t)**y(t), t) != 1.  See [3].       |
    +--------------+---------+-----------------------------------------------+
    | b**zoo       | nan     | Because b**z has no limit as z -> zoo         |
    +--------------+---------+-----------------------------------------------+
    | (-1)**oo     | nan     | Because of oscillations in the limit.         |
    | (-1)**(-oo)  |         |                                               |
    +--------------+---------+-----------------------------------------------+
    | oo**oo       | oo      |                                               |
    +--------------+---------+-----------------------------------------------+
    | oo**-oo      | 0       |                                               |
    +--------------+---------+-----------------------------------------------+
    | (-oo)**oo    | nan     |                                               |
    | (-oo)**-oo   |         |                                               |
    +--------------+---------+-----------------------------------------------+
    | oo**I        | nan     | oo**e could probably be best thought of as    |
    | (-oo)**I     |         | the limit of x**e for real x as x tends to    |
    |              |         | oo. If e is I, then the limit does not exist  |
    |              |         | and nan is used to indicate that.             |
    +--------------+---------+-----------------------------------------------+
    | oo**(1+I)    | zoo     | If the real part of e is positive, then the   |
    | (-oo)**(1+I) |         | limit of abs(x**e) is oo. So the limit value  |
    |              |         | is zoo.                                       |
    +--------------+---------+-----------------------------------------------+
    | oo**(-1+I)   | 0       | If the real part of e is negative, then the   |
    | -oo**(-1+I)  |         | limit is 0.                                   |
    +--------------+---------+-----------------------------------------------+

    Because symbolic computations are more flexible than floating point
    calculations and we prefer to never return an incorrect answer,
    we choose not to conform to all IEEE 754 conventions.  This helps
    us avoid extra test-case code in the calculation of limits.

    See Also
    ========

    sympy.core.numbers.Infinity
    sympy.core.numbers.NegativeInfinity
    sympy.core.numbers.NaN

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Exponentiation
    .. [2] https://en.wikipedia.org/wiki/Zero_to_the_power_of_zero
    .. [3] https://en.wikipedia.org/wiki/Indeterminate_forms

    Tis_commutativeztuple[Expr, Expr]args_argsNc                   |t           j        }t          |          }t          |          }ddlm} t          ||          st          ||          rt          d          ||fD ]@}t          |t                    s)t          dt          |          j
        dddd	           A|rO|t          j        u rt          j        S |t          j        u rt          |t          j                  rt          j        S t          |t          j                  r&t%          |t          j                  rt          j        S t%          |t          j                  r(|j        rt          j        S |j        d
u rt          j        S |t          j        u rt          j        S |t          j        u r|S |dk    r|st          j        S |j        j
        dk    rI|t          j        k    r8ddlm}  |t3          ||j                  t3          ||j                            S nb|j        r|j        s|j        rM|j        r|j         s|j!        r8|"                                r$|j#        r| }n|j$        rt3          | |           S t          j        ||fv rt          j        S |t          j        u r,tK          |          j&        rt          j        S t          j        S ddl'm(} |j)        s	|t          j        urt          ||          sddl*m+} ddl'm,}	 ddl-m.}
  ||d
          /                                \  }} |
|          \  }}t          ||	          r#|j0        d         |k    rt          j        ||z  z  S |j1        roddl2m3}m4}  | ||                    }|j!        rL|rJ| |	 ||d
                     |t          j5        z  t          j6        z  z   k    rt          j        ||z  z  S |7                    |          }||S t          j8        | ||          }| 9                    |          }t          |t2                    s|S |j:        o|j:        |_:        |S )Nr   )
Relationalz Relational cannot be used in Powzf
    Using non-Expr arguments in Pow is deprecated (in this case, one of the
    arguments is of type zf).

    If you really did intend to construct a power with this base, use the **
    operator instead.z1.7znon-expr-args-deprecated   )deprecated_since_versionactive_deprecations_target
stacklevelFAccumulationBoundsr   AccumBounds)	exp_polar)factor_termslog)fraction)sign)r3   im);r   evaluater   
relationalr%   
isinstance	TypeErrorr
   r   type__name__r	   ComplexInfinityNaNInfinityr   OneNegativeOner   Zero	is_finite	__class__Exp1!sympy.calculus.accumulationboundsr-   r   minmax	is_Symbol
is_integer
is_Integer	is_numberis_Mul	is_Numbercould_extract_minus_signis_evenis_oddabsis_infinite&sympy.functions.elementary.exponentialr.   is_Atom	exprtoolsr/   r1   sympy.simplify.radsimpr2   as_coeff_Mulr"   is_Add$sympy.functions.elementary.complexesr3   r4   ImaginaryUnitPi_eval_power__new__ _exec_constructor_postprocessorsr!   )clsber5   r%   argr-   r.   r/   r1   r2   cexnumdenr3   r4   sobjs                      L/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/core/power.pyr\   zPow.__new__v   s   (1HQKKQKK 	+*****a$$ 	@
1j(A(A 	@>??? q6 	 	Cc4(( )s)),   .3/I 
 
 
 
  >	A%%%uAJAE?? &:%AM** "uQ "6MAM** %{ 1 00{e++ uAF{{uaeb((%)===;;MMMMMM&;s1ae}}c!QUmmDDD  + '!, '!, ';'+,8'78{'4466' 9 'AAX 'AJJ;&uAuaeq66% !5Lu MLLLLLy 3Qaf__Z9=U=U_777777JJJJJJ??????(L777DDFFEAr'x||HC!#s++ 3q0@0@ v#. 3QQQQQQQQ DAKK; 31 3 #\\!%%@%@%@$@ A AAaoDUVWVZDZ Z2[ 2[#$6AcE?2mmA&&?Jl31%%22377#s## 	J.C13C
    r   c                @    | j         t          j        k    rddlm} |S d S Nr   r0   )baser	   rC   rR   r1   )selfargindexr1   s      rh   inversezPow.inverse   s-    9BBBBBBJtri   returnr
   c                    | j         d         S Nr   r#   rm   s    rh   rl   zPow.base       z!}ri   c                    | j         d         S Nr   rs   rt   s    rh   expzPow.exp   ru   ri   c                N    | j         j        t          u r| j        j        S t          S N)rx   kindr   rl   r   rt   s    rh   r{   zPow.kind   s!    8=J&&9>!  ri   c                    dd| j         fS )N      )r:   r^   s    rh   	class_keyzPow.class_key   s    !S\!!ri   c                t   ddl m}m} |                                 \  }} ||                    |          |          ru|                                rc ||                    |          |          rt          | |          S  ||                    |          |          rt          | |           S d S d S d S )Nr   )askQ)	sympy.assumptions.askr   r   as_base_expintegerrM   evenr   odd)rm   assumptionsr   r   r_   r`   s         rh   _eval_refinezPow._eval_refine   s    00000000!!13qyy||[)) 	#a.H.H.J.J 	#s166!99k** #A2qzz!QUU1XX{++ #QB

{"		# 	# 	# 	## #ri   c                   |                                  \  }}|t          j        u r||z  |z  S d }|j        rd}nw|j        rd}nl|j        dddlm}m}m	}m
} ddlm}	m}
 ddlm} d }d }|j        r|dk    rS ||          rG|j        d	u r$t          j        |z  t%          | ||z            z  S |j        d
u rt%          ||           S nI|j        rB|j        rt)          |          }|j        r%t)           ||                    t          j        z  }t)          |          dk     d	k    s|dk    rd}ny|j        rd}nn ||          j        rt)          |          dk     d	k    rd}nC ||          r |	dt          j        z  t          j        z  |z   |t          j        | ||          z  dt          j        z  z  z
            z            }|j        r' | ||          |z
            dk    r ||          }nd }n	  |	dt          j        z  t          j        z  |z   |t          j         || |
|          z            dz  t          j        z  z
            z            }|j        r' | ||          |z
            dk    r ||          }nd }n# t4          $ r d }Y nw xY w||t%          |||z            z  S d S )Nr   r   )ra   r4   rer3   rx   r1   )floorc                    t          | dd          dk    rdS |                                 \  }}|j        r|dk    rdS dS dS )zZReturn True if the exponent has a literal 2 as the
                denominator, else None.qNr~   T)getattras_numer_denomrH   )r`   nds      rh   _halfzPow._eval_power.<locals>._half
  sZ     1c4((A--4''))1<  AFF4   FFri   c                j    	 |                      dd          }|j        r|S dS # t          $ r Y dS w xY w)zXReturn ``e`` evaluated to a Number with 2 significant
                digits, else None.r~   TstrictN)evalfrL   r   )r`   rvs     rh   _n2zPow._eval_power.<locals>._n2  sW    400B| "!	" ")   DDs   $ 
22r*   TFr~   )r   r	   r<   rH   is_polaris_extended_realrX   ra   r4   r   r3   rR   rx   r1   #sympy.functions.elementary.integersr   is_negativer?   r   rN   rP   is_imaginaryrY   is_extended_nonnegativerZ   Halfr   )rm   otherr_   r`   rf   ra   r4   r   r3   rx   r1   r   r   r   s                 rh   r[   zPow._eval_power   s   !!1::qD5=  I	AAZ G	AA+NNNNNNNNNNNNGGGGGGGGAAAAAA        ! . 77uU|| 2=D00#$=%#7QB%8H8H#HH]e33#&q5&>>1Y 7) #FF~ 71JJq6FFQJ4''166AA. 
!AARUU2 !A
t7K7KAAU5\\ !AadF1?25833q661QT6!22:4 :4 4 5 5A) !cc$$q''A+.>.>!.C.C DGG 

Aao-ad258afrr!CCFF(||A~ad'::;;< = =A ) !cc$$q''A+.>.>!.C.C DGG )   AAA =SAeG__$$ =s   	BJ   J/.J/c                   | j         | j        }}|j        r|j        r|j        r||z  dk    rt          j        S ddlm} |j        r|j        r|j        rt          |          t          |          t          |          }}}|
                                }|dk    r]||k    rW|
                                dz  |k    r<t           ||                    }	t          t          ||	||	z  z   |                    S t          t          |||                    S ddlm}
 t          |t                     r6|j        r/|j        r( |
||          } |
t!          ||d          |          S t          |t                     ro|j        rj|j        ret          |          
                                }|dk    r@ ||          }	|	 |
||	          z   } |
t!          ||d          |          S d	S d	S d	S d	S d	S d	S )
aO  A dispatched function to compute `b^e \bmod q`, dispatched
        by ``Mod``.

        Notes
        =====

        Algorithms:

        1. For unevaluated integer power, use built-in ``pow`` function
        with 3 arguments, if powers are not too large wrt base.

        2. For very large powers, use totient reduction if $e \ge \log(m)$.
        Bound on m, is for safe factorization memory wise i.e. $m^{1/4}$.
        For pollard-rho to be faster than built-in pow $\log(e) > m^{1/4}$
        check is added.

        3. For any unevaluated power found in `b` or `e`, the step 2
        will be recursed down to the base and the exponent
        such that the $b \bmod q$ becomes the new base and
        $\phi(q) + e \bmod \phi(q)$ becomes the new exponent, and then
        the computation for the reduced expression can be done.
        r   )totientP   r&   r   )ModFr5   N)rl   rx   rH   is_positiver	   r@   %sympy.functions.combinatorial.numbersr   rI   int
bit_lengthIntegerpowmodr   r7   r   rJ   )rm   r   rl   rx   r   r_   r`   mmbphir   r   s               rh   	_eval_ModzPow._eval_ModO  sI   0 Itxc> 	Bco 	B| qAvEEEEEE -3> -al -d))SXXs1vva1\\^^88RALLNNA,=,B,Bggajj//C"3q##+q#9#9:::s1a||,,,      $$$ > >T^ >s4||s3tS59991===#s## B B3= B VV..00
 ##!'!**CC-C3s4u===qAAA9	B 	B 	B 	B(B B B B B B
 $#ri   c                R    | j         j        r| j         j        r| j        j        S d S d S rz   )rx   rH   r   rl   rN   rt   s    rh   _eval_is_evenzPow._eval_is_even  s:    8 	%48#7 	%9$$	% 	% 	% 	%ri   c                P    t                               |           }|du r| j        S |S NT)r   _eval_is_extended_negativerA   )rm   ext_negs     rh   _eval_is_negativezPow._eval_is_negative  s+    0066d??>!ri   c                "   | j         | j        k    r| j         j        rdS d S | j         j        r| j        j        rdS d S | j         j        r| j        j        rdS | j        j        rdS d S | j         j        r| j        j	        r| j        j        S d S | j         j
        r| j        j        rdS d S | j         j        rX| j        j        r%| j        dz  }|j        rdS |j        r|j        du rdS | j        j        rddlm}  || j                   j        S d S d S )NTFr&   r   r0   )rl   rx   r   r   is_realis_extended_negativerN   rO   is_zeror   is_extended_nonpositiver   rH   rR   r1   )rm   r   r1   s      rh   _eval_is_extended_positivezPow._eval_is_extended_positive  s|   9  y0 t Y" 	3x t Y+ 	3x tx u Y 	3x( (x''( (Y. 	3x u Y# 		3x" !HqL9  4< !AI$6$6 5x$ 3FFFFFFs49~~22		3 		33 3ri   c                   | j         t          j        u r| j        j        s| j        j        rdS | j        j        r*| j         j        r| j        j        rdS | j         j	        rdS d S | j        j
        r| j         j        rdS d S | j        j        r| j         j        rdS d S | j        j        r| j         j        rdS d S | j        j        r| j         j	        rdS d S | j        j        r| j         j	        rdS d S d S NFT)rx   r	   r   rl   
is_complexr   r   rO   rA   rN   is_extended_positiver   r   r   rt   s    rh   r   zPow._eval_is_extended_negative  sL   8qvy# ty'A u9) 	x 49#6 tx u Y+ 	x( u Y 	x( u Y. 	x/ u Y. 	x u Y' 	x u	 	 ri   c                Z   | j         j        r| j        j        rdS | j        j        rdS d S | j         t
          j        k    r| j        t
          j        u S | j         j        du r| j         j        r| j        j        rdS | j        j	        r| j         j
        S | j        j        rdS | j        j
        r\| j        j        rRdt          | j                   z
  j        r| j        j        S dt          | j                   z
  j        r| j        j        S d S d S d S | j         j        r| j        j	        rdS d S d S )NTFr   )rl   r   rx   r   r   r	   rC   NegativeInfinityrA   r   rQ   is_nonnegativer   rP   r   rt   s    rh   _eval_is_zerozPow._eval_is_zero  sc   9 	x, t1 u Y!&  8q111Y%''y" 
9tx'9 
9u% 9y,,( 9u% 9$(*C 9DI&< 9888#di..(> 9888	9 9 9 99 9Y  	TX%9 	5	 	 	 	ri   c                   | j         \  }}|j        r|j        du r	|j        rdS |j        r'|j        r |t          j        u rdS |j        s|j        rdS |j        rE|j        r>|j        s|j        r0t          |dz
  j
                  rt          |dz   j
                  rdS |j        r|j        r | j        | j          }|j        S |j        r|j        r|dz
  j        rdS |j        r|j        r|dz   j        rdS d S d S d S )NFTr   )r"   is_rationalrH   r   r	   r?   r   r   rA   r   r   rL   funcrI   )rm   r_   r`   checks       rh   _eval_is_integerzPow._eval_is_integer  sY   y1= 	|u$$$u< 	AL 	AM!!t 1= t< 	AM 	q{ 	al 	!a%)) iQ.H.H u; 	$1; 	$DIty)E##= 	Q] 	A/B 	5= 	Q] 	A/B 	5	 	 	 	 	 	ri   c                H   | j         t          j        u rC| j        j        rdS | j        j        r)dt          j        z  | j        z  t          j        z  j        S ddl	m
}m} | j         j        }|y| j         j        |k    r| j         j        j        r| j        j        S | j         j        t          k    r5| j         j         t          j        u r| j         j        j        r| j        j        S d S | j        j        }|d S |rx|rv| j         j        rdS | j         j        r| j        j        rdS | j        j        r| j         j        rdS | j        j        r| j        j        rdS | j         j        r| j        j        rdS |r:| j        j        r.| j         j        du r t          | j         | j                   j        S | j         j        }| j        j        }|r| j        j        r| j        j        rdS | j        j        rdS n|r || j                   j        rdS | j        j        rM| j                                        \  }}|r.|j        r't3          | j         |z  | j         |z  d          j        S n3| j         t          j         t          j        fv r| j        dz  j        du rdS |r|r| j         t          j        u rdS | j                            t          j                  }|r`| j         j        r+|j        r$| j         j        r| j         dz
  j        r	|j        rdS | || j                   z  t          j        z  j        }	|	|	S |du rg|rgt=          | j        t>                    r| j        j         dk    rdS ddl!m"}
  |
| j                   | j        z  t          j        z  }|j#        r|j        S d S d S d S )	NTr~   r   )r1   rx   Fr   r   ra   )$rl   r	   rC   rx   r   r   rY   rZ   rN   rR   r1   r   r   r   r   rH   is_extended_nonzeror   r   is_Rationalr   rO   rW   as_coeff_AddrI   Mulr?   coeffr   
is_nonzeror7   RationalprX   ra   r   )rm   r1   rx   real_breal_eim_bim_erb   aokra   is               rh   _eval_is_extended_realzPow._eval_is_extended_real  s   9x( At& A!/)$(2147@@CCCCCCCC+>y~$$)C$x,,y~$$16)A)AdimF`)Ax,,F*>F 	!f 	!y- 
!t2 !tx7W !t$ !)F !t$ !)@ !t/ !8' ! 5 	>dh3 	>	8IU8R8Rty48),,==y%x$ 	!x" !8# !4X_ ! 5! 	!##di..5 	!t !x,,..1 U U	1dilUD D DDTU/AAAHQJ*e33 5 
	d 
	yAM))tq//A 9( %Q] %y+ %Q0J %q| %$uDI&qt+7>IU??v?$(H-- $(*//u@@@@@@DItx',A| $|# ???
$ $ri   c                    | j         t          j        k    r%t          | j        j        | j        j        g          S t          d | j        D                       r| 	                                rdS d S d S )Nc              3  $   K   | ]}|j         V  d S rz   )r   ).0r   s     rh   	<genexpr>z'Pow._eval_is_complex.<locals>.<genexpr>?  s$      //q|//////ri   T)
rl   r	   rC   r   rx   r   r   allr"   _eval_is_finitert   s    rh   _eval_is_complexzPow._eval_is_complex:  s{    9TX0$(2OPQQQ//TY///// 	D4H4H4J4J 	4	 	 	 	ri   c                   | j         j        du rdS | j         j        r| j        j        r| j        j        }||S d S | j         t          j        k    r8d| j        z  t          j        t          j	        z  z  }|j
        rdS |j        rdS d S | j        j        rddlm}  || j                   j        }|dS | j         j        rW| j        j        rK| j         j        rdS | j        j        }|s|S | j        j        rdS d| j        z  j        }|r| j         j        S |S | j         j        du r9ddlm}  || j                   | j        z  t          j        z  }d|z  j        }	|	|	S d S d S )NFr~   Tr   r0   r   )rl   r!   r   rx   rH   rO   r	   rC   rZ   rY   rN   rR   r1   r   r   r   r   rX   ra   )
rm   r   fr1   imlograthalfra   r   isodds
             rh   _eval_is_imaginaryzPow._eval_is_imaginaryB  s   9#u,,59! 	x" ho?J9DHQ_ 45Ay ux t48  	BBBBBBC	NN/E u9% 	 $(*C 	 y$  uh* J8&   5dhJ2D 5#y44K9%..@@@@@@DItx',AqSLE  /. ! ri   c                    | j         j        rG| j         j        r| j        j        S | j         j        r| j        j        rdS | j        t          j        u rdS d S d S r   )rx   rH   r   rl   rO   r   r	   r?   rt   s    rh   _eval_is_oddzPow._eval_is_odds  sk    8 	x# y''( TY-= tam++t	 	
 ,+ri   c                   | j         j        r(| j        j        rdS | j        j        s| j        j        rdS | j        j        }|d S | j         j        }|d S |r)|r)| j         j        st          | j        j                  rdS d S d S d S r   )	rx   r   rl   r   rQ   r   rA   r   r   )rm   c1c2s      rh   r   zPow._eval_is_finite|  s    8 	y  uy$ 	(< tY :FX:F 	" 	x& )DI4E*F*F t	 	 	 	 ri   c                `    | j         j        r| j        j        r| j        dz
  j        rdS dS dS dS )zM
        An integer raised to the n(>=2)-th power cannot be a prime.
        r   FN)rl   rH   rx   r   rt   s    rh   _eval_is_primezPow._eval_is_prime  sP     9 	DH$7 	TX\<V 	5	 	 	 	 	 	ri   c                    | j         j        rS| j        j        rI| j         dz
  j        r| j        dz
  j        s'| j         dz   j        r| j        j        r| j        j        r
dS dS dS dS dS dS )zS
        A power is composite if both base and exponent are greater than 1
        r   TN)rl   rH   rx   r   r   rN   rt   s    rh   _eval_is_compositezPow._eval_is_composite  s     I  	TX%8 	i!m(	.2hl-G	Y]'	,0H,@	EIXEU	 4	 	 	 	 	 	 	 	 	 	ri   c                    | j         j        S rz   )rl   r   rt   s    rh   _eval_is_polarzPow._eval_is_polar  s    y!!ri   c                d   ddl m} t          | j        |          rq| j                            ||          }| j                            ||          }t          ||          r|                    |          S |                     ||          S ddlm}m	} d }|| j        k    s||k    rs| j        t          j        k    r^|j        r9t          |t                    r$ || j                            ||                    S || j                            ||          z  S t          || j                  r=| j        |j        k    r- || j        |j                  }	|	j        rt!          ||	          S t          || j                  r| j        |j        k    r| j        j        du r| j                            t&          d          }
|j                            t&          d          } ||
||          \  }}}|r=|                     ||          }|#t)          |t!          |j        |                    }|S n|j        }g }g }|                                }| j        j        D ]}|                    ||          }|                                }
 ||
||          \  }}}|r0|                    ||z             ||                    |           o|j        s
|j        s d S |                    |           |rIt5          | }|                    |dk    rt!          | j        |d          n| j                   t)          | S t          ||          s|j        r|j        t          j        u r| j        j        r| j        j        r|j                            t&          d          }
| j         || j                  z                      t&          d          } ||
||          \  }}}|rE|                     ||          }|#t)          |t!          |j        |                    }|S d S d S d S d S d S )	Nr   r,   r   c                X   | \  }}|\  }}||k    r|j         rb||z  }	 t          |d           d}nC# t          $ r6 |                                \  }	}
|	j        r|
j        p|	j        o|
j        }Y nw xY w||dfS t          |t                    s|f}t          d |D                       sdS 	 t          t          |          t          |                    \  }}|dk     r|dk    r|dz  }|t          |          z  }|dk    rd}nt          |g|R  }d||fS # t          $ r Y nw xY wdS )	a*  Return (bool, pow, remainder_pow) where, if bool is True, then the
            exponent of Pow `old` will combine with `pow` so the substitution
            is valid, otherwise bool will be False.

            For noncommutative objects, `pow` will be an integer, and a factor
            `Pow(old.base, remainder_pow)` needs to be included. If there is
            no such factor, None is returned. For commutative objects,
            remainder_pow is always None.

            cti are the coefficient and terms of an exponent of self or old
            In this _eval_subs routine a change like (b**(2*x)).subs(b**x, y)
            will give y**2 since (b**x)**2 == b**(2*x); if that equality does
            not hold then the substitution should not occur so `bool` will be
            False.

            Fr   TNc              3  $   K   | ]}|j         V  d S rz   )rH   )r   terms     rh   r   z1Pow._eval_subs.<locals>._check.<locals>.<genexpr>  s$      BB4tBBBBBBri   )FNNr   r   )r!   r   
ValueErrorr   r   r   r   r7   tupler   divmodr   )ct1ct2oldcoeff1terms1coeff2terms2r   combinesr_   r`   	remainderremainder_pows                rh   _checkzPow._eval_subs.<locals>._check  s   " !NFF NFF% " -Chs51111#'% h h h"001#$=#>QY#g!BRBgWXWgh
 $S$.. &fe44 +"(BB6BBBBB 100)/vv)O)OY77yA~~1HC%7I$>>,0MM,/	,CF,C,C,CM#S-77%    %$s"   3 =A32A3/A*D 
D'&D'F)as_Addr   r   )rD   r-   r7   rx   rl   subs__rpow__r   rR   r1   r	   rC   is_Functionr   _subsrL   r   rW   as_independentSymbolr   as_coeff_mulr"   appendr!   rH   Addis_Powr   r   )rm   r  newr-   r_   r`   rx   r1   r
  lr   r  r   r   r	  resultoargnew_lo_alr   newaexpos                         rh   
_eval_subszPow._eval_subs  s   AAAAAAdh,, 	#	sC((Ac3''A![)) %zz!}}$99Q??"CCCCCCCC8	% 8	% 8	%t $)s

tyAF/B/B 5:c8#<#< 5s48>>#s33444DHNN34444 c49%% 	#$(cg*=*=DIsx((A{ #3{{"c49%% "	'$)sx*?*?x%''h--fU-CCg,,VE,BB)/S#)>)>&C "!YYsC00F$0!$VS=-I-I!J!J!M" w'')) & &A773,,D++--C-3VCc-B-B*B] S#X...(4 KK666  /   KK%%%% ':DLLQRTYu!E!E!E!EX\Xabbb;&sC   		SZ 		CH4F4FTXMf4Fkokt  lA4F'(((>>C8CC	NN*::u ; & &C%+VCc%:%:"B] 3,, , SX})E)EFFF 5G4F 		 		4F4F4F4F
 ri   c                r    | j         \  }}|j        r#|j        |j        k     r|j        dk    rd|z  | fS ||fS )a  Return base and exp of self.

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

        If base a Rational less than 1, then return 1/Rational, -exp.
        If this extra processing is not needed, the base and exp
        properties will give the raw arguments.

        Examples
        ========

        >>> from sympy import Pow, S
        >>> p = Pow(S.Half, 2, evaluate=False)
        >>> p.as_base_exp()
        (2, -2)
        >>> p.args
        (1/2, 2)
        >>> p.base, p.exp
        (1/2, 2)

        r   r   )r"   r   r   r   )rm   r_   r`   s      rh   r   zPow.as_base_exp   sG    0 y1= 	QS13YY1377Q37N!tri   c                   ddl m} | j        j        | j        j        }}|r || j                  | j        z  S |r| j         || j                  z  S |du r$|du r"t          |           }|| k    r ||          S d S d S d S )Nr   )adjointF)rX   r!  rx   rH   rl   r   r   )rm   r!  r   r   expandeds        rh   _eval_adjointzPow._eval_adjoint=  s    @@@@@@x"DI$91 	0749%%tx// 	09ggdh////::!u**%d++H4wx((( :**ri   c                   ddl m} | j        j        | j        j        }}|r || j                  | j        z  S |r| j         || j                  z  S |du r$|du r t          |           }|| k    r ||          S | j        r| S d S )Nr   )	conjugateF)rX   r%  rx   rH   rl   r   r   r   )rm   rb   r   r   r"  s        rh   _eval_conjugatezPow._eval_conjugateI  s    GGGGGGx"DI$91 	*1TY<<)) 	*9aakk))::!u**%d++H4q{{"  	K	 	ri   c                   ddl m} | j        t          j        k    r7|                     t          j        | j                                                  S | j        j        | j        j        p| j        j	        }}|r| j        | j        z  S |r || j                  | j        z  S |du r$|du r"t          |           }|| k    r ||          S d S d S d S )Nr   )	transposeF)rX   r(  rl   r	   rC   r   rx   rH   r   rQ   r   )rm   r(  r   r   r"  s        rh   _eval_transposezPow._eval_transposeW  s    BBBBBB999QVTX%7%7%9%9:::x"TY%9%RTY=R1 	'9dh&& 	29TY''11::!u**%d++H4 y*** :**ri   c                6     j          j        }t          j        k    rJddlm} t          ||          r4|j        r-ddlm	}  | 
                    |j                  g|j        R  S |j        r|                    dd          sj        du s|                                rt|j        rt#           fd|j        D              S j        rKt'          |j        d d	          \  }}|r.t#           fd
|D              t)          j        |          z  z  S  S )za**(n + m) -> a**n*a**mr   )Sum)ProductforceFc                <    g | ]}                     |          S  r   r   xr_   rm   s     rh   
<listcomp>z.Pow._eval_expand_power_exp.<locals>.<listcomp>q  s%    ===TYYq!__===ri   c                    | j         S rz   r    r2  s    rh   <lambda>z,Pow._eval_expand_power_exp.<locals>.<lambda>s  s	    q/? ri   Tbinaryc                <    g | ]}                     |          S r/  r0  r1  s     rh   r3  z.Pow._eval_expand_power_exp.<locals>.<listcomp>u  s%     < < <Q1a < < <ri   )rl   rx   r	   rC   sympy.concrete.summationsr+  r7   r!   sympy.concrete.productsr,  r   functionlimitsrW   getr   _all_nonneg_or_nonpposr   r"   r   r  
_from_args)rm   hintsr`   r+  r,  rb   ncr_   s   `      @rh   _eval_expand_power_expzPow._eval_expand_power_expe  sj   IH;;555555!S!! Da&6 D;;;;;;wtyyAJ77C!(CCCC8 	07E22 	0	U""a&>&>&@&@" ?=====af===>> 0QV%?%?MMM2 0 < < < < <! < < < S^B///0 0ri   c                                         dd          } j        } j        |j        s S |                    d          \  }}|rfd|D             }j        rGj        rt          |z   }n t          d |ddd         D              z   }|r|t          | z  z  }|S |s                     t          | d          S t          | g}t          |d	 d
          \  }}d }	t          ||	          }
|
d
         }||
d         z  }|
d         }|
t          j                 }|rt          j        }t          |          dz  }|dk    rn|dk    r|                    |           n|dk    r[|r9|                                 }|t          j        ur|                    |           n|                    t          j                   no|r9|                                 }|t          j        ur|                    |           n|                    t          j                   |                    |           ~|sj        r||z   |z   }|}n7j        rJ t          |          dk    rt          j        }|s%|d         j        r||                    d          z  }t          |          dz  r| }|D ]}|                    |            |t          j        ur|                    |           n|ru|rs|d         j        rP|d         t          j        ur<|                    t          j                   |                    |d                     n+|                    |           n|                    |           ~|}||z  }t          j        }|rLj        r,t          |d d
          \  }}t           fd|D              }|t           fd|D              z  }|r"|                     t          | d          z  }|S )z(a*b)**n -> a**n * b**nr-  F)split_1c                N    g | ]!}t          |d           r |j        di n|"S )_eval_expand_power_baser/  )hasattrrG  )r   r   rA  s     rh   r3  z/Pow._eval_expand_power_base.<locals>.<listcomp>  sV        1788@+!+44e444>?  ri   c                    g | ]}|d z  S )r*   r/  r   r   s     rh   r3  z/Pow._eval_expand_power_base.<locals>.<listcomp>  s    777q"u777ri   Nr*   r   c                    | j         du S NF)r   r5  s    rh   r6  z-Pow._eval_expand_power_base.<locals>.<lambda>  s    !2D2M ri   Tr7  c                |    | t           j        u rt           j        S | j        }|rdS |t          | j                  S d S r   )r	   rY   r   r   r   )r2  polars     rh   predz)Pow._eval_expand_power_base.<locals>.pred  sH    AO##&JE t}!!";<<< }ri   r&   r   r   r~   c                @    | j         o| j        j        o| j        j        S rz   )r  rx   r   rl   rJ   r5  s    rh   r6  z-Pow._eval_expand_power_base.<locals>.<lambda>  s%    AH 5;E%5;*+&*: ri   c                V    g | ]%}                      |j         |j                   &S r/  )r   r"   r   r_   r`   rm   s     rh   r3  z/Pow._eval_expand_power_base.<locals>.<listcomp>  s1    GGGQ499VQVQV_a88GGGri   c                @    g | ]}                     |d           S )Fr   r0  rR  s     rh   r3  z/Pow._eval_expand_power_base.<locals>.<listcomp>  s+    GGGA		!Q	77GGGri   )r>  rl   rx   rK   args_cncrI   r   r   r   r   r	   rY   lenr  popr>   r?   rH   rL   extendr   )rm   rA  r-  r_   cargsrB  r   r   
maybe_realrO  siftednonnegnegimagIr   nonnor   npowr`   s   ``                  @rh   rG  zPow._eval_expand_power_basey  s   		'5))IHx 	KJJuJ--	r
  	     B | = <bdBB77b2h777:;B )#u+q.(B	 >yyb1uy===r(B !(M(M  z	= 	= 	= j$''Umao& 	AD		AAAvvaQa .GGII:D15((d+++JJq}---- .GGII:D15((d+++JJq}---Q  "	AL "	SL5(EEE |### 3xx!||E $Q!1 $OAs88a< A & &AMM1"%%%%AE>>LLOOO " "q6# &Aam(C(CLL///MM3q6'****LL%%%%S!!!ERKEU 	I} I"5 +; +;! ! !e GGGGG$GGGH#GGGGGGGGHHB 	<$))CKU);;;B	ri   c           	     	   | j         \  }| }|j        r|j        dk    rj        r|j        st          |j        |j        z            }|s|S |                     ||z
            g }}|                     |          }|j        r|	                                }t          j        |          D ]}|                    ||z             t          | S t          |          }j        rSg g }	}j         D ]4}
|
j        r|                    |
           |	                    |
           5|rit          |	 }t          | }|dk    rt!          ||z  d          ||z  |z  z   S t!          ||dz
  z  d          }t#          ||z  d          ||z  |z  z   S j        rp                                \  }}
|j        rQ|
j        rI|j        sv|
j        sB|                     |j        |
j        z  |          }|j        |
j        z  |j        |
j        z  }
}nc|                     |j        |          }|j        |j        |
z  }
}n6|
j        s-|                     |
j        |          }||
j        z  |
j        }
}nd}t          |          t          |
          ddf\  }}
}}|r:|dz  r||z  |
|z  z
  |
|z  ||z  z   }}|dz  }||z  |
|
z  z
  d|z  |
z  }
}|dz  }|:t(          j        }|dk    r|||z  z   S t          |          |z  ||z  |z  z   S |	}ddlm} ddlm}  |t5          |          |          } ||g|R  S |dk    rt          fdj         D              S |dz
  z  	                                j        rt          fd	j         D              S t          fd
j         D              S |j        r[|j        dk     rPj        rIt7          |j                  |j        k    r,d|                     |           	                                z  S |j        rj        r|                    dd          sj        du s|                                rg g }}|j         D ]H}|j        r*|                    |                     |                     3|                    |           ItA          ||                     t          j!        |                    gz    S |S )zA(a + b + ..)**n -> a**n + n*a**(n-1)*b + .., n is nonzero integerr   r~   Fdeepr   )multinomial_coefficients)basic_from_dictc                .    g | ]}j         D ]}||z  S r/  r"   )r   r   grl   s      rh   r3  z0Pow._eval_expand_multinomial.<locals>.<listcomp>S  s,     K K K K KA1 K K K Kri   c                .    g | ]}j         D ]}||z  S r/  rh  )r   r   ri  multis      rh   r3  z0Pow._eval_expand_multinomial.<locals>.<listcomp>W  sC     %1 %1 %1Q%*Z%1 %1 ! &'qS %1 %1 %1 %1ri   c                    g | ]}|z  S r/  r/  )r   r   rk  s     rh   r3  z0Pow._eval_expand_multinomial.<locals>.<listcomp>[  s    $@$@$@QuW$@$@$@ri   r-  )"r"   r   r   rW   rI   r   r   r   r  _eval_expand_multinomialr  	make_argsr  r   r!   is_Orderr   r   rJ   as_real_imagr	   rY   sympy.ntheory.multinomialre  sympy.polys.polyutilsrf  rU  rP   rL   r>  r   r?  r   r@  )rm   rA  rx   r  r   radicalexpanded_base_nr   order_termsother_termsr_   r   r`  ri  r   krb   r   r^  r   re  rf  expansion_dictr   tailrl   rk  s                            @@rh   rm  zPow._eval_expand_multinomial  s    I	c? r	suqyyT[y> (CESUN++ (!M&*iicAg&>&>VG&*iia&8&8O&- G+DDFF ( #o > > 4 4d7l3333<'CA" MB+-r[ . .Az .#**1----#**1---- 	C[)A[)AAvv1!Q$UCCCac!eKK.q1q5zFFF)!A#E:::QqSUBB> !8  ,,..DAq} 8 8 | "#$< 2$(IIacACi$;$;'(s13wAC1$(IIac1$5$5'(sACE1!" " $		!#q 1 1A#$QS5!#qAA !A%(VVSVVQ%9
1a $ 1u ''(sQqSy!A#!)1 !Q#$Q319ac!eqA!GA   $ O66#$qs7N#*1::a<!A#a%#77 ONNNNNAAAAAA!9!9#a&&!!D!D '~:::::66 K K K Kdi K K KLL!AE]DDFFE| B" %1 %1 %1 %1$) %1 %1 %1  2 2  #$@$@$@$@di$@$@$@AAo 	#%!)))CE

SU""tyyt,,EEGGGGZ 	DN 			'50I0I 	%%)C)C)E)E% b4E & &> &LL4!6!67777KK%%%%$))D#.2F2F"G"G!HHJJMri   c                X   | j         j        rddlm} | j         }| j                            |          \  }}|s| t          j        fS t          dt                    \  |dk    rQ|j
        r8|j
        r1t          | j        |z            }|| k    r|                                S  |z   |z            }ns|dz  |dz  z   }||z  | |z  }}|j
        rD|j
        r=t          ||t          j        z  z   | z            }|| k    r|                                S  |z   | z            }d |                                D             }	t          fd|	D              }
d	 |                                D             }	t          fd
|	D              }d |                                D             }	t          fd|	D              }|
                    |t          j        |z  i          |                    ||i          |                    || i          z   fS ddlm}m}m} | j         j        r| j                            |          \  }}|j        rK| j         t          j        u r8|j        r| t          j        fS |j        rt          j        | j         | j         z  fS |                     |                     |d          |                     |d          z   t          j                  }	 |||          }|                     |	| j                   || j         z  }}| ||          z  | ||          z  fS | j        t          j        u rrddlm } | j                                         \  }}|r |j        |fi |} |j        |fi |} ||           ||          }} ||          |z   ||          |z  fS ddlm}m} |rDd|d<    | j        |fi |}|                     d          |k    rd S  ||           ||          fS  ||            ||           fS )Nr   )polyrc  za br   r~   c                4    g | ]}|d          d         dz  |S )r   r   r~   r/  rJ  s     rh   r3  z$Pow.as_real_imag.<locals>.<listcomp>  s)    <<<q!Q!<<<<ri   c                8    g | ]\  \  }}}||z  z  |z  z  S r/  r/  r   aabbccr   r_   s       rh   r3  z$Pow.as_real_imag.<locals>.<listcomp>  s1    AAA|xBBq"uHQUNAAAri   c                <    g | ]}|d          d         dz  dk    |S )r   r   r&   r/  rJ  s     rh   r3  z$Pow.as_real_imag.<locals>.<listcomp>  .    ===qAaDGaK1,<,<,<,<,<ri   c                8    g | ]\  \  }}}||z  z  |z  z  S r/  r/  r~  s       rh   r3  z$Pow.as_real_imag.<locals>.<listcomp>  1    BBBR"R2Xae^BBBri   c                <    g | ]}|d          d         dz  dk    |S )r   r   r&   r}   r/  rJ  s     rh   r3  z$Pow.as_real_imag.<locals>.<listcomp>  r  ri   c                8    g | ]\  \  }}}||z  z  |z  z  S r/  r/  r~  s       rh   r3  z$Pow.as_real_imag.<locals>.<listcomp>  r  ri   )atan2cossinrx   )r4   r   Fcomplexignore)!rx   rI   sympy.polys.polytoolsr{  rl   rp  r	   r@   symbolsDummyrL   r   rY   termsr  r  (sympy.functions.elementary.trigonometricr  r  r  r   r   r   r   r   r   rC   rR   expandrX   r4   r   r>  )rm   rd  rA  r{  rx   re_er   exprmagrre_partim_part1im_part3r  r  r  trptprb   rf   r4   r   r"  r   r_   s                           @@rh   rp  zPow.as_real_imagn  s   8 &	T222222(C//T/::JD$ $QV|#5e,,,DAqaxx> 3dn 3-din==Dt||#00222tUSL" " Aga'!#XuSyd> 3dn 3-td1?6J/JcT.QRRDt||#00222tQUcTM** =<DJJLL<<<AAAAAAqAAABG==DJJLL===ABBBBBBBBCH==DJJLL===ABBBBBBBBCHLL!T1aod.B!CDDMM1dAt,--q$D5>Q0R0RRT T 	MLLLLLLLLL8 &	*//T/::JD$| :AF 2 2/ (<'/ :6TYJ#999
 		$))D!,,tyyq/A/AA16JJAdD!!AYYq$(++QtxZBcc"gg:r##b''z))Y!&  BBBBBB..00JD$ 2"t{411511"t{4115113t99cc$iiqA3t99Q;D		!++CCCCCCCC 	*#(i &4;t55u5599X&&(224BxLL""X,,77r$xxD))ri   c                    ddl m} | j                            |          }| j                            |          }| | || j                  z  || j        z  | j        z  z   z  S rk   )rR   r1   rl   diffrx   )rm   rf   r1   dbasedexps        rh   _eval_derivativezPow._eval_derivative  sg    >>>>>>	q!!x}}Qtcc$)nn,utx/?	/IIJJri   c                6   |                                  \  }}|t          j        k    r+ddlm}  || j        d                              |          S |                    |          }|j        s|                    |          }|j        rz|j	        rs|j
        du rj|                                ||                                z                      |          z  }| }|                     ||                                          S |                     ||          S )Nr   r  Fr   )r   r	   rC   rR   rx   _eval_evalf_evalfrI   r   rJ   r   r%  r   r  )rm   precrl   rx   exp_functions        rh   r  zPow._eval_evalf  s   $$&&	c16>>RRRRRR<5999EEdKKK{{4  ~ 	#**T""C? 	1t~ 	1$2G52P2P>>##tdnn.>.>'>&F&Ft&L&LLD$C99T3''..000yys###ri   c                     | j         j        | rdS  | j        j        | r>t          | j                            |          o| j         j        o
| j         dk              S dS )NFr   T)rx   hasrl   bool_eval_is_polynomialrI   rm   symss     rh   r  zPow._eval_is_polynomial  ss    48< 	549=$ 		55d;; 8#8)-Q9 9 9 4ri   c                   | j         j        r@| j        j        r4t	          t          | j         j        | j        j        g                    rdS  | j        | 	                                 }|j
        s|j        S |	                                \  }}|j        r	|j        rdS |j        r;|j        r&t	          |j                  s|j        rdS ||k    rdS n|j        r|j        S |t          j        u r|j        r|j        rdS d S d S d S )NTF)rx   rH   rl   r   r   r   r   r   r   r   r  r   r   is_irrationalr	   rC   r   )rm   r   r_   r`   s       rh   _eval_is_rationalzPow._eval_is_rational  s8    H 	DI$9 	i)=ty?P(QRRSS	4DIt''))*x 	!= }}1= 	Q] 	 5< 	!} !QY''  1+;  4664  !y ;;}  u ;   ri   c                T   d }| j         j        s || j                   rdS | j         t          j        u r | j        | j         }|j        | j        k    ra| j        j        rQ| j        j        rdS | j        t          j	        z  j
        rdS | j        t          j        t          j	        z  z  j
        rdS d S d S |j        S | j        j
        rh| j         j        du r| j        j        S | j         j        du r&| j        j        r| j         j        S | j         j        rdS | j        j        r| j         j        S d S | j         j        rh| j        j        r^t          | j         j                  rt           || j                             s| j         j        du s| j         j        r| j        j
        S d S d S d S )Nc                :    	 | dz
  j         S # t          $ r Y dS w xY w)Nr   F)r   r   )r  s    rh   _is_onez'Pow._eval_is_algebraic.<locals>._is_one  s6    q))   uus   	 
TF)rl   r   r	   rC   r   r"   rx   r   is_algebraicrZ   r   rY   r   r   rH   r  )rm   r  rf   s      rh   _eval_is_algebraiczPow._eval_is_algebraic  s   	 	 	 9 	,	 2 2 	,4Y!&  	49%Av""8& $x, $$u(14-4 $$u(AOAD$89F $#t$ $
$ $ ~%X! 	,y%..x''y E))8&  911Y+  4x# .y--. .Y# 	,(= 	,49,-- ,ggdi0011,9'5009* 1x++	, 	, 	, 	, 10ri   c                     | j         j        | rdS  | j        j        | r&| j                            |          o| j         j        S dS r   )rx   r  rl   _eval_is_rational_functionrI   r  s     rh   r  zPow._eval_is_rational_function"  sY    48< 	549=$ 	977== $#$ 4ri   c                   | j                             ||          }| j        j        }|r|S | j                            ||          }|du r|rdnd S |d S | j                             ||          }|j        }|rd}n#t          |j        t          |          f          }|du r|S |d S |s|S | j                            ||          j        S rL  )	rl   _eval_is_meromorphicrx   rI   r  r   r   rA   r   )	rm   r2  r   
base_meromexp_integer	exp_meromr_   b_zerolog_defineds	            rh   r  zPow._eval_is_meromorphic,  s     Y33Aq99
h) 	H11!Q77	 &/554/4INN1a    	FKK#Q[)F2C2C$DEEK% 4 	x}}Q"",,ri   c                     | j         j        | rdS  | j        j        | r&| j                            |          o| j         j        S dS r   )rx   r  rl   _eval_is_algebraic_exprr   r  s     rh   r  zPow._eval_is_algebraic_exprQ  sY    48< 	549=$ 	944T:: %$% 4ri   c                   ddl m}m} |j        s*|                    |          s|                    |          r||z  S |                    t
                    }|                    t
                    rMt          j        r(t          t          j
         ||          |z  |          S  | ||          |z  |          S ddlm}m}  | | ||                    t          j         ||          z  z   |z            S )Nr   r   r   )ra   Abs)rR   rx   r1   r   r  r  r   
exp_is_powr   r	   rC   rX   ra   r  rY   )	rm   rl   r  kwargsrx   r1   r5   ra   r  s	            rh   _eval_rewrite_as_expzPow._eval_rewrite_as_exp[  s   CCCCCCCC< 	488C== 	DHHSMM 	:88F##88F 
	J !+ >1633t99T>HEEEEs33t99T>H==== FEEEEEEE3CCIIT)BBDHIIIri   c                   | j         s| t          j        fS |                                 \  }}|                                \  }}|j        }|j        r|s|j        s|                                }|j	        }|j
        s|s|}t          j        }|j        }|r| | }}n||s|}t          j        }|r||}}| }|j        rh|t          j        u r&|t          j        ur||                     ||          fS |t          j        ur&|t          j        u r|                     ||          |fS |                     ||          |                     ||          fS rz   )r!   r	   r>   r   r   r   rK   r   rM   rH   r   is_nonpositiverQ   r   )rm   rl   rx   r   r   neg_expint_expdnonposs           rh   r   zPow.as_numer_denomo  sw   " 	;$$&&	c""$$1 /: 	5g 	5co 	52244G. " 	g 	AA" 	2rqAA_W_AA 	aqA$C? 	,AEzzaqunn$))As++++~~!qu**yyC((!++yyC  $))As"3"333ri   Fc                   t          |          }|i }|t          j        u r)| j                            t          j        |          }||S t          |t                    sd S |                                \  }}|                                 \  }}|j	        rH|j
        rA|r?|j        r|                    |||z  z  |          S |                    |d|z  z  |          S |                                }| j                            ||          }|d S | j                            |                              ||          }|t          j        | ||          S |S rw   )r   r	   r>   rx   matchesr@   r7   r
   r   rG   rI   r   copyrl   xreplace)	rm   r  	repl_dictr  r   r_   r`   sbses	            rh   r  zPow.matches  s\   ~~I 15==  33A} $%% 	4!!1 !!##B< 	7BM 	7d 	7} 8zz!ad)Y777::dQrTlI666NNIa##94Ha  ((A..9<dI666ri   r   c                   3 ddl m}m} ddlm} ddlm} ddlm}	 | j	        t          j        u r| j                            |||          }
|
j        rd|
z   S  ||
                                |d          }|t          j        u r |||z  |          S |t          j        u r| S |
|z
  } ||          x}}t#          d|          D ]'}|||z  z  }|                    |||          }||z  }(| |||z  |          z  }ddlm}  ||d	d
          S ddlm} ddlm}  || d	                                          } |                                 \  }} |j        | rt5                      |                    |          r. || ||          z                                ||||          S |j|                    |          rUddlm} t=          d||g          \  }}|                     ||||z  z             ||          ||z  z             }||z  } |                                }	 ddl m!} |                    |t          j"                  r|tG                      |$                    |          \  }}n# tF          tJ          t4          f$ r |                    |tM          d|          ||                                          }|                    t          j'        t          j(                  rtK                      |$                    |          \  }}Y nw xY w|                    |          r#ddl)m*}  ||          +                                }|j,        sw|j-        r|j.        si| | /                    |||          k    rM || ||          z                                ||||          }| || ||          z            k    r| S |S |0                    ||          }||z  t          j1        z
  +                    d          }|j-        stK                      |||z  z
  33                    td                    r |	|          33j3        r ||||z  z  |          S |j,        r||z  }|| k    r| |||z  |          z  }|S d } 3fd}!	 |$                    ||          \  }}"nM# tF          tJ          f$ r9  |||3z  z  |d          dk    r||z  |||z  z  |z  z   cY S tK                      w xY w|j4        r9|"t          j5        k    r)ddl)m6}#  |#|          $                    ||          \  }}"|"j7        s|8                                }|j,        r||z  S |$                    ||          \  }}"|"j7        sI||z
  |z  9                                }|$                    ||          \  }}"|"j7        stK                      ddl:m;}$ |                    | |$3          ||                                          }%i }&ty          j=        |%          D ]7} | ||          \  }'}(|&>                    |(t          j5                  |'z   |&|(<   8t          j1        })t          j5        t          j1        i}*|&}+ddl?m@},mA}- |)|"z  3z
  j3        rt |-||)           |,|)          z  }.|+D ]1}|*>                    |t          j5                  |.|+|         z  z   |*|<   2 |!|+|&          }+|)t          j1        z  })|)|"z  3z
  j3        tddlBmC}/ |jD        s|j,        r|j3        r||z
  E                    ||          }0 |/|0          j3        r | ||z  d d!|z  z  z  |          \  }1}2np |/|0          j,        r; |  || ||          z            0                    |||          |          \  }1}2n% | ||z  |          \  }1}2n | ||z  |          \  }1}2t          j5        }|*D ]}(|(|2z   }||*|(         |1z  ||z  z  z  }|jD        r'|j7        r ||"z  |z
  jF        r|t          |           k    sR	 | |||z  |          z  }n># tJ          $ r1  || ||          z                                ||||          cY S w xY w|S )"Nr   r   )limit)Ordersympify)r   logxr   )powsimpTrx   )rd  combine)	powdenest)_illegal)r-  )r   r  cdir)Wildzc, ex)r^   exclude)	polygammar~   )
logcombiner  r  r  F)r  c                H   t           j        t           j        }}t          j        |           D ]r}|                    |          rV|                                \  }}||k    r8	 |                     |          c S # t          $ r | t           j        fcY c S w xY wm||z  }s||fS rz   )	r	   r>   r@   r   rn  r  r   leadtermr   )r   r2  r   rx   factorrl   s         rh   	coeff_expz$Pow._eval_nseries.<locals>.coeff_exp  s    3E--- 	$ 	$::a== $ & 2 2 4 4ID#qyy0#'==#3#3333) 0 0 0#'</////0 ! VOEE#:s   "A99BBc                    i }t          | |          D ]E\  }}||z   }|k     r5|                    |t          j                  | |         ||         z  z   ||<   F|S rz   )r   r>  r	   r@   )d1d2rese1e2rc   maxpows         rh   mulzPow._eval_nseries.<locals>.mul  sg    C!"b// B BB"W;;!ggb!&11BrF2b6MACGJri   )	nsimplify)ceiling)	factorialffr4   r*   )HrR   rx   r1   sympy.series.limitsr  sympy.series.orderr  sympy.core.sympifyr  rl   r	   rC   nseriesro  removeOr   r=   rangesympy.simplify.powsimpr  r  numbersr  trigsimpr   r  r   _eval_nseriessymbolr  r  replace'sympy.functions.special.gamma_functionsr  
EulerGammar   r  NotImplementedErrorrF   r<   r;   sympy.simplify.simplifyr  cancelr   rJ   r   _eval_as_leading_termas_leading_termr>   r  r   is_Floatr@   r  r   simplifyr  r   r  r  rn  r>  (sympy.functions.combinatorial.factorialsr  r  rX   r4   rH   dirr  r   )4rm   r2  r   r  r  rx   r1   r  r  r  e_seriese0r  
exp_seriesr   r   r  r  r  r_   r`   r  rb   rc   r  _r   r  r  r   ri  r  r  r  r   r  r  gpolygtermsco1r  rw  r  tkr  r  r   r4   ndirincoinexr  s4                                                      @rh   r  zPow._eval_nseries  sJ
    	DCCCCCCC------,,,,,,......9x''QT'::H  $8|#x''))1a00BQ'''uQT1~~%QZ2A #B'J1a[[ # #!||A|66d"

%%1a..(J6666667:D%@@@@444444%%%%%%yT***3355!!115( 	++5588 	M3qQx==..qADt.LLLc

$$$$$$Gs;;;EAr		##a2g,,AD(899Aa4DIIKK		!IIIIIIuuY-- #$2B ll"::a==DAqq/; 	! 	! 	!SAYYTEEMMOOAuuQUA-.. ,)+++::a==DAqqq		! 55:: 	'::::::
1$$&&A	 	Q[ 	QY 	t11!$T1JJJJc!CCFF(mm11!qt$1OO##aAh--''K
ad++qS15[   ..{ 	(%'''QqS::f 	 WQZZF 	&5QqS1%%%9 	1ADyyUU1a4^^#H	 	 		 	 	 	 		,::ad:++DAqq/0 	, 	, 	,uQq&y[!Q''1,,!ta1fQh&&&)+++	, : 	7!qv++ :999999Q<<(((66DAq} 		0

Ay !t::ad:++DAq= 0!eQY&&((zz!$z//1} 0-///??????WWV__4dKKSSUUM%(( 	6 	6Dia((GCB//#5F2JJEJJJJJJJJsV|( 	Bq!HHYYq\\)E A A!IIb!&11E"R&L@b		RBJA sV|( 	 	<;;;;;| 		,	 		,am 		,E;;q$''Dr$xx# 0&Yq!tR2a4L'8!<<
ddD! 0&Yss1SSVV8}}'D'DQTX\'D']']_`aa
dd&Yq!tQ//
dd"1a4++JD$f 	* 	*BdB59T>!b'))CC 	Q 	QAaC!G3K 	Qx~~%%QuuQT1~~%& Q Q Qs1SSVV8}}22142PPPPPQ
s8   2AJ B L$#L$$R? ?9T	:T	=a 8b
bc                   ddl m}m} | j        }| j        }| j        t          j        u r{|                    ||          }|                    |d          }	|	t          j        u r|	                    |d          }	|	j
        du rt          j        |	z  S t          d| z            |                    |          r/ || ||          z            }
|
                    |||          S ddlm} 	 |                    |||          }n# t          $ r | cY S w xY w|j        s|j        r|                    |          s||z
                      ||          } ||          j        r|                     ||          dd	|z  z  z  S  ||          j        r8 ||                              |||          }|j
        du r |||z            S |                     ||          S )
Nr   r   r  FzCannot expand %s around 0r  r  r*   r  )rR   rx   r1   rl   r	   rC   r  r  r<   r  rQ   r   r  rX   r4   rH   r   r  r   r   r  )rm   r2  r  r  rx   r1   r`   r_   ra   arg0ltr4   r   r  log_leadterms                  rh   r  zPow._eval_as_leading_termo  s    CCCCCCCCHI9##AD#11C88Aq>>Dqu}}yyA5((vt|#74@AAAUU1XX 	#QQZB%%ad%>>>??????%%ad%>>   < 
3AM 
3!%%(( 
3A{{1d++2d88' 3  99Q??bBqD\99RXX% 3#&3q66#?#?SW#?#X#XL#/588"s1\>22299Q??"s   0D	 	DDc                ^    ddl m}  || j        |          |                     ||          z  S )Nr   )binomial)r
  r  rx   r   )rm   r   r2  previous_termsr  s        rh   _taylor_termzPow._taylor_term  s9    EEEEEEx!$$tyyA66ri   c                    | j         t          j        ur t                      j        ||g|R  S |dk     rt          j        S |dk    rt          j        S ddlm}  ||          }|r|d         }|||z  |z  S ddlm	} ||z   ||          z  S )Nr   r   r  r*   )r  )
rl   r	   rC   supertaylor_termr@   r>   r  r
  r  )rm   r   r2  r  r  r   r  rB   s          rh   r!  zPow.taylor_term  s    9AF""&577&q!=n====q556M665L$$$$$$GAJJ 	!r"A}1uqy FFFFFF!tIIaLL  ri   c                    | j         t          j        u r^ddlm}  |t          j        | j        z  t          j        dz  z             t          j         |t          j        | j        z            z  z
  S d S )Nr   )r  r~   )rl   r	   rC   r  r  rY   rx   rZ   )rm   rl   rx   rA  r  s        rh   _eval_rewrite_as_sinzPow._eval_rewrite_as_sin  sr    9DDDDDD3qtx/!$q&899AOCCPQP_`d`hPhLiLi<iii ri   c                    | j         t          j        u r^ddlm}  |t          j        | j        z            t          j         |t          j        | j        z  t          j        dz  z             z  z   S d S )Nr   )r  r~   )rl   r	   rC   r  r  rY   rx   rZ   )rm   rl   rx   rA  r  s        rh   _eval_rewrite_as_coszPow._eval_rewrite_as_cos  st    9DDDDDD3qtx/001?33qW[W_G_bcbfghbhGhCiCi3iii ri   c                    | j         t          j        u r3ddlm} d || j        dz            z   d || j        dz            z
  z  S d S )Nr   )tanhr   r~   )rl   r	   rC   %sympy.functions.elementary.hyperbolicr'  rx   )rm   rl   rx   rA  r'  s        rh   _eval_rewrite_as_tanhzPow._eval_rewrite_as_tanh  s`    9BBBBBBTXaZ(((1ttDHQJ/?/?+?@@ ri   c                   ddl m}m} |t          j        urd S |j        r|                    t          j        t          j        z            }|rk|j	        rf |t          j        |z             |t          j        |z            }}t          ||          s(t          ||          s|t          j        |z  z   S d S d S d S d S d S )Nr   )r  r  )r  r  r  r	   rC   rK   r   rZ   rY   rJ   r7   )	rm   rl   rx   r  r  r  r   cosinesines	            rh   _eval_rewrite_as_sqrtzPow._eval_rewrite_as_sqrt  s    EEEEEEEEqv4: 	9IIadQ_455E 9 9"s14:ADJ!&#.. 9z47M7M 9!AOD$888	9 	99 9 9 99 9 9 9ri   c           
        |                                  \  }}t          |                    ||           }|                    ||          \  }}|j        r|                                \  }}|j        r|t
          j        k    r||z  }	|                     ||	          }
t
          j        }|
j        s3t          |	j	        |	j
                  \  }}|                     ||          }
|
|                     |t          ||||z  |	j
        z  z                       fS t          ||          }|j        r|j        r|                    ||          \  }}|                     ||                                          \  }
}|                                 \  }}|t
          j        u s||k    r&|
|                     t          ||          |          fS t
          j        |                     ||          fS )a  Return the tuple (R, self/R) where R is the positive Rational
        extracted from self.

        Examples
        ========

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

        >>> from sympy import expand_power_base, powsimp, Mul
        >>> from sympy.abc import x, y

        >>> ((2*x + 2)**2).as_content_primitive()
        (4, (x + 1)**2)
        >>> (4**((1 + y)/2)).as_content_primitive()
        (2, 4**(y/2))
        >>> (3**((1 + y)/2)).as_content_primitive()
        (1, 3**((y + 1)/2))
        >>> (3**((5 + y)/2)).as_content_primitive()
        (9, 3**((y + 1)/2))
        >>> eq = 3**(2 + 2*x)
        >>> powsimp(eq) == eq
        True
        >>> eq.as_content_primitive()
        (9, 3**(2*x))
        >>> powsimp(Mul(*_))
        3**(2*x + 2)

        >>> eq = (2 + 2*x)**y
        >>> s = expand_power_base(eq); s.is_Mul, s
        (False, (2*x + 2)**y)
        >>> eq.as_content_primitive()
        (1, (2*(x + 1))**y)
        >>> s = expand_power_base(_[1]); s.is_Mul, s
        (True, 2**y*(x + 1)**y)

        See docstring of Expr.as_content_primitive for more examples.
        )rs  clear)r   _keep_coeffas_content_primitiver   r   r	   r@   r   r   r   r   rK   rV   r>   )rm   rs  r/  r_   r`   cepehr  cehrb   r  icehr   mes                  rh   r1  zPow.as_content_primitive  s   V !!1//u/MMN''u'EEB= 	H ??$$DAq} HafdIIa%%F} +$SUCE22GD!		!T**A$))A{2q1R4:~'F'FGGGGB= 
	:QX 
	:))')GGDAq99Q??//11DAqMMOOEArAEzzR1WW $))K1$5$5q9999udii1oo%%ri   c                   | }|                     dd          r|                                }|                                \  }}|                    d          }|r||z  }||k    r|                                S  |j        | } |j        | }	|	r |rdS |                    d          }|du rdS n|	d S |                    d          S )Nr	  Tr   F)r>  r	  r   equalsis_constant)
rm   wrtflagsr  r_   r`   bzr  econbcons
             rh   r:  zPow.is_constant  s    99Z&& 	#==??D!!1XXa[[ 	)Q$Cd{{(((q}c"q}c" 	 t!BU{{u \4xx{{ri   c                    | j         \  }}|                    |          r<|                    |          s)|                    |||z             }|||z
  z  dz
  | z  S d S d S rw   )r"   r  r  )rm   r   stepr_   r`   new_es         rh   _eval_difference_deltazPow._eval_difference_delta(  ss    y15588 	/AEE!HH 	/FF1a$h''E	NQ&$..	/ 	/ 	/ 	/ri   rz   )r   )rp   r
   )TrL  )r   rr   )FT)Ar:   
__module____qualname____doc__r  	__slots____annotations__r   r\   ro   propertyrl   rx   r{   classmethodr   r   r[   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r#  r&  r)  rC  rG  rm  rp  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r!  r#  r%  r)  r-  r1  r:  rC  __classcell__)rB   s   @rh   r   r      s:        W Wp F#I` ` ` W`D       X    X ! ! X! " " ["# # #R% R% R%h6B 6B 6Bp% % %  3 3 3:  2  0  *D$ D$ D$L  / / /b         " " "  B  :
) 
) 
)  + + +  (y y yvx x xtQ* Q* Q* Q*fK K K$ $ $    6%, %, %,N  #- #- #-J  J J J(!4 !4 !4F       Dy y y yv #  #  #  #D 7 7 W7! ! ! ! ! j j j
j j j
A A A
	9 	9 	9O& O& O& O&b  ./ / / / / / /ri   r   power)r  )r   r   )r   r0  )r  r  r  N):
__future__r   typingr   	itertoolsr   r  r   cacher   	singletonr	   r  r
   r   r   r<  r   r   r   r   r   logicr   r   r   r   
parametersr   r6   r   r   r{   r   r   sympy.utilities.iterablesr   sympy.utilities.exceptionsr   sympy.utilities.miscr   sympy.multipledispatchr   r   rL  addobjectr  r  r   r   r  r   r0  r  r  r  r  r/  ri   rh   <module>rZ     sL   " " " " " "                                     % % % % % %% % % % % % % % % % % % % % = = = = = = = = = = = = ) ) ) ) ) ) $ $ $ $ $ $ $ $ + + + + + + + + * * * * * * @ @ @ @ @ @ ' ' ' ' ' ' - - - - - -V/ V/ V/ V/ V/$ V/ V/ V/p8 	
7 		66
C             & & & & & & & & ! ! ! ! ! ! ! ! * * * * * * * * * * * *ri   