ó
~9­\c           @   sÞ  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 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 „  ƒ Z* e e e ƒ d	 „  ƒ Z* e e e ƒ d
 „  ƒ Z* e e e ƒ d „  ƒ Z* e e e ƒ d „  ƒ Z+ e e e ƒ d „  ƒ Z+ e e e ƒ d „  ƒ Z+ e e e ƒ d „  ƒ Z+ d S(   iÿÿÿÿ(   t   dispatcht
   Dispatcher(   t   Basict   Exprt   Functiont   Addt   Mult   Powt   Dummyt   Integer(
   t   Mint   Maxt   Sett   sympifyt   Lambdat   symbolst   expt   logt   St   oo(   t   imagesett   Intervalt	   FiniteSett   Uniont   ImageSett
   ProductSett   EmptySett   Intersection(   t   FunctionClass(   t   Andt   Ort   Nott   truet   falses   x yc         C   s   d  S(   N(   t   None(   t   xt   y(    (    s6   lib/python2.7/site-packages/sympy/sets/handlers/mul.pyt   _set_mul   s    c         C   s   d  S(   N(   R"   (   R#   R$   (    (    s6   lib/python2.7/site-packages/sympy/sets/handlers/mul.pyR%      s    c         C   s   |  | S(   N(    (   R#   R$   (    (    s6   lib/python2.7/site-packages/sympy/sets/handlers/mul.pyR%      s    c         C   sä   |  j  | j  t |  j p | j ƒ f |  j  | j t |  j pD | j ƒ f |  j | j  t |  j pi | j ƒ f |  j | j t |  j pŽ | j ƒ f f } t | ƒ \ } } t | ƒ \ } } t | | | | ƒ St t t  t ƒ ƒ S(   sf   
    Multiplications in interval arithmetic
    https://en.wikipedia.org/wiki/Interval_arithmetic
    (	   t   startt   boolt	   left_opent   endt
   right_opent   mint   maxR   t   SetExpr(   R#   R$   t   comvalst   minvalt   minopent   maxvalt   maxopen(    (    s6   lib/python2.7/site-packages/sympy/sets/handlers/mul.pyR%      s    %%%+c         C   s   d  S(   N(   R"   (   R#   R$   (    (    s6   lib/python2.7/site-packages/sympy/sets/handlers/mul.pyt   _set_div2   s    c         C   s   |  | S(   N(    (   R#   R$   (    (    s6   lib/python2.7/site-packages/sympy/sets/handlers/mul.pyR3   6   s    c         C   s   d  S(   N(   R"   (   R#   R$   (    (    s6   lib/python2.7/site-packages/sympy/sets/handlers/mul.pyR3   :   s    c         C   s®   d d l  m } d d l m } | j | j j rA t | | ƒ S| j d k rY | } n d | j } | j d k r | } n d | j } | |  t | | | j | j	 ƒ ƒ S(   s`   
    Divisions in interval arithmetic
    https://en.wikipedia.org/wiki/Interval_arithmetic
    iÿÿÿÿ(   t   set_mul(   R   i    i   (
   t   sympy.sets.setexprR4   t   sympyR   R&   R)   t   is_negativeR   R*   R(   (   R#   R$   R4   R   t   s2t   s1(    (    s6   lib/python2.7/site-packages/sympy/sets/handlers/mul.pyR3   >   s    	
N(,   t   sympy.multipledispatchR    R   t
   sympy.coreR   R   R   R   R   R   R   R	   R6   R
   R   R   R   R   R   R   R   R   R   t
   sympy.setsR   R   R   R   R   R   R   R   t   sympy.core.functionR   t   sympy.logic.boolalgR   R   R   R    R!   t   _xt   _yR%   R3   (    (    (    s6   lib/python2.7/site-packages/sympy/sets/handlers/mul.pyt   <module>   s   :F:(