ó
¡¼™\c           @   s  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 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  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/ m0 Z0 m1 Z1 m2 Z2 m3 Z3 m4 Z4 m5 Z5 m6 Z6 m7 Z7 m8 Z8 m9 Z9 m: Z: m; Z; m< Z< m= Z= m> Z> m? Z? m@ Z@ mA ZA mB ZB d  d lC mD ZD d  d lE mF ZG d  d lH mI ZI d  d lJ mK ZK mL ZL d  d lM mN ZN d „  ZO d „  ZP d	 „  ZQ d
 „  ZR d „  ZS d „  ZT d „  ZU d „  ZV d „  ZW d „  ZX d „  ZY d „  ZZ d „  Z[ d „  Z\ d „  Z] d „  Z^ d „  Z_ d „  Z` d „  Za d „  Zb d „  Zc d „  Zd d „  Ze d „  Zf d „  Zg d  „  Zh d! „  Zi d" „  Zj d# „  Zk d$ „  Zl d% „  Zm d& „  Zn d' „  Zo d( S()   iÿÿÿÿ(B   t   gf_crtt   gf_crt1t   gf_crt2t   gf_intt	   gf_degreet   gf_stript   gf_trunct	   gf_normalt   gf_from_dictt
   gf_to_dictt   gf_from_int_polyt   gf_to_int_polyt   gf_negt   gf_add_groundt   gf_sub_groundt   gf_mul_groundt   gf_addt   gf_subt
   gf_add_mult
   gf_sub_mult   gf_mult   gf_sqrt   gf_divt   gf_remt   gf_quot   gf_exquot	   gf_lshiftt	   gf_rshiftt	   gf_expandt   gf_powt
   gf_pow_modt   gf_gcdext   gf_gcdt   gf_lcmt   gf_cofactorst   gf_LCt   gf_TCt   gf_monict   gf_evalt   gf_multi_evalt
   gf_composet   gf_compose_modt   gf_trace_mapt   gf_difft   gf_irreduciblet   gf_irreducible_pt   gf_irred_p_ben_ort   gf_irred_p_rabint   gf_sqf_listt   gf_sqf_partt   gf_sqf_pt
   gf_Qmatrixt	   gf_Qbasist   gf_ddf_zassenhaust   gf_ddf_shoupt   gf_edf_zassenhaust   gf_edf_shoupt   gf_berlekampt   gf_factor_sqft	   gf_factort   gf_valuet   linear_congruencet   csolve_primet	   gf_csolvet   gf_frobenius_mapt   gf_frobenius_monomial_base(   t   ExactQuotientFailed(   t
   polyconfig(   t   ZZ(   t   pit	   nextprime(   t   raisesc          C   sµ   d d d g }  d d d g } d } d } t  |  | t ƒ | k sH t ‚ d	 d
 d g } d d d g } t | t ƒ | | | f k sŠ t ‚ t |  | | | | t ƒ | k s± t ‚ d  S(   Ni1   iL   iA   ic   ia   i_   ië iñÃ	 iÿ#  i½$  iƒ%  i>   i   i   (   R    RD   t   AssertionErrorR   R   (   t   Ut   Mt   pt   ut   Et   S(    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_crt)   s    $c           C   s¦   t  d d ƒ d k s t ‚ t  d d ƒ d k s6 t ‚ t  d d ƒ d k sQ t ‚ t  d d ƒ d k sl t ‚ t  d d ƒ d k s‡ t ‚ t  d d ƒ d k s¢ t ‚ d  S(	   Ni    i   i   i   i   iþÿÿÿi   iÿÿÿÿ(   R   RH   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_int9   s    c           C   s|   t  g  ƒ d k s t ‚ t  d g ƒ d k s3 t ‚ t  d d g ƒ d k sQ t ‚ t  d d d d d g ƒ d k sx t ‚ d  S(   Niÿÿÿÿi   i    i   (   R   RH   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_degreeB   s    c           C   sH  t  g  ƒ g  k s t ‚ t  d g ƒ g  k s3 t ‚ t  d d d g ƒ g  k sT t ‚ t  d g ƒ d g k sr t ‚ t  d d g ƒ d g k s“ t ‚ t  d d d d g ƒ d g k sº t ‚ t  d d d g ƒ d d d g k sä t ‚ t  d d d d g ƒ d d d g k st ‚ t  d d d d d d g ƒ d d d g k sDt ‚ d  S(   Ni    i   i   (   R   RH   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_stripI   s    !!'*-c           C   së   t  g  d ƒ g  k s t ‚ t  d g d ƒ d g k s< t ‚ t  d g d ƒ g  k sZ t ‚ t  d g d ƒ d g k s{ t ‚ t  d d d d d g d ƒ d d d g k s® t ‚ t  d d d d d g d ƒ d d d d d g k sç t ‚ d  S(	   Ni   i   i   i   i   i    i   i   (   R   RH   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_truncW   s    !!3c           C   s:   t  d d d d d g d t ƒ d d d g k s6 t ‚ d  S(   Ni   i   i   i   i    i   (   R   RD   RH   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_normala   s    c          C   s“  i d d 6d d 6d d 6}  i d d 6d d 6d d 6} d d d d d d d d d d d d g } t  |  d t ƒ | k s~ t ‚ t | d ƒ | k s™ t ‚ i d	 d 6d d
 6d d 6d d 6}  i d	 d 6d d 6d d 6} d d d d d d d d d d d d g } t  |  d t ƒ | k st ‚ t | d ƒ | k s9t ‚ t d g d d t ƒi d d 6k sdt ‚ t d g d d t ƒi d d 6k st ‚ d  S(   Ni   i   i   i   i   i    i   i   iûÿÿÿi   i
   t	   symmetriciÿÿÿÿ(   R   RD   RH   R	   t   Truet   False(   t   ft   Ft   g(    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_from_to_dicte   s    *"*+c           C   sÄ   t  d d d d d g d ƒ d d d d d g k s9 t ‚ t d d d d d g d ƒ d d d	 d d
 g k sr t ‚ t d g d d t ƒd	 g k s™ t ‚ t d g d d t ƒd g k sÀ t ‚ d  S(   Ni   i    i   i   i   i   i   i   iÿÿÿÿiþÿÿÿi
   i   RU   (   R
   RH   R   RV   RW   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_from_to_int_polyx   s    99'c           C   s^   t  g  t ƒ d k s t ‚ t  d g t ƒ d k s9 t ‚ t  d d g t ƒ d k sZ t ‚ d  S(   Ni    i   i   (   R#   RD   RH   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt
   test_gf_LC€   s    c           C   s^   t  g  t ƒ d k s t ‚ t  d g t ƒ d k s9 t ‚ t  d d g t ƒ d k sZ t ‚ d  S(   Ni    i   i   (   R$   RD   RH   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt
   test_gf_TC†   s    c           C   s!  t  t j g  ƒ d t ƒ d g  f k s- t ‚ t  t j d g ƒ d t ƒ d d g f k s` t ‚ t  t j d g ƒ d t ƒ d d g f k s“ t ‚ t  t j d d d d g ƒ d t ƒ d d d d d g f k sØ t ‚ t  t j d d d d g ƒ d t ƒ d d d d d	 g f k st ‚ d  S(
   Ni   i    i   i   i   i   i   i   i   (   R%   RD   t   mapRH   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_monicŒ   s
    -33Ec        
   C   sò  t  g  d t ƒ g  k s t ‚ t  d g d t ƒ d g k sB t ‚ t  d d d g d t ƒ d d d g k sr t ‚ t g  d d t ƒ g  k s“ t ‚ t g  d d t ƒ g  k s´ t ‚ t g  d d t ƒ d g k sØ t ‚ t g  d d t ƒ d g k sü t ‚ t d g d d t ƒ d	 g k s#t ‚ t d g d d t ƒ d g k sJt ‚ t d g d d t ƒ g  k snt ‚ t d g d d t ƒ g  k s’t ‚ t d d d g d d t ƒ d d d
 g k sÅt ‚ t d d d g d d t ƒ d d d g k søt ‚ t g  d d t ƒ g  k st ‚ t g  d d t ƒ g  k s:t ‚ t d g d d t ƒ g  k s^t ‚ t d g d d t ƒ d g k s…t ‚ t d d d g d d t ƒ g  k s¯t ‚ t d d d g d d t ƒ d d d g k sât ‚ t d d d g d d t ƒ d d d g k st ‚ t g  g  d t ƒ g  k s6t ‚ t d g g  d t ƒ d g k s]t ‚ t g  d g d t ƒ d g k s„t ‚ t d g d g d t ƒ d g k s®t ‚ t d g d g d t ƒ d g k sØt ‚ t d d g d g d t ƒ d d g k st ‚ t d g d d g d t ƒ d d g k s8t ‚ t d d d g d d d g d t ƒ d d d g k stt ‚ t g  g  d t ƒ g  k s•t ‚ t d g g  d t ƒ d g k s¼t ‚ t g  d g d t ƒ d g k sãt ‚ t d g d g d t ƒ g  k s
t ‚ t d g d g d t ƒ d g k s4t ‚ t d d g d g d t ƒ d d g k sdt ‚ t d g d d g d t ƒ d d g k s”t ‚ t d d d g d d d g d t ƒ d
 d	 d g k sÐt ‚ t d d d
 g d d g d d d
 d g d t ƒ d d d d d g k st ‚ t	 d d d
 g d d g d d d
 d g d t ƒ d d d d d g k slt ‚ t
 g  g  d t ƒ g  k st ‚ t
 g  d g d t ƒ g  k s±t ‚ t
 d g g  d t ƒ g  k sÕt ‚ t
 d g d g d t ƒ d g k sÿt ‚ t
 d g d g d t ƒ d g k s)t ‚ t
 d d d d
 d d g d	 d d d g d t ƒ d d d d d	 d d d d g	 k sƒt ‚ t
 d	 d d d g d d d d
 d d g d t ƒ d d d d d	 d d d d g	 k sÝt ‚ t
 d d d d d g d d d d d g d t ƒ d	 d d d	 d
 d d d d g	 k s7t ‚ t g  d t ƒ g  k sUt ‚ t d g d t ƒ d	 g k syt ‚ t d d g d t ƒ d d	 d	 g k s¦t ‚ t d d d d d g d t ƒ d	 d d d	 d
 d d d d g	 k sît ‚ d  S(   Ni   i   i
   i   i   i	   i   i    i   i   i   i   (   R   RD   RH   R   R   R   R   R   R   R   R   R   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_arith–   sn    $0!!$$''$$33!!$'*33!''**00<!'''*00<KK!$$**6$6$6$$-c             sÔ  t  t d „  ƒ t  t d „  ƒ t  t d „  ƒ t  t d „  ƒ t d g d d d g d t ƒ g  d g f k sv t ‚ t d g d d d g d t ƒ d g k s¦ t ‚ t d g d d d g d t ƒ g  k sÓ t ‚ t j d	 d
 d d d d g ƒ ‰  t j d d d g ƒ ‰ d	 d d d g }  d d g } t ˆ  ˆ d t ƒ |  | f k sQt ‚ t ˆ  ˆ d t ƒ | k srt ‚ t ˆ  ˆ d t ƒ |  k s“t ‚ t  t ‡  ‡ f d †  ƒ t j d	 d
 d d d d g ƒ ‰  t j d d d d g ƒ ‰ d	 d d g }  d d d g } t ˆ  ˆ d t ƒ |  | f k s-t ‚ t ˆ  ˆ d t ƒ | k sNt ‚ t ˆ  ˆ d t ƒ |  k sot ‚ t  t ‡  ‡ f d †  ƒ t t j d d d g ƒ t j d d g ƒ d t ƒ d d g k sÐt ‚ d  S(   Nc           S   s   t  d d d g g  d t ƒ S(   Ni   i   i   i   (   R   RD   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   <lambda>å   t    c           S   s   t  d d d g g  d t ƒ S(   Ni   i   i   i   (   R   RD   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyRb   æ   Rc   c           S   s   t  d d d g g  d t ƒ S(   Ni   i   i   i   (   R   RD   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyRb   ç   Rc   c           S   s   t  d d d g g  d t ƒ S(   Ni   i   i   i   (   R   RD   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyRb   è   Rc   i   i   i   i   i   i   i    i   c              s   t  ˆ  ˆ d t ƒ S(   Ni   (   R   RD   (    (   RX   RZ   (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyRb   ÷   Rc   c              s   t  ˆ  ˆ d t ƒ S(   Ni   (   R   RD   (    (   RX   RZ   (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyRb     Rc   i   (	   RG   t   ZeroDivisionErrorR   RD   RH   R   R   R_   RB   (   t   qt   r(    (   RX   RZ   sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_divisionä   s0    60-!'!!!'!!c          C   sl  d d d d d g }  t  g  d t ƒ g  k s3 t ‚ t g  d t ƒ g  g  f k sW t ‚ t  |  d t ƒ d d d d d d g k s‡ t ‚ t  |  d t ƒ d d d d d d d g k sº t ‚ t |  d t ƒ |  g  f k sÞ t ‚ t |  d t ƒ d d d d g d g f k st ‚ t |  d t ƒ d d g d d d g f k sDt ‚ t |  d t ƒ g  |  f k sht ‚ d  S(   Ni   i   i   i   i   i    (   R   RD   RH   R   (   RX   (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_shift  s    $03$33c          C   sŽ   d d g d f d d g d f g }  t  |  d t ƒ d d d d d d g k sT t ‚ t  d |  f d t ƒ d d	 d d
 d d	 g k sŠ t ‚ d  S(   Ni   i   i   i   i   i   i   i   i
   i	   (   R   RD   RH   (   RY   (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_expand  s    $0c        ¶   C   s  t  d d d d d g d d t ƒ d g k s3 t ‚ t  d d d d d g d d t ƒ d d d d d g k sr t ‚ t  d d d d d g d d t ƒ d d d d d d d d d g	 k s½ t ‚ t  d d d d d g d d t ƒ 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 d d d d g d d 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 g! k s¿t ‚ t  d d d d d g d d 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 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 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 d d d d d d d d d d	 gµ k st ‚ t t j d d d d d g ƒ d t j d d d g ƒ d t ƒ d g k s_t ‚ t t j d d d d d g ƒ d t j d d d g ƒ d t ƒ d d g k s³t ‚ t t j d d d d d g ƒ d t j d d d g ƒ d t ƒ d d g k st ‚ t t j d d d d d g ƒ d t j d d d g ƒ d t ƒ d d g k s[t ‚ t t j d d d d d g ƒ d t j d d d g ƒ d t ƒ d d g k s¯t ‚ t t j d d d d d g ƒ d t j d d d g ƒ d t ƒ d d g k st ‚ d  S(   Ni   i    i   i   i   i   i	   i   i
   i   i-   i   i   (   R   RD   RH   R   R_   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_powering  s0    3?K!N!B0!BBBBBBBBQTTTTc           C   s\  t  t j g  ƒ t j g  ƒ d t ƒ d g g  g  f k s? t ‚ t  t j d g ƒ t j g  ƒ d t ƒ d g g  d g f k s„ t ‚ t  t j g  ƒ t j d g ƒ d t ƒ g  d g d g f k sÉ t ‚ t  t j d g ƒ t j d g ƒ d t ƒ g  d g d g f k st ‚ t  t j g  ƒ t j d d g ƒ d t ƒ g  d g d d g f k s\t ‚ t  t j d d g ƒ t j g  ƒ d t ƒ d g g  d d g f k s§t ‚ t  t j d d g ƒ t j d d g ƒ d t ƒ g  d g d d g f k søt ‚ t  t j d d d	 g ƒ t j d d	 d d	 g ƒ d t ƒ d
 d g d g d d	 g f k sXt ‚ d  S(   Ni   i   i   i   i   i    i   i   i   i   (   R   RD   R_   RH   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_gcdex<  s    ?EEHKKQc           C   sö  t  t j g  ƒ t j g  ƒ d t ƒ g  k s3 t ‚ t  t j d g ƒ t j g  ƒ d t ƒ d g k sl t ‚ t  t j g  ƒ t j d g ƒ d t ƒ d g k s¥ t ‚ t  t j d g ƒ t j d g ƒ d t ƒ d g k sá t ‚ t  t j g  ƒ t j d d g ƒ d t ƒ d d g k s t ‚ t  t j d d g ƒ t j g  ƒ d t ƒ d d g k s_t ‚ t  t j d d g ƒ t j d d g ƒ d t ƒ d d g k s¤t ‚ t  t j d d d g ƒ t j d d d d g ƒ d t ƒ d d g k sòt ‚ d  S(   Ni   i   i   i    i   i   i   (   R    RD   R_   RH   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_gcdJ  s    399<??Ec           C   sí  t  t j g  ƒ t j g  ƒ d t ƒ g  k s3 t ‚ t  t j d g ƒ t j g  ƒ d t ƒ g  k si t ‚ t  t j g  ƒ t j d g ƒ d t ƒ g  k sŸ t ‚ t  t j d g ƒ t j d g ƒ d t ƒ d g k sÛ t ‚ t  t j g  ƒ t j d d g ƒ d t ƒ g  k st ‚ t  t j d d g ƒ t j g  ƒ d t ƒ g  k sMt ‚ t  t j d d g ƒ t j d d g ƒ d t ƒ d d g k s’t ‚ t  t j d d d g ƒ t j d d d d g ƒ d t ƒ d d d d d g k sét ‚ d  S(   Ni   i   i   i    i   i   i   (   R!   RD   R_   RH   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_lcmW  s    366<99Ec           C   se  t  t j g  ƒ t j g  ƒ d t ƒ g  g  g  f k s< t ‚ t  t j d g ƒ t j g  ƒ d t ƒ d g d g g  f k s t ‚ t  t j g  ƒ t j d g ƒ d t ƒ d g g  d g f k sÆ t ‚ t  t j d g ƒ t j d g ƒ d t ƒ d g d g d g f k st ‚ t  t j g  ƒ t j d d g ƒ d t ƒ d d g g  d g f k s\t ‚ t  t j d d g ƒ t j g  ƒ d t ƒ d d g d g g  f k s§t ‚ t  t j d d g ƒ t j d d g ƒ d t ƒ d d g d g d g f k sût ‚ t  t j d d d g ƒ t j d d d d g ƒ d t ƒ d d g d d g d d d g f k sat ‚ d  S(   Ni   i   i   i    i   i   i   (   R"   RD   R_   RH   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_cofactorsd  s    <EEKKK0$9c           C   sÙ   t  g  d t ƒ g  k s t ‚ t  d g d t ƒ g  k s? t ‚ t  d d g d t ƒ d g k sf t ‚ t  d d d g d t ƒ d d g k s“ t ‚ t  d d d d d d d d d d d d g d t ƒ g  k sÕ t ‚ d  S(   Ni   i   i   i   i    (   R+   RD   RH   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_diffs  s
    !'-c        
   C   s8  t  g  d d t ƒ d k s! t ‚ t  g  d d t ƒ d k sB t ‚ t  d g d d t ƒ d k sf t ‚ t  d g d d t ƒ d k sŠ t ‚ t  d d d d d d d d d g	 d d t ƒ d k sÆ t ‚ t  d d d d d d d d d g	 d d t ƒ d	 k st ‚ t  d d d d d d d d d g	 d d t ƒ d
 k s>t ‚ t  d d d d d d d d d
 g	 d d t ƒ d
 k szt ‚ t  d d d d d d d d d
 g	 d d t ƒ d k s¶t ‚ t  d d d d d d d d d
 g	 d d t ƒ d	 k sòt ‚ t d d d g d d d d g d t ƒ d d d d g k s4t ‚ d  S(   Ni   i   i    i   i   i   i   i   i	   i   i   (   R&   RD   RH   R'   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_eval}  s    !!$$<<<<<<c          C   s“  t  g  d d g d t ƒ g  k s' t ‚ t g  d d g d d g d t ƒ g  k sW t ‚ t  d g g  d t ƒ d g k s~ t ‚ t  d d g g  d t ƒ g  k s¥ t ‚ t  d d g d d g d t ƒ d d g k sØ t ‚ t j d d d d d g ƒ }  t j d d d g ƒ } t j d d d d g ƒ } t  | | d t ƒ d d d d d d d g k s_t ‚ t | | |  d t ƒ d	 d d
 d g k st ‚ d  S(   Ni   i    i   i   i	   i   i   i   i   i   i
   (   R(   RD   RH   R)   R_   (   RX   RZ   t   h(    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_composeŽ  s    '0''36c          C   s8  t  j d d d d d g ƒ }  d d d g } t  j d d g ƒ } t | d |  d t  ƒ } t | | | d |  d t  ƒ d d d g d d d g f k sœ t ‚ t | | | d |  d t  ƒ d d d d	 g d d	 d d g f k sä t ‚ t | | | d |  d t  ƒ d d d d	 g d d d d
 g f k s,t ‚ t | | | d	 |  d t  ƒ d d d d g d
 g f k skt ‚ t | | | d |  d t  ƒ d d d g d d d g f k s­t ‚ t | | | d |  d t  ƒ d d d d	 g d d	 d d g f k sõt ‚ t | | | d |  d t  ƒ d d d d g d g f k s4t ‚ d  S(   Ni   i   i	   i    i   i   i   i
   i   i   i   i   (   RD   R_   R   R*   RH   (   RX   t   at   ct   b(    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_trace_mapž  s$    '--$'-c           C   s*  t  t d d t ƒ d t ƒ t k s* t ‚ t  t d d t ƒ d t ƒ t k sT t ‚ t  t d d t ƒ d t ƒ t k s~ t ‚ t  t d d t ƒ d t ƒ t k s¨ t ‚ t  t d d t ƒ d t ƒ t k sÒ t ‚ t  t d d t ƒ d t ƒ t k sü t ‚ t  t d d t ƒ d t ƒ t k s&t ‚ d  S(	   Ni   i   i   i   i   i   i   i   (   R-   R,   RD   RV   RH   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_irreducible´  s    ******c          C   s–  t  t j d g ƒ d t ƒ t k s* t ‚ t  t j d d g ƒ d t ƒ t k sW t ‚ t  t j d d d g ƒ d t ƒ t k s‡ t ‚ t t j d g ƒ d t ƒ t k s± t ‚ t t j d d g ƒ d t ƒ t k sÞ t ‚ t t j d d d g ƒ d t ƒ t k st ‚ t j d d ƒ t	 t j d g ƒ d t ƒ t k sHt ‚ t	 t j d d g ƒ d t ƒ t k sut ‚ t	 t j d d d g ƒ d t ƒ t k s¥t ‚ t j d d ƒ t	 t j d g ƒ d t ƒ t k sßt ‚ t	 t j d d g ƒ d t ƒ t k st ‚ t	 t j d d d g ƒ d t ƒ t k s<t ‚ t j d d ƒ t
 t d	 „  ƒ t j d ƒ t j d d
 d
 d d d d d d d d g ƒ }  t j d d d d d d d d d d d
 g ƒ } t |  | d t ƒ } t  |  d t ƒ t k süt ‚ t  | d t ƒ t k st ‚ t  | d t ƒ t k s8t ‚ t |  d t ƒ t k sVt ‚ t | d t ƒ t k stt ‚ t | d t ƒ t k s’t ‚ d  S(   Ni   i   i   i   t   GF_IRRED_METHODs   ben-ort   rabint   otherc           S   s   t  d g d t ƒ S(   Ni   i   (   R-   RD   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyRb   Ô  Rc   i	   i   i   i   i   i
   i   (   R.   RD   R_   RV   RH   RW   R/   t   configt   setupR-   RG   t   KeyErrorR   (   RX   RZ   Rq   (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_irreducible_p¾  s4    *-0*-0*-0*-000c          C   sm  t  g  d t ƒ d g  f k s$ t ‚ t  d g d t ƒ d g  f k sK t ‚ t  d d g d t ƒ d d d g d f g f k s„ t ‚ t g  d t ƒ t k s¢ t ‚ t d g d t ƒ t k sÃ t ‚ t d d g d t ƒ t k sç t ‚ t i d d 6d d 6d t ƒ }  t |  d t ƒ t k s%t ‚ t  |  d t ƒ d d d g d f g f k sXt ‚ d d d d g }  t |  d t ƒ t k sˆt ‚ t  |  d t ƒ d d d g d f d d g d f g f k sÊt ‚ t |  d t ƒ d d d g k sñt ‚ d d d d d d d d d d d g }  t  |  d t ƒ d d d g d f d d g d f d d g d	 f g f k sit ‚ d  S(
   Ni   i    i   i   i   i   i   i   i   (   R0   RD   RH   R2   RV   R   RW   R1   (   RX   (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_squarefreeç  s*    $'9!$ $!''c          C   s¾   t  j d d d d d d d d d d g
 ƒ }  t  j d d d d d d d d d d g
 ƒ } d } d } t | | t  ƒ } t |  | | | t  ƒ } t |  | | | t  ƒ } | | k sº t ‚ d  S(   Ni   i    i   i   i   (   RD   R_   RA   R@   R   RH   (   RX   RZ   RK   t   nRu   Rq   t   h1(    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_frobenius_map  s    --c          C   s[  t  d d d d d d d g d ƒ }  d d d d d d g d d d d d	 d g d d	 d	 d d
 d g d d d
 d d d g d d d
 d d d g d d
 d d d
 d g g } d d d d d d g d d d d d d g d d d d d d g g } t |  d t ƒ | k st ‚ t | d t ƒ | k s)t ‚ t |  d t ƒ d d g d d d g d d d d g g k skt ‚ t j d d d d d
 d
 d d d g	 ƒ }  t j d d d d d d d d g d d d d d
 d d d g d d	 d d d d d d g d d d	 d d d	 d d g d d d d d d d d g d	 d d d	 d d d
 d g d d d d
 d d d d g d d d d d d d d g g ƒ } d d d d d d d d g d d d d d d d d g d d d d d
 d d d g g } t |  d t ƒ | k sñt ‚ t | d t ƒ | k st ‚ t |  d t ƒ d d g d d d d g d d d d d	 g g k sWt ‚ d  S(   Ni   iýÿÿÿiÿÿÿÿi   i    i   i   i   i   i
   i	   i   i   i   i   i   (   R
   R3   RD   RH   R4   R9   R_   (   RX   t   Qt   V(    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_berlekamp  s<    $3*!$!c       :   C   sU  t  i t d ƒ d 6t d ƒ d 6d t ƒ }  d d d d d d g d f d d d d d d d d d d d g d f g } t |  d t ƒ | k s• t ‚ t |  d t ƒ | k s³ t ‚ t  i t d ƒ d 6t d ƒ d 6d t ƒ }  d d g d f d d d g d f d d d d d d d g d	 f 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 g7 d
 f g } t |  d t ƒ | k sðt ‚ t |  d t ƒ | k st ‚ t  i t d ƒ d
 6t d ƒ d 6t d ƒ d 6t d ƒ d	 6t d ƒ d 6d	 t ƒ }  d d d g d f d d d d d g d f g } t |  d	 t ƒ | k s¯t ‚ t |  d	 t ƒ | k sÍt ‚ t j d d d d d d d d d d d g ƒ }  d d g d f d d d d d d d d d d g
 d f g } t |  d t ƒ | k sWt ‚ t |  d t ƒ | k sut ‚ t t t d/ t j	 ƒ  ƒ ƒ ƒ } t  i d d 6d d 6d d 6| t ƒ }  d d  d! g d f d d" d# d$ d% d& d' d( d) g	 d f d d* d+ d, d- d. g d f g } t |  | t ƒ | k s3t ‚ t |  | t ƒ | k sQt ‚ d  S(0   Ni   i   iÿÿÿÿi    i   i
   i   i?   i   i   i   i   i   i¥  i´  i  iE  iÈ  i   iA  i½  in   i/  i  i¶  i—   iF   iß  iz   i	   i)  iÊX  i0
 ilý  i	H i#*  i1  i  iªÍ  iÁW i„I ió;  i.s iYJ i,q i¯h i €  (
   R   RD   R5   RH   R6   R_   RF   t   intRE   t   evalf(   RX   RZ   RK   (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_ddf=  s>    ,0,99BS0-"'$!c          C   s‹   t  j d d d d d g ƒ }  t  j d d d g d d d g g ƒ } t |  d d t  ƒ | k sf t ‚ t |  d d t  ƒ | k s‡ t ‚ d  S(   Ni   i    i   i   (   RD   R_   R7   RH   R8   (   RX   RZ   (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_edfh  s    '!c          C   s™  t  g  d t ƒ d g  f k s$ t ‚ t  d g d t ƒ d g  f k sK t ‚ t  d d g d t ƒ d d d g d f g f k s„ t ‚ t g  d t ƒ d g  f k s¨ t ‚ t d g d t ƒ d g  f k sÏ t ‚ t d d g d t ƒ d d d g g f k st ‚ t j d d ƒ t g  d t ƒ d g  f k s6t ‚ t d g d t ƒ d g  f k s]t ‚ t d d g d t ƒ d d d g g f k st ‚ t j d d ƒ t g  d t ƒ d g  f k sÄt ‚ t d g d t ƒ d g  f k sët ‚ t d d g d t ƒ d d d g g f k st ‚ t j d d ƒ t t j g  ƒ d t ƒ d g  f k s[t ‚ t t j d g ƒ d t ƒ d g  f k s‹t ‚ t t j d d g ƒ d t ƒ d d d g g f k sÇt ‚ t j d d d d d g ƒ d }  } d d d g d f d d g d f d d d g d f g f } t j d d ƒ t  |  | t ƒ | k sVt ‚ t j d d ƒ t  |  | t ƒ | k s„t ‚ t j d d ƒ t  |  | t ƒ | k s²t ‚ d d d g d d g d d d g g f } t j d d ƒ t |  | t ƒ | k s
t ‚ t j d d ƒ t |  | t ƒ | k s8t ‚ t j d d ƒ t |  | t ƒ | k sft ‚ t d d	 d d	 d
 d	 d g d ƒ d }  } d d d g d f d d d g d f d d d d g d f g f } t j d d ƒ t  |  | t ƒ | k st ‚ t j d d ƒ t  |  | t ƒ | k s/t ‚ t j d d ƒ t  |  | t ƒ | k s]t ‚ d d d d g d }  } d d d g d f d d g d f g f } t j d d ƒ t  |  | t ƒ | k sÎt ‚ t j d d ƒ t  |  | t ƒ | k süt ‚ t j d d ƒ t  |  | t ƒ | k s*t ‚ d d d d d d d d d d g
 d }  } d d d g d f d d d g d f d d d d d d g d f g f } t j d d ƒ t  |  | t ƒ | k sËt ‚ t j d d ƒ t  |  | t ƒ | k sùt ‚ t j d d ƒ t  |  | t ƒ | k s't ‚ t i d d 6d d 6d t ƒ d }  } d d d d d d d d d d d d d d d d d d g d f d d d d d d d d d d d d d d d d d g d f g f } t j d d ƒ t  |  | t ƒ | k s t ‚ t j d d ƒ t  |  | t ƒ | k s.t ‚ t j d d ƒ t  |  | t ƒ | k s\t ‚ t i t d ƒ d 6t d ƒ d 6d t ƒ d }  } d d d g d f d d g d f d d d g d f d d d g d f d d d g d f d d d d d g d f d d d d d g d f d d d d d d d d d g	 d f d d d d d d d d d g	 d f g	 f } t j d d ƒ t  |  | t ƒ | k s•	t ‚ t j d d ƒ t  |  | t ƒ | k sÃ	t ‚ t j d d ƒ t  |  | t ƒ | k sñ	t ‚ t i t d ƒ d 6t d ƒ d 6d t ƒ d }  } d d d g d f d d d g d f d d d d g d f d d d d g d f d d d d d d d g d f d d d d d d d g d f d d d d d d d g d f d d d d d d d g d f d d d d d d d g d f d d d d d d d g d f d d d d d d d g d f d d d d d d d g d f d d d d d d d g d f g f } t j d d ƒ t  |  | t ƒ | k s·t ‚ t j d d ƒ t  |  | t ƒ | k såt ‚ t j d d ƒ t  |  | t ƒ | k st ‚ t t	 t
 d/ t j ƒ  ƒ ƒ ƒ } t i d d 6d d 6d d 6| t ƒ }  t |  | t ƒ t k szt ‚ d d d d g d f d d d d d g d f d d d d d g d f d d  d! d" d# d$ g d f g f } t j d d ƒ t  |  | t ƒ | k st ‚ t j d d ƒ t  |  | t ƒ | k s?t ‚ d d d d g d d d d d g d d d d d g d d  d! d" d# d$ g g f } t j d d ƒ t |  | t ƒ | k s¾t ‚ t j d d ƒ t |  | t ƒ | k sìt ‚ t t	 t
 d0 t j ƒ  ƒ ƒ ƒ } t j d d d d% d& d' d( g ƒ }  t |  | t ƒ t k sPt ‚ d d d) d% g d f d d d* d+ d, g d f g f } t j d d ƒ t  |  | t ƒ | k s´t ‚ t j d d ƒ t  |  | t ƒ | k sât ‚ d d d) d% g d d d* d+ d, g g f } t j d d ƒ t |  | t ƒ | k s:t ‚ t j d d ƒ t |  | t ƒ | k sht ‚ t j d d- ƒ t t d. „  ƒ t j d ƒ d  S(1   Ni   i    i   t   GF_FACTOR_METHODt	   berlekampt
   zassenhaust   shoupi   iýÿÿÿiÿÿÿÿi   i   i   i   i
   i	   i    i   i   i?   i   iÊX  i0
 i‘> i‰. iS it  iQ iËÝ  i:  iW{  ió;  i.s iYJ i,q i¯h i   i)   i'   i&   i,   i   i   i   Rz   c           S   s   t  d d g d t ƒ S(   Ni   i   (   R;   RD   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyRb   D  Rc   i €  i   (   R;   RD   RH   R:   R{   R|   R_   R
   R   RF   R†   RE   R‡   R2   RV   RG   R}   (   RX   RK   RZ   (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_factorp  s"   $'9$'3$'3$'3-0<%	+*+H'?E3$-3'"'$"$!c        
   C   sÅ  t  d d d d g d ƒ d k s' t ‚ t d d d ƒ d g k sH t ‚ t d	 d d ƒ g  k sf t ‚ t d
 d d ƒ g  k s„ t ‚ t d	 d d ƒ d	 d d d d g k s± t ‚ t d d d ƒ d d d g k sØ t ‚ t d
 d	 d ƒ d	 d d
 d d d g k st ‚ t d d d d g d ƒ d g k s2t ‚ t d d d d g d ƒ d	 d g k s_t ‚ t d d
 d d g d ƒ d	 d d g k st ‚ t d d d g d d ƒ d d d d d d d d d g	 k sÑt ‚ t d d d d g d d ƒ d d d g k st ‚ t d d d d g d d ƒ d d d  g k s7t ‚ t d d d g d! ƒ d d d d" d# d$ g k smt ‚ t d d d d d% g d& ƒ d' d% g k st ‚ t d d d g d ƒ g  k sÁt ‚ d  S((   Ni   i   i   i   i   iœ  i   i   i    i   i   i   i	   i   i   i   iß   i   i   i   i(   i1   i:   iC   iL   i   i   i2   ic   i“   i¾   iê   i½   ip   i‹   i¯   i   i<   i
   (   R<   RH   R=   R>   R?   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   test_gf_csolveH  s"    '!-'0*-0?3360N(p   t   sympy.polys.galoistoolsR    R   R   R   R   R   R   R   R   R	   R
   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R    R!   R"   R#   R$   R%   R&   R'   R(   R)   R*   R+   R,   R-   R.   R/   R0   R1   R2   R3   R4   R5   R6   R7   R8   R9   R:   R;   R<   R=   R>   R?   R@   RA   t   sympy.polys.polyerrorsRB   t   sympy.polysRC   R{   t   sympy.polys.domainsRD   t   sympyRE   RF   t   sympy.utilities.pytestRG   RO   RP   RQ   RR   RS   RT   R[   R\   R]   R^   R`   Ra   Rg   Rh   Ri   Rj   Rk   Rl   Rm   Rn   Ro   Rp   Rr   Rv   Rw   R~   R   R‚   R…   Rˆ   R‰   RŽ   R   (    (    (    sA   lib/python2.7/site-packages/sympy/polys/tests/test_galoistools.pyt   <module>   sN   ÿ —						
						
	N	#								
				
	)	!		*	+		Ø