ó
Ħĵ\c           @  s    d  Z  d d l m Z m Z d d l m Z m Z m Z m Z m	 Z	 m
 Z
 m Z d d l m Z d d l m Z d d l m Z e d e f d     Y Z d	 S(
   s3   Implementaton of :class:`PythonIntegerRing` class. i˙˙˙˙(   t   print_functiont   division(   t   PythonIntegert   SymPyIntegert   python_sqrtt   python_factorialt   python_gcdext
   python_gcdt
   python_lcm(   t   IntegerRing(   t   CoercionFailed(   t   publict   PythonIntegerRingc           B  sı   e  Z d  Z e Z e d  Z e d  Z d Z d   Z d   Z	 d   Z
 d   Z d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   s-   Integer ring based on Python's ``int`` type. i    i   t	   ZZ_pythonc         C  s   d S(   s$   Allow instantiation of this domain. N(    (   t   self(    (    sD   lib/python2.7/site-packages/sympy/polys/domains/pythonintegerring.pyt   __init__   t    c         C  s
   t  |  S(   s!   Convert ``a`` to a SymPy object. (   R   (   R   t   a(    (    sD   lib/python2.7/site-packages/sympy/polys/domains/pythonintegerring.pyt   to_sympy   s    c         C  sU   | j  r t | j  S| j rA t |  | k rA t t |   St d |   d S(   s&   Convert SymPy's Integer to ``dtype``. s   expected an integer, got %sN(   t
   is_IntegerR   t   pt   is_Floatt   intR
   (   R   R   (    (    sD   lib/python2.7/site-packages/sympy/polys/domains/pythonintegerring.pyt
   from_sympy   s
    	c         C  s
   | j    S(   s5   Convert ``ModularInteger(int)`` to Python's ``int``. (   t   to_int(   t   K1R   t   K0(    (    sD   lib/python2.7/site-packages/sympy/polys/domains/pythonintegerring.pyt   from_FF_python&   s    c         C  s   | S(   s.   Convert Python's ``int`` to Python's ``int``. (    (   R   R   R   (    (    sD   lib/python2.7/site-packages/sympy/polys/domains/pythonintegerring.pyt   from_ZZ_python*   s    c         C  s   | j  d k r | j Sd S(   s3   Convert Python's ``Fraction`` to Python's ``int``. i   N(   t   denominatort	   numerator(   R   R   R   (    (    sD   lib/python2.7/site-packages/sympy/polys/domains/pythonintegerring.pyt   from_QQ_python.   s    c         C  s   t  | j    S(   s5   Convert ``ModularInteger(mpz)`` to Python's ``int``. (   R   R   (   R   R   R   (    (    sD   lib/python2.7/site-packages/sympy/polys/domains/pythonintegerring.pyt   from_FF_gmpy3   s    c         C  s
   t  |  S(   s,   Convert GMPY's ``mpz`` to Python's ``int``. (   R   (   R   R   R   (    (    sD   lib/python2.7/site-packages/sympy/polys/domains/pythonintegerring.pyt   from_ZZ_gmpy7   s    c         C  s&   | j    d k r" t | j    Sd S(   s,   Convert GMPY's ``mpq`` to Python's ``int``. i   N(   t   denomR   t   numer(   R   R   R   (    (    sD   lib/python2.7/site-packages/sympy/polys/domains/pythonintegerring.pyt   from_QQ_gmpy;   s    c         C  s/   | j  |  \ } } | d k r+ t |  Sd S(   s.   Convert mpmath's ``mpf`` to Python's ``int``. i   N(   t   to_rationalR   (   R   R   R   R   t   q(    (    sD   lib/python2.7/site-packages/sympy/polys/domains/pythonintegerring.pyt   from_RealField@   s    c         C  s   t  | |  S(   s)   Compute extended GCD of ``a`` and ``b``. (   R   (   R   R   t   b(    (    sD   lib/python2.7/site-packages/sympy/polys/domains/pythonintegerring.pyt   gcdexG   s    c         C  s   t  | |  S(   s    Compute GCD of ``a`` and ``b``. (   R   (   R   R   R(   (    (    sD   lib/python2.7/site-packages/sympy/polys/domains/pythonintegerring.pyt   gcdK   s    c         C  s   t  | |  S(   s    Compute LCM of ``a`` and ``b``. (   R   (   R   R   R(   (    (    sD   lib/python2.7/site-packages/sympy/polys/domains/pythonintegerring.pyt   lcmO   s    c         C  s
   t  |  S(   s   Compute square root of ``a``. (   R   (   R   R   (    (    sD   lib/python2.7/site-packages/sympy/polys/domains/pythonintegerring.pyt   sqrtS   s    c         C  s
   t  |  S(   s   Compute factorial of ``a``. (   R   (   R   R   (    (    sD   lib/python2.7/site-packages/sympy/polys/domains/pythonintegerring.pyt	   factorialW   s    (   t   __name__t
   __module__t   __doc__R   t   dtypet   zerot   onet   aliasR   R   R   R   R   R   R    R!   R$   R'   R)   R*   R+   R,   R-   (    (    (    sD   lib/python2.7/site-packages/sympy/polys/domains/pythonintegerring.pyR      s(   															N(   R0   t
   __future__R    R   t   sympy.polys.domains.groundtypesR   R   R   R   R   R   R   t   sympy.polys.domains.integerringR	   t   sympy.polys.polyerrorsR
   t   sympy.utilitiesR   R   (    (    (    sD   lib/python2.7/site-packages/sympy/polys/domains/pythonintegerring.pyt   <module>   s   4