U
    9%e\-                    @  s  d dl mZ d dlmZ d dlmZmZ d dl	m
Z
 ddlmZ ddlmZ 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)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z5 dd Z6dd Z7dd Z8dd Z9G dd deZ:e2d Z;e;<e=e=fe: dd!l<m>Z> dd"l?m@Z@ dd#lAmBZBmCZC dd$lDmEZEmFZFmGZG d%S )&    )annotations)Callable)logsqrt)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)HAS_GMPYgmpy)sift)sympy_deprecation_warning)as_int)
Dispatcher)sqrtremc                 C  sb   | dk rt dt| } | dk rTtt| }d| ||    krLd| krTn n|S t| dd S )z9Return the largest integer less than or equal to sqrt(n).r   zn must be nonnegativel            )
ValueErrorint_sqrtinteger_nthroot)ns r)   O/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/core/power.pyisqrt   s    $r+   c                 C  s   t | t | } }| dk r"td|dk r2tdtrx|dk rxtdkrXt| |\}}nt| |\}}t |t|fS t| |S )a@  
    Return a tuple containing x = floor(y**(1/n))
    and a boolean indicating whether the result is exact (that is,
    whether x**n == y).

    Examples
    ========

    >>> from sympy import integer_nthroot
    >>> integer_nthroot(16, 2)
    (4, True)
    >>> integer_nthroot(26, 2)
    (5, False)

    To simply determine if a number is a perfect square, the is_square
    function should be used:

    >>> from sympy.ntheory.primetest import is_square
    >>> is_square(26)
    False

    See Also
    ========
    sympy.ntheory.primetest.is_square
    integer_log
    r   zy must be nonnegativer   zn must be positivel            r"   )r   r#   r   r   Zirootrootbool_integer_nthroot_python)yr'   xtr)   r)   r*   r&   .   s    r&   c           	      C  sv  | dkr| dfS |dkr | dfS |dkrBt | \}}t|| fS ||  krRdS zt| d|  d }W n\ tk
r   t| d| }|dkrt|d }td	||  d |> }ntd	| }Y nX |d
krd| }}||d  }||d | | |  |  }}t|| dk rܐq"qn|}|| }|| k rH|d7 }|| }q*|| krf|d8 }|| }qHt||| kfS )N)r   r   Tr   r"   )r   Fg      ?g      ?5   g       @l           )mpmath_sqrtremr$   
bit_lengthOverflowError_logabs)	r/   r'   r0   remguessexpshiftZxprevr1   r)   r)   r*   r.   Y   s@    



r.   c           	      C  s"  |dkrt d| dkr t d|dkrTt|}t| } |  d }||| | kfS |dk rt| dkrj| n|  | \}}||ot| dk r|d n|d  fS t|}t| } d }}| |kr|}d}| |krt| |\} }|p|}||7 }| |kr||9 }|d9 }qq||dko| dkfS )a   
    Returns ``(e, bool)`` where e is the largest nonnegative integer
    such that :math:`|y| \geq |x^e|` and ``bool`` is True if $y = x^e$.

    Examples
    ========

    >>> from sympy import integer_log
    >>> integer_log(125, 5)
    (3, True)
    >>> integer_log(17, 9)
    (1, False)
    >>> integer_log(4, -2)
    (2, True)
    >>> integer_log(-125,-5)
    (3, True)

    See Also
    ========
    integer_nthroot
    sympy.ntheory.primetest.is_square
    sympy.ntheory.factor_.multiplicity
    sympy.ntheory.factor_.perfect_power
    r   zx cannot take value as 1r   zy cannot take value as 0)r"   r"   )r#   r$   r   r5   integer_logr-   divmod)	r/   r0   er'   brdmr9   r)   r)   r*   r>      s4    &
r>   c                      s  e Zd ZU dZdZdZded< ded< edydd	ZdzddZ	e
ddddZe
ddddZe
dd Zedd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Z d9d: Z!d;d< Z"d=d> Z#d?d@ Z$dAdB Z%dCdD Z&dEdF Z'dGdH Z(d{dIdJZ)dKdL Z*dMdN Z+dOdP Z,dQdR Z-dSdT Z.dUdV Z/dWdX Z0dYdZ Z1d[d\ Z2d]d^ Z3d|d`daZ4d}dcddZ5d~dedfZ6edgdh Z7 fdidjZ8dkdl Z9dmdn Z:dodp Z;dqdr Z<ddsdtZ=dudv Z>dwdx Z?  Z@S )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                 C  s^  |d krt j}t|}t|}ddlm} t||s>t||rFtd||fD ],}t|tsNtdt	|j
ddddd	 qN|r"|tjkrtjS |tjkrt|tjrtjS t|tjrt|tjrtjS t|tjr|jrtjS |jd
krtjS |tjkrtjS |tjkr|S |dkr,|s,tjS |jj
dkrn|tjkrddlm} |t||jt||jS n`|jr~|js|jr|jr|j s|j!r|" r|j#r| }n|j$rt| | S tj||fkrtjS |tjkrt%|j&rtjS tjS ddl'm(} |j)s
|tjk	r
t||s
ddl*m+} ddl'm,}	 ddl-m.}
 ||d
d/ \}}|
|\}}t||	r|j0d |krtj||  S |j1r
ddl2m3}m4} |||}|j!r
|r
||	||d
d |tj5 tj6  kr
tj||  S |7|}|d k	r"|S t8| ||}| 9|}t|tsJ|S |j:oV|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   )Zdeprecated_since_versionZactive_deprecations_target
stacklevelFr3   ZAccumulationBoundsr   AccumBounds)	exp_polar)factor_termsr   )fraction)sign)rS   im);r   evaluater   
relationalrJ   
isinstance	TypeErrorr   r   type__name__r
   ComplexInfinityNaNInfinityr   OneNegativeOner   Zero	is_finite	__class__Exp1!sympy.calculus.accumulationboundsrN   rE   minmax	is_Symbol
is_integer
is_Integer	is_numberis_Mul	is_Numbercould_extract_minus_signis_evenis_oddr8   is_infinite&sympy.functions.elementary.exponentialrO   Zis_AtomZ	exprtoolsrP   r   Zsympy.simplify.radsimprR   as_coeff_MulrH   is_Add$sympy.functions.elementary.complexesrS   rT   ImaginaryUnitPi_eval_power__new__Z _exec_constructor_postprocessorsrG   )clsrA   r@   rU   rJ   argrN   rO   rP   r   rR   cexnumZdenrS   rT   r(   objr)   r)   r*   rx     s    



  


zPow.__new__r   c                 C  s    | j tjkrddlm} |S d S Nr   rQ   )baser
   rc   rq   r   )selfZargindexr   r)   r)   r*   inverse}  s    zPow.inverser   )returnc                 C  s
   | j d S )Nr   rI   r   r)   r)   r*   r     s    zPow.basec                 C  s
   | j d S Nr   r   r   r)   r)   r*   r;     s    zPow.expc                 C  s   | j jtkr| jjS tS d S N)r;   kindr   r   r   r   r)   r)   r*   r     s    zPow.kindc                 C  s   dd| j fS )N   r"   )rZ   ry   r)   r)   r*   	class_key  s    zPow.class_keyc                 C  sr   ddl m}m} |  \}}||||rn| rn||||rPt| |S ||||rnt| | S d S )Nr   )askQ)	Zsympy.assumptions.askr   r   as_base_expintegerrm   ZevenrE   odd)r   Zassumptionsr   r   rA   r@   r)   r)   r*   _eval_refine  s    zPow._eval_refinec                 C  s  |   \}}|tjkr"|| | S d }|jr4d}n.|jrBd}n |jd k	rbddlm}m}m	}m
} ddlm}	m}
 ddlm} dd }dd	 }|jr|d
kr||r|jdkrtj| t| ||  S |jdkrt|| S n0|jr|jrt|}|jrt||tj }t|dk dks2|dkr8d}n|jrFd}n||jrjt|dk dkrjd}nn||rb|	dtj tj | |tj||| dtj    }|jr|||| dkr||}nd }nzl|	dtj tj | |tj|||
| d tj   }|jr@|||| dkr@||}nd }W n tk
r`   d }Y nX |d k	r~|t|||  S d S )Nr   r   )rz   rT   rerS   r;   r   )floorc                 S  s6   t | dddkrdS |  \}}|jr2|dkr2dS dS )zZReturn True if the exponent has a literal 2 as the
                denominator, else None.qNr"   T)getattras_numer_denomrh   )r@   r'   rC   r)   r)   r*   _half  s
    zPow._eval_power.<locals>._halfc                 S  s8   z| j ddd}|jr|W S W n tk
r2   Y nX dS )zXReturn ``e`` evaluated to a Number with 2 significant
                digits, else None.r"   TstrictN)evalfrl   r   )r@   rvr)   r)   r*   _n2  s    
zPow._eval_power.<locals>._n2r3   TFr"   )r   r
   r\   rh   is_polaris_extended_realrt   rz   rT   r   rS   rq   r;   r   #sympy.functions.elementary.integersr   is_negativer_   rE   rn   r8   is_imaginaryru   is_extended_nonnegativerv   Halfr   )r   otherrA   r@   r(   rz   rT   r   rS   r;   r   r   r   r   r)   r)   r*   rw     sd    





"


zPow._eval_powerc                 C  sr  | j | j }}|jrn|jrn|jr6|| dkr6tjS ddlm} |jr|jr|jrt	|t	|t	|  }}}|
 }|dkr||kr|
 d |krt	||}	tt||	||	  |S tt|||S ddlm}
 t|tr|jr|jr|
||}|
t||dd|S t|trn|jrn|jrnt	|
 }|dkrn||}	|	|
||	 }|
t||d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   rK   r   )ModFrU   N)r   r;   rh   is_positiver
   r`   Zsympy.ntheory.factor_r   ri   r$   r5   Integerpowmodr   rW   rE   rj   )r   r   r   r;   r   rA   r@   rD   mbphir   r5   r)   r)   r*   	_eval_Mod  s,     

zPow._eval_Modc                 C  s   | j jr| j jr| jjS d S r   )r;   rh   r   r   rn   r   r)   r)   r*   _eval_is_even+  s    zPow._eval_is_evenc                 C  s   t | }|dkr| jS |S NT)rE   _eval_is_extended_negativera   )r   Zext_negr)   r)   r*   _eval_is_negative/  s    
zPow._eval_is_negativec                 C  s   | j | jkr| j jrdS n| j jr0| jjrdS n| j jrR| jjrDdS | jjrdS n| j jrl| jj	r| jjS nn| j j
r| jjrdS nX| j jr| jjr| jd }|jrdS |jr|jdkrdS | jjrddlm} || j jS d S )NTFrK   r   rQ   )r   r;   r   r   is_realis_extended_negativern   ro   is_zeror   is_extended_nonpositiver   rh   rq   r   )r   rD   r   r)   r)   r*   _eval_is_extended_positive5  s6    

zPow._eval_is_extended_positivec                 C  s   | j tjkr | jjs| jjr dS | jjrJ| j jr<| jjr<dS | j j	rdS nl| jj
r`| j jrdS nV| jjrv| j jrdS n@| jjr| j jrdS n*| jjr| j j	rdS n| jjr| j j	rdS d S NFT)r;   r
   r   r   
is_complexr   r   ro   ra   rn   is_extended_positiver   r   r   r   r)   r)   r*   r   R  s.    zPow._eval_is_extended_negativec                 C  s   | j jr"| jjrdS | jjrdS n| j tjkr:| jtjkS | j jdkr| j jrZ| jjrZdS | jj	rj| j j
S | jjrvdS | jj
r| jjrdt| j  jr| jjS dt| j  jr| jjS n| j jr| jj	rdS d S )NTFr   )r   r   r;   r   r   r
   rc   NegativeInfinityra   r   rp   is_nonnegativer   r8   r   r   r)   r)   r*   _eval_is_zerok  s*    
zPow._eval_is_zeroc                 C  s   | j \}}|jr$|jdkr$|jr$dS |jrN|jrN|tjkr>dS |jsJ|jrNdS |jr|jr|jsf|jrt	|d j
rt	|d j
rdS |jr|jr| j| j  }|jS |jr|jr|d jrdS |jr|jr|d jrdS d S )NFTr   )rH   is_rationalrh   r   r
   r_   r   r   ra   r   r   rl   funcri   )r   rA   r@   checkr)   r)   r*   _eval_is_integer  s&    

zPow._eval_is_integerc                 C  s  | j tjkr8| jjrdS | jjr8dtj | j tj jS ddl	m
}m} | j j}|d kr| j j|krv| j jjrv| jjS | j jtkr| j j tjkr| j jjr| jjS d S | jj}|d krd S |r.|r.| j jrdS | j jr| jjrdS | jj r| j j rdS | jjr| jjrdS | j jr.| jjr.dS |r^| jjr^| j jdkr^t| j | j jS | j j}| jj}|r$| jjr| jjrdS | jjr$dS n|r|| j jrdS | jjr| j \}}|r$|jr$t| j | | j | ddjS n,| j tj tjfkr$| jd jdkr$dS |r|r| j tjkrBdS | jtj}|r| j jr|jr| j jr| j d jr|jrdS ||| j  tj j}	|	d k	r|	S |dkr|rddlm}
 |
| j | j tj }|j r|jS d S )	NTr"   r   )r   r;   Fr   r   rz   )!r   r
   rc   r;   r   r   ru   rv   rn   rq   r   r   rE   r   r   rh   Zis_extended_nonzeror   r   is_Rationalr   ro   rs   as_coeff_Addri   Mulr_   coeffr   
is_nonzerort   rz   r   )r   r   r;   Zreal_bZreal_eZim_bim_er{   aokrz   ir)   r)   r*   _eval_is_extended_real  s    $





  
 
zPow._eval_is_extended_realc                 C  sD   | j tjkr t| jj| jjgS tdd | jD r@| 	 r@dS d S )Nc                 s  s   | ]}|j V  qd S r   )r   ).0r   r)   r)   r*   	<genexpr>  s     z'Pow._eval_is_complex.<locals>.<genexpr>T)
r   r
   rc   r   r;   r   r   allrH   _eval_is_finiter   r)   r)   r*   _eval_is_complex  s    zPow._eval_is_complexc           
      C  s>  | j jdkrdS | j jr8| jjr8| jj}|d k	r4|S d S | j tjkrrd| j tjtj	  }|j
rddS |jrndS d S | jjrddlm} || j j}|d k	rdS | j jr| jjr| j jrdS | jj}|s|S | jjrdS d| j j}|r| j jS |S | j jdkr:ddlm} || j | j tj }d| j}	|	d k	r:|	S d S )NFr"   Tr   rQ   r   )r   rG   r   r;   rh   ro   r
   rc   rv   ru   rn   rq   r   r   r   r   r   rt   rz   )
r   r   fr   ZimlogratZhalfrz   r   Zisoddr)   r)   r*   _eval_is_imaginary  sL    

zPow._eval_is_imaginaryc                 C  s@   | j jr<| j jr| jjS | j jr,| jjr,dS | jtjkr<dS d S r   )r;   rh   r   r   ro   r   r
   r_   r   r)   r)   r*   _eval_is_odd  s    zPow._eval_is_oddc                 C  st   | j jr(| jjrdS | jjs$| jjr(dS | jj}|d kr<d S | j j}|d krPd S |rp|rp| j jslt| jjrpdS d S r   )	r;   r   r   r   rp   r   ra   r   r   )r   c1c2r)   r)   r*   r     s    zPow._eval_is_finitec                 C  s$   | j jr | jjr | jd jr dS dS )zM
        An integer raised to the n(>=2)-th power cannot be a prime.
        r   FN)r   rh   r;   r   r   r)   r)   r*   _eval_is_prime.  s    zPow._eval_is_primec                 C  sL   | j jrH| jjrH| j d jr(| jd jsD| j d jrH| jjrH| jjrHdS dS )zS
        A power is composite if both base and exponent are greater than 1
        r   TN)r   rh   r;   r   r   rn   r   r)   r)   r*   _eval_is_composite5  s    


zPow._eval_is_compositec                 C  s   | j jS r   )r   r   r   r)   r)   r*   _eval_is_polar>  s    zPow._eval_is_polarc                 C  s  ddl m} t| j|rT| j||}| j||}t||rH||S | ||S ddlm}m	} dd }|| jks||kr| jt
jkr|jrt|tr|| j||S || j|| S t|| jr| j|jkr|| j|j}	|	jrt||	S t|| jrZ| j|jkrZ| jjdkr| jjtdd}
|jjtdd}||
||\}}}|rZ| ||}|d k	r~t|t|j|}|S n|j}g }g }| }| jjD ]z}|||}| }
||
||\}}}|r|||  |d k	r|| qn|js|js d S || q|rZt| }||dkrJt| j|dd	n| j t| S t||s||jr|jt
jkr| jjr| jjr|jjtdd}
| j|| j jtdd}||
||\}}}|r| ||}|d k	rt|t|j|}|S d S )
Nr   rM   r   c                 S  s$  | \}}|\}}||kr |j r|| }zt|dd d}W n8 tk
rt   | \}	}
|	jrd|
jpn|	jon|
j}Y nX ||dfS t|ts|f}t	dd |D sdS zbt
t|t|\}}|dk r|dkr|d	7 }|t|8 }|dkrd}nt|f| }d||fW S  tk
r   Y nX 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                 s  s   | ]}|j V  qd S r   )rh   )r   termr)   r)   r*   r   q  s     z1Pow._eval_subs.<locals>._check.<locals>.<genexpr>)FNNr   r   )rG   r   r#   r   r   r   r   rW   tupler   r?   r   )ct1ct2oldZcoeff1Zterms1Zcoeff2Zterms2r   ZcombinesrA   r@   	remainderremainder_powr)   r)   r*   _checkM  s8    


zPow._eval_subs.<locals>._checkF)Zas_Addr   r   )rd   rN   rW   r;   r   subs__rpow__r   rq   r   r
   rc   Zis_Functionr   _subsrl   rE   rs   Zas_independentSymbolr   Zas_coeff_mulrH   appendrG   rh   Addis_Powr   r   )r   r   newrN   rA   r@   r;   r   r   lr   r   r   r   r   resultZoargZnew_lZo_alr   Znewaexpor)   r)   r*   
_eval_subsA  sv    

:



&6 
zPow._eval_subsc                 C  s<   | j \}}|jr4|j|jk r4|jdkr4d| | 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   )rH   r   pr   )r   rA   r@   r)   r)   r*   r     s    
zPow.as_base_expc                 C  sr   ddl m} | jj| jj }}|r2|| j| j S |rF| j|| j S |dkrn|dkrnt| }|| krn||S d S )Nr   )adjointF)rt   r   r;   rh   r   r   r   )r   r   r   r   expandedr)   r)   r*   _eval_adjoint  s    zPow._eval_adjointc                 C  s|   ddl m} | jj| jj }}|r2|| j| j S |rF| j|| j S |dkrn|dkrnt| }|| krn||S | jrx| S d S )Nr   )	conjugateF)rt   r   r;   rh   r   r   r   r   )r   r{   r   r   r   r)   r)   r*   _eval_conjugate  s    zPow._eval_conjugatec                 C  s   ddl m} | jtjkr,| tj| j S | jj| jjp@| jj	 }}|rV| j| j S |rj|| j| j S |dkr|dkrt
| }|| kr||S d S )Nr   )	transposeF)rt   r   r   r
   rc   r   r;   rh   r   rp   r   )r   r   r   r   r   r)   r)   r*   _eval_transpose  s    zPow._eval_transposec                   s   j  j} tjkrXddlm} t||rX|jrXddlm	} |
 |jf|j S |jr|dds| jdks|| r|jrt fdd|jD  S  jrt|jdd	 d
d\}}|rt fdd|D   t|  S S )za**(n + m) -> a**n*a**mr   )Sum)ProductforceFc                   s   g | ]}  |qS r)   r   r   r0   rA   r   r)   r*   
<listcomp>  s     z.Pow._eval_expand_power_exp.<locals>.<listcomp>c                 S  s   | j S r   rF   r0   r)   r)   r*   <lambda>      z,Pow._eval_expand_power_exp.<locals>.<lambda>Tbinaryc                   s   g | ]}  |qS r)   r   r   r   r)   r*   r     s     )r   r;   r
   rc   Zsympy.concrete.summationsr   rW   rG   Zsympy.concrete.productsr   r   functionZlimitsrs   getr   _all_nonneg_or_nonpposr   rH   r   r   
_from_args)r   hintsr@   r   r   r{   ncr)   r   r*   _eval_expand_power_exp  s*    
zPow._eval_expand_power_expc                   sT   dd}j}j |js"S |jdd\}}|rfdd|D } jr jrbt|   }n"tdd |ddd D     }|r|t|   9 }|S |sjt|  dd	S t| g}t	|d
d dd\}}dd }	t	||	}
|
d }||
d 7 }|
d }|
t
j }|rt
j}t|d }|dkr0n|dkrF|| n~|dkr|rx|  }|t
jk	r|| n|t
j n>|r|  }|t
jk	r|| n|t
j || ~|sԈ jr|| | }|}n jrtt|dkrjt
j}|s&|d jr&||d9 }t|d r:| }|D ]}||  q>|t
jk	r|| n\|r|r|d jr|d t
jk	r|t
j ||d   n
|| n
|| ~|}||7 }t
j}|r2 jrt	|dd dd\}}t fdd|D  }|t fdd|D  9 }|rP|jt|  dd	9 }|S )z(a*b)**n -> a**n * b**nr   F)Zsplit_1c                   s&   g | ]}t |d r|jf  n|qS )_eval_expand_power_base)hasattrr  r   r   )r	  r)   r*   r   *  s   z/Pow._eval_expand_power_base.<locals>.<listcomp>c                 S  s   g | ]}|d  qS )r3   r)   r  r)   r)   r*   r   2  s     Nr3   r   c                 S  s
   | j dkS NF)r   r   r)   r)   r*   r  =  r  z-Pow._eval_expand_power_base.<locals>.<lambda>Tr  c                 S  s4   | t jkrt jS | j}|rdS |d kr0t| jS d S r   )r
   ru   r   r   r   )r0   Zpolarr)   r)   r*   pred?  s    
z)Pow._eval_expand_power_base.<locals>.predrK   r   r   r"   c                 S  s   | j o| jjo| jjS r   )r   r;   r   r   rj   r   r)   r)   r*   r    s   c                   s    g | ]} |j |j  qS r)   )r   rH   r   rA   r@   r   r)   r*   r     s     c                   s   g | ]}j | d dqS )Fr   r   r  r  r)   r*   r     s     )r  r   r;   rk   Zargs_cncri   r   r   r   r   r
   ru   lenr   popr^   r_   rh   AssertionErrorrl   extendr   )r   r	  r   rA   Zcargsr
  r   r   Z
maybe_realr  ZsiftedZnonnegnegimagIr   Znonnor'   Znpowr)   )r@   r	  r   r*   r    s    
"













zPow._eval_expand_power_basec                   s2  | j \ }| }|jrX|jdkrX jrX|jst|j|j }|sH|S |  || g  }}|  |}|jrx|	 }t
|D ]}|||  qt
| S t|} jrg g  }}	 j D ] }
|
jr||
 q|	|
 q|rLt
|	 }t
| }|dkrt|| dd|| |  S t||d  dd}t|| dd|| |  S  jr  \}}
|jr|
jr|js|
js| |j|
j |}|j|
j |j|
j  }}
n | |j|}|j|j|
  }}
n.|
js| |
j|}||
j |
j }}
nd}t|t|
ddf\}}
}}|r|d@ rV|| |
|  |
| ||   }}|d8 }|| |
|
  d| |
  }}
|d }qtj}|dkr|||  S t|| || |  S |	}ddlm} ddlm} |t||}||f| S |dkrt
 fdd	 j D  S  |d  	 jr>t
fd
d	 j D  S t
fdd	 j D  S n|jr|jdk r jrt|j|jkrd|  | 	  S |jr* jr*|ddsЈ jdks| r*g g  }}|j D ],}|jr ||  | n
|| qt ||  t
!|g  S |S dS )zA(a + b + ..)**n -> a**n + n*a**(n-1)*b + .., n is nonzero integerr   r"   Fdeepr   )multinomial_coefficients)basic_from_dictc                   s    g | ]} j D ]}|| qqS r)   rH   r   r   g)r   r)   r*   r     s       z0Pow._eval_expand_multinomial.<locals>.<listcomp>c                   s    g | ]} j D ]}|| qqS r)   r  r   multir)   r*   r     s     c                   s   g | ]}|  qS r)   r)   )r   r   r"  r)   r*   r     s     r   N)"rH   r   r   rs   ri   r   r   r   r   _eval_expand_multinomialr   	make_argsr   r$   rG   is_Orderr   r   rj   as_real_imagr
   ru   Zsympy.ntheory.multinomialr  Zsympy.polys.polyutilsr  r  r8   rl   r  r   r  r   r  )r   r	  r;   r   r'   radicalZexpanded_base_nr   Zorder_termsZother_termsrA   r   r  r!  r   kr{   rC   r  r   r  r  Zexpansion_dictr   tailr)   )r   r#  r*   r$    s    




"



zPow._eval_expand_multinomialc                   sb  | j jrddlm} | j }| jj|d\}}|s<| tjfS tdt	d\ |dkr|j
r~|j
r~t| j| }|| kr~| S |  | }nj|d |d  }|| | |  }}|j
r|j
rt||tj  |  }|| kr| S |  |  }dd | D }	t fd	d|	D  }
d
d | D }	t fdd|	D  }dd | D }	t fdd|	D  }|
 |tj| i| ||i| || i fS ddlm}m}m} | j jr| jj|d\}}|jr*| j tjkr*|jr| tjfS |jr*tj| j | j  fS | | |d| |d tj}	|||}| |	| j || j   }}||| ||| fS | jtjkrddlm } | j  \}}|r|j|f|}|j|f|}|||| }}||| ||| fS ddlm}m} |rNd|d< | j|f|}| d|kr<d S ||||fS n|| || fS d S )Nr   )polyr  za br   r"   c                 S  s    g | ]}|d  d d s|qS )r   r   r"   r)   r  r)   r)   r*   r   .  s      z$Pow.as_real_imag.<locals>.<listcomp>c                   s(   g | ] \\}}}| |  |  qS r)   r)   r   ZaaZbbccr   rA   r)   r*   r   /  s    
 c                 S  s$   g | ]}|d  d d dkr|qS )r   r   rK   r)   r  r)   r)   r*   r   1  s      c                   s(   g | ] \\}}}| |  |  qS r)   r)   r,  r.  r)   r*   r   2  s    
 c                 S  s$   g | ]}|d  d d dkr|qS )r   r   rK   r   r)   r  r)   r)   r*   r   3  s      c                   s(   g | ] \\}}}| |  |  qS r)   r)   r,  r.  r)   r*   r   4  s    
 )atan2cossinr;   )rT   r   Fcomplexignore)!r;   ri   Zsympy.polys.polytoolsr+  r   r'  r
   r`   symbolsDummyrl   r   ru   termsr   r   (sympy.functions.elementary.trigonometricr/  r0  r1  r   r   r   r   r   r   rc   rq   expandrt   rT   r   r  )r   r  r	  r+  r;   Zre_er   exprmagrB   Zre_partZim_part1Zim_part3r/  r0  r1  r1   rptpr{   r(   rT   r   r   r)   r.  r*   r'    sv    


$

"
zPow.as_real_imagc                 C  sF   ddl m} | j|}| j|}| ||| j || j | j   S r   )rq   r   r   diffr;   )r   r(   r   ZdbaseZdexpr)   r)   r*   _eval_derivativec  s    zPow._eval_derivativec                 C  s   |   \}}|tjkr6ddlm} || jdd|S ||}|jsP||}|jr|j	r|j
dkr| ||  | }| }| || S | ||S )Nr   r2  Fr   )r   r
   rc   rq   r;   _eval_evalfZ_evalfri   r   rj   r   r   r   r9  )r   precr   r;   Zexp_functionr)   r)   r*   r@  i  s    


zPow._eval_evalfc                 C  sF   | j j| rdS | jj| r>t| j|o:| j jo:| j dkS dS d S )NFr   T)r;   hasr   r-   _eval_is_polynomialri   r   Zsymsr)   r)   r*   rC  x  s    zPow._eval_is_polynomialc                 C  s   | j jr,| jjr,tt| j j| jjgr,dS | j| 	  }|j
sF|jS |	 \}}|jrb|jrbdS |jr|jrt|js~|jrdS ||krdS n|jr|jS |tjkr|jr|jrdS d S )NTF)r;   rh   r   r   r   r   r   r   r   r   r   r   r   is_irrationalr
   rc   r   )r   r   rA   r@   r)   r)   r*   _eval_is_rational  s*    
zPow._eval_is_rationalc                 C  s6  dd }| j js|| j rdS | j tjkr| j| j }|j| jkr| jjr| jjrVdS | jtj	 j
rhdS | jtjtj	  j
rdS n|jS n| jj
r| j jdkr| jjS | j jdkr| jjr| j jS | j jrdS | jjr| j jS nR| j jr2| jjr2t| j jrt|| j s*| j jdks*| j jr2| jj
S d S )Nc                 S  s(   z| d j W S  tk
r"   Y dS X d S )Nr   F)r   r#   )r:  r)   r)   r*   _is_one  s    z'Pow._eval_is_algebraic.<locals>._is_oneTF)r   r   r
   rc   r   rH   r;   r   Zis_algebraicrv   r   ru   r   r   rh   rE  )r   rG  r(   r)   r)   r*   _eval_is_algebraic  sB    

zPow._eval_is_algebraicc                 C  s8   | j j| rdS | jj| r0| j|o.| j jS dS d S r   )r;   rB  r   _eval_is_rational_functionri   rD  r)   r)   r*   rI    s    zPow._eval_is_rational_functionc           	      C  s   | j ||}| jj}|r|S | j||}|dkr@|r<dS d S |d krLd S | j ||}|j}|rjd}nt|jt|f}|dkr|S |d krd S |s|S | j||jS r  )	r   _eval_is_meromorphicr;   ri   r   r   r   ra   r   )	r   r0   r   Z
base_meromZexp_integerZ	exp_meromrA   Zb_zeroZlog_definedr)   r)   r*   rJ    s*    zPow._eval_is_meromorphicc                 C  s8   | j j| rdS | jj| r0| j|o.| j jS dS d S r   )r;   rB  r   _eval_is_algebraic_exprr   rD  r)   r)   r*   rK    s    zPow._eval_is_algebraic_exprc                 K  s   ddl m}m} |js*||s*||r2|| S |tr|tjr`tt	j
||| |tdS |||| |tdS n2ddlm}m} ||||t	j||  | S d S )Nr   r   r   )rz   Abs)rq   r;   r   r   rB  r   r   Z
exp_is_powrE   r
   rc   rt   rz   rL  ru   )r   r   r   kwargsr;   r   rz   rL  r)   r)   r*   _eval_rewrite_as_exp  s    
zPow._eval_rewrite_as_expc                 C  s
  | j s| tjfS |  \}}| \}}|j}|jrF|sF|jsF| }|j	}|j
s`|s`|}tj}|j}|rz| |  }}n|d kr|s|}tj}|r|| }}| }|jr|tjkr|tjk	r|| ||fS |tjk	r|tjkr| |||fS | ||| ||fS r   )rG   r
   r^   r   r   r   rk   r   rm   rh   r   is_nonpositiverp   r   )r   r   r;   r'   rC   Zneg_expZint_expZdnonposr)   r)   r*   r     s4    


zPow.as_numer_denomFc           	      C  s   t |}|d kri }|tjkr:| jtj|}|d k	r:|S t|tsHd S | \}}|  \}}|j	r|j
r|r|jr||||  |S ||d|  |S | }| j||}|d krd S | j|||}|d krt| ||S |S r   )r   r
   r^   r;   matchesr`   rW   r   r   rg   ri   r   copyr   Zxreplace)	r   r:  Z	repl_dictr   rC   rA   r@   sbser)   r)   r*   rP  2  s.    

zPow.matchesr   c           3   
     s$  ddl m}m} ddlm} ddlm} ddlm}	 | j	t
jkr| jj|||d}
|
jrbd|
 S ||
 |d}|t
jkr||| |S |t
jkr| S |
| }|| }}td|D ](}||| 9 }|j|||d}||7 }q|||| |7 }ddlm} ||d	d
dS ddlm} ddlm} || d	d } |  \}}|j| rRt ||r||||| j||||dS |d k	r||rddlm} td||gd\}}|||||  ||||  }|| } | }z>ddl m!} ||t
j"r|d k	rt# |$|\}}W n^ t#t%tfk
r   |j|t&d|||d }|t
j't
j(rpt% |$|\}}Y nX ||rddl)m*} ||+ }|j,s|j-r|j.s| | j/|||dkr|||| j||||d}||||| kr| S |S |j0||d}|| t
j1 j+dd}|j-sDt% |||    t2rd|	|  j3r~||||  |S |j,r|| }|| kr|||| |7 }|S dd }  fdd}!z|j$||d\}}"W nV t#t%fk
r.   |||   |ddkr$|| |||  |   Y S t% Y nX |j4rf|"t
j5krfddl)m6}# |#|j$||d\}}"|"j7s|8 }|j,r|| S |j$||d\}}"|"j7s|| | 9 }|j$||d\}}"|"j7st% ddl:m;}$ |j||$ ||d }%i }&t<=|%D ]*}| ||\}'}(|&>|(t
j5|' |&|(< qt
j1})t
j5t
j1i}*|&}+dd l?m@},mA}- |)|"   j3r|-||)|,|) }.|+D ]$}|*>|t
j5|.|+|   |*|< q||!|+|&}+|)t
j17 })qVdd!lBmC}/ |jDsb|j,rb|j3rb|| E||}0|/|0j3r| || d"d#|   |\}1}2nF|/|0j,rN| |||| j0|||d|\}1}2n| || |\}1}2n| || |\}1}2t
j5}|*D ]&}(|(|2 }||*|( |1 ||  7 }q~|jDr|j7r||" | jFr|tG| ks z|||| |7 }W n4 t%k
r   |||| j||||d Y S X |S )$Nr   r   )limit)Ordersympify)r'   logxr   )powsimpTr;   )r  combine)	powdenest)_illegal)r   )r'   rX  cdir)Wildzc, ex)ry   exclude)	polygammar"   )
logcombinerX  r]  rX  F)r9  c              	   S  s   t jt j }}t| D ]`}||rp| \}}||krxz| |W   S  tk
rl   | t jf Y   S X q||9 }q||fS r   )	r
   r^   r`   r   r%  rB  r   leadtermr#   )r   r0   r   r;   factorr   r)   r)   r*   	coeff_exp  s    

z$Pow._eval_nseries.<locals>.coeff_expc                   sN   i }t | |D ]:\}}|| }| k r||tj| | ||   ||< q|S r   )r   r  r
   r`   )Zd1Zd2rese1e2r|   Zmaxpowr)   r*   mul  s    $zPow._eval_nseries.<locals>.mul)	nsimplify)ceiling)	factorialffrT   r3   r=   )Hrq   r;   r   Zsympy.series.limitsrT  Zsympy.series.orderrU  Zsympy.core.sympifyrW  r   r
   rc   Znseriesr&  ZremoveOr   r]   rangeZsympy.simplify.powsimprY  r[  numbersr\  Ztrigsimpr   rB  r   _eval_nseriessymbolr^  r5  replaceZ'sympy.functions.special.gamma_functionsr`  Z
EulerGammar#   rd  NotImplementedErrorrf   r\   r[   Zsympy.simplify.simplifyra  cancelr   rj   r   _eval_as_leading_termas_leading_termr^   r   r   Zis_Floatr`   rl  r   simplifyr9  r   rm  r   r%  r  (sympy.functions.combinatorial.factorialsrn  ro  rt   rT   rh   dirrO  r   )3r   r0   r'   rX  r]  r;   r   rT  rU  rW  Ze_seriesZe0r1   Z
exp_seriesr   r   rY  r[  r\  rA   r@   r^  r{   r|   r`  _rD   ra  rg  r   r!  rB   rf  rk  rC   rl  rm  ZgpolyZgtermsZco1rh  r)  r7  Ztkrn  ro  r   rT   ndirZincoZinexr)   rj  r*   rs  T  s    


$
"
 ( 
$zPow._eval_nseriesc                 C  sx  ddl m}m} | j}| j}| jtjkr||j||d}||d}	|	tjkrX|	|d}	|	j
dkrltj|	 S td|   n||r|||| }
|
j|||dS ddlm} z|j|||d}W n tk
r   |  Y S X |jsh|jrh||sh|| ||}||jr0| ||dd	|   S ||jrh||j|||d}|j
dkrh||| S | ||S d S )
Nr   r   rc  FzCannot expand %s around 0rb  rp  r3   r=   )rq   r;   r   r   r
   rc   ry  r   r\   rT  rp   r   rB  rt   rT   rh   r   r|  r   r   rx  )r   r0   rX  r]  r;   r   r@   rA   rz   Zarg0ltrT   r   r~  Zlog_leadtermr)   r)   r*   rx    s8    




zPow._eval_as_leading_termc                 G  s$   ddl m} || j|| || S )Nr   )binomial)r{  r  r;   r   )r   r'   r0   previous_termsr  r)   r)   r*   _taylor_term1  s    zPow._taylor_termc                   s   | j tjk	r t j||f| S |dk r.tjS |dkr<tjS ddlm} ||}|rp|d }|d k	rp|| | S ddlm	} || || S )Nr   r   rV  r3   )rn  )
r   r
   rc   supertaylor_termr`   r^   rW  r{  rn  )r   r'   r0   r  rW  r   rn  rb   r)   r*   r  6  s    zPow.taylor_termc                 C  sL   | j tjkrHddlm} |tj| j tjd  tj|tj| j   S d S )Nr   )r1  r"   )r   r
   rc   r8  r1  ru   r;   rv   )r   r   r;   r1  r)   r)   r*   _eval_rewrite_as_sinF  s    zPow._eval_rewrite_as_sinc                 C  sL   | j tjkrHddlm} |tj| j tj|tj| j tjd    S d S )Nr   )r0  r"   )r   r
   rc   r8  r0  ru   r;   rv   )r   r   r;   r0  r)   r)   r*   _eval_rewrite_as_cosK  s    zPow._eval_rewrite_as_cosc                 C  s@   | j tjkr<ddlm} d|| jd  d|| jd   S d S )Nr   )tanhr   r"   )r   r
   rc   Z%sympy.functions.elementary.hyperbolicr  r;   )r   r   r;   r  r)   r)   r*   _eval_rewrite_as_tanhP  s    zPow._eval_rewrite_as_tanhc           	      K  s   ddl m}m} |tjk	rd S |jr|tjtj }|r|j	r|tj| |tj|  }}t
||st
||s|tj|  S d S )Nr   )r1  r0  )r8  r1  r0  r
   rc   rk   r   rv   ru   rj   rW   )	r   r   r;   rM  r1  r0  r   ZcosineZsiner)   r)   r*   _eval_rewrite_as_sqrtU  s    

zPow._eval_rewrite_as_sqrtc              	   C  s>  |   \}}t|j||d }|j||d\}}|jr| \}}|jr|tjkr|| }	| ||	}
tj}|
jst|	j	|	j
\}}| ||}
|
| |t|||| |	j
  fS t||}|jr,|jr,|j||d\}}| || \}
}|  \}}|tjk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.
        )r(  clear)r   _keep_coeffas_content_primitiver   r   r
   r`   r   r?   r   r   rk   rr   r^   )r   r(  r  rA   r@   Zcepehr1   Zcehr{   rB   ZicehrD   mer)   r)   r*   r  `  s*    +$
zPow.as_content_primitivec           
      O  s   | }| ddr| }| \}}|d}|rJ|| }||krJ| S |j| }|j| }	|	r|rjdS |d}|dkrdS n|	d krd S |dS )Nrz  Tr   F)r  rz  r   equalsis_constant)
r   Zwrtflagsr:  rA   r@   Zbzr   ZeconZbconr)   r)   r*   r    s(    



zPow.is_constantc                 C  sF   | j \}}||rB||sB|||| }|||  d |  S d S r   )rH   rB  r   )r   r'   steprA   r@   Znew_er)   r)   r*   _eval_difference_delta  s    
zPow._eval_difference_delta)N)r   )T)NF)r   )Nr   )FT)ArZ   
__module____qualname____doc__r   	__slots____annotations__r	   rx   r   propertyr   r;   r   classmethodr   r   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r$  r'  r?  r@  rC  rF  rH  rI  rJ  rK  rN  r   rP  rs  rx  r  r  r  r  r  r  r  r  r  __classcell__r)   r)   r  r*   rE      s   
Xb


	T8D1		 {z
S
'
%
#
"
 <
"

QrE   power)r   )r   )r   r  )r   r6  r5  N)H
__future__r   typingr   mathr   r7   r   r%   	itertoolsr   rW  r   cacher	   Z	singletonr
   r:  r   r   r   r  r   r   r   r   r   Zlogicr   r   r   r   
parametersr   rV   r   r   r   r   r   Zsympy.external.gmpyr   r   Zsympy.utilities.iterablesr   Zsympy.utilities.exceptionsr   Zsympy.utilities.miscr   Zsympy.multipledispatchr    Zmpmath.libmpr!   r4   r+   r&   r.   r>   rE   r  addobjectr   rr  r   rk  r   r  rt  r   r6  r5  r)   r)   r)   r*   <module>   sX   +*7              "