ó
¡¼™\c           @  sà   d  Z  d d l m Z m Z d d l m Z m Z d d l m Z m	 Z	 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 d d	 l m Z d d
 l m Z m Z e d e f d „  ƒ  Yƒ Z d S(   s)   Implementation of :class:`Domain` class. iÿÿÿÿ(   t   print_functiont   division(   t   Basict   sympify(   t   HAS_GMPYt   integer_typest   is_sequence(   t
   deprecated(   t   DomainElement(   t   lex(   t   UnificationFailedt   CoercionFailedt   DomainError(   t   _unify_gens(   t   default_sort_keyt   publict   Domainc           B  sÚ  e  Z d  Z dV Z dV Z dV Z e Z e Z	 e Z
 e Z e Z Z e Z Z e Z Z e Z Z e Z Z e Z Z e Z Z e Z Z e Z Z e Z e Z  e Z! e Z" e Z# e Z$ dV Z% dV Z& e' e( d d d d d d ƒ d „  ƒ ƒ Z) e' e( d d d d d d ƒ d	 „  ƒ ƒ Z* d
 „  Z+ d „  Z, d „  Z- d „  Z. d „  Z/ e' d „  ƒ Z0 d „  Z1 d „  Z2 d „  Z3 dV d „ Z4 d „  Z5 d „  Z6 d „  Z7 d „  Z8 d „  Z9 d „  Z: d „  Z; d „  Z< d „  Z= d „  Z> d „  Z? d „  Z@ d  „  ZA d! „  ZB d" „  ZC d# „  ZD d$ „  ZE d% „  ZF d& „  ZG dV d' „ ZH d( „  ZI d) „  ZJ d* „  ZK d+ „  ZL d, „  ZM d- „  ZN d. „  ZO d/ „  ZP d0 „  ZQ d1 „  ZR d2 „  ZS d3 „  ZT d4 „  ZU d5 „  ZV d6 „  ZW d7 „  ZX d8 „  ZY d9 „  ZZ d: „  Z[ d; „  Z\ d< „  Z] d= „  Z^ d> „  Z_ d? „  Z` d@ „  Za dA „  Zb dB „  Zc dC „  Zd dD „  Ze dE „  Zf dF „  Zg dG „  Zh dH „  Zi dI „  Zj dJ „  Zk dK „  Zl dL „  Zm dM „  Zn dN „  Zo dO „  Zp dP „  Zq dV dQ „ Zr er Zs dR „  Zt dS „  Zu dV dT „ Zv dU „  Zw RS(W   s   Represents an abstract domain. t
   useinsteadt   is_Fieldt   issuei³1  t   deprecated_since_versions   1.1c         C  s   |  j  S(   N(   R   (   t   self(    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt	   has_Field3   s    t   is_Ringc         C  s   |  j  S(   N(   R   (   R   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   has_Ring8   s    c         C  s
   t  ‚ d  S(   N(   t   NotImplementedError(   R   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   __init__=   s    c         C  s   |  j  S(   N(   t   rep(   R   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   __str__@   s    c         C  s
   t  |  ƒ S(   N(   t   str(   R   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   __repr__C   s    c         C  s   t  |  j j |  j f ƒ S(   N(   t   hasht	   __class__t   __name__t   dtype(   R   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   __hash__F   s    c         G  s   |  j  | Œ  S(   N(   R"   (   R   t   args(    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   newI   s    c         C  s   |  j  S(   N(   R"   (   R   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   tpL   s    c         G  s   |  j  | Œ  S(   s7   Construct an element of ``self`` domain from ``args``. (   R%   (   R   R$   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   __call__P   s    c         G  s   |  j  | Œ  S(   N(   R"   (   R   R$   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   normalT   s    c         C  s’   | j  d k	 r d | j  } n d | j j } t |  | ƒ } | d k	 rl | | | ƒ } | d k	 rl | Sn  t d | t | ƒ | |  f ƒ ‚ d S(   s=   Convert ``element`` to ``self.dtype`` given the base domain. t   from_s)   can't convert %s of type %s from %s to %sN(   t   aliast   NoneR    R!   t   getattrR   t   type(   R   t   elementt   baset   methodt   _convertt   result(    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   convert_fromW   s    c         C  sH  | d k	 r |  j | | ƒ S|  j | ƒ r/ | Sd d l m } m } m } m } m } t	 | t
 ƒ ry |  j | | ƒ  ƒ St rØ | ƒ  } t	 | | j ƒ rª |  j | | ƒ S| ƒ  }	 t	 | |	 j ƒ rØ |  j | |	 ƒ Sn  t	 | t ƒ r| d t ƒ }
 |  j |
 | ƒ |
 ƒ St	 | t ƒ r@| d t ƒ }
 |  j |
 | ƒ |
 ƒ St	 | t ƒ re|  j | | j ƒ  ƒ S|  j r“t | d t ƒ r“|  j | j ƒ  ƒ St	 | t ƒ rÐy |  j | ƒ SWq%t t f k
 rÌq%XnU t | ƒ s%y, t | ƒ } t	 | t ƒ r|  j | ƒ SWq%t t f k
 r!q%Xn  t d | t | ƒ |  f ƒ ‚ d S(   s'   Convert ``element`` to ``self.dtype``. iÿÿÿÿ(   t   PythonIntegerRingt   GMPYIntegerRingt   GMPYRationalFieldt	   RealFieldt   ComplexFieldt   tolt	   is_grounds!   can't convert %s of type %s to %sN(   R+   R3   t   of_typet   sympy.polys.domainsR4   R5   R6   R7   R8   t
   isinstanceR   R   R&   t   floatt   Falset   complexR   t   parentt   is_NumericalR,   t   convertt   LCR   t
   from_sympyt	   TypeErrort
   ValueErrorR   R   R   R-   (   R   R.   R/   R4   R5   R6   R7   R8   t   integerst	   rationalsRA   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyRC   h   sJ    (		c         C  s   t  | |  j ƒ S(   s%   Check if ``a`` is of type ``dtype``. (   R=   R&   (   R   R.   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyR;   ž   s    c         C  s*   y |  j  | ƒ Wn t k
 r% t SXt S(   s'   Check if ``a`` belongs to this domain. (   RC   R   R?   t   True(   R   t   a(    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   __contains__¢   s
    c         C  s
   t  ‚ d S(   s!   Convert ``a`` to a SymPy object. N(   R   (   R   RK   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   to_sympy«   s    c         C  s
   t  ‚ d S(   s%   Convert a SymPy object to ``dtype``. N(   R   (   R   RK   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyRE   ¯   s    c         C  s   d S(   s.   Convert ``ModularInteger(int)`` to ``dtype``. N(   R+   (   t   K1RK   t   K0(    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   from_FF_python³   s    c         C  s   d S(   s.   Convert a Python ``int`` object to ``dtype``. N(   R+   (   RN   RK   RO   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   from_ZZ_python·   s    c         C  s   d S(   s3   Convert a Python ``Fraction`` object to ``dtype``. N(   R+   (   RN   RK   RO   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   from_QQ_python»   s    c         C  s   d S(   s.   Convert ``ModularInteger(mpz)`` to ``dtype``. N(   R+   (   RN   RK   RO   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   from_FF_gmpy¿   s    c         C  s   d S(   s,   Convert a GMPY ``mpz`` object to ``dtype``. N(   R+   (   RN   RK   RO   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   from_ZZ_gmpyÃ   s    c         C  s   d S(   s,   Convert a GMPY ``mpq`` object to ``dtype``. N(   R+   (   RN   RK   RO   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   from_QQ_gmpyÇ   s    c         C  s   d S(   s,   Convert a real element object to ``dtype``. N(   R+   (   RN   RK   RO   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   from_RealFieldË   s    c         C  s   d S(   s(   Convert a complex element to ``dtype``. N(   R+   (   RN   RK   RO   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   from_ComplexFieldÏ   s    c         C  s   d S(   s*   Convert an algebraic number to ``dtype``. N(   R+   (   RN   RK   RO   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   from_AlgebraicFieldÓ   s    c         C  s#   | j  r |  j | j | j ƒ Sd S(   s#   Convert a polynomial to ``dtype``. N(   R:   RC   RD   t   dom(   RN   RK   RO   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   from_PolynomialRing×   s    	c         C  s   d S(   s*   Convert a rational function to ``dtype``. N(   R+   (   RN   RK   RO   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   from_FractionFieldÜ   s    c         C  s   |  j  | j ƒ S(   s&   Convert a ``EX`` object to ``dtype``. (   RE   t   ex(   RN   RK   RO   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   from_ExpressionDomainà   s    c         C  s/   | j  ƒ  d k r+ |  j | j ƒ  | j ƒ Sd S(   s#   Convert a polynomial to ``dtype``. i    N(   t   degreeRC   RD   RY   (   RN   RK   RO   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   from_GlobalPolynomialRingä   s    c         C  s   |  j  | | ƒ S(   N(   R[   (   RN   RK   RO   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   from_GeneralizedPolynomialRingé   s    c         C  ss   |  j  r" t |  j ƒ t | ƒ @sD | j  rf t | j ƒ t | ƒ @rf t d |  | t | ƒ f ƒ ‚ n  |  j | ƒ S(   Ns+   can't unify %s with %s, given %s generators(   t   is_Compositet   sett   symbolsR
   t   tuplet   unify(   RO   RN   Rc   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   unify_with_symbolsì   s    D"c         C  sS  | d k	 r |  j | | ƒ S|  | k r, |  S|  j r9 |  S| j rF | S|  j sX | j r´|  j rj |  j n |  } | j r‚ | j n | } |  j rš |  j n d } | j r² | j n d } | j | ƒ } t | | ƒ } |  j rè |  j n | j } |  j	 r| j
 s| j	 rA|  j
 rA| j s)| j rA| j rA| j ƒ  } n  |  j rr| j sf|  j	 sf| j
 rr|  j }	 n	 | j }	 d d l m }
 |	 |
 k r¤|	 | | ƒ S|	 | | | ƒ Sd „  } |  j râ| j râ| |  j |  | ƒ S|  j r| j r| |  j |  | ƒ S|  j r,| j r,| | j | |  ƒ S|  j rQ| j rQ| |  j |  | ƒ S|  j sc|  j rg|  S| j sy| j r}| S|  j r½| j r½|  j |  j j | j ƒ t |  j | j ƒ Œ S|  j rÊ|  S| j r×| S|  j rä|  S| j rñ| S|  j rþ|  S| j r| S|  j r?| j r?|  j t |  j | j d t ƒƒ Sd d l m } | S(	   sZ  
        Construct a minimal domain that contains elements of ``K0`` and ``K1``.

        Known domains (from smallest to largest):

        - ``GF(p)``
        - ``ZZ``
        - ``QQ``
        - ``RR(prec, tol)``
        - ``CC(prec, tol)``
        - ``ALG(a, b, c)``
        - ``K[x, y, z]``
        - ``K(x, y, z)``
        - ``EX``

        iÿÿÿÿ(   t   GlobalPolynomialRingc         S  s=   t  | j | j ƒ } t  | j | j ƒ } |  d | d | ƒ S(   Nt   precR9   (   t   maxt	   precisiont	   tolerance(   t   clsRO   RN   Rh   R9   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt	   mkinexact)  s    t   key(   t   EXN(    (    (   R+   Rf   t   is_EXRa   RY   Rc   Re   R   t   ordert   is_FractionFieldt   is_PolynomialRingR   t   get_ringR    t&   sympy.polys.domains.old_polynomialringRg   t   is_ComplexFieldt   is_RealFieldt   is_AlgebraicFieldt   orig_extt   is_RationalFieldt   is_IntegerRingt   is_FiniteFieldRi   t   modR   R<   Ro   (   RO   RN   Rc   t	   K0_groundt	   K1_groundt
   K0_symbolst
   K1_symbolst   domainRq   Rl   Rg   Rm   Ro   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyRe   ò   st    		%		.						"c         C  s   t  | t ƒ o |  j | j k S(   s0   Returns ``True`` if two domains are equivalent. (   R=   R   R"   (   R   t   other(    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   __eq__R  s    c         C  s   |  | k S(   s1   Returns ``False`` if two domains are equivalent. (    (   R   Rƒ   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   __ne__V  s    c         C  sV   g  } xI | D]A } t  | t ƒ r; | j |  j | ƒ ƒ q | j |  | ƒ ƒ q W| S(   s5   Rersively apply ``self`` to all elements of ``seq``. (   R=   t   listt   appendt   map(   R   t   seqR2   t   elt(    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyRˆ   Z  s    c         C  s   t  d |  ƒ ‚ d S(   s)   Returns a ring associated with ``self``. s#   there is no ring associated with %sN(   R   (   R   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyRt   f  s    c         C  s   t  d |  ƒ ‚ d S(   s*   Returns a field associated with ``self``. s$   there is no field associated with %sN(   R   (   R   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt	   get_fieldj  s    c         C  s   |  S(   s2   Returns an exact domain associated with ``self``. (    (   R   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt	   get_exactn  s    c         C  s-   t  | d ƒ r |  j | Œ  S|  j | ƒ Sd S(   s0   The mathematical way to make a polynomial ring. t   __iter__N(   t   hasattrt	   poly_ring(   R   Rc   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   __getitem__r  s    c         O  s,   d d l  m } | |  | | j d t ƒ ƒ S(   s(   Returns a polynomial ring, i.e. `K[X]`. iÿÿÿÿ(   t   PolynomialRingRq   (   t"   sympy.polys.domains.polynomialringR‘   t   getR	   (   R   Rc   t   kwargsR‘   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyR   y  s    c         O  s,   d d l  m } | |  | | j d t ƒ ƒ S(   s'   Returns a fraction field, i.e. `K(X)`. iÿÿÿÿ(   t   FractionFieldRq   (   t!   sympy.polys.domains.fractionfieldR•   R“   R	   (   R   Rc   R”   R•   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt
   frac_field~  s    c         O  s    d d l  m } | |  | | Ž S(   s(   Returns a polynomial ring, i.e. `K[X]`. iÿÿÿÿ(   R‘   (   Ru   R‘   (   R   Rc   R”   R‘   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   old_poly_ringƒ  s    c         O  s    d d l  m } | |  | | Ž S(   s'   Returns a fraction field, i.e. `K(X)`. iÿÿÿÿ(   R•   (   t%   sympy.polys.domains.old_fractionfieldR•   (   R   Rc   R”   R•   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   old_frac_fieldˆ  s    c         G  s   t  d |  ƒ ‚ d S(   s6   Returns an algebraic field, i.e. `K(\alpha, \ldots)`. s$   can't create algebraic field over %sN(   R   (   R   t	   extension(    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   algebraic_field  s    c         G  s
   t  ‚ d S(   s$   Inject generators into this domain. N(   R   (   R   Rc   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   inject‘  s    c         C  s   | S(   s   Returns True if ``a`` is zero. (    (   R   RK   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   is_zero•  s    c         C  s   | |  j  k S(   s   Returns True if ``a`` is one. (   t   one(   R   RK   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   is_one™  s    c         C  s
   | d k S(   s#   Returns True if ``a`` is positive. i    (    (   R   RK   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   is_positive  s    c         C  s
   | d k  S(   s#   Returns True if ``a`` is negative. i    (    (   R   RK   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   is_negative¡  s    c         C  s
   | d k S(   s'   Returns True if ``a`` is non-positive. i    (    (   R   RK   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   is_nonpositive¥  s    c         C  s
   | d k S(   s'   Returns True if ``a`` is non-negative. i    (    (   R   RK   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   is_nonnegative©  s    c         C  s
   t  | ƒ S(   s.   Absolute value of ``a``, implies ``__abs__``. (   t   abs(   R   RK   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyR¥   ­  s    c         C  s   | S(   s,   Returns ``a`` negated, implies ``__neg__``. (    (   R   RK   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   neg±  s    c         C  s   | 
S(   s-   Returns ``a`` positive, implies ``__pos__``. (    (   R   RK   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   posµ  s    c         C  s   | | S(   s.   Sum of ``a`` and ``b``, implies ``__add__``.  (    (   R   RK   t   b(    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   add¹  s    c         C  s   | | S(   s5   Difference of ``a`` and ``b``, implies ``__sub__``.  (    (   R   RK   R¨   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   sub½  s    c         C  s   | | S(   s2   Product of ``a`` and ``b``, implies ``__mul__``.  (    (   R   RK   R¨   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   mulÁ  s    c         C  s   | | S(   s2   Raise ``a`` to power ``b``, implies ``__pow__``.  (    (   R   RK   R¨   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   powÅ  s    c         C  s
   t  ‚ d S(   s6   Exact quotient of ``a`` and ``b``, implies something. N(   R   (   R   RK   R¨   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   exquoÉ  s    c         C  s
   t  ‚ d S(   s1   Quotient of ``a`` and ``b``, implies something.  N(   R   (   R   RK   R¨   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   quoÍ  s    c         C  s
   t  ‚ d S(   s4   Remainder of ``a`` and ``b``, implies ``__mod__``.  N(   R   (   R   RK   R¨   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   remÑ  s    c         C  s
   t  ‚ d S(   s0   Division of ``a`` and ``b``, implies something. N(   R   (   R   RK   R¨   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   divÕ  s    c         C  s
   t  ‚ d S(   s5   Returns inversion of ``a mod b``, implies something. N(   R   (   R   RK   R¨   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   invertÙ  s    c         C  s
   t  ‚ d S(   s!   Returns ``a**(-1)`` if possible. N(   R   (   R   RK   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   revertÝ  s    c         C  s
   t  ‚ d S(   s   Returns numerator of ``a``. N(   R   (   R   RK   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   numerá  s    c         C  s
   t  ‚ d S(   s   Returns denominator of ``a``. N(   R   (   R   RK   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   denomå  s    c         C  s%   |  j  | | ƒ \ } } } | | f S(   s&   Half extended GCD of ``a`` and ``b``. (   t   gcdex(   R   RK   R¨   t   st   tt   h(    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt
   half_gcdexé  s    c         C  s
   t  ‚ d S(   s!   Extended GCD of ``a`` and ``b``. N(   R   (   R   RK   R¨   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyRµ   î  s    c         C  sC   |  j  | | ƒ } |  j | | ƒ } |  j | | ƒ } | | | f S(   s.   Returns GCD and cofactors of ``a`` and ``b``. (   t   gcdR®   (   R   RK   R¨   Rº   t   cfat   cfb(    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt	   cofactorsò  s    c         C  s
   t  ‚ d S(   s    Returns GCD of ``a`` and ``b``. N(   R   (   R   RK   R¨   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyRº   ù  s    c         C  s
   t  ‚ d S(   s    Returns LCM of ``a`` and ``b``. N(   R   (   R   RK   R¨   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   lcmý  s    c         C  s
   t  ‚ d S(   s#   Returns b-base logarithm of ``a``. N(   R   (   R   RK   R¨   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   log  s    c         C  s
   t  ‚ d S(   s   Returns square root of ``a``. N(   R   (   R   RK   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   sqrt  s    c         K  s   |  j  | ƒ j | |  S(   s*   Returns numerical approximation of ``a``. (   RM   t   evalf(   R   RK   Rh   t   options(    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyRÁ   	  s    c         C  s   | S(   N(    (   R   RK   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   real  s    c         C  s   |  j  S(   N(   t   zero(   R   RK   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   imag  s    c         C  s
   | | k S(   s+   Check if ``a`` and ``b`` are almost equal. (    (   R   RK   R¨   Rk   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   almosteq  s    c         C  s   t  d ƒ ‚ d S(   s*   Return the characteristic of this domain. s   characteristic()N(   R   (   R   (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   characteristic  s    N(x   R!   t
   __module__t   __doc__R+   R"   RÄ   RŸ   R?   R   R   t   has_assoc_Ringt   has_assoc_FieldR|   t   is_FFR{   t   is_ZZRz   t   is_QQRw   t   is_RRRv   t   is_CCRx   t   is_AlgebraicRs   t   is_PolyRr   t   is_Fract   is_SymbolicDomainRp   RJ   t   is_ExactRB   t	   is_SimpleRa   t   is_PIDt   has_CharacteristicZeroR   R*   t   propertyR   R   R   R   R   R   R#   R%   R&   R'   R(   R3   RC   R;   RL   RM   RE   RP   RQ   RR   RS   RT   RU   RV   RW   RX   RZ   R[   R]   R_   R`   Rf   Re   R„   R…   Rˆ   Rt   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°   R±   R²   R³   R´   R¹   Rµ   R½   Rº   R¾   R¿   RÀ   RÁ   t   nRÃ   RÅ   RÆ   RÇ   (    (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyR      sÔ   








''								6																				`																																											N(   RÉ   t
   __future__R    R   t
   sympy.coreR   R   t   sympy.core.compatibilityR   R   R   t   sympy.core.decoratorsR   t!   sympy.polys.domains.domainelementR   t   sympy.polys.orderingsR	   t   sympy.polys.polyerrorsR
   R   R   t   sympy.polys.polyutilsR   t   sympy.utilitiesR   R   t   objectR   (    (    (    s9   lib/python2.7/site-packages/sympy/polys/domains/domain.pyt   <module>   s   