o
    à8Va´  ã                   @   sþ   d dl 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 d dlmZ d dl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 )é    )ÚMinÚMaxÚSetÚLambdaÚsymbolsÚSÚoo)ÚBasicÚExprÚInteger)ÚInfinityÚNegativeInfinityÚZero)Údispatch)ÚIntervalÚ	FiniteSetÚUnionÚImageSetzx yc                 C   s   d S ©N© ©ÚxÚyr   r   ú;/usr/lib/python3/dist-packages/sympy/sets/handlers/power.pyÚ_set_pow   s   r   c                 C   s   t tttftt ƒ| |ƒS r   )r   r   Ú_xÚ_yr   r   r   r   r      s   c                 C   s   | | S r   r   r   r   r   r   r      s   c                 C   s
   t tjƒS r   )r   r   ÚOne)r   Úzr   r   r   r      s   
c                 C   sh  | j | }| j| }|dkr||kn| j| j  kdkr$| j}| j}|}n| j}| j}|}| j jr=tt||ƒt||ƒ||ƒS | jjrNtt||ƒt||ƒ||ƒS |j	r†|jr}| j j
r_t|t| jƒS | jj
rltt |d| jƒS ttt |d| jƒt|t| jƒƒS t||| j| jƒS |jr²|jr§| j j
r—t|t| jƒS | jj
r¢t|t| jƒS tdtƒS ttj|tj| v|ƒ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Ús2r!   r"   Zsleftr   r   r   r      sH   

"þþ"
øc                 C   s¬   | j jr| jdk rttjƒS | j dkrttjƒS tdtƒS | jj	r<| j dkr+ttjƒS | jdk r6tt tƒS tt tƒS | j dkrP| jdk rKttjƒS tdtƒS tt tƒS )Né   r   éÿÿÿÿ)
r   Zis_nonnegativer    r   r   r   r   r   r   r#   )ÚbÚer   r   r   r   K   s"   











c                 C   s   ddl m} t|tj| ƒtƒS )Nr   )Úset_div)Zsympy.sets.setexprr*   r   r   r   r   )r(   r)   r*   r   r   r   r   a   s   N)Zsympyr   r   r   r   r   r   r   Z
sympy.corer	   r
   r   Zsympy.core.numbersr   r   r   Zsympy.multipledispatchr   Z
sympy.setsr   r   r   r   r   r   r   r   r   r   r   Ú<module>   s(   $ 




/
