
\c           @   s  d  Z  d d l m Z m Z m Z m Z m Z m Z 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 d d l m Z m Z d d l m Z 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
   Z$ d   Z% d   Z& d   Z' d   Z( d   Z) d   Z* d   Z+ d   Z, d   Z- d   Z. d   Z/ d   Z0 d   Z1 e d    Z2 d   Z3 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' S((   s   Tests for Groebner bases. i(   t   groebnert   sigt   sig_keyt   lbpt   lbp_keyt   critical_pairt   cp_keyt   is_rewritable_or_comparablet   Signt   Polynt   Numt   s_polyt	   f5_reducet   groebner_lcmt   groebner_gcdt   is_groebner(   t   _representing_matrices(   t   lext   grlex(   t   ringt   xring(   t   ZZt   QQ(   t   slow(   t
   polyconfig(   t   rangec          C   s0	  t  d t t  \ }  } } | d d | | d } | | d | d d } t | | g |   | | d t d d  g k s t  t  d t t  \ }  } } d | d | | d } d | d | | d } t | | g |   | | d t d d  g k st  t  d t t  \ }  } } } | | d } | | d } t | | g |   | | g k sot  t  d t t  \ }  } } | d d | | } | d | | d | d } t | | g |   | d | | t d d  | | d g k st  t  d t t  \ }  } } } | d | } | d | } t | | g |   | d | | | | | | | d | d | d g k st  t  d t t  \ }  } } } | d | } | d | } t | | g |   | d | d | d | | | | | | | d g k s(t  t  d t t  \ }  } } } | d | } | d | } t | | g |   | d | | | | d | | | | d | d g k st  t  d t t  \ }  } } } | d | } | d | } t | | g |   | d | d | d | | | | d | | | g k sKt  t  d t t  \ }  } } } | | d } | d | } t | | g |   | | d | d | g k st  t  d t t  \ }  } } } | | d } | d | } t | | g |   | d | | | | | | | d g k s?t  t  d t t  \ }  } } } | | d } | | d } t | | g |   | | d | | d g k st  t  d t t  \ }  } } } | | d } | | d } t | | g |   | d | | | | | | | d g k s1t  t  d t t  \ }  } } } | d | } | | d } t | | g |   | | | | d | g k st  t  d t t  \ }  } } } | d | } | | d } t | | g |   | d | d | | | d | d | | | | g k s5t  t  d t t  \ }  } } } | | d } | | d } t | | g |   | | d | | d g k st  t  d t t  \ }  } } } | | d } | | d } t | | g |   | d | d | | | d | | | | | d g k s8t  t  d t t  \ }  } } } d | d | d d | | d } | d | d d } t | | g |   | d | d d	 | d
 d | d d | | d	 d | d t d d  | d t d d  | d t d d  g k s,	t  d  S(   Ns   x,yi   i   i   s   y,xs   x,y,zi   i   i   i   i   i   (   R   R   R   R    t   AssertionErrorR   (   t   Rt   xt   yt   ft   gt   z(    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   _do_test_groebner   s    88'HUUUV7G7G7W7X&/c           C   s$   t  j d d   t   Wd  QXd  S(   NR    t
   buchberger(   t   configt   usingR!   (    (    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   test_groebner_buchberger   s    c           C   s$   t  j d d   t   Wd  QXd  S(   NR    t   f5b(   R#   R$   R!   (    (    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   test_groebner_f5b   s    c          C   s  t  d t t  \ }  } } } | d | d | d | d | | | | d | g } | t d d  | d t d d	  | d
 t d d  | d t d d	  | d t d d  | t d d  | t d
 d  | d t d d  | d
 t d d  | d t d d  | d t d d  | t d d  | d d | d d | d
 d | d d | d d | d g } t | |   | k st  d  S(   Ns   x,y,zi   i   i   i   i  i   ic  i  i   i  ig  i  i   i5   i[   i   i  i  i  i4  i   i   i)   iR   iY   i.   i   (   R   R   R   R    R   (   R   R   R   R    t   Ft   G(    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   _do_test_benchmark_minpoly   s    ;uuIc           C   s$   t  j d d   t   Wd  QXd  S(   NR    R"   (   R#   R$   R*   (    (    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt!   test_benchmark_minpoly_buchberger   s    c           C   s$   t  j d d   t   Wd  QXd  S(   NR    R&   (   R#   R$   R*   (    (    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   test_benchmark_minpoly_f5b   s    c          C   s  t  d d  }  d d d d d d d d d d d d d d d d d  d! d" d# d$ d% d& d' g } t g  |  D] } d | ^ qg t t  \ } }  g  | D]( \ } } |  | d |  | d f ^ q } |  \ } } } }	 }
 } } } } } } } g  |  D] } | d d ^ q } g  | D]& \ } } | d | | | d ^ q} | | } t | d  |  | | | | | | | |	 | |
 | | | | | | | | | | | | | | | d | | | d | d d g k st  t | |  d g k st  d  S((   Ni   i   i   i   i   i   i   i   i   i
   i   i	   s   x%dii   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i
   (   i   i   (   i   i	   (   i   i   (   i   i   (   i   i   (   i   i	   (   i	   i
   (   i
   i   (   i   i   (   i   i   (   i   i	   (   i   i
   (   i   i   (   i   i   (   i   i   (   R   R   R   R   R    R   (   t   Vt   Et   vR   t   it   jt   x1t   x2t   x3t   x4t   x5t   x6t   x7t   x8t   x9t   x10t   x11t   x12R   t   I3R   t   Igt   I(    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   test_benchmark_coloring   s0    /5*!3
c          C   s  t  d t t  \ }  } } } | d | d | d | d d | d d | d | d | | d | | | g } t | |   d d | d | d | d d | d	 d | d	 | d
 | d d | d	 | | d d | d	 d | d g k s	t  t  d t t  \ }  } } } g  | D] } | j |   ^ q.} t | |   d | d	 | d
 | d d | d	 | | d	 | d d | d | d | d | | d | d d | d | d | g k st  d  S(   Ns   x:3i   i   ii   i   i   i  i   iO   i   i(   iT   i   i   i
   i   i(   R   R   R   R    R   R   t   set_ring(   R   t   x0R2   R3   R@   R0   (    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   _do_test_benchmark_katsura_3   s    #!+'2"' $c           C   s$   t  j d d   t   Wd  QXd  S(   NR    R"   (   R#   R$   RD   (    (    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt"   test_benchmark_katsura3_buchberger   s    c           C   s$   t  j d d   t   Wd  QXd  S(   NR    R&   (   R#   R$   RD   (    (    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   test_benchmark_katsura3_f5b   s    c          C   s  t  d t t  \ }  } } } } | d | d | d | d | d d | d d | d d | d | d | | d | | d | | | | d d | | d | | | g } t | |   d | d | d d | d d	 | d
 d | d d | d d | d d | d d | d | d d | d d | d
 d | d d | d d | d d | d | d | d d | d d | d
 d | d d | d d | d d | d  | d! d" | d d# | d d$ | d
 d% | d d& | d d' | d | g k s:t  t  d t t  \ }  } } } } g  | D] } | j |   ^ qb} t | |   d( | d) | d d* | | d+ | d, | d d- | d d. | d d/ | | d0 | d d1 | d d2 | | d3 | d4 | d d5 | d d6 | d7 | d8 | d | d9 | d d: | | d; | d< | d d= | d d> | d? | d@ | d dA | | d dB | | dC | dD | d dE | d d | d | d | d | d dF | | d | d' | d d
 | dG | | | dG | d d3 | | d | d | d d | dG | | | d | d d; | | d | dH | d d6 | | d | d | d | d g k st  d  S(I   Ns   x:4i   i   i9Z I G.%   i   I =lF   i   I:c   i   Ih   i   i0%2i   ieiFJ iQ I o   IJ9   I   I    i|0i i Ikr{V   I`O7   IpE   I\   iܮxi(i9i0 i   il i<  iH  i`  i$   i   i  i6  in  i;   im iXd i  i  i   i   i<   i   i   iS   i	   iin  i   i  i    iv  i9   i3   i!   i?   i  i   i"   i	  iQ  i   i   i   (   R   R   R   R    R   R   RB   (   R   RC   R2   R3   R4   R@   R0   (    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   _do_test_benchmark_katsura_4   s*    !/')[WWf!"SPWWCCCc           C   s$   t  j d d   t   Wd  QXd  S(   NR    R"   (   R#   R$   RG   (    (    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt#   test_benchmark_kastura_4_buchberger   s    c           C   s$   t  j d d   t   Wd  QXd  S(   NR    R&   (   R#   R$   RG   (    (    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   test_benchmark_kastura_4_f5b   s    c          C   s  t  d t t  \ }  } } d | d d | d d | d d | d	 d
 | d d | d d | d d | d d d | | d d d | | d d d | | d	 d d | | d d d | | d d | | d d d | | d d | g } t | |   d | d | d d | d d | d	 d  | d d! | d d" | d d# | d$ d% | d d& | d d' | d d( | d	 d) | d d* | d d+ | d d, | d- g k st  t  d t t  \ }  } } g  | D] } | j |   ^ q} t | |   d. | d | d/ | d d0 | d | d1 | d d2 | | d3 | d4 | d d5 | d6 d7 | d d8 | d d9 | d | d: | d d; | | d< | d= | d d> | d? d@ | d dA | d | dB | d dC | | dD | dE | d dF | d dG | dH dI | d dJ | d | dK | d dL | | d dM | | dN | dO | d dP | dQ g k st  d  S(R   Ns   x,ti	   i   i$   i   i    i   i   i   iN   i   i  i   i   i   il   iiH   i i   i   i  i8  ilii@  i`   l     
RtJ)1~MCMgKbqcLel   ra2U!J'B\KW4Du+%B:N'/|,3D`N l    >C_=DmbgrVJ5n,O{-[8 D/7"l   *uQ!3'; PtSo"_ ;2g0PZwg
l   .S[_ik
8Cn|#	v*u0HtSl    5u3jx]L*(IIyL1iColat1:'6(l    Pg];meVq'%opZ "Mmt:%63l    P*71}<U1qq,+'cX0rVvQa; pA9l    @ir0@>/3,F%*;W@ {=5|o&(c_46l   :W]l   `k-@\K'l   ,8y'X^l    4C|	,Ydm l    Lo5Rs l     "#?Vq l    @otc?c l      t-JOl     Sz(Gl	   jP.qlj=Mj1l	   :q~\q,9D h`l
   \B{+9C0-f l
   n_Y\D&nb l
   jj9k${.ZGc l
   v^O1mDM( l	   |!gc]0t|- l
   @Nw*%iLM!6 l
    z *rpK0Z% l   4X\h@T:V%]yF= l    8bH(KKnEm?p@(8*. l   `'[%gQ Ce4
?XG l   `Abwc}{?Vq*qA l    .'l#8}(UU,7 l   8L*e?FRm & l    ^4O}P\X9T7cq!2l    &mu@IgG8H2GW l    m
Q<--:b8aoTV lkJX]JDh6,^%>a1R l   4cDHad,;T&~D!C0 l   3b!@+(#5;1l    aRz2y,vD l   [K0PR;Tze3Dlol
   ,'_wR$9M^Dr.l
   [66FWg^4Pw*
3l   @;k`n|)^&a l   Z(G2uj))gCZ lO]iMW
jVo5CU l
   D
K6
u^@_3 l
   |E}wB=`/k!l
     9)P9@II%N`; l
   VDqtRx
T,S) l
   ZDHbEV*x
5VGI2l
   @4e`2er1NX0y6 l
   4IDV!%v l
   _+YSYB&k'?%l (   R   R   R   R    R   R   RB   (   R   R   t   tR@   R0   (    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   _do_test_benchmark_czichowski   s&    _W["_[[_c           C   s$   t  j d d   t   Wd  QXd  S(   NR    R"   (   R#   R$   RK   (    (    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt$   test_benchmark_czichowski_buchbergerD  s    c           C   s$   t  j d d   t   Wd  QXd  S(   NR    R&   (   R#   R$   RK   (    (    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   test_benchmark_czichowski_f5bI  s    c          C   s(  t  d t t  \ }  } } } } | | | | | | | | | | | | | | | | | | | | | | | | | | | | d g } t | |   d | d | d d | d d | d | d | d | d d | d d | d | d d | d	 d | d
 d | d d | | d d | | d d | d d | | d | d | d d g k st  t  d t t  \ }  } } } } g  | D] } | j |   ^ q} t | |   d | | | d | d
 d | d | d | d | d | | d d | | d | | d d | d | d d | | d d | d | d | d d | d | | | d | d d | | d | d | d | d | | d | d | d | d | | | d | | | d | | | | g	 k s$t  d  S(   Ns   a,b,c,di   i   i   i	   i   i   i   i
   i   i   i   (   R   R   R   R    R   R   RB   (   R   t   at   bt   ct   dR@   R0   (    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   _do_test_benchmark_cyclic_4M  s*    !/'//]!"',0'#7.c           C   s$   t  j d d   t   Wd  QXd  S(   NR    R"   (   R#   R$   RR   (    (    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt"   test_benchmark_cyclic_4_buchbergerj  s    c           C   s$   t  j d d   t   Wd  QXd  S(   NR    R&   (   R#   R$   RR   (    (    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   test_benchmark_cyclic_4_f5bn  s    c          C   sy   t  d d  }  t  d	 d  } t  d d  } t |  t  t | t  k sQ t  t | t  t | t  k  su t  d  S(   Ni    i   i   i   i   (   i    (   i    i    i    (   i   (   i   i   i   (   i   (   i   i   i   (   R   R   R   R   (   t   s1t   s2t   s3(    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   test_sig_keyr  s
    $c          C   s   t  d t t  \ }  } } } } t t d d  |  j d  } t t d
 d  |  j d  } t t d d  |  j d  } t |  t |  k s t  t |  t |  k  s t  d  S(   Ns   x,y,z,ti    i   i   i   i   (   i    (   i    i    i    i    (   i    (   i    i    i    i    (   i    (   i    i    i    i    (   R   R   R   R   R   t   zeroR   R   (   R   R   R   R    RJ   t   p1t   p2t   p3(    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   test_lbp_key{  s    !c    	      C   s3  t  d t t  \ }  } } } } d | | | d | d | d | d d d f } d | d | | | | | d d f } d | d | d | d | d | | d f } d | | | | d | | | d d	 f } t | | |   d d t d
 d  f d | d | | | | | d d f d d t d d  f d | | | d | d | d | d d d f f k st  t | | |   d d t d d  f d! | | | | d | | | d d	 f d# d$ t d d  f d& | d | d | d | d | | d f f k s/t  d  S('   Ns   x,y,z,ti    i   i   i   i   i   i   i   i(   i    i    i    i    (   (   i    i    i    i    i   (   i    i    i    i    (   (   i    i    i    i    i   (   i    i    i    i   (   (   i    i    i    i   i   (   i    i    i   i   (   (   i    i    i   i   i   (   i    i    i   i   (   (   i    i    i   i   i   (   i    i    i   i   (   i    i    i    i    (   (   i    i    i    i    i   (   i    i   i    i    (   (   i    i   i    i    i   (   i    i   i    i    (   i    i    i    i    (   (   i    i    i    i    i   (   i    i    i   i   (   (   i    i    i   i   i   (   i    i    i   i    (   i    i    i   i   (   (   i    i    i   i   i   (   i    i    i    i   (   (   i    i    i    i   i   (   i    i    i    i   (   i    i    i    i   (   (   i    i    i    i   i   (   R   R   R   R   R   (	   R   R   R   R    RJ   RZ   t   q1R[   t   q2(    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   test_critical_pair  s    !7,3/>XAc          C   sz  t  d t t  \ }  } } } } d | | | d | d | d | d d d f } d | d | | | | | d d f } d | d | d | d | d | | d f } d | | | | d | | | d d	 f } t | | |   }	 t | | |   }
 t |	 |   t |
 |   k  s.t  t | | |   }	 t | | |   }
 t |	 |   t |
 |   k  svt  d  S(   Ns   x,y,z,ti    i   i   i   i   i   i   i   (   i    i    i    i    (   (   i    i    i    i    i   (   i    i    i    i    (   (   i    i    i    i    i   (   i    i    i    i   (   (   i    i    i    i   i   (   i    i    i   i   (   (   i    i    i   i   i   (   R   R   R   R   R   R   (   R   R   R   R    RJ   RZ   R^   R[   R_   t   cp1t   cp2(    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   test_cp_key  s    !7,3/$c          C   s+  t  d t t  \ }  } } } } t t d d  |  j d  } t t d d  t d d  | d t d d  | | t d d  | | | d | t d d  | d t d	 d
  | | d t d d  | | t d d  | d t d d  | d d  g } t t |  t |  |  t	 k s;t
  t t d d  |  j d  } t t d d  t d d  | | t d d  | | t d d  | d | d t d d  | | t d d  | d | d t d d  | d  g } t t |  t |  |  t	 k s't
  d  S(   Ns   x,y,z,ti    i   i   i-   i   i?   i   iL   i#   i    ii   i   i   i   i   i   i
   i   (   i    i    i   i   (   i    i    i    i   (   i    i   i   i    (   i    i    i    i    (   R   R   R   R   R   RY   R   R   R
   t   TrueR   (   R   R   R   R    RJ   t   pt   B(    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt    test_is_rewritable_or_comparable  s    !*c       	   C   s  t  d t t  \ }  } } } d | d | d | d d f d d | d d | | d | d | d d | d f d t d d  | | t d d  | d	 | d t d	 d  | d f d | d
 | d t d d  | d t d d  | d	 f d | d	 t d d  | d t d d  | d t d d  | d f g } t | d | d |   } t |  } t | |  d |  j d f k st  t t	 t
 |  d d  t |  t |   } t | |  | k st  d  S(   Ns   x,y,zi    i   i   i   i   i   i
   i   i   iO   i   i   iT   i   id   (   i    i    i    (   (   i    i    i    i   (   i    i    i    (   (   i    i    i    i   (   i    i    i    (   (   i    i    i    i   (   i    i    i   (   (   i    i    i   i   (   i    i    i   (   (   i    i    i   i   (   i    i   i    (   (   i    i   i    i   (   R   R   R   R   R   R   RY   R   R   R   R   R	   R
   (   R   R   R   R    R(   t   cpt   s(    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   test_f5_reduce  s     <K>Q'1c          C   s&  t  d t t  \ }  } } d	 d
 d d g } | d | d | d d | | d | d g } t | | |   t d d  t d d  t d d  t d d  g t d d  t d d  t d d  t d d  g t d d  t d d  t d d  t d d  g t d d  t d d  t d d  t d d  g g t d d  t d d  t d d  t d d  g t d d  t d d  t d d  t d d  g t d d  t d d  t d d  t d d  g t d d  t d d  t d d  t d d  g g g k s"t  d  S(   Ns   x,yi    i   i   i   ii   i   (   i    i    (   i    i   (   i   i    (   i   i   (   R   R   R   R   R   (   R   R   R   t   basisR(   (    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   test_representing_matrices  s    44436443c          C   sc  t  d t  \ }  } } } t | d | d | |  | d | d k sR t  t d | d d | d d | d |  d | d d | d k s t  t  d t  \ }  } } } t | d | d | |  | d | d k s t  t d | d d | d d | d |  d | d d | d k sBt  t  d t  \ }  } } t | d | | | d  | d | d k st  d | | d d | | d d | | d d | | d } | d d | d | } d | | d d | | d d | | d d | | d d | | d d | | d } t | |  | k sjt  | d d | d | d	 | | d d | d } | d d | d | d
 | d | d d | | d d | d } | d | d | d | d | d d | d | d d | | d d | d } t | |  | k s_t  d  S(   Ns   x,y,zi   s   x,yi   i   i   i   i   i	   i   i
   i   i2   i/   i   (   R   R   R   R   R   (   R   R   R   R    R   R   t   h(    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   test_groebner_lcm  s     7O7O7Bb6JZc          C   s  t  d t  \ }  } } } t | d | d | |  | | k sJ t  t d | d d | d d | d |  d | d | k s t  t  d t  \ }  } } } t | d | d | |  | | k s t  t d | d d | d d | d |  | | k st  d  S(   Ns   x,y,zi   (   R   R   R   R   R   (   R   R   R   R    (    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   test_groebner_gcd  s    /G/c          C   s   t  d t t  \ }  } } | d | | t d d  | | d g } | d | | t d d  | | d g } t | |   t k s t  t | |   t k s t  d  S(   Ns   x,yi   i   i   (   R   R   R   R   Rd   R   t   False(   R   R   R   t   valid_groebnert   invalid_groebner(    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   test_is_groebner  s
    --N(A   t   __doc__t   sympy.polys.groebnertoolsR    R   R   R   R   R   R   R   R   R	   R
   R   R   R   R   R   t   sympy.polys.fglmtoolsR   t   sympy.polys.orderingsR   R   t   sympy.polys.ringsR   R   t   sympy.polys.domainsR   R   t   sympy.utilities.pytestR   t   sympy.polysR   R#   t   sympy.core.compatibilityR   R!   R%   R'   R*   R+   R,   RA   RD   RE   RF   RG   RH   RI   RK   RL   RM   RR   RS   RT   RX   R]   R`   Rc   Rg   Rj   Rl   Rn   Ro   Rs   (    (    (    sC   lib/python2.7/site-packages/sympy/polys/tests/test_groebnertools.pyt   <module>   sJ   j	j			
			"							E														