ó
Ąž\c           @  sē   d  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 e d
 e e e	 f d     Y Z d S(   s,   Implementation of :class:`RealField` class. iĸĸĸĸ(   t   print_functiont   division(   t   Float(   t   Field(   t   SimpleDomain(   t   CharacteristicZero(   t	   MPContext(   t   CoercionFailed(   t   publict	   RealFieldc           B  s&  e  Z d  Z d Z e Z Z e Z e Z	 e Z
 e Z e Z d Z e d    Z e d    Z e d    Z e d    Z e d d d  Z d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z e d  Z d   Z  d   Z! d   Z" d   Z# d d  Z$ RS(   s(   Real numbers up to the given precision. t   RRi5   c         C  s   |  j  |  j k S(   N(   t	   precisiont   _default_precision(   t   self(    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyt   has_default_precision   s    c         C  s
   |  j  j S(   N(   t   _contextt   prec(   R   (    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyR   "   s    c         C  s
   |  j  j S(   N(   R   t   dps(   R   (    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyR   &   s    c         C  s
   |  j  j S(   N(   R   t	   tolerance(   R   (    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyR   *   s    c         C  sX   t  | | |  } |  | _ | |  _ | j |  _ |  j d  |  _ |  j d  |  _ d  S(   Ni    i   (   R   t   _parentR   t   mpft   dtypet   zerot   one(   R   R   R   t   tolt   context(    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyt   __init__.   s    		c         C  s1   t  | t  o0 |  j | j k o0 |  j | j k S(   N(   t
   isinstanceR	   R   R   (   R   t   other(    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyt   __eq__7   s    c         C  s%   t  |  j j |  j |  j |  j f  S(   N(   t   hasht	   __class__t   __name__R   R   R   (   R   (    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyt   __hash__<   s    c         C  s   t  | |  j  S(   s%   Convert ``element`` to SymPy number. (   R   R   (   R   t   element(    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyt   to_sympy?   s    c         C  s?   | j  d |  j  } | j r+ |  j |  St d |   d S(   s%   Convert SymPy's number to ``dtype``. t   ns   expected real number, got %sN(   t   evalfR   t	   is_NumberR   R   (   R   t   exprt   number(    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyt
   from_sympyC   s    	c         C  s   |  j  |  S(   N(   R   (   R   R"   t   base(    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyt   from_ZZ_pythonL   s    c         C  s   |  j  | j  | j S(   N(   R   t	   numeratort   denominator(   R   R"   R*   (    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyt   from_QQ_pythonO   s    c         C  s   |  j  t |   S(   N(   R   t   int(   R   R"   R*   (    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyt   from_ZZ_gmpyR   s    c         C  s#   |  j  t | j   t | j  S(   N(   R   R/   R,   R-   (   R   R"   R*   (    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyt   from_QQ_gmpyU   s    c         C  s!   |  | k r | S|  j  |  Sd  S(   N(   R   (   R   R"   R*   (    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyt   from_RealFieldX   s    c         C  s   | j  s |  j | j  Sd  S(   N(   t   imagR   t   real(   R   R"   R*   (    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyt   from_ComplexField^   s    	c         C  s   |  j  j | |  S(   s*   Convert a real number to rational number. (   R   t   to_rational(   R   R"   t   limit(    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyR6   b   s    c         C  s   |  S(   s)   Returns a ring associated with ``self``. (    (   R   (    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyt   get_ringf   s    c         C  s   d d l  m } | S(   s2   Returns an exact domain associated with ``self``. iĸĸĸĸ(   t   QQ(   t   sympy.polys.domainsR9   (   R   R9   (    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyt	   get_exactj   s    c         C  s   |  j  S(   s    Returns GCD of ``a`` and ``b``. (   R   (   R   t   at   b(    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyt   gcdo   s    c         C  s   | | S(   s    Returns LCM of ``a`` and ``b``. (    (   R   R<   R=   (    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyt   lcms   s    c         C  s   |  j  j | | |  S(   s+   Check if ``a`` and ``b`` are almost equal. (   R   t   almosteq(   R   R<   R=   R   (    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyR@   w   s    N(%   R    t
   __module__t   __doc__t   rept   Truet   is_RealFieldt   is_RRt   Falset   is_Exactt   is_Numericalt   is_PIDt   has_assoc_Ringt   has_assoc_FieldR   t   propertyR   R   R   R   t   NoneR   R   R!   R#   R)   R+   R.   R0   R1   R2   R5   R6   R8   R;   R>   R?   R@   (    (    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyR	      s<   
																N(   RB   t
   __future__R    R   t   sympy.core.numbersR   t   sympy.polys.domains.fieldR   t    sympy.polys.domains.simpledomainR   t&   sympy.polys.domains.characteristiczeroR   t   sympy.polys.domains.mpelementsR   t   sympy.polys.polyerrorsR   t   sympy.utilitiesR   R	   (    (    (    s<   lib/python2.7/site-packages/sympy/polys/domains/realfield.pyt   <module>   s   