ó
¡¼™\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
 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 d d	 l m 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) d d l* m+ Z+ d d l, m- Z- d d l. m/ Z/ d d l0 m1 Z1 d d l2 m3 Z3 d d l4 m5 Z5 e3 e' d „ ƒ Z6 e3 e' d „ ƒ Z7 e3 e' d „ ƒ Z8 e3 d „  ƒ Z9 i  Z: d e1 f d „  ƒ  YZ; d e e1 e f d „  ƒ  YZ< d  S(!   s!   Sparse rational function fields. iÿÿÿÿ(   t   print_functiont   division(   t   addt   mult   ltt   let   gtt   ge(   t   is_sequencet   reducet   string_types(   t   Expr(   t   Mod(   t   Exp1(   t   S(   t   Symbol(   t   CantSympifyt   sympify(   t   ExpBase(   t   DomainElement(   t   FractionField(   t   PolynomialRing(   t   construct_domain(   t   lex(   t   CoercionFailed(   t   build_options(   t   _parallel_dict_from_expr(   t   PolyElement(   t   DefaultPrinting(   t   public(   t   pollutec         C  s    t  |  | | ƒ } | f | j S(   sF   Construct new rational function field returning (field, x1, ..., xn). (   t	   FracFieldt   gens(   t   symbolst   domaint   ordert   _field(    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   field   s    c         C  s   t  |  | | ƒ } | | j f S(   sH   Construct new rational function field returning (field, (x1, ..., xn)). (   R   R    (   R!   R"   R#   R$   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   xfield"   s    c         C  s?   t  |  | | ƒ } t g  | j D] } | j ^ q | j ƒ | S(   sS   Construct new rational function field and inject generators into global namespace. (   R   R   R!   t   nameR    (   R!   R"   R#   R$   t   sym(    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   vfield(   s    )c         O  sm  t  } t |  ƒ s% |  g t }  } n  t t t |  ƒ ƒ }  t | | ƒ } g  } x! |  D] } | j | j ƒ  ƒ qV Wt	 | | ƒ \ } } | j
 d k rã t g  | D] } t | j ƒ  ƒ ^ q¡ g  ƒ }	 t |	 d | ƒ\ | _
 }
 n  t | j | j
 | j ƒ } g  } xD t d t | ƒ d ƒ D]* } | j | t | | | d !ƒ ƒ ƒ qW| r_| | d f S| | f Sd S(   sÝ  Construct a field deriving generators and domain
    from options and input expressions.

    Parameters
    ==========

    exprs : :class:`Expr` or sequence of :class:`Expr` (sympifiable)
    symbols : sequence of :class:`Symbol`/:class:`Expr`
    options : keyword arguments understood by :class:`Options`

    Examples
    ========

    >>> from sympy.core import symbols
    >>> from sympy.functions import exp, log
    >>> from sympy.polys.fields import sfield

    >>> x = symbols("x")
    >>> K, f = sfield((x*log(x) + 4*x**2)*exp(1/x + log(x)/3)/x**2)
    >>> K
    Rational function field in x, exp(1/x), log(x), x**(1/3) over ZZ with lex order
    >>> f
    (4*x**2*(exp(1/x)) + x*(exp(1/x))*(log(x)))/((x**(1/3))**5)
    t   opti    i   N(   t   FalseR   t   Truet   listt   mapR   R   t   extendt   as_numer_denomR   R"   t   Nonet   sumt   valuesR   R   R    R#   t   ranget   lent   appendt   tuple(   t   exprsR!   t   optionst   singleR*   t   numdenst   exprt   repst   rept   coeffst   _R$   t   fracst   i(    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   sfield/   s&    .(R   c           B  s¤   e  Z d  Z e d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d d „ Z d d „ Z d	 „  Z d
 „  Z d „  Z e Z d „  Z d „  Z d „  Z d „  Z RS(   s2   Multivariate distributed rational function field. c         C  s™  d d l  m } | | | | ƒ } | j } | j } | j } | j } |  j | | | | f } t j | ƒ } | d  k r•t
 j |  ƒ } | | _ t | ƒ | _ | | _ t d t f i | d 6ƒ | _ | | _ | | _ | | _ | | _ | j | j ƒ | _ | j | j ƒ | _ | j ƒ  | _ x` t | j | j ƒ D]I \ }	 }
 t |	 t ƒ r;|	 j } t | | ƒ s„t | | |
 ƒ q„q;q;W| t | <n  | S(   Niÿÿÿÿ(   t   PolyRingt   FracElementR%   (   t   sympy.polys.ringsRD   R!   t   ngensR"   R#   t   __name__t   _field_cachet   getR1   t   objectt   __new__t   _hash_tuplet   hasht   _hasht   ringt   typeRE   t   dtypet   zerot   onet   _gensR    t   zipt
   isinstanceR   R'   t   hasattrt   setattr(   t   clsR!   R"   R#   RD   RP   RG   RM   t   objt   symbolt	   generatorR'   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyRL   i   s8    										"	c         C  s,   t  g  |  j j D] } |  j | ƒ ^ q ƒ S(   s(   Return a list of polynomial generators. (   R7   RP   R    RR   (   t   selft   gen(    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyRU      s    c         C  s   |  j  |  j |  j f S(   N(   R!   R"   R#   (   R^   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   __getnewargs__“   s    c         C  s   |  j  S(   N(   RO   (   R^   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   __hash__–   s    c         C  sI   t  | t ƒ oH |  j |  j |  j |  j f | j | j | j | j f k S(   N(   RW   R   R!   RG   R"   R#   (   R^   t   other(    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   __eq__™   s    c         C  s   |  | k S(   N(    (   R^   Rb   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   __ne__ž   s    c         C  s   |  j  | | ƒ S(   N(   RR   (   R^   t   numert   denom(    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   raw_new¡   s    c         C  s@   | d  k r |  j j } n  | j | ƒ \ } } |  j | | ƒ S(   N(   R1   RP   RT   t   cancelRg   (   R^   Re   Rf   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   new£   s     c         C  s   |  j  j | ƒ S(   N(   R"   t   convert(   R^   t   element(    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt
   domain_new¨   s    c         C  s¸   y |  j  |  j j | ƒ ƒ SWn” t k
 r³ |  j } | j r­ | j r­ |  j } | j ƒ  } | j | ƒ } | j | j	 | ƒ ƒ } | j | j
 | ƒ ƒ } |  j | | ƒ S‚  n Xd  S(   N(   Ri   RP   t
   ground_newR   R"   t   is_Fieldt   has_assoc_Fieldt	   get_fieldRj   Re   Rf   Rg   (   R^   Rk   R"   RP   t   ground_fieldRe   Rf   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyRm   «   s    		c         C  s#  t  | t ƒ r1 |  | j k r" | St d ƒ ‚ nî t  | t ƒ r† | j ƒ  \ } } | j |  j ƒ } |  j j | ƒ } |  j	 | | ƒ St  | t
 ƒ rØ t | ƒ d k rØ t t |  j j | ƒ ƒ \ } } |  j | | ƒ St  | t ƒ rö t d ƒ ‚ n) t  | t ƒ r|  j | ƒ S|  j | ƒ Sd  S(   Nt
   conversioni   t   parsing(   RW   RE   R%   t   NotImplementedErrorR   t   clear_denomst   set_ringRP   Rm   Rg   R7   R5   R-   R.   t   ring_newRi   R
   R   t	   from_expr(   R^   Rk   Rf   Re   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt	   field_new»   s"    !!c           sM   |  j  ‰ t d „  ˆ j ƒ  Dƒ ƒ ‰ ‡  ‡ ‡ ‡ f d †  ‰  ˆ  t | ƒ ƒ S(   Nc         s  s9   |  ]/ } | j  s! t | t ƒ r | | j ƒ  f Vq d  S(   N(   t   is_PowRW   R   t   as_base_exp(   t   .0R_   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pys	   <genexpr>Ô   s    c           sy  ˆ j  |  ƒ } | d  k	 r | S|  j rG t t t t ˆ  |  j ƒ ƒ ƒ S|  j ro t t	 t t ˆ  |  j ƒ ƒ ƒ S|  j
 s t |  t t f ƒ r'|  j ƒ  \ } } xV ˆ D]N \ } \ } } | | k r¦ t | | ƒ d k r¦ ˆ j  | ƒ t | | ƒ Sq¦ W| j r'| t j k	 r'ˆ  | ƒ t | ƒ Sn  y ˆ j |  ƒ SWn: t k
 rtˆ j rnˆ j rnˆ j ƒ  j |  ƒ S‚  n Xd  S(   Ni    (   RJ   R1   t   is_AddR	   R   R-   R.   t   argst   is_MulR   Rz   RW   R   R   R{   R   t   intt
   is_IntegerR   t   OneRj   R   Rn   Ro   Rp   (   R<   R]   t   bt   eR_   t   bgt   eg(   t   _rebuildR"   t   mappingt   powers(    s1   lib/python2.7/site-packages/sympy/polys/fields.pyR‡   ×   s(    		!(   R"   R7   t   keysR   (   R^   R<   Rˆ   (    (   R‡   R"   Rˆ   R‰   s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   _rebuild_exprÒ   s    	c         C  sr   t  t t |  j |  j ƒ ƒ ƒ } y |  j | | ƒ } Wn' t k
 r` t d |  | f ƒ ‚ n X|  j | ƒ Sd  S(   NsG   expected an expression convertible to a rational function in %s, got %s(	   t   dictR-   RV   R!   R    R‹   R   t
   ValueErrorRy   (   R^   R<   Rˆ   t   frac(    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyRx   ó   s    !c         C  s
   t  |  ƒ S(   N(   R   (   R^   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt	   to_domainý   s    c         C  s)   d d l  m } | |  j |  j |  j ƒ S(   Niÿÿÿÿ(   RD   (   RF   RD   R!   R"   R#   (   R^   RD   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   to_ring   s    N(   RH   t
   __module__t   __doc__R   RL   RU   R`   Ra   Rc   Rd   R1   Rg   Ri   Rl   Rm   Ry   t   __call__R‹   Rx   R   R   (    (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyR   f   s"   &									!	
	RE   c           B  sv  e  Z d  Z d% 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 e 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" e" Z# d „  Z$ e$ Z% d „  Z& d  „  Z' d! „  Z( d% d" „ Z) d% d# „ Z* d% d$ „ Z+ RS(&   s=   Element of multivariate distributed rational function field. c         C  sI   | d  k r |  j j j } n | s3 t d ƒ ‚ n  | |  _ | |  _ d  S(   Ns   zero denominator(   R1   R%   RP   RT   t   ZeroDivisionErrorRe   Rf   (   R^   Re   Rf   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   __init__  s    	c         C  s   |  j  | | ƒ S(   N(   t	   __class__(   t   fRe   Rf   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyRg     s    c         C  s   |  j  | j | ƒ Œ  S(   N(   Rg   Rh   (   R—   Re   Rf   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyRi     s    c         C  s%   |  j  d k r t d ƒ ‚ n  |  j S(   Ni   s   f.denom should be 1(   Rf   R   Re   (   R—   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   to_poly  s    c         C  s   |  j  j ƒ  S(   N(   R%   R   (   R^   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   parent  s    c         C  s   |  j  |  j |  j f S(   N(   R%   Re   Rf   (   R^   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyR`     s    c         C  sA   |  j  } | d  k r= t |  j |  j |  j f ƒ |  _  } n  | S(   N(   RO   R1   RN   R%   Re   Rf   (   R^   RO   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyRa   "  s    	(c         C  s"   |  j  |  j j ƒ  |  j j ƒ  ƒ S(   N(   Rg   Re   t   copyRf   (   R^   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyRš   (  s    c         C  sT   |  j  | k r |  S| j } |  j j | ƒ } |  j j | ƒ } | j | | ƒ Sd  S(   N(   R%   RP   Re   Rv   Rf   Ri   (   R^   t	   new_fieldt   new_ringRe   Rf   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt	   set_field+  s    	c         G  s    |  j  j | Œ  |  j j | Œ  S(   N(   Re   t   as_exprRf   (   R^   R!   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyRž   4  s    c         C  sl   t  | t ƒ rC |  j | j k rC |  j | j k oB |  j | j k S|  j | k og |  j |  j j j k Sd  S(   N(   RW   RE   R%   Re   Rf   RP   RT   (   R—   t   g(    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyRc   7  s    !"c         C  s   |  | k S(   N(    (   R—   RŸ   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyRd   =  s    c         C  s   t  |  j ƒ S(   N(   t   boolRe   (   R—   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   __nonzero__@  s    c         C  s   |  j  j ƒ  |  j j ƒ  f S(   N(   Rf   t   sort_keyRe   (   R^   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyR¢   E  s    c         C  s6   t  | |  j j ƒ r. | |  j ƒ  | j ƒ  ƒ St Sd  S(   N(   RW   R%   RR   R¢   t   NotImplemented(   t   f1t   f2t   op(    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   _cmpH  s    c         C  s   |  j  | t ƒ S(   N(   R§   R   (   R¤   R¥   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   __lt__N  s    c         C  s   |  j  | t ƒ S(   N(   R§   R   (   R¤   R¥   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   __le__P  s    c         C  s   |  j  | t ƒ S(   N(   R§   R   (   R¤   R¥   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   __gt__R  s    c         C  s   |  j  | t ƒ S(   N(   R§   R   (   R¤   R¥   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   __ge__T  s    c         C  s   |  j  |  j |  j ƒ S(   s"   Negate all coefficients in ``f``. (   Rg   Re   Rf   (   R—   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   __pos__W  s    c         C  s   |  j  |  j |  j ƒ S(   s"   Negate all coefficients in ``f``. (   Rg   Re   Rf   (   R—   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   __neg__[  s    c         C  s­   |  j  j } y | j | ƒ } Wnz t k
 r› | j r— | j r— | j ƒ  } y | j | ƒ } Wn t k
 rt q— Xd | j | ƒ | j | ƒ f Sn  d SXd | d  f Sd  S(   Niÿÿÿÿi    i   (   i    NN(
   R%   R"   Rj   R   Rn   Ro   Rp   Re   Rf   R1   (   R^   Rk   R"   Rq   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   _extract_ground_  s    "c         C  s–  |  j  } | s |  S|  s | St | | j ƒ r“ |  j | j k r^ |  j |  j | j |  j ƒ S|  j |  j | j |  j | j |  j | j ƒ Snö t | | j j ƒ rÉ |  j |  j |  j | |  j ƒ St | t ƒ r@t | j t	 ƒ r| j j  | j  k rq‰t | j  j t	 ƒ r9| j  j j  | k r9| j
 |  ƒ St SnI t | t ƒ r‰t | j t ƒ ry| j j | j k ryq‰| j
 |  ƒ Sn  |  j
 | ƒ S(   s(   Add rational functions ``f`` and ``g``. (   R%   RW   RR   Rf   Ri   Re   RP   RE   R"   R   t   __radd__R£   R   R   (   R—   RŸ   R%   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   __add__s  s,    	5!'*'c         C  sµ   t  | |  j j j ƒ r9 |  j |  j |  j | |  j ƒ S|  j | ƒ \ } } } | d k r~ |  j |  j |  j | |  j ƒ S| sˆ t S|  j |  j | |  j | |  j | ƒ Sd  S(   Ni   (	   RW   R%   RP   RR   Ri   Re   Rf   R®   R£   (   R—   t   cR¦   t   g_numert   g_denom(    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyR¯   ’  s    !!c         C  s  |  j  } | s |  S|  s | St | | j ƒ r” |  j | j k r_ |  j |  j | j |  j ƒ S|  j |  j | j |  j | j |  j | j ƒ Snö t | | j j ƒ rÊ |  j |  j |  j | |  j ƒ St | t ƒ rAt | j t	 ƒ r| j j  | j  k rqŠt | j  j t	 ƒ r:| j  j j  | k r:| j
 |  ƒ St SnI t | t ƒ rŠt | j t ƒ rz| j j | j k rzqŠ| j
 |  ƒ Sn  |  j | ƒ \ } } } | d k rÏ|  j |  j |  j | |  j ƒ S| sÙt S|  j |  j | |  j | |  j | ƒ Sd S(   s-   Subtract rational functions ``f`` and ``g``. i   N(   R%   RW   RR   Rf   Ri   Re   RP   RE   R"   R   t   __rsub__R£   R   R   R®   (   R—   RŸ   R%   R¦   R²   R³   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   __sub__Ÿ  s6    	5!'*'!c         C  s¸   t  | |  j j j ƒ r: |  j |  j |  j | |  j ƒ S|  j | ƒ \ } } } | d k r€ |  j |  j |  j | |  j ƒ S| sŠ t S|  j |  j | |  j | |  j | ƒ Sd  S(   Ni   (	   RW   R%   RP   RR   Ri   Re   Rf   R®   R£   (   R—   R±   R¦   R²   R³   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyR´   Å  s    ""c         C  sP  |  j  } |  s | r | j St | | j ƒ rT |  j |  j | j |  j | j ƒ St | | j j ƒ rƒ |  j |  j | |  j ƒ St | t ƒ rú t | j	 t
 ƒ r¼ | j	 j  | j  k r¼ qCt | j  j	 t
 ƒ ró | j  j	 j  | k ró | j |  ƒ St SnI t | t ƒ rCt | j	 t ƒ r3| j	 j | j k r3qC| j |  ƒ Sn  |  j | ƒ S(   s-   Multiply rational functions ``f`` and ``g``. (   R%   RS   RW   RR   Ri   Re   Rf   RP   RE   R"   R   t   __rmul__R£   R   R   (   R—   RŸ   R%   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   __mul__Ò  s$    	$'*'c         C  sœ   t  | |  j j j ƒ r2 |  j |  j | |  j ƒ S|  j | ƒ \ } } } | d k rp |  j |  j | |  j ƒ S| sz t S|  j |  j | |  j | ƒ Sd  S(   Ni   (	   RW   R%   RP   RR   Ri   Re   Rf   R®   R£   (   R—   R±   R¦   R²   R³   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyR¶   ì  s    c         C  s§  |  j  } | s t ‚ n%t | | j ƒ rN |  j |  j | j |  j | j ƒ St | | j j ƒ r} |  j |  j |  j | ƒ St | t ƒ rô t | j	 t
 ƒ r¶ | j	 j  | j  k r¶ q=t | j  j	 t
 ƒ rí | j  j	 j  | k rí | j |  ƒ St SnI t | t ƒ r=t | j	 t ƒ r-| j	 j | j k r-q=| j |  ƒ Sn  |  j | ƒ \ } } } | d k r{|  j |  j |  j | ƒ S| s…t S|  j |  j | |  j | ƒ Sd S(   s0   Computes quotient of fractions ``f`` and ``g``. i   N(   R%   R”   RW   RR   Ri   Re   Rf   RP   RE   R"   R   t   __rtruediv__R£   R   R   R®   (   R—   RŸ   R%   R¦   R²   R³   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   __truediv__ù  s.    		$'*'c         C  s«   |  s t  ‚ n2 t | |  j j j ƒ rA |  j |  j | |  j ƒ S|  j | ƒ \ } } } | d k r |  j |  j | |  j ƒ S| s‰ t	 S|  j |  j | |  j | ƒ Sd  S(   Ni   (
   R”   RW   R%   RP   RR   Ri   Rf   Re   R®   R£   (   R—   R±   R¦   R²   R³   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyR¸     s    	c         C  s]   | d k r* |  j  |  j | |  j | ƒ S|  s9 t ‚ n  |  j  |  j | |  j | ƒ Sd S(   s+   Raise ``f`` to a non-negative power ``n``. i    N(   Rg   Re   Rf   R”   (   R—   t   n(    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   __pow__-  s
    	c         C  sM   | j  ƒ  } |  j |  j j | ƒ |  j |  j |  j j | ƒ |  j d ƒ S(   s  Computes partial derivative in ``x``.

        Examples
        ========

        >>> from sympy.polys.fields import field
        >>> from sympy.polys.domains import ZZ

        >>> _, x, y, z = field("x,y,z", ZZ)
        >>> ((x**2 + y)/(z + 1)).diff(x)
        2*x/(z + 1)

        i   (   R˜   Ri   Re   t   diffRf   (   R—   t   x(    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyR¼   6  s    c         G  sp   d t  | ƒ k  o# |  j j k n rJ |  j t t |  j j | ƒ ƒ ƒ St d |  j j t  | ƒ f ƒ ‚ d  S(   Ni    s1   expected at least 1 and at most %s values, got %s(   R5   R%   RG   t   evaluateR-   RV   R    R   (   R—   R3   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyR“   G  s    ("c         C  sÄ   t  | t ƒ rn | d  k rn g  | D] \ } } | j ƒ  | f ^ q" } |  j j | ƒ |  j j | ƒ } } n7 | j ƒ  } |  j j | | ƒ |  j j | | ƒ } } | j j ƒ  } | j	 | | ƒ S(   N(
   RW   R-   R1   R˜   Re   R¾   Rf   RP   t   to_fieldRi   (   R—   R½   t   at   XRe   Rf   R%   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyR¾   M  s    +(+c         C  sµ   t  | t ƒ rn | d  k rn g  | D] \ } } | j ƒ  | f ^ q" } |  j j | ƒ |  j j | ƒ } } n7 | j ƒ  } |  j j | | ƒ |  j j | | ƒ } } |  j | | ƒ S(   N(   RW   R-   R1   R˜   Re   t   subsRf   Ri   (   R—   R½   RÀ   RÁ   Re   Rf   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyRÂ   X  s    +(+c         C  s
   t  ‚ d  S(   N(   Rt   (   R—   R½   RÀ   (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   composeb  s    N(,   RH   R‘   R’   R1   R•   Rg   Ri   R˜   R™   R`   RO   Ra   Rš   R   Rž   Rc   Rd   R¡   t   __bool__R¢   R§   R¨   R©   Rª   R«   R¬   R­   R®   R°   R¯   Rµ   R´   R·   R¶   R¹   t   __div__R¸   t   __rdiv__R»   R¼   R“   R¾   RÂ   RÃ   (    (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyRE     sR   																										&				!					
N(=   R’   t
   __future__R    R   t   operatorR   R   R   R   R   R   t   sympy.core.compatibilityR   R	   R
   t   sympy.core.exprR   t   sympy.core.modR   t   sympy.core.numbersR   t   sympy.core.singletonR   t   sympy.core.symbolR   t   sympy.core.sympifyR   R   t&   sympy.functions.elementary.exponentialR   t!   sympy.polys.domains.domainelementR   t!   sympy.polys.domains.fractionfieldR   t"   sympy.polys.domains.polynomialringR   t   sympy.polys.constructorR   t   sympy.polys.orderingsR   t   sympy.polys.polyerrorsR   t   sympy.polys.polyoptionsR   t   sympy.polys.polyutilsR   RF   R   t   sympy.printing.defaultsR   t   sympy.utilitiesR   t   sympy.utilities.magicR   R%   R&   R)   RC   RI   R   RE   (    (    (    s1   lib/python2.7/site-packages/sympy/polys/fields.pyt   <module>   s@   .5ž