ó
¡¼™\c           @   s±  d  Z  d d l m Z m Z d d l 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 d d l m Z m Z d d l m Z m Z m Z m Z d d	 l m Z d d
 l m Z e ƒ  \ Z Z Z Z  Z! Z" Z# e ƒ  \ Z$ 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 d „  Z2 d „  Z3 d „  Z4 d „  Z5 d „  Z6 d „  Z7 d „  Z8 d „  Z9 d S(    sD   Tools for polynomial factorization routines in characteristic zero. iÿÿÿÿ(   t   ringt   xring(   t   FFt   ZZt   QQt   RRt   EX(   t
   polyconfig(   t   DomainError(   t   ANP(   t   f_polyst   w_polys(   t	   nextprimet   sint   sqrtt   I(   t   raises(   t   rangec          C   s“   t  d t ƒ \ }  } |  j | d d | d d | d d | d d	 | d | d
 | d f ƒ | d
 d f | d d f g k s t ‚ d  S(   Nt   xi   i   i   i   i   i&   i   i   i   (   R    R   t   dup_trial_divisiont   AssertionError(   t   RR   (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   test_dup_trial_division   s    c          C   s–   t  d t ƒ \ }  } } |  j | d d | d d | d d | d d	 | d | d
 | d f ƒ | d
 d f | d d f g k s’ t ‚ d  S(   Ns   x,yi   i   i   i   i   i&   i   i   i   (   R    R   t   dmp_trial_divisionR   (   R   R   t   y(    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   test_dmp_trial_division   s    c          C   sH   t  d t ƒ \ }  } |  j d | d d | d ƒ d k sD t ‚ d  S(   NR   i   i   i   i    (   R    R   t   dup_zz_mignotte_boundR   (   R   R   (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   test_dup_zz_mignotte_bound   s    c          C   sK   t  d t ƒ \ }  } } |  j d | d d | d ƒ d k sG t ‚ d  S(   Ns   x,yi   i   i   i    (   R    R   t   dmp_zz_mignotte_boundR   (   R   R   R   (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   test_dmp_zz_mignotte_bound"   s    c          C   s  t  d t ƒ \ }  } | d d } | d d | d | d } | d } d } d | d d | d } |  j d | | | | | ƒ \ } } }	 }
 | | d d | d | d k s¿ t ‚ | | d k sÕ t ‚ |	 d	 k sç t ‚ |
 d
 | d d | d k st ‚ d  S(   NR   i   i   i   i   iþÿÿÿi   i   i   iøÿÿÿi   (   R    R   t   dup_zz_hensel_stepR   (   R   R   t   ft   gt   ht   st   tt   Gt   Ht   St   T(    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   test_dup_zz_hensel_step'   s    
**c          C   s   t  d t ƒ \ }  } | d d } | d | d | d | d g } |  j t d ƒ | | d ƒ | d | d | d | d g k s‹ t ‚ d  S(   NR   i   i   i   i   i¶   (   R    R   t   dup_zz_hensel_liftR   (   R   R   R   t   F(    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   test_dup_zz_hensel_lift8   s
    "c          C   s5  t  d t ƒ \ }  } |  j d | d d | d d | d d | d ƒ d  k s\ t ‚ |  j d | d d | d d | d d | d ƒ d  k s£ t ‚ |  j d | d d | d d | d d | d ƒ t k sê t ‚ |  j d | d d | d d | d d | d	 ƒ t k s1t ‚ d  S(
   NR   i   i   i   i   i   i   i
   i   (   R    R   t   dup_zz_irreducible_pt   NoneR   t   True(   R   R   (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   test_dup_zz_irreducible_pB   s
    GGGc          C   sœ  t  d t ƒ \ }  } |  j | d ƒ t k s4 t ‚ |  j | d ƒ t k sS t ‚ |  j | d | d ƒ t k sz t ‚ |  j | d d ƒ t k s t ‚ |  j | d | d | d | d ƒ t k sÔ t ‚ |  j | d | d ƒ t k sû t ‚ |  j | d | d | d | d | d | d ƒ t k sBt ‚ |  j | d d ƒ t k set ‚ |  j | d | d d ƒ t k st ‚ |  j d ƒ t k s«t ‚ |  j d ƒ t k sÆt ‚ |  j | ƒ t k sát ‚ |  j | d ƒ t k s t ‚ |  j d | d ƒ t k s#t ‚ |  j | d d ƒ t k sFt ‚ | d	 | d
 | d | d | d | d d } |  j | ƒ t k s—t ‚ | d	 | d
 | d | d | d | d d } |  j | ƒ t k sèt ‚ t  d t ƒ \ }  } |  j | d | d ƒ t k s$t ‚ |  j t d d ƒ | d | d ƒ t k sXt ‚ t  d t d ƒ \ }  } |  j | d | d ƒ t k s˜t ‚ d  S(   NR   i   i   i   i   i   i   i    i   i   i
   i   R   (   R    R   t   dup_cyclotomic_pR.   R   t   FalseR   (   R   R   R   R    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   test_dup_cyclotomic_pL   s2    '#7'G#+##66'4c          C   s”  t  d t ƒ \ }  } |  j d ƒ | d k s4 t ‚ |  j d ƒ | d k sS t ‚ |  j d ƒ | d | d k sz t ‚ |  j d ƒ | d d k s t ‚ |  j d ƒ | d | d | d | d k sÔ t ‚ |  j d ƒ | d | d k sû t ‚ |  j d ƒ | d | d | d | d | d | d k sBt ‚ |  j d	 ƒ | d d k set ‚ |  j d
 ƒ | d | d d k st ‚ d  S(   NR   i   i   i   i   i   i   i   i   i	   (   R    R   t   dup_zz_cyclotomic_polyR   (   R   R   (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   test_dup_zz_cyclotomic_polyn   s    '#7'G#c          C   s-  t  d t ƒ \ }  } |  j d ƒ d  k s0 t ‚ |  j d ƒ d  k sK t ‚ |  j d | d d ƒ d  k sr t ‚ |  j | d d ƒ d  k s• t ‚ |  j | d | d d ƒ d  k sÀ t ‚ |  j | d ƒ | d g k sæ t ‚ |  j | d ƒ | d g k st ‚ |  j | d d ƒ | d d g k s:t ‚ |  j | d d ƒ | d | d g k skt ‚ |  j | d d ƒ | d | d | d | d	 | d d | d
 | d d g k sÊt ‚ |  j | d d ƒ | d | d | d | d	 | d d | d
 | d d g k s)t ‚ d  S(   NR   i    i   i   i
   i   i   i   i   i   i	   (   R    R   t   dup_zz_cyclotomic_factorR-   R   (   R   R   (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   test_dup_zz_cyclotomic_factor|   s    '#+&&.1Kc       
   C   s8  t  d t ƒ \ }  } |  j d ƒ d g  f k s6 t ‚ |  j d ƒ d g  f k sW t ‚ |  j d ƒ d g  f k sx t ‚ |  j d ƒ d g  f k s™ t ‚ |  j d ƒ d g  f k sº t ‚ |  j d ƒ d g  f k sÛ t ‚ |  j d | d ƒ d | d d f g f k st ‚ |  j d | d ƒ d | d g f k sAt ‚ | d | d } xA t d d ƒ D]0 } |  j | ƒ d | d f g f k sct ‚ qcW|  j | d d | d ƒ d | d d | d d f g f k sát ‚ |  j d	 | d d
 | d ƒ d d | d d f g f k s't ‚ |  j d | d d ƒ d d | d d f d | d d f g f k svt ‚ |  j d | d d ƒ d d | d d | d g f k s¹t ‚ |  j | d d | d d | d ƒ d | d d f | d d f | d d f g f k st ‚ |  j | d d | d d | d ƒ d | d | d | d g f k sot ‚ |  j d | d d | d d | d ƒ d | d d f d | d d | d d f g f k sÚt ‚ |  j d | d d | d d | d ƒ d | d d | d d | d g f k s9t ‚ |  j | d | d ƒ d | d d f | d d f | d f | d d d f g f k s›t ‚ d | d d | d d | d d | d d | d d | d d | d d } |  j | ƒ d d | d d | d d | d d
 d f d | d d | d d  d f g f k sdt ‚ d! | d" d# | d d$ | d% d& | d d' | d d( } |  j | ƒ d) d | d d f d* | d d | d d f d+ | d d, | d d" | d d | d d f d- | d d. | d d/ | d d | d d f d- | d d0 | d d/ | d d1 | d d f g f k s”t ‚ | d d } t j d2 t ƒ |  j | ƒ } t j d2 t	 ƒ |  j | ƒ } | | k oad | d d f | d d f | d | d | d | d d f | d | d | d | d d f g f k n slt ‚ t j d2 ƒ | d d } t j d2 t ƒ |  j | ƒ } t j d2 t	 ƒ |  j | ƒ } | | k od | d d d f | d | d | d | d d d f g f k n s't ‚ t j d2 ƒ d  S(3   NR   i    i   iùÿÿÿi   i   i   i   i   i   i   i÷ÿÿÿiÿÿÿÿi   i   i
   i   i   i8  i   i@  i3  iè  i°
  iˆ  i   iD  i   i	   iØ   i   i   l÷ÿÿÿ   "@¢]g“k|Û5 i   l     Ê‡jò=ó7ô;I l    ÙGñjy@Kz
+€i   l   ÀLn_2|OH++Íl   å	ˆš#~¶ I1Öâu¼V  IÏ)ŠC©ÿÿid   iq  i}   i'  i¸  i  iÐ  i   t   USE_CYCLOTOMIC_FACTOR(
   R    R   t   dup_zz_factorR   t   dup_zz_factor_sqfR   t   configt   setupR.   R1   (   R   R   R   t   it   F_0t   F_1(    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   test_dup_zz_factor’   s    !!!!!!60.. &#((
,/,
)	#Z03B55G%<@c    )      C   sÏ  t  d t ƒ \ }  } } } t  d t ƒ \ } } t t |  j t ƒ ƒ ƒ } | d k s] t ‚ | d t d ƒ f \ } } }	 | d t d ƒ f \ }
 } } | | d t d ƒ f \ } } } | | d t d	 ƒ f \ } } } | |
 | | g } | | | | g } |	 | | | g } t g  | D] } | j | ƒ ^ q| ƒ } t d ƒ t d ƒ g } |  j t | ƒ } | j	 | ƒ \ } } | d k oæ| | k oäd
 | d d | d d | d d | d d | d d | d k n sït ‚ |  j
 | | t d ƒ ƒ d d d d g k s"t ‚ | j | ƒ oL| j | ƒ |  j t ƒ k sUt ‚ | j | ƒ \ } } d | d d | d } d | d d | d } d | d d } | | | | g k sËt ‚ g  d | d | | | d | d | d g D] }  |  j | ƒ ^ qü}! |  j t | | | | | ƒ t | |! f k sJt ‚ d | d d | d d | d d | d d | d d g }" d | d | d | d d | | d d  | d | d | d | | d | d d | d | d g }# d | d | d | d d | | d d  | d | d | d | | d | d d | d | d g }$ 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 d0 | d | d d1 | d | d | | d d2 | | d d | | d3 | d | }& d4 | d | d d( | d | d5 | d | d d6 | d | d( | d d7 | d | d d | d | d | | d d | d | }' |  j t | |! | | ƒ }( |  j |( ƒ t k sËt ‚ d  S(8   Ns   x,y,zR   i ` i   iòÿÿÿi   i   iõÿÿÿiïÿÿÿi¸Ñ i   i`ø i   iÄÙ  i   i•œ i˜C  iÙh  i„  i   i   i   i,   i*   i~   i	   i   i»   i   iüÿÿÿi   i÷ÿÿÿiâëþÿiç  i¢E  iÙ  i§  iJ   i-   il   iD  i   iØ   i*  iü   i   i±  i   iž  i6   iQ   iÜÿÿÿi   i$   i   (   R    R   R   R   t   w_1R   t   zipt   dropt   dmp_eval_tailt   dup_primitivet   dmp_zz_wang_non_divisorst	   dup_sqf_pt
   dup_degreet
   dmp_degreeR9   t   dmp_zz_wang_lead_coeffst   dmp_zz_wang_hensel_liftingt
   dmp_expand()   R   R   R   t   zt   UVt   _xt   pt   t_1t   k_1t   e_1t   t_2t   k_2t   e_2t   t_3t   k_3t   e_3t   t_4t   k_4t   e_4R'   t   Kt   ER#   t   AR&   t   csR"   t   _R%   t   h_1t   h_2t   h_3t   lct   LCt   H_1t   H_2t   H_3t   c_1t   c_2t   c_3t   factors(    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   test_dmp_zz_wangý   sF    ""+X33L3Css>ÿ Kšc          C   s¥   d d d d d d d d d d d d d d d d d d g }  t  d t ƒ \ } } } } d | d | | | | d | } | j | d |  ƒ| g k s¡ t ‚ d  S(   Niÿÿÿÿi    i   s   x,y,zi   t   seed(   R    R   t   dmp_zz_wangR   (   t   random_sequenceR   R   R   RL   R   (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   test_issue_63557  s    <&c          C   s	  t  d t ƒ \ }  } |  j d ƒ d g  f k s6 t ‚ |  j d ƒ d g  f k sW t ‚ |  j d ƒ d g  f k sx t ‚ |  j | d d ƒ d | d d f | d d f g f k s» t ‚ t  d	 t ƒ \ }  } } |  j d ƒ d g  f k sô t ‚ |  j d ƒ d g  f k st ‚ |  j d ƒ d g  f k s6t ‚ |  j | ƒ d | d f g f k s`t ‚ |  j d
 | ƒ d
 | d f g f k sŽt ‚ |  j d
 | d ƒ 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 f g f k s<t ‚ |  j | d d ƒ d | d d f | d d f g f k st ‚ |  j | d | d 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 f | | d d f g f k sQt ‚ t  d t ƒ \ }  } } } |  j | d | d | d d ƒ d | | | d d f | | | d d f g f k sÏt ‚ t  d t ƒ \ }  } } } } |  j | d | d | d | d d ƒ d | | | | d d f | | | | d d f g f k s`t ‚ t  d t ƒ \ }  } } } |  j t ƒ d | | | d d f | | | d d f | | | d d f g f k sÛt ‚ |  j t ƒ d | d | d | d | d | d d f | d | | d | | d d f g f k sNt ‚ |  j t ƒ d | d | d | | d
 | | d f | d | | | | d | | d d f g f k sÅt ‚ |  j t ƒ d | | d | d d f | d | | d
 | d d d f | d | | d d d f | d | d
 | d d f g f k s^t ‚ |  j t ƒ d | | | d f g f k st ‚ t  d t ƒ \ }  } } } } |  j t	 ƒ d d | | | d | d | d d f d | d d | d | d d | d d | | d f g f k s5t ‚ t  d t ƒ \ }  } } } |  j t
 ƒ d | d | d | d | d | | d d f | d | | d d | | d | d f d
 | d | d
 | d | | | | d d f g f k st ‚ t  d	 t ƒ \ }  } } d | d | d | d | d d | d | d
 d | d | d d | d | d d | d
 | d d | d } |  j | ƒ d | d f | d | d f | d
 d | d | | d d f g f k sþt ‚ d  S(   NR   i    i   iùÿÿÿi   i	   i   i   s   x,yi   i   s   x,y,zs   x,y,z,ui   i
   i   iZ   i   iÿÿÿÿi   s   x,y,z,ti/   i-   iôÿÿÿi   ið   i   i   i8  i   (   R    R   t   dmp_zz_factorR   t   f_1t   f_2t   f_3t   f_4t   f_5t   f_6R@   (   R   R   R   RL   t   uR#   R   (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   test_dmp_zz_factorB  st    !!!C!!!*.:::CS$',+'07,?%/&,O4-G‚c          C   s[  t  d t j t ƒ ƒ \ }  } d „  } |  j d ƒ | g  ƒ g  f k sN t ‚ | t d ƒ g ƒ | | t d ƒ g ƒ } |  j | ƒ | t d ƒ g ƒ | d f g f k s³ t ‚ | t d ƒ g ƒ | | t d ƒ g ƒ } |  j | ƒ | t d ƒ g ƒ | d f g f k st ‚ | t d ƒ g ƒ | d | t d d ƒ g ƒ } | t d ƒ g ƒ | d | t d d ƒ g ƒ } |  j | ƒ | t d ƒ g ƒ | d f g f k s·t ‚ | t d ƒ g ƒ | d | t d ƒ g ƒ } |  j | ƒ | t d d ƒ g ƒ | t d ƒ g ƒ | d | t d ƒ t d ƒ g ƒ d f | t d ƒ g ƒ | d | t d ƒ t d ƒ g ƒ d f g f k s’t ‚ | t d d ƒ g ƒ | d | t d	 d ƒ g ƒ } |  j | ƒ | t d d ƒ g ƒ | t d d ƒ g ƒ | | t d
 d ƒ t d d ƒ g ƒ d f | t d d ƒ g ƒ | | t d
 d ƒ t d d ƒ g ƒ d f g f k s~t ‚ | t d d ƒ g ƒ | d | t d d ƒ g ƒ | d
 | t d d ƒ g ƒ | d | t d d ƒ g ƒ | | t d d ƒ g ƒ } |  j | ƒ | t d d ƒ g ƒ | t d d ƒ g ƒ | | t d d ƒ t d d ƒ g ƒ d f | t d d ƒ g ƒ | | t d
 d ƒ t d d ƒ g ƒ d f | t d d ƒ g ƒ | | t d
 d ƒ t d d ƒ g ƒ d f | t d d ƒ g ƒ | | t d d ƒ t d d ƒ g ƒ d f g f k sCt ‚ t  d t j t d ƒ ƒ ƒ \ }  } d „  } | t d ƒ g ƒ | d | t d d ƒ g ƒ } |  j | ƒ | t d ƒ g ƒ | t d ƒ g ƒ | d | t d ƒ t d ƒ g ƒ | | t d ƒ g ƒ d f | t d ƒ g ƒ | d | t d ƒ t d ƒ g ƒ | | t d ƒ g ƒ d f g f k syt ‚ | t d d ƒ g ƒ | d | t d ƒ t d ƒ g ƒ | | t d d ƒ g ƒ } |  j | ƒ | t d d ƒ g ƒ | d g ƒ | | d d g ƒ d f g f k s(t ‚ |  j | d
 ƒ | t d d ƒ g ƒ | d g ƒ | | d d g ƒ d f g f k s…t ‚ | | t d d ƒ g ƒ 9} |  j | ƒ | t d d ƒ g ƒ | d g ƒ | | d d g ƒ d f g f k sút ‚ |  j | d
 ƒ | t d d ƒ g ƒ | d g ƒ | | d d g ƒ d f g f k sWt ‚ d  S(   NR   c         S   s+   t  |  t d ƒ t d ƒ t d ƒ g t ƒ S(   Ni   i    (   R	   R   (   t   element(    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   anp  s    i    i   i   i   i   iÿÿÿÿi	   i   i   iM   i   i™   c         S   s+   t  |  t d ƒ t d ƒ t d ƒ g t ƒ S(   Ni   i    iþÿÿÿ(   R	   R   (   R{   (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyR|   ·  s    i   (   R    R   t   algebraic_fieldR   t   dup_ext_factorR   R   (   R   R   R|   R   R    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   test_dup_ext_factorŽ  sP    	',9,93390QN6WSŒWBAS$	3eeVMMMc          C   så  t  d t j t d ƒ ƒ ƒ \ }  } } d „  } |  j d ƒ | g  ƒ g  f k sW t ‚ | t d ƒ g ƒ | | t d ƒ g ƒ } |  j | ƒ | t d ƒ g ƒ | d f g f k s¼ t ‚ | t d ƒ g ƒ | | t d ƒ g ƒ } |  j | ƒ | t d ƒ g ƒ | d f g f k s!t ‚ | t d ƒ g ƒ | d | t d ƒ g ƒ | d } |  j | ƒ | t d ƒ g ƒ | t d ƒ g ƒ | | t d ƒ t d ƒ g ƒ | d f | t d ƒ g ƒ | | t d ƒ t d ƒ g ƒ | d f g f k st ‚ | t d ƒ g ƒ | d | t d ƒ g ƒ | d } |  j | ƒ | t d ƒ g ƒ | t d ƒ g ƒ | | t d ƒ t d ƒ g ƒ | d f | t d ƒ g ƒ | | t d ƒ t d ƒ g ƒ | d f g f k sát ‚ d  S(	   Ns   x,yi   c         S   s+   t  |  t d ƒ t d ƒ t d ƒ g t ƒ S(   Ni   i    iþÿÿÿ(   R	   R   (   R   (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyR|   Ó  s    i    i   iþÿÿÿiÿÿÿÿiüÿÿÿ(   R    R   R}   R   t   dmp_ext_factorR   (   R   R   R   R|   R   R    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   test_dmp_ext_factorÑ  s    '	',9,98NN8Nc             sû  t  d t ƒ \ ‰  }  ˆ  j d ƒ d g  f k s6 t ‚ ˆ  j d ƒ d g  f k sW t ‚ t  d t ƒ \ ‰  }  ˆ  j d ƒ d g  f k s t ‚ ˆ  j t d d ƒ ƒ t d d ƒ g  f k sÀ t ‚ t  d t d ƒ \ ‰  }  ˆ  j d ƒ d g  f k sú t ‚ ˆ  j d ƒ d g  f k st ‚ t  d t d ƒ \ ‰  }  ˆ  j d ƒ d g  f k sUt ‚ ˆ  j t d d ƒ ƒ t d d ƒ g  f k sˆt ‚ t  d t ƒ \ ‰  }  ˆ  j d ƒ d g k s»t ‚ ˆ  j d ƒ d g k sÙt ‚ ˆ  j |  d d |  d ƒ d |  d d f g f k st ‚ ˆ  j |  d d |  d ƒ |  d d f g k sOt ‚ ˆ  j d |  d d |  d ƒ d d |  d	 d f d	 |  d d f g f k s¦t ‚ t  d t ƒ \ ‰  }  ˆ  j t d d ƒ |  d |  t d d ƒ ƒ t d d ƒ |  d d f g f k st ‚ t  d t d ƒ ƒ \ ‰  }  ˆ  j |  d d ƒ d |  d d f g f k set ‚ t  d t ƒ \ ‰  }  ˆ  j d
 |  d d |  d
 ƒ d
 d
 |  d
 d f g f k sÀt ‚ ˆ  j d |  d d |  d ƒ d d
 |  d
 d f g f k st ‚ d |  d d |  d } ˆ  j | ƒ \ } } | t d ƒ k sMt ‚ t | ƒ d k set ‚ | d d j	 ƒ  t d
 ƒ k s‹t ‚ | d d d k s¥t ‚ t  d t ƒ \ } } t  d | ƒ \ ‰  }  d | |  d d | d |  } ˆ  j | ƒ d | |  d f |  | d f g f k s,t ‚ t  d t ƒ \ } } t  d | ƒ \ ‰  }  t d d ƒ | |  d t d d ƒ | d |  } ˆ  j | ƒ t d d ƒ | |  d f |  | d f g f k sÎt ‚ t  d t j
 t ƒ ƒ \ ‰  }  d „  } | t d d ƒ g ƒ |  d | t d d ƒ g ƒ |  d } ˆ  j | ƒ | t d d ƒ g ƒ | t d d ƒ g ƒ |  d f | t d d ƒ g ƒ |  d | g  ƒ |  | t d d ƒ g ƒ d f g f k sÌt ‚ t  d t ƒ \ ‰  }  t t ‡  f d †  ƒ d  S(   NR   i    i   i   R#   i   i   i   i   g      ð?g       @g      @gå§wÙßã@g Ål•ôJ%@gÁ„¸•¥kÕ?i   c         S   s+   t  |  t d ƒ t d ƒ t d ƒ g t ƒ S(   Ni   i    (   R	   R   (   R{   (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyR|   +  s    c              s   ˆ  j  t t d ƒ ƒ ƒ S(   Ni   (   t   dup_factor_listR   R   (    (   R   (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   <lambda>5  t    (   i    i   (   i   i   (   R    R   R‚   R   R   t   dup_factor_list_includeR   R   t   lent   max_normR}   R   R   R   R   (   R   R   t   coeffRl   t   RtR#   R|   (    (   R   sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   test_dup_factor_listí  sf    !!!3!!!3>8WY6FF&"4	>4Yc             su  t  d t ƒ \ ‰  ‰ ‰ ˆ  j d ƒ t d ƒ g  f k s? t ‚ ˆ  j d ƒ d g  f k s` t ‚ t  d t ƒ \ ‰  ‰ ‰ ˆ  j d ƒ t d ƒ g  f k sŸ t ‚ ˆ  j t d d ƒ ƒ t d d ƒ g  f k sÒ t ‚ t  d t ƒ \ }  } t  d |  ƒ \ ‰  ‰ ‰ ˆ  j d ƒ d g  f k s t ‚ ˆ  j d ƒ t d ƒ g  f k sGt ‚ t  d t ƒ \ }  } t  d |  ƒ \ ‰  ‰ ‰ ˆ  j d ƒ d g  f k s•t ‚ ˆ  j t d d ƒ ƒ t d d ƒ g  f k sÈt ‚ t  d t ƒ \ ‰  ‰ ‰ ˆ  j d ƒ d g k sþt ‚ ˆ  j d ƒ d g k st ‚ t d t ƒ \ ‰  } | d d d | d d | d d } } ˆ  j | ƒ d | d f g f k sˆt ‚ | d d d | d d | d d } } ˆ  j | ƒ d | d f g f k sßt ‚ t  d	 t ƒ \ ‰  ‰ ˆ  j ˆ d d ˆ d ƒ d ˆ d d f g f k s2t ‚ t  d	 t ƒ \ ‰  ‰ ˆ  j t d d ƒ ˆ d ˆ t d d ƒ ƒ t d d ƒ ˆ d d f g f k s t ‚ t  d t ƒ \ ‰  ‰ ‰ ˆ  j ˆ d d ˆ d ƒ d ˆ d d f g f k söt ‚ t  d t ƒ \ ‰  ‰ ‰ ˆ  j t d d ƒ ˆ d ˆ t d d ƒ ƒ t d d ƒ ˆ d d f g f k sgt ‚ t  d t ƒ \ ‰  ‰ ‰ d
 ˆ d ˆ d
 ˆ ˆ d } ˆ  j | ƒ d
 ˆ d f ˆ d f ˆ ˆ d f g f k sát ‚ ˆ  j | ƒ d
 ˆ d f ˆ d f ˆ ˆ d f g k st ‚ t  d t ƒ \ ‰  ‰ ‰ t d d ƒ ˆ d ˆ t d d ƒ ˆ ˆ d } ˆ  j | ƒ t d d ƒ ˆ d f ˆ d f ˆ ˆ d f g f k s´t ‚ t  d t ƒ \ ‰  ‰ ‰ d ˆ d d ˆ d } ˆ  j | ƒ t d ƒ d ˆ ˆ d f d ˆ ˆ d f g f k s/t ‚ d ˆ d ˆ d d ˆ ˆ d } ˆ  j | ƒ \ } } | t d ƒ k s‚t ‚ t | ƒ d k sšt ‚ | d d j	 ƒ  t d ƒ k sÀt ‚ | d d d k sÚt ‚ t  d t ƒ \ }  } t  d |  ƒ \ ‰  ‰ ‰ d
 | ˆ d d
 | d ˆ } ˆ  j | ƒ d
 | ˆ d f ˆ | d f g f k sdt ‚ t  d t ƒ \ }  } t  d |  ƒ \ ‰  ‰ ‰ t d d ƒ | ˆ d t d d ƒ | d ˆ } ˆ  j | ƒ t d d ƒ | ˆ d f ˆ | d f g f k s	t ‚ t  d t
 d ƒ ƒ \ ‰  ‰ ‰ t t ‡  ‡ ‡ f d †  ƒ t  d t ƒ \ ‰  ‰ ‰ t t ‡  f d †  ƒ d  S(   Ns   x,yi    i   i   R#   s   x:200i   iÿÿÿÿR   i   g       @g       @g      à?gå§wÙßã@g Ål•ôJ%@gÁ„¸•¥kÕ?g      ð?c              s   ˆ  j  ˆ d ˆ d ƒ S(   Ni   (   t   dmp_factor_list(    (   R   R   R   (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyRƒ   •  R„   c              s   ˆ  j  t t d ƒ ƒ ƒ S(   Ni   (   R‹   R   R   (    (   R   (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyRƒ   ˜  R„   (   i    i   (   i   i   (   R    R   R‹   R   R   t   dmp_factor_list_includeR   R   R†   R‡   R   R   t   NotImplementedErrorR   R   (   R‰   R#   t   XR   R    Rˆ   Rl   (    (   R   R   R   sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   test_dmp_factor_list8  s’    '!'3!'!3-*-*>Y>Y"		4	#&&"4c          C   sk   t  d t ƒ \ }  } |  j | d | d ƒ t k s< t ‚ |  j | d d | d ƒ t k sg t ‚ d  S(   NR   i   i   (   R    R   t   dup_irreducible_pR.   R   R1   (   R   R   (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   test_dup_irreducible_p›  s    'c          C   sn   t  d t ƒ \ }  } } |  j | d | d ƒ t k s? t ‚ |  j | d d | d ƒ t k sj t ‚ d  S(   Ns   x,yi   i   (   R    R   t   dmp_irreducible_pR.   R   R1   (   R   R   R   (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   test_dmp_irreducible_p¡  s    'N(:   t   __doc__t   sympy.polys.ringsR    R   t   sympy.polys.domainsR   R   R   R   R   t   sympy.polysR   R:   t   sympy.polys.polyerrorsR   t   sympy.polys.polyclassesR	   t   sympy.polys.specialpolysR
   R   t   sympyR   R   R   R   t   sympy.utilities.pytestR   t   sympy.core.compatibilityR   t   f_0Rs   Rt   Ru   Rv   Rw   Rx   R@   t   w_2R   R   R   R   R(   R+   R/   R2   R4   R6   R?   Rm   Rq   Rz   R   R   RŠ   R   R‘   R“   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_factortools.pyt   <module>   s>   ("						
	
	"			k	:		L	C		K	c	