ó
¡¼™\c           @   s   d  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
 e ƒ  \ Z Z Z Z Z Z Z d „  Z d „  Z d „  Z d	 S(
   sB   Tests for square-free decomposition algorithms and related tools. iÿÿÿÿ(   t   ring(   t   FFt   ZZt   QQ(   t   f_polys(   t   raisesc          C   si  t  d t ƒ \ }  } |  j d ƒ d k s0 t ‚ |  j d ƒ t k sK t ‚ |  j d ƒ d k sf t ‚ |  j d ƒ t k s t ‚ |  j d | d ƒ | d k s¨ t ‚ |  j d | d ƒ t k sË t ‚ |  j | d | d ƒ | d | d k sþ t ‚ |  j | d | d ƒ t k s%t ‚ |  j | d | d ƒ | d | d k sYt ‚ |  j | d | d ƒ t k st ‚ |  j d | d d | d ƒ d | d d | k sÀt ‚ |  j d | d d | d ƒ t k sït ‚ |  j d | d d | d ƒ d | d d | k s.t ‚ |  j d | d d | d ƒ t k s]t ‚ |  j d ƒ d g  f k s~t ‚ |  j d ƒ d g  f k sŸt ‚ |  j | ƒ d | d f g f k sÉt ‚ |  j d | d ƒ d | d f g f k sût ‚ |  j d | d ƒ d | d f g f k s-t ‚ |  j | d | d	 | d ƒ d
 | d | d | d d f | d d f g f k st ‚ |  j | d d | d d | d	 d | d ƒ d | d f | d d d f g f k sðt ‚ |  j d | d d	 | d ƒ d | d d f g f k s2t ‚ t  d t ƒ \ }  } |  j d | d d	 | d ƒ d | d d f g f k s‰t ‚ t  d t	 d ƒ ƒ \ }  } |  j | d d ƒ d | d d f g f k sÚt ‚ t  d t	 d ƒ ƒ \ }  } |  j | d d | d d | d	 | ƒ d | d f | d d f | d d f g f k sYt ‚ t  d t ƒ \ } } t  d t	 d ƒ ƒ \ } } | d d } | d d } | j | ƒ | k sÀt ‚ | j | ƒ | d k sßt ‚ | j | ƒ t k sút ‚ | j | ƒ t k st ‚ t  d t ƒ \ }  } } | d	 d | d d } | d d | d	 d | d d	 } | |  j
 | |  j |  j | d ƒ | ƒ ƒ } } |  j | | ƒ }	 d	 | d d j | ƒ }
 |  j | ƒ j |	 ƒ d |
 d f g f k sþt ‚ t  d t ƒ \ } } t  d | ƒ \ }  } |  j | d | d ƒ | d d f | d f g k set ‚ d  S(   Nt   xi    i   i   i   i   iþÿÿÿi   i   iÿÿÿÿi   i   i   i
   t   ys   x,yiä²  t   t(   R    R   t   dup_sqf_partt   AssertionErrort	   dup_sqf_pt   Truet   Falset   dup_sqf_listR   R   t   dmp_subt   dmp_mult   dmp_difft   dmp_resultantt   dropt   dup_sqf_list_include(   t   RR   t   R1t   R2R   t   ft   gt   At   Dt   rest   ht   RtR   (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_sqfreetools.pyt   test_dup_sqf   sh    '#3'4(?/?/!!*22!?4/BB6,&13c             s°  t  d t ƒ \ ‰  }  ‰ ˆ  j d ƒ d k s3 t ‚ ˆ  j d ƒ t k sN t ‚ ˆ  j d ƒ d k si t ‚ ˆ  j d ƒ t k s„ t ‚ ˆ  j d ƒ d g  f k s¥ t ‚ ˆ  j d ƒ d g k sÃ t ‚ t  d t ƒ \ ‰  }  ‰ } ˆ  j t ƒ t k sù t ‚ ˆ  j t d ƒ t	 k st ‚ ˆ  j t
 ƒ t k s3t ‚ ˆ  j t
 d ƒ t	 k sRt ‚ ˆ  j t ƒ t k smt ‚ ˆ  j t d ƒ t	 k sŒt ‚ ˆ  j t ƒ t k s§t ‚ ˆ  j t d ƒ t	 k sÆt ‚ ˆ  j t ƒ t	 k sát ‚ ˆ  j t d ƒ t	 k s t ‚ ˆ  j t ƒ t k st ‚ ˆ  j t ƒ t k s7t ‚ ˆ  j t ƒ |  ˆ | k sZt ‚ t  d t ƒ \ ‰  }  ‰ } } ˆ  j t ƒ t k s“t ‚ ˆ  j t ƒ t k s®t ‚ t  d	 t ƒ \ ‰  }  |  d
 |  d |  d } ˆ  j | ƒ d |  d |  d |  d d f |  d d f g f k s)t ‚ ˆ  j | ƒ |  d |  d |  d d f |  d d f g k sot ‚ t  d t ƒ \ ‰  }  ‰ |  d
 |  d |  d } ˆ  j | ƒ d |  d |  d |  d d f |  d d f g f k sít ‚ ˆ  j | ƒ |  d |  d |  d d f |  d d f g k s3t ‚ |  d d |  d } ˆ  j | ƒ d |  d d f g k sut ‚ t  d t d ƒ ƒ \ ‰  }  ‰ t t ‡  ‡ f d †  ƒ d  S(   Ns   x,yi    i   i   i   s   x,y,zi   s   x,y,z,tR   i   i   iÿÿÿÿc              s   ˆ  j  ˆ d d ƒ S(   Ni   i   (   t   dmp_sqf_list(    (   R   R   (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_sqfreetools.pyt   <lambda>‰   t    (   i   i   (   iÿÿÿÿi   (   R    R   t   dmp_sqf_partR
   t	   dmp_sqf_pR   R    t   dmp_sqf_list_includet   f_0R   t   f_1t   f_2t   f_3t   f_5t   f_4t   f_6R   R   t   NotImplementedError(   R   t   zR   R   (    (   R   R   sA   lib/python2.7/site-packages/sympy/polys/tests/test_sqfreetools.pyt   test_dmp_sqfY   sH    !#KFKF+c             sF  t  d t ƒ \ ‰  }  |  d d |  d |  d d |  d } ˆ  j | ƒ |  d f |  d d f g k sp t ‚ |  d d |  d	 d
 |  d d |  d d |  d d |  d d |  d d |  d d |  } ˆ  j | ƒ |  d d |  d d f |  d d |  d d f |  d f g k s,t ‚ t t ‡  f d †  ƒ d  S(   NR   i   i   i   i   i   i	   i   i   i¦   i   iè  i   i­  i<  i„  ià  i@  c              s   ˆ  j  d ƒ S(   Ni    (   t   dup_gff_list(    (   R   (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_sqfreetools.pyR!   •   R"   (   R    R   R0   R
   R   t
   ValueError(   R   R   R   (    (   R   sA   lib/python2.7/site-packages/sympy/polys/tests/test_sqfreetools.pyt   test_dup_gff_listŒ   s    *1fVN(   t   __doc__t   sympy.polys.ringsR    t   sympy.polys.domainsR   R   R   t   sympy.polys.specialpolysR   t   sympy.utilities.pytestR   R&   R'   R(   R)   R+   R*   R,   R   R/   R2   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_sqfreetools.pyt   <module>   s   	N	3