B
    [w                 @   sZ  d dl mZmZ d dlmZmZmZmZmZm	Z	m
Z
mZ d dlmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZ d dlmZmZmZmZm Z m!Z!m"Z"m#Z# d dl$m%Z% d dl&m'Z'm(Z(m)Z)m*Z*m+Z+ ed\Z,Z-eeed	d
 Z.eeedd
 Z.eeedd
 Z.eeedd
 Z.eeedd
 Z.eeedd
 Z.eeedd
 Z.dS )    )dispatch
Dispatcher)BasicExprFunctionAddMulPowDummyInteger)
MinMaxSetsympifyLambdasymbolsexplogSoo)InfinityNegativeInfinityZero)imagesetInterval	FiniteSetUnionImageSet
ProductSetEmptySetIntersection)FunctionClass)AndOrNottruefalsezx yc             C   s   d S )N )xyr'   r'   8lib/python3.7/site-packages/sympy/sets/handlers/power.py_set_pow   s    r+   c             C   s   t tttftt | |S )N)r   r   _x_y)r(   r)   r'   r'   r*   r+      s    c             C   s   | | S )Nr'   )r(   r)   r'   r'   r*   r+      s    c             C   s
   t tjS )N)r   r   One)r(   zr'   r'   r*   r+      s    c             C   sv  | j | }| j| }|dkr$||kn| j| j  kdkrH| j}| j}|}n| j}| j}|}| j jrztt||t||||S | jjrtt||t||||S |j	r|j r| j j
rt|t| jS | jj
rtt |d| jS ttt |d| jt|t| jS t||| j| jS n`|jrr|jr\| j j
r:t|t| jS | jj
rRt|t| jS tdtS ttj|tj| k|S dS )z]
    Powers in interval arithmetic
    https://en.wikipedia.org/wiki/Interval_arithmetic
    r   TN)startend	left_open
right_openZis_positiver   r   r   is_negativeZis_oddZis_zeror   r   Zis_evenr   r   )r(   Zexponents1s2r2   r3   Zsleftr'   r'   r*   r+      sB    

""


c             C   s   | j jr:| jdk rttjS | j dkr0ttjS tdtS | jj	rx| j dkrVttjS | jdk rltt tS tt tS | j dkr| jdk rttjS tdtS tt tS d S )N   r   )
r0   Zis_nonnegativer1   r   r   r   r   r   r   r4   )ber'   r'   r*   r+   N   s"    











c             C   s   ddl m} t|tj| tS )Nr   )set_div)Zsympy.sets.setexprr;   r+   r   r.   r   )r9   r:   r;   r'   r'   r*   r+   d   s    N)/Zsympy.multipledispatchr   r   Z
sympy.corer   r   r   r   r   r	   r
   r   Zsympyr   r   r   r   r   r   r   r   r   r   Zsympy.core.numbersr   r   r   Z
sympy.setsr   r   r   r   r   r   r   r    Zsympy.core.functionr!   Zsympy.logic.boolalgr"   r#   r$   r%   r&   r,   r-   r+   r'   r'   r'   r*   <module>   s   (0(0