
    sg^                        d Z ddlm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mZ ddlmZ ddlmZmZmZmZ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"m#Z# ddl$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 Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d Z9d Z:d Z;d  Z<d! Z=d" Z>d# Z?d$ Z@d% ZAd& ZBd' ZCd( ZDd) ZEd* ZFd+ ZGd, ZHd- ZId. ZJd/ ZKd0 ZLd1 ZMd2 ZNd3 ZOd4 ZPd5 ZQd6 ZRd7 ZSd8 ZTd9 ZUd: ZVd; ZWd< ZXd= ZYd> ZZd? Z[d@ Z\dA Z]dB Z^dC Z_dD Z`dE ZadF ZbdG ZcdH ZddI ZedJ ZfdK ZgdL ZhdM ZidN ZjdO ZkdP ZldQ ZmdR ZndS ZodT ZpdU ZqdV ZrdW ZsyX)YzTest sparse polynomials.     )reduce)addmul)ringxringsringPolyRingPolyElement)field	FracField)ninf)ZZQQRRFFEX)lexgrlex)GeneratorsErrorExactQuotientFailedMultivariatePolynomialErrorCoercionFailed)raises)Symbolsymbols)S)pi)exp)sqrtc                  v   t        t        d      \  } }}}t        t        dt        t
              j                        dk(  sJ t        t        | t        t
              j                        dk(  sJ t        t        dt        t
              j                        dk(  sJ t        t        | ||ft        t
              j                        dk(  sJ t        t        dt        t
              j                        dk(  sJ t        t        g t        t
              j                        dk(  sJ t        t        d        t        d	t        |   t
              j                  t        |   k(  sJ t        d	d
t
              j                  t        |   k(  sJ t        d	t        dt        t
              t
              j                  t        |   k(  sJ t        t        d        t        d      }t        d	t        t
              j                  t
        k(  sJ t        d	t        |      j                  t
        k(  sJ t        d	t        d      j                  t
        k(  sJ t        dt        t
              }t        dt        t
              }t        dt        t
              }|j                  |j                  d   k(  sJ |j                  |j                  d   k(  sJ |j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  |j                  k7  sJ |j                  |j                  k7  sJ y )Nxyztx,y,z      )xyz r   c                  ,    t        dt        t              S Nr   r	   r   r        O/var/www/html/venv/lib/python3.12/site-packages/sympy/polys/tests/test_rings.py<lambda>z(test_PolyRing___init__.<locals>.<lambda>   s    HQC$8 r-   r%   zZZ[t]tc                  J    t        dt        dt        t              t              S )Nr%   r+   r,   r-   r.   r/   z(test_PolyRing___init__.<locals>.<lambda>%   s    HS(3C2H#$N r-   r   x,y)mapr   lenr	   r   r   gensr   r   domainorderr%   r&   )r%   r&   r'   r0   _lexR1R2R3s           r.   test_PolyRing___init__r<      s|   VV$JAq!QxS)../1444x2s#(()Q...xS16671<<<xAq	2s+001Q666xB$))*a///xB$))*a///
?89CA$++r!u444C#&--A666C#r3/5<<1EEE
?NO%=DCS!''3...CT"((C///CU#))S000	%S	!B	%S	!B	'2s	#B442771:442771:44244<<44244<<44244<<44244<<r-   c                  H    t        dt              \  } }}}t        |       sJ y Nr"   r   r   hashRr%   r&   r'   s       r.   test_PolyRing___hash__rC   7   s!    gr"JAq!Q7N7r-   c                  .   t        dt              d   t        dt              d   k(  sJ t        dt              d   t        dt              d   u sJ t        dt              d   t        dt              d   k7  sJ t        dt              d   t        dt              d   usJ t        dt              d   t        dt              d   k7  sJ t        dt              d   t        dt              d   usJ t        dt              d   t        dt              d   k7  sJ t        dt              d   t        dt              d   usJ t        dt              d   t        dt              d   k7  sJ t        dt              d   t        dt              d   usJ y )Nr"   r   r2   )r   r   r   r,   r-   r.   test_PolyRing___eq__rE   ;   sz   Q4#4Q#7777Q4#4Q#7777Q4#4Q#7777QtGR'8';;;;Q4#4Q#7777QtGR'8';;;;Q4r?1#5555QtE2q'9999r?1gr!21!5555r?1T'2%6q%9999r-   c            	         t        dt              \  } }}}| j                  d       | d      k(  sJ | j                  d|z  |z  |z        d|z  |z  |z  k(  sJ |dz  d|z  |z  z   d|z  z   d|dz  z  z   d|z  z   dz   }| j                  dggdgdggg d	gg      |k(  sJ | j                  ddddddd
      |k(  sJ | j                  g d      |k(  sJ t        dt              \  } | j                  dg       | d      k(  sJ y )Nr"         r#            r$   )rI   rJ   rK   )rH   r   r   r$   r$   r   r$   r   r   r   r   rH   r   r   r$   r   r   r   ))rL   r$   )rM   rH   )rN   r#   )rO   rI   )rP   rJ   )rQ   rK   r(   )r,   rG   )r   r   ring_new)rB   r%   r&   r'   fs        r.   test_PolyRing_ring_newrT   K   s.   gr"JAq!Q::a=AaD   ::ac!eAg!A#a%')))	1qs1uqsQq!tV#ac)A-A::usQCj9+671<<<::!aAZ[hijkopppp::vw{||||	b"BA::wi AaD(((r-   c                  0   t        dt              \  } j                        t        dt        t              k(  sJ j                        t        dt        t              k(  sJ j                  |       t        dt        t              k(  sJ j                  d      t        dt        t              k(  sJ j                  d      j                  d      t        dt        t              k(  sJ j                  d      j                  d      j                  d      t        k(  sJ j                  d      t        dt        t              k(  sJ j                  d      t        dt        t              k(  sJ j                  d      j                  d      t        d	t        t              k(  sJ j                  d      j                  d      j                  d      t        k(  sJ t        t        fd
       t        t        fd       y )Nr"   y,zzx,zr2   r   r'   r$   rH   r%   c                  &     j                  d      S Nr#   droprB   s   r.   r/   z$test_PolyRing_drop.<locals>.<lambda>k       qvvay r-   c                  D     j                        j                        S NrY   rB   r%   r&   s   r.   r/   z$test_PolyRing_drop.<locals>.<lambda>l   s    qvvay~~a0 r-   )r   r   rZ   r	   r   r   
ValueError)r'   rB   r%   r&   s    @@@r.   test_PolyRing_dropra   Z   s   GR HAq166!9C000066!9C000066!9C000066!9C000066!9>>!b# 666666!9>>!!!!$***66!9C000066!9C000066!9>>!b# 666666!9>>!!!!$***
:()
:01r-   c                      t        dt              \  } }}}| dd  t        dt        t              k(  sJ | dd  t        dt        t              k(  sJ | dd  t        dt        t              k(  sJ | dd  t        k(  sJ y )Nr"   r   r$   rV   rH   r'   r#   )r   r   r	   r   rA   s       r.   test_PolyRing___getitem__rc   n   s    GR HAq1QR5HWb#....QR5HUB,,,,QR5HS"c****QR5B;;r-   c                  B   t        dt        t              } | j                  du sJ | j                  du sJ t        dt        t              } | j                  du sJ | j                  du sJ t        dt        t              } | j                  du sJ | j                  du sJ y )Nr%   TFr"   r(   )r	   r   r   is_univariateis_multivariater[   s    r.   test_PolyRing_is_rg   v   s    b#A??d"""%%%"c"A??e###$$$RA??e###%%%r-   c                  <   t        dt              \  } }t        d      D cg c]  }|dz  d|z  z   dz    }}| j                  |      t	        t        |      cxk(  rd|dz  z  dz   k(  sJ  J t        dt              \  } | j                  g d      dk(  sJ y c c}w )	Nr%   rI   rH   r#      r(   )rH   rJ   rG      )r   r   ranger   r   rB   r%   iFs       r.   test_PolyRing_addro      s    R=DAq"'(,Q!Q$1*q.,A,558vc1~41a4"44444	b"BA55r!!! 	-s   Bc                  l   t        dt              \  } }t        d      D cg c]  }|dz  d|z  z   dz    }}| j                  |      t	        t        |      cxk(  r'|dz  d|dz  z  z   d|dz  z  z   d	|dz  z  z   d
z   k(  sJ  J t        dt              \  } | j                  g d      dk(  sJ y c c}w )Nr%   rI   rH   r#      ri   rK      i  i  r(   )rH   r#   rJ      )r   r   rk   r   r   rl   s       r.   test_PolyRing_mulrt      s    R=DAq"'(,Q!Q$1*q.,A,558vc1~SA1a4#ad()BSAX)MPS)SSSSSS	b"BA55r!!! 	-s   B1c                     t        dt              \  } }}}t        t        fd       t        t        fd       j	                  d      j
                  k(  sJ j	                  d      | |z   |z   |z   k(  sJ j	                  d      | |z  | |z  z   | |z  z   ||z  z   ||z  z   ||z  z   k(  sJ j	                  d      | |z  |z  | |z  |z  z   | |z  |z  z   ||z  |z  z   k(  sJ j	                  d      | |z  |z  |z  k(  sJ y )	Nx,y,z,tc                  &     j                  d      S Nsymmetric_polyr[   s   r.   r/   z.test_PolyRing_symmetric_poly.<locals>.<lambda>   s    q//3 r-   c                  &     j                  d      S )NrJ   rz   r[   s   r.   r/   z.test_PolyRing_symmetric_poly.<locals>.<lambda>   s    q//2 r-   r   r$   rH   r#   rI   )r   r   r   r`   r{   one)r%   r&   r'   r0   rB   s       @r.   test_PolyRing_symmetric_polyr~      s%   B'MAq!Q
:34
:23A!%%'''A!a%!)a-///A!A#!)ac/AaC"7!A#"=!"CCCCA!A#a%!A#a%-!A#a%"7!A#a%"????A!A#a%')))r-   c                     t        d      \  } }}}t        dt        t              }t	        | d|z  z   d|z  z         ||j
                  d|j                  z  z   d|j                  z  z   fk(  sJ t        dt        t              }t	        | d|z  z   |dz  z         ||j
                  d|j                  z  z   |j                  dz  z   fk(  sJ t	        | d|z  |dz  g      ||j
                  d|j                  z  |j                  dz  gfk(  sJ t        dt        t              }t        d|t              }t	        | d|z  |z  z   d|dz  z  |z  z   | ||      ||j
                  d|j                  z  |j                  z  z   d|j                  dz  z  |j                  z  z   fk(  sJ t        dt        t              }t        d|t              }t	        | ||z  dz  z   |dz  |z  dz  z   | ||      ||j
                  |j                  |j                  z  dz  z   |j                  dz  |j                  z  dz  z   fk(  sJ t        dt        t              }t        d|t              }t	        | d|z  |z  z   |dz  |z  dz  z   | ||      ||j
                  d|j                  z  |j                  z  z   |j                  dz  |j                  z  dz  z   fk(  sJ t        d      t        d      z
  }t	        |d      \  }}|j                  t        j                  t        d      t        d      z         k(  sJ |j                  dk(  sJ ||j                  j                  |      k(  sJ y )	Nrv   r"   rH   r#   r0   T	extensionr,   )r   r	   r   r   r   r%   r&   r'   r   r0   r   r   r6   algebraic_fieldr5   
from_sympy)r%   r&   r'   r0   rB   Rtras           r.   
test_sringr      s   #JAq!Q"c"AQqS1Q3AqssQqssU{QqssU':#;;;;"c"AQqS1Q3AqssQqssU{QSSU':#;;;;!QqS!A#AQqssUACCE':#;;;;	#r3	B"c"AQqSUQq!tVAX%q!Q/AqssQrttVACCZ7G!BDDRSG)TUTWTW-7W3XXXX	#r3	B"c"AQqSUQT!VAX%q!Q/AqssRTT!##XaZ7G"$$PQ'RSRURU+VW-7W3XXXX	3C	 B"c"AQqSUQT!VAX%q!Q/AqssQqssU244Z7G"$$PQ'RSRURU+VW-7W3XXXXQ$q'Ad#DAq88r))$q'DG*;<<<<66R<<##A&&&&r-   c                  T    t        dt              \  } }}}t        ||z  |z        sJ y r>   r?   rA   s       r.   test_PolyElement___hash__r      s*    gr"JAq!Q!A;;r-   c                     t        dt        t              \  } }}||z  d|z  |z  z   dk(  dk(  sJ ||z  d|z  |z  z   d|z  |z  k(  dk(  sJ d||z  d|z  |z  z   k(  dk(  sJ d|z  |z  ||z  d|z  |z  z   k(  dk(  sJ ||z  ||z  z
  dk(  dk(  sJ d||z  ||z  z
  k(  dk(  sJ ||z  ||z  z
  dk(  dk(  sJ d||z  ||z  z
  k(  dk(  sJ ||z  ||z  z
  dk(  dk(  sJ d||z  ||z  z
  k(  dk(  sJ ||z  d|z  |z  z   dk7  dk(  sJ ||z  d|z  |z  z   d|z  |z  k7  dk(  sJ d||z  d|z  |z  z   k7  dk(  sJ d|z  |z  ||z  d|z  |z  z   k7  dk(  sJ ||z  ||z  z
  dk7  dk(  sJ d||z  ||z  z
  k7  dk(  sJ ||z  ||z  z
  dk7  dk(  sJ d||z  ||z  z
  k7  dk(  sJ | j                  t	        dd      cxk(  r| j                  k(  sJ  J | j                  dcxk(  r| j                  k(  sJ  J t        dt              \  }}t        d|      \  } }}|d	z  |z  |z  |d	z  k(  dk(  sJ |d	z  |z  |z  |d
z  k(  dk(  sJ y )Nr2   rJ   rK   FTr   r$   r0   r#   rI   )r   r   r   r}   r   )rB   r%   r&   r   r0   s        r.   test_PolyElement___eq__r      s2   5"c"GAq!qS1Q3q5[Q5(((qS1Q3q5[QqSU"t+++!A#!A+5(((aCEacAaCEk"t+++qS1Q3Y1%%%!A#!)%%%qS1Q3Y1&&&!A#!)&&&qS1Q3Y1&&&!A#!)&&&qS1Q3q5[Q4'''qS1Q3q5[QqSU"u,,,!A#!A+4'''aCEacAaCEk"u,,,qS1Q3Y1&&&!A#!)&&&qS1Q3Y1%%%!A#!)%%%55Bq!H%%%%%%55AbMEB5"oGAq!qDF1H1%%%qDF1H1&&&r-   c                  <   t        dt              \  } }} | d      |cxk  r|dz  cxk  r	|dz  k  sJ  J  | d      |cxk  r|dz  cxk  r	|dz  k  sJ  J |dz  |dz  cxkD  r|cxkD  r | d      kD  sJ  J |dz  |dz  cxk\  r|cxk\  r | d      k\  sJ  J y )Nr2   r$   rH   r#   )r   r   r_   s      r.   test_PolyElement__lt_le_gt_ge__r      s    5"oGAq!Q4!!ad!QT!!!!!Q41$1$1$$$$$a4!Q$!!QqT!!!!!a41a4$1$!$$$$$r-   c                  D   t        d      \  } }t        t        t        |    t        | |f   t        |    |   fD ]*  }t        d|      \  }}t	        d|dz  z  dz         dk(  r*J  t
        t
        |    fD ]*  }t        d|      \  }}t	        d|dz  z  dz         dk(  r*J  y )Nx, yr0   rH   r$   z
2*t**2 + 1zEX(2)*t**2 + EX(1))r   r   r   r   strr   )r%   r&   domrB   r0   s        r.   test_PolyElement__str__r      s    6?DAqB1r!A#w1a1 /C~11QT6A:,.../ BqE{ 7C~11QT6A:"66667r-   c                      t        dt              \  } }}}||z  d|z  z   }|j                         }||k(  sJ d|d<   ||k7  sJ y )Nr"   r#   rG   r$   r$   r$   )r   r   copy)rB   r%   r&   r'   rS   gs         r.   test_PolyElement_copyr      sQ    gr"JAq!Q	!ac	A	A6M6AiL6M6r-   c                  (  
 t        dt              \  } }}}d|dz  z  |z  ||z  |z  z
  d|dz  z  z   dz   | j                  \  
}}d
dz  z  |z  
|z  |z  z
  d|dz  z  z   dz   }|k7  sJ j                         |k(  sJ t        d      \  }}}	d|dz  z  |z  ||z  |	z  z
  d|	dz  z  z   dz   }|k7  sJ j                  |||	      |k(  sJ t	        t
        
fd       t        dt              \  }  | d      j                         dk(  sJ y )	Nr"   r#   rH   rG   r$   zu,v,wc                  &    j                         S r^   )as_expr)XrS   s   r.   r/   z*test_PolyElement_as_expr.<locals>.<lambda>  s    qyy| r-   r(   )r   r   r   r   r   r`   )rB   r%   r&   r'   YZr   UVWr   rS   s             @@r.   test_PolyElement_as_exprr   	  s;   gr"JAq!Q	!Q$q1Q3q51QT6!A%AiiGAq!	!Q$q1Q3q51QT6!A%A6M699;!gGAq!	!Q$q1Q3q51QT6!A%A6M699Q1"""
:+,	b"BAQ4<<>Qr-   c                  r  	 t        d      \  	} }t        	| |ft              \  }}}j                  d      }|dk(  rt	        |j
                        sJ j                  	      }||k(  rt	        |j
                        sJ j                  	| z  |z        }|||z  |z  k(  rt	        |j
                        sJ j                  	| z  |z  	| z  z   	z         }|||z  |z  ||z  z   |z   k(  rt	        |j
                        sJ j                  	dz  | z  |z  	dz  | dz  z  z   dz         }||dz  |z  |z  |dz  |dz  z  z   dz   k(  rt	        |j
                        sJ t        t        d      g      \  }}|j                  t        d            }||d   k(  rt	        ||j
                        sJ t        t        	fd       t        t        	fd       t        t        	fd	       t        d
t              \  j                  d      }|dk(  rt	        |j
                        sJ y )Nr"   r$   r#   rH   rG   r   c                  ,     j                  dz        S Nr$   	from_exprrB   r%   s   r.   r/   z,test_PolyElement_from_expr.<locals>.<lambda>5  s    q{{1Q3/ r-   c                  ,     j                  dz        S NrH   r   r   s   r.   r/   z,test_PolyElement_from_expr.<locals>.<lambda>6  s    q{{1a40 r-   c                  D     j                  dz  t        d      z         S )NrG   rH   )r   r   r   s   r.   r/   z,test_PolyElement_from_expr.<locals>.<lambda>7  s    q{{1Q3a=9 r-   r(   )
r   r   r   r   
isinstancedtyper   r   r   r`   )
r&   r'   r   r   r   rS   r   rn   rB   r%   s
           @@r.   test_PolyElement_from_exprr     s   gGAq!q!Qi$JAq!Q	AA6jAGG,,,	AA6jAGG,,,	AaCEA!A:*Q000	AaCEAaCK!O$A!A!aJq!''$:::	AqDF1Hq!tAqDy(1,-A1Qq1a419$q((Z177-CCC#a&?DAq	CFA!9Aqww///
:/0
:01
:9:	b"BA	AA6jAGG,,,,r-   c                     t        dt              \  } }}}t        t        d      k(  sJ  | d      j	                         t        u sJ  | d      j	                         dk(  sJ |dz   j	                         dk(  sJ d|dz  z  |z   j	                         dk(  sJ ||dz  z  |z   j	                         dk(  sJ |dz  |dz  z  |z   j	                         dk(  sJ  | d      j	                  |      t        u sJ  | d      j	                  |      dk(  sJ |dz   j	                  |      dk(  sJ d|dz  z  |z   j	                  |      dk(  sJ ||dz  z  |z   j	                  |      dk(  sJ d|dz  z  |dz  z  |z   j	                  |      dk(  sJ  | d      j	                  |      t        u sJ  | d      j	                  |      dk(  sJ |dz   j	                  |      dk(  sJ d|dz  z  |z   j	                  |      dk(  sJ ||dz  z  |z   j	                  |      dk(  sJ d|dz  z  |dz  z  |z   j	                  |      dk(  sJ  | d      j	                  |      t        u sJ  | d      j	                  |      dk(  sJ |dz   j	                  |      dk(  sJ d|dz  z  |z   j	                  |      dk(  sJ ||dz  z  |z   j	                  |      dk(  sJ d|dz  z  |dz  z  |z   j	                  |      dk(  sJ t        d	t              \  }  | d      j	                         t        u sJ  | d      j	                         dk(  sJ y )
Nr"   z-infr   r$   rH   r#   rJ   rG   r(   )r   r   r   floatdegreerA   s       r.   test_PolyElement_degreer   =  sm   GR HAq15=   Q4;;=D   Q4;;=AE>>q   adFQJ A%%%adFQJ A%%%qDAIM!!#q(((Q4;;q>T!!!Q4;;q>QE>>!!!!adFQJq!Q&&&adFQJq!Q&&&adF1a4K!O##A&!+++Q4;;q>T!!!Q4;;q>QE>>!!!!adFQJq!Q&&&adFQJq!Q&&&adF1a4K!O##A&!+++Q4;;q>T!!!Q4;;q>QE>>!!!!adFQJq!Q&&&adFQJq!Q&&&adF1a4K!O##A&!+++	b"BAQ4;;=D   Q4;;=Ar-   c                     t        dt              \  } }}} | d      j                         t        u sJ  | d      j                         dk(  sJ |dz   j                         dk(  sJ d|dz  z  |dz  |z  z   j                         dk(  sJ ||dz  z  |dz  |z  z   j                         dk(  sJ |dz  |dz  z  |dz  |z  z   j                         dk(  sJ  | d      j                  |      t        u sJ  | d      j                  |      dk(  sJ |dz   j                  |      dk(  sJ d|dz  z  |dz  |z  z   j                  |      dk(  sJ ||dz  z  |dz  |z  z   j                  |      dk(  sJ d|dz  z  |dz  z  |dz  |z  z   j                  |      dk(  sJ  | d      j                  |      t        u sJ  | d      j                  |      dk(  sJ |dz   j                  |      dk(  sJ d|dz  z  |dz  |z  z   j                  |      dk(  sJ ||dz  z  |dz  |z  z   j                  |      dk(  sJ d|dz  z  |dz  z  |dz  |z  z   j                  |      dk(  sJ  | d      j                  |      t        u sJ  | d      j                  |      dk(  sJ |dz   j                  |      dk(  sJ d|dz  z  |dz  |z  z   j                  |      dk(  sJ ||dz  z  |dz  |z  z   j                  |      dk(  sJ d|dz  z  |dz  z  |dz  |z  z   j                  |      dk(  sJ t        dt              \  }  | d      j                         t        u sJ  | d      j                         dk(  sJ y )	Nr"   r   r$   rH   r#   rJ   rG   r(   )r   r   tail_degreer   rA   s       r.   test_PolyElement_tail_degreer   b  s   GR HAq1Q4%%%Q4"""E A%%%adFQT!VO((*a///adFQT!VO((*a///qDAI1Q++-222Q4A$&&&Q4A!###Eq!Q&&&adFQT!VO((+q000adFQT!VO((+q000adF1a4K!Q$q& --a0A555Q4A$&&&Q4A!###Eq!Q&&&adFQT!VO((+q000adFQT!VO((+q000adF1a4K!Q$q& --a0A555Q4A$&&&Q4A!###Eq!Q&&&adFQT!VO((+q000adFQT!VO((+q000adF1a4K!Q$q& --a0A555	b"BAQ4%%%Q4"""r-   c                     t        dt              \  } }}} | d      j                         t        t        t        fk(  sJ  | d      j                         dk(  sJ |dz  |z  |dz  |dz  z  z   j                         dk(  sJ y )Nr"   r   r$   rQ   rH   r#   )r#   r$   rH   )r   r   degreesr   rA   s       r.   test_PolyElement_degreesr     s}    GR HAq1Q4<<>dD$////Q4<<>Y&&&qDFQT!Q$Y'')Y666r-   c                     t        dt              \  } }}} | d      j                         t        t        t        fk(  sJ  | d      j                         dk(  sJ |dz  |z  |dz  |dz  z  z   j                         dk(  sJ y )Nr"   r   r$   rQ   rH   r#   rL   )r   r   tail_degreesr   rA   s       r.   test_PolyElement_tail_degreesr     s    GR HAq1Q44t"4444Q4)+++qDFQT!Q$Y,,.);;;r-   c                     t        dt        t              \  } ddz  z  z  z  z  z
  ddz  z  z   dz   j                  d      dk(  sJ t	        t
        fd       j                        dk(  sJ j                        dk(  sJ j                        dk(  sJ j                  dz  z        dk(  sJ j                  z  z        d	k(  sJ j                  dz        dk(  sJ t	        t
        fd
       t	        t
        fd       t	        t
        fd       t        dt              \  }  | d      j                  d      dk(  sJ y )Nr"   r#   rH   rG      r$   c                  &     j                  d      S rX   coeffrS   s   r.   r/   z(test_PolyElement_coeff.<locals>.<lambda>  s    qwwqz r-   r   ry   c                  8     j                  ddz  z  z        S )Nr#   rH   r   rS   r%   r&   s   r.   r/   z(test_PolyElement_coeff.<locals>.<lambda>  s    qwwqAvax0 r-   c                  4     j                   z  z        S r^   r   )rS   r%   r&   r'   s   r.   r/   z(test_PolyElement_coeff.<locals>.<lambda>  s    qwwr!tAv r-   c                  2     j                  ddz  z        S )NrG   r#   r   )rS   r'   s   r.   r/   z(test_PolyElement_coeff.<locals>.<lambda>  s    qwwqAv r-   r(   )r   r   r   r   r   r`   )rB   rS   r%   r&   r'   s    @@@@r.   test_PolyElement_coeffr     sD   gr3'JAq!Q	!Q$q1Q3q51QT6!B&A771:
:)*771:??771:??771:??771a46?a771Q3q5>R771a4=A
:01
:./
:./	b"BAQ4::a=Ar-   c                  <   t        dt        t              \  } }} | d      j                  t        d      k(  sJ t        dd      |z  j                  t        dd      k(  sJ t        dd      |z  |z  t        dd      |z  z   j                  t        dd      k(  sJ y Nr2   r   r$   rH   rI   )r   r   r   LCr_   s      r.   test_PolyElement_LCr     s    5"c"GAq!Q477beqGAI>>R1X%%%qGAIaK"Qq'!)#''2a8333r-   c                     t        dt        t              \  } }} | d      j                  dk(  sJ t        dd      |z  j                  dk(  sJ t        dd      |z  |z  t        dd      |z  z   j                  dk(  sJ y )	Nr2   r   r   r   r$   rH   r$   r   rI   r$   r$   )r   r   r   LMr_   s      r.   test_PolyElement_LMr     sy    5"c"GAq!Q477fqGAI>>V###qGAIaK"Qq'!)#''6111r-   c                     t        dt        t              \  } }} | d      j                  dt        d      fk(  sJ t        dd      |z  j                  dt        dd      fk(  sJ t        dd      |z  |z  t        dd      |z  z   j                  dt        dd      fk(  sJ t        d	t              \  }  | d      j                  d
k(  sJ  | d      j                  dk(  sJ y )Nr2   r   r   r$   rH   r   rI   r   r(   )r,   r   )r,   r$   )r   r   r   LTr   r_   s      r.   test_PolyElement_LTr     s    5"c"GAq!Q477vr!uo%%%qGAI>>fbAh////qGAIaK"Qq'!)#''FBq!H+====	b"BAQ477gQ477gr-   c                      t        dt        t              \  } }} | d      j                         dk(  sJ t        dd      |z  j                         |k(  sJ t        dd      |z  |z  t        dd      |z  z   j                         ||z  k(  sJ y r   )r   r   r   leading_monomr_   s      r.   test_PolyElement_leading_monomr     s    5"c"GAq!Q41$$$qGAI$$&!+++qGAIaK"Qq'!)#224!;;;r-   c                  T   t        dt        t              \  } }} | d      j                         dk(  sJ t        dd      |z  j                         t        dd      |z  k(  sJ t        dd      |z  |z  t        dd      |z  z   j                         t        dd      |z  |z  k(  sJ y r   )r   r   r   leading_termr_   s      r.   test_PolyElement_leading_termr     s    5"c"GAq!Q4!###qGAI##%Aa222qGAIaK"Qq'!)#113r!Awqy{BBBr-   c                     t        dt              \  } }}}|dz  dz  |dz  dz  z   |dz  dz  z   j                         }|dt        dd      fdt        dd      fd	t        dd      fgk(  sJ t        d
t        t              \  } }}||dz  z  d|dz  z  |dz  z  z   }|j                         |j                  t              cxk(  r|j                  d      cxk(  rddgk(  sJ  J |j                  t
              |j                  d      cxk(  rddgk(  sJ  J t        d
t        t
              \  } }}||dz  z  d|dz  z  |dz  z  z   }|j                         |j                  t
              cxk(  r|j                  d      cxk(  rddgk(  sJ  J |j                  t              |j                  d      cxk(  rddgk(  sJ  J t        dt              \  }  | d      j                         dgk(  sJ y )Nr"   rH   r#   rI   rJ   rL   r$   r   r#   r   r   r   rI   r2   rG   r   )rH   r#   rH   )r$   rG   r$   r   r(   )r,   r#   )r   r   termsr   r   r   )rB   r%   r&   r'   r   rS   s         r.   test_PolyElement_termsr     s   GR HAq1T!Vad1f_q!tAv%,,.Egr!Aw''2a7);gr!Aw=OPPPP%S!FAq	!Q$1a41A779TT;:TTTTTT775>QWWW-K+{1KKKKKK%U#FAq	!Q$1a41A779X!'''*:X{K>XXXXXX773<1775>Gk;-GGGGGG	b"BAQ4::<G9$$$r-   c                  @   t        dt              \  } }}}|dz  dz  |dz  dz  z   |dz  dz  z   j                         }|g dk(  sJ t        dt        t              \  } }}||dz  z  d|dz  z  |dz  z  z   }|j                         |j                  t              cxk(  r|j                  d	      cxk(  rd
dgk(  sJ  J |j                  t
              |j                  d      cxk(  rdd
gk(  sJ  J t        dt        t
              \  } }}||dz  z  d|dz  z  |dz  z  z   }|j                         |j                  t
              cxk(  r|j                  d      cxk(  rdd
gk(  sJ  J |j                  t              |j                  d	      cxk(  rd
dgk(  sJ  J y )Nr"   rH   r#   rI   rJ   )rL   r   r   r2   rG   r   r   r   r   )r   r   monomsr   r   r   )rB   r%   r&   r'   r   rS   s         r.   test_PolyElement_monomsr     s   GR HAq1d1fq!tAvo1Q&..0F0000%S!FAq	!Q$1a41A88:#M!((5/Mff=MMMMMM88E?ahhw/CFF3CCCCCC%U#FAq	!Q$1a41A88:%QAHHW,=Q&&AQQQQQQ88C=AHHUO?/??????r-   c                  ~   t        dt              \  } }}}|dz  dz  |dz  dz  z   |dz  dz  z   j                         }|t        dd      t        dd      t        dd      gk(  sJ t        dt        t              \  } }}||dz  z  d|dz  z  |dz  z  z   }|j                         |j                  t              cxk(  r|j                  d	      cxk(  rddgk(  sJ  J |j                  t
              |j                  d
      cxk(  rddgk(  sJ  J t        dt        t
              \  } }}||dz  z  d|dz  z  |dz  z  z   }|j                         |j                  t
              cxk(  r|j                  d
      cxk(  rddgk(  sJ  J |j                  t              |j                  d	      cxk(  rddgk(  sJ  J y )Nr"   rH   r#   rI   rJ   r$   r2   rG   r   r   )r   r   coeffsr   r   r   )rB   r%   r&   r'   r   rS   s         r.   test_PolyElement_coeffsr     s   GR HAq1d1fq!tAvo1Q&..0Fb1gr!Aw1Q0000%S!FAq	!Q$1a41A88:#C!((5/CaVCCCCC88E?ahhw/9Aq699999%U#FAq	!Q$1a41A88:%GAHHW,=G!QGGGGG88C=AHHUO51v55555r-   c                  \  	 t        dt              \  } t        dt              \  }}t        d|      \  }	}}t        	d|z  z         dddk(  sJ t        	z         t        	z         cxk(  r	ddk(  sJ  J t        	|z  z         t        	|z  z         cxk(  r	ddk(  sJ  J t        	|z  z   |z         t        	|z  |z   z         cxk(  r
ddd	k(  sJ  J t        	z  	z         t        		z  z         cxk(  rd
dz   ik(  sJ  J t        	z  	|z  z         t        	|z  	z  z         cxk(  r	ddk(  sJ  J t        	z  	|z  z   |z         t        	|z  |z   	z  z         cxk(  r
dddk(  sJ  J t        t        	fd       t        t        	fd       t        t        fd       t        t        fd       t        dt              \  }}t        d|      \  }	}}t        	z         t        	z         cxk(  r	ddk(  sJ  J t        dt              \  }	}}t        t        t              	|z  |z  z         t        	|z  |z  t        t              z         cxk(  rt        d      t        t              dk(  sJ  J y )Nr0   u,vr"   r#   r$   rN   r   r$   r   rN   rQ   rM   rQ   rM   rP   rQ   rN   rM   rN   rM   rP   rN   c                       z   S r^   r,   r0   r%   s   r.   r/   z*test_PolyElement___add__.<locals>.<lambda>      a!e r-   c                       z   S r^   r,   r   s   r.   r/   z*test_PolyElement___add__.<locals>.<lambda>  r   r-   c                       z   S r^   r,   r0   us   r.   r/   z*test_PolyElement___add__.<locals>.<lambda>  r   r-   c                       z   S r^   r,   r   s   r.   r/   z*test_PolyElement___add__.<locals>.<lambda>  r   r-   r   rQ   r   r   dictr   	TypeErrorr   r   r   
r   RuvvRxyzr&   r'   Fuvr0   r   r%   s
          @@@r.   test_PolyElement___add__r     s   bMEBE2HC1w$KD!AaAaC=a8888A;$q1u+EQ1)EEEEEEAaC=D1qMIq-IIIIIIAaC!QqS1Wq[ 1_q]^5______!a=DQqSM?iQ-??????!ac	?d1Q319oMQ11MMMMMM!ac	A$qsQw1}"5cQSTab9cccccc
9m$
9m$
9m$
9m$UBHC1w$KD!AaA;$q1u+EQ1)EEEEEEw#KD!Aa21Q4!A2#7`r!uY[\^Y_;``````r-   c                  |  	 t        dt              \  } t        dt              \  }}t        d|      \  }	}}t        	d|z  z
        dddk(  sJ t         	z         t        	z
        cxk(  r
d dk(  sJ  J t         	|z  z         t        	|z  z
        cxk(  r
d d	k(  sJ  J t         	|z  z   |z         t        	|z  |z   z
        cxk(  rdd d
k(  sJ  J t         	z  	z         t        		z  z
        cxk(  rd dz   ik(  sJ  J t         	z  	|z  z         t        	|z  	z  z
        cxk(  r
d dk(  sJ  J t         	z  	|z  z   |z         t        	|z  |z   	z  z
        cxk(  rdd dk(  sJ  J t        t        	fd       t        t        	fd       t        t        fd       t        t        fd       t        dt              \  }}t        d|      \  }	}}t         	z         t        	z
        cxk(  r
d dk(  sJ  J t        dt              \  }	}}t        t        t               	|z  |z  z         t        	|z  |z  t        t              z
        cxk(  r t        d      t        t               dk(  sJ  J y )Nr0   r   r"   r#   r$   r   r   r   r   rN   r   r   c                       z
  S r^   r,   r   s   r.   r/   z*test_PolyElement___sub__.<locals>.<lambda>-  r   r-   c                       z
  S r^   r,   r   s   r.   r/   z*test_PolyElement___sub__.<locals>.<lambda>.  r   r-   c                       z
  S r^   r,   r   s   r.   r/   z*test_PolyElement___sub__.<locals>.<lambda>/  r   r-   c                       z
  S r^   r,   r   s   r.   r/   z*test_PolyElement___sub__.<locals>.<lambda>0  r   r-   r   r   r   s
          @@@r.   test_PolyElement___sub__r    s   bMEBE2HC1w$KD!AaAaC=b9999Q<4A;GaQB*GGGGGGQqS>T!A#']K!.KKKKKKQqS1acAgk!2a!PQ_`^`6aaaaaa1q>T!ac']Ay1"q&.AAAAAA1qs
tAaC!A#IOaQB2OOOOOO1qs
Q4!a!A##6eaTUcdbd:eeeeee
9m$
9m$
9m$
9m$UBHC1w$KD!AaQ<4A;GaQB*GGGGGGw#KD!AaB!A#a% D1QB$8b1[]^`[aZa<bbbbbbr-   c                  R	  	 t        dt              \  } t        dt              \  }}t        d|      \  }}	t        z        t        z        cxk(  rdik(  sJ  J t        dz  z  	z         t        dz  z  	z         cxk(  rdz  ddk(  sJ  J t        dz  z  	z         t        dz  z  	z         cxk(  rdz  ddk(  sJ  J t        dz  z  	z         t        dz  z  	z         cxk(  rdz  ddk(  sJ  J t        z  dz  	z         t        z  dz  	z         cxk(  rdz  ddk(  sJ  J t        dz  z  |z  	z         t        |z  dz  z  	z         cxk(  rdz  ddk(  sJ  J t        dz  z  |z  	z         t        dz  |z  z  	z         cxk(  rdz  ddk(  sJ  J t        dz  z  |z  	z         t        |z  dz  z  	z         cxk(  rdz  ddk(  sJ  J t        z  |z  dz  	z         t        |z  z  dz  	z         cxk(  rdz  ddk(  sJ  J t        dz  |z  z  	z         t        |z  dz  z  	z         cxk(  rdz  ddk(  sJ  J t        dz  |z  z  	z         t        d|z  z  z  	z         cxk(  rdz  ddk(  sJ  J t        dz  |z  z  	z         t        |z  dz  z  	z         cxk(  rdz  ddk(  sJ  J t        |z  z  dz  	z         t        |z  z  dz  	z         cxk(  rdz  ddk(  sJ  J t        d	z  |z   z  	z         t        |z   d	z  z  	z         cxk(  rd	z  d	z  dd
k(  sJ  J t        t        	fd       t        t        	fd       t        t        	fd       t        t        	fd       t        dt              \  }}t        d|      \  }}	t        z        t        z        cxk(  rdik(  sJ  J t        dt              \  }}	t        t        t              z  |z  	z        t        |z  	z  t        t              z        cxk(  rdt        t              ik(  sJ  J y )Nr0   r   r"   rN   rH   r$   )rN   rP   )rM   rP   r#   )rN   r   rP   c                       z  z   S r^   r,   r0   r%   r'   s   r.   r/   z*test_PolyElement___mul__.<locals>.<lambda>S      acAg r-   c                       z  z   S r^   r,   r
  s   r.   r/   z*test_PolyElement___mul__.<locals>.<lambda>T  r  r-   c                       z  z   S r^   r,   r0   r   r'   s   r.   r/   z*test_PolyElement___mul__.<locals>.<lambda>U  r  r-   c                       z  z   S r^   r,   r  s   r.   r/   z*test_PolyElement___mul__.<locals>.<lambda>V  r  r-   r   r   )
r   r   r   r   r&   r   r0   r   r%   r'   s
         @@@@r.   test_PolyElement___mul__r  ;  s   bMEBE2HC1w$KD!Aa!9QqS	3i^33333!A	?d1Q3q519oOQqSQ1OOOOOO!A	?d1Q3q519oOQqSQ1OOOOOO!A	?d1Q3q519oOQqSQ1OOOOOO!A	?d1Q3q519oOQqSQ1OOOOOO!Aa!QqSU1Wq[ 1S1QR5SSSSSS!Aa!QqSU1Wq[ 1S1QR5SSSSSS!Aa!QqSU1Wq[ 1S1QR5SSSSSS!Aa!QqSU1Wq[ 1S1QR5SSSSSS!Aa!QqSU1Wq[ 1S1QR5SSSSSS!Aa!QqSU1Wq[ 1S1QR5SSSSSS!Aa!QqSU1Wq[ 1S1QR5SSSSSS!Aa!QqSU1Wq[ 1S1QR5SSSSSS!QUa D!a%1q$9k1YZ[\Y\ij=kkkkkk
9o&
9o&
9o&
9o&UBHC1w$KD!Aa!9QqS	3i^33333w#KD!Aa2q
1ac!eBrFl!3J	2b67JJJJJJr-   c                    	
 t        dt              \  } }}ddz  z  dz
  dz  dz  dz
  k(  sJ ddz  z  dz
  dz  dz  k(  sJ dz  dz
  j                        k(  sJ dz  z
  j                        dz
  k(  sJ dz  dz
  z  dz  z
  k(  sJ dz  z
  z  dz
  k(  sJ dz  dz
  dz  z  dz  dz  dz  z
  k(  sJ dz  dz
  j                  dz        dk(  sJ dz  z
  dz
  z  dz  z
  j                  dz
        cxk(  rk(  sJ  J t        dt              \  } }}t        dz  dz  |dz  dz  z   |dz  dz  z   j	                               dk(  sJ t        dt
              \  } }}t        dz  dz  |dz  dz  z   |dz  dz  z   j	                               dk(  sJ t        d	t              \  }t        d
t              \  }}t        d|      \  }}}t        dz  z  z   z        ddk(  sJ t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        dt              \  } dz  dz  z   dz    | d      c	
t        t        	
fd       t        t        	
fd       t        t        	
fd       t        t        	
fd       t        t        	
fd       t        t        	
fd       t        t        	
fd       t        dt              \  } }|z  dz  z   dz    | d      c	
t        t        	
fd       t        t        	
fd       t        t        	
fd       t        t        	
fd       t        t        	
fd       t        t        	
fd       t        t        	
fd        t        dt              \  } dz  dz   dz  dz
  c	
 | d      dz  dz   }}	j                  
      t        	
      cxk(  r||fk(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J t        t        	
fd!       ddz  z  dz  z   z   dz   ddz  z  dz  z
  dz   c	
 | d      	}}	j                  
      t        	
      cxk(  r||fk(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J t        t        	
fd"       ddz  z  ddz  z  z   ddz  z  z   dz  z   dz   dz  dz  z   dz   c	
ddz  z  d#z  z
  d$z  dz   }}	j                  
      t        	
      cxk(  r||fk(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J t        t        	
fd%       ddz  z  ddz  z  z   ddz  z  z   ddz  z  z   z   dz  ddz  z  z   d&z   c	
dz  d#z
  d'dz  z  ddz  z  z   d(z  z
  d)z   }}	j                  
      t        	
      cxk(  r||fk(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J t        t        	
fd*       t        dt
              \  } dz  dz   dz  dz
  c	
dz  dz    | d      }}	j                  
      t        	
      cxk(  r||fk(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J t        t        	
fd+       ddz  z  dz  z   z   dz   ddz  z  dz  z
  dz   c	
t        dd      z  t        d,d-      z   t        d.d-      z  t        d/d-      z   }}	j                  
      t        	
      cxk(  r||fk(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J t        t        	
fd0       t        dt              \  } }dz  |dz  z
  |z
  c	
|z    | d      }}	j                  
      t        	
      cxk(  r||fk(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J 	j                  
      |k(  sJ dz  |dz  z   |z
  c	
|z   d|dz  z  }}	j                  
      t        	
      cxk(  r||fk(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J t        t        	
fd1       dz  |dz  z    |z   c	
 |z
  d|dz  z  }}	j                  
      t        	
      cxk(  r||fk(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J t        t        	
fd2       dz  |dz  z   dz  d|z  z
  c	
 | d      	}}	j                  
      t        	
      cxk(  r||fk(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J t        t        	
fd3       t        dt
              \  } }dz  |dz  z
  |z
  c	
|z    | d      }}	j                  
      t        	
      cxk(  r||fk(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J 	j                  
      |k(  sJ dz  |dz  z   |z
  c	
|z   d|dz  z  }}	j                  
      t        	
      cxk(  r||fk(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J t        t        	
fd4       dz  |dz  z    |z   c	
 |z
  d|dz  z  }}	j                  
      t        	
      cxk(  r||fk(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J t        t        	
fd5       dz  |dz  z   dz  d|z  z
  c	
dz  |dz  z   d|dz  z  }}	j                  
      t        	
      cxk(  r||fk(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J 	j                  
      	
z  cxk(  r|k(  sJ  J t        t        	
fd6       y )7Nr"   rH   rI   r#   r$   ry   r   rJ   r0   r   r   c                         dz  z   z   z  S r   r,   )r   r%   s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>}  s    aAa!n r-   c                       z  S r^   r,   r   s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>      ac r-   c                       z  S r^   r,   r   s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r  r-   c                       z  S r^   r,   r   s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r  r-   c                       z  S r^   r,   r   s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r  r-   r%   c                  &     j                        S r^   divrS   r   s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>      aeeAh r-   c                      t               S r^   divmodr  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>      fQl r-   c                  &     j                        S r^   remr  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r  r-   c                       z  S r^   r,   r  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>      a!e r-   c                  &     j                        S r^   quor  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r  r-   c                       z  S r^   r,   r  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r%  r-   c                  &     j                        S r^   exquor  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>      aggaj r-   r2   c                  &     j                        S r^   r  r  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r  r-   c                      t               S r^   r  r  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r   r-   c                  &     j                        S r^   r"  r  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r  r-   c                       z  S r^   r,   r  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r%  r-   c                  &     j                        S r^   r'  r  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r  r-   c                       z  S r^   r,   r  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r%  r-   c                  &     j                        S r^   r+  r  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r-  r-   c                  &     j                        S r^   r+  r  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>      
 r-   c                  &     j                        S r^   r+  r  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r6  r-   rK      c                  &     j                        S r^   r+  r  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r6  r-   	      ,   6   c                  &     j                        S r^   r+  r  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r6  r-   c                  &     j                        S r^   r+  r  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r6  r-   rj      4   o   c                  &     j                        S r^   r+  r  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r6  r-   c                  &     j                        S r^   r+  r  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r6  r-   c                  &     j                        S r^   r+  r  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r6  r-   c                  &     j                        S r^   r+  r  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r6  r-   c                  &     j                        S r^   r+  r  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>   r6  r-   c                  &     j                        S r^   r+  r  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r6  r-   c                  &     j                        S r^   r+  r  s   r.   r/   z.test_PolyElement___truediv__.<locals>.<lambda>  r6  r-   )r   r   r(  r4   r   r   r   r   r   ZeroDivisionErrorr  r  r#  r   r,  )rB   r&   r'   r   r   r   r   qr   rS   r   r0   r   r%   s            @@@@@r.   test_PolyElement___truediv__rL  a  s   GR HAq1adFQJ>QTAX%%%adFQJ>QT!!!qD1H>>!!!!qD1H>>!A%%%qD1Ha<1q2w;&&&qD1Ha<1q5   qD1HqsqsQWQY...qD1H>>!A#!###qD1Hq1u!Q$(A!6;!;;;;; GR HAq11QAa!Q$q&(//12a777GR HAq11QAa!Q$q&(//12a777bMEBE2HC1w$KD!AaAa!QqQ#????
9,-
9k"
9k"
9k"
9k"R=DAqa4!A#:>1Q4DAq
./
23
./
m,
./
m,
015"oGAq!Q319q=!A$DAq
./
23
./
m,
./
m,
01R=DAqa4!8QqS1WDAqQ4AqA558va|-1v-----558q1u!!!!!!558q1u!!!!!!
 23QT6AqD=1q !AqD&1Q3,"2DAqQ4qA558va|-1v-----558q1u!!!!!!558q1u!!!!!!
 23QT6AadF?Qq!tV#ac)A-q!taczA~DAqQT6AaC<AqA558va|-1v-----558q1u!!!!!!558q1u!!!!!!
 23QT6AadF?Qq!tV#a1f,q0!Q$1a4-!2CDAqQ37Bq!tGa1f$r!t+b0qA558va|-1v-----558q1u!!!!!!558q1u!!!!!!
 23R=DAqa4!8QqS1WDAqQ37AaDqA558va|-1v-----558q1u!!!!!!558q1u!!!!!!
 23QT6AqD=1q !AqD&1Q3,"2DAqa8A:2r
"Br2JqL2c2;$>qA558va|-1v-----558q1u!!!!!!558q1u!!!!!!
 23%_FAqa4!Q$;ADAqq5!A$qA558va|-1v-----558q1u!!!!!!558q1u!!!!!!771:??a4!Q$;ADAqq5!AqD&qA558va|-1v-----558q1u!!!!!!558q1u!!!!!!
 23a4!Q$;QDAq261QT6qA558va|-1v-----558q1u!!!!!!558q1u!!!!!!
 23a4!Q$;!ac	DAqQ4qA558va|-1v-----558q1u!!!!!!558q1u!!!!!!
 23%_FAqa4!Q$;ADAqq5!A$qA558va|-1v-----558q1u!!!!!!558q1u!!!!!!771:??a4!Q$;ADAqq5!AqD&qA558va|-1v-----558q1u!!!!!!558q1u!!!!!!
 23a4!Q$;QDAq261QT6qA558va|-1v-----558q1u!!!!!!558q1u!!!!!!
 23a4!Q$;!ac	DAqQ319a1fqA558va|-1v-----558q1u!!!!!!558q1u!!!!!!
 23r-   c                  X   t        dt        t              \  } }d|z  dz   dz  dk(  sJ dz  k(  sJ t        t        fd       |dz  |dz  k(  sJ dz  j                  d      cxk(  r*j                  d      cxk(  rd|dz  z  d	|z  z   d
z   k(  sJ  J dz  j                  d      cxk(  r3j                  d      cxk(  rd|dz  z  d|dz  z  z   d|z  z   dz   k(  sJ  J dz  j                  d      cxk(  r<j                  d      cxk(  r'd|dz  z  d|dz  z  z   d|dz  z  z   d|z  z   dz   k(  sJ  J dz  j                  d      cxk(  rEj                  d      cxk(  r0d|dz  z  d|dz  z  z   d|dz  z  z   d|dz  z  z   d|z  z   dz   k(  sJ  J t        dt        t              \  } }}}|dz  |z  d|z  |dz  z  z
  d|z  z
  dz   |dz  |dz  z  d|dz  z  |dz  z  z
  d|dz  z  |z  |z  z
  d|dz  z  |z  z   d|dz  z  |dz  z  z   d	|z  |dz  z  |z  z   d|z  |dz  z  z
  d
|dz  z  z   d|z  z
  dz   }dz  j                  d      cxk(  rj                  d      cxk(  r|k(  sJ  J t        dt              \  } }d|dz  z  d|dz  z  z
  dz   d |dz  z  d!|d"z  z  z   d#|d	z  z  z   d$|d%z  z  z   d&|dz  z  z   d'|dz  z  z
  d(|dz  z  z   d)|dz  z  z
  d*z   }dz  j                  d      cxk(  rj                  d      cxk(  r|k(  sJ  J y )+Nr%   rH   r#   r   r$   c                       dz  S rx   r,   r   s   r.   r/   z*test_PolyElement___pow__.<locals>.<lambda>  s    q2w r-   ry   rI      r:  rq   $   r=        `      Q   rJ          i  i8  i*     r"   rK   r0   i@i,
  1   l      Ml     3urj   l     L] l    @LV 
   l    Aecl    F	l   `V i
IiW )r   r   r   r   r`   _pow_generic_pow_multinomial)rB   r%   r&   r'   r   r0   rS   s         @r.   test_PolyElement___pow__r]    s   RDAq	!aAa4199a4199
:'r7a"ga41>>!$R(:(:1(=R1a4"Q$QRARRRRRRa41>>!$](:(:1(=]1a4"QPQT'AQTVWXTXAX[]A]]]]]]a41>>!$j(:(:1(=jAqD2aQRd7ARUXYZ\]Y]U]A]`cde`eAehjAjjjjjja41>>!$x(:(:1(=xAqD3qRSt8ASVYZ[]^Z^V^A^aefgijfjajAjmpqrmrAruxAxxxxxxGR'HAq1	1Q1QTAaC!#A	1QT	AadF1a4K!AqD&(1*,qAvax7!AqD&A+E1QPQT	RSSVWXYVYZ[]^Z^V^^abcdfgcgaggjklmjmmpqqAa41>>!$B(:(:1(=BBBBBBR=DAqq!td1a4i"$A!R%"3ArE"99<LQPRU<RR2	 -ad 2	35B1a45G	HAqD	%ad?	+-4	5A a41>>!$B(:(:1(=BBBBBBr-   c                     t        dt        t              \  } }|dz  d|dz  z  z
  dz
  }|dz
  }|dz  d|z  z
  dz
  }d}|j                  |g      |g|fk(  sJ t        dt        t              \  } }|dz  d|z  z   dz   }|j                   | d	      g      |gd
fk(  sJ t        dt        t              \  } }|dz  d|z  z   dz   }|j                   | d      g      t	        d	d      |dz  z  |z   d	z   gd
fk(  sJ t        dt        t              \  } }}d|dz  z  |z  d|z  |z  z
  d|z  z   d|z  z
  dz   }|j                   | d      g      d|dz  z  |z  ||z  z
  d|z  z   |z
  dz   gd
fk(  sJ |j                  d|z  g      d|dz  z  |z
  d	z
  gd|z  dz   fk(  sJ |d	z
  }|d	z
  }|j                  |g      d
g|fk(  sJ ||dz  z  d	z   }||z  d	z   |d	z   g}|dg}d}|j                  |      ||fk(  sJ |dz  |z  ||dz  z  z   |dz  z   }||z  d	z
  |dz  d	z
  g}||z   d	g}||z   d	z   }|j                  |      ||fk(  sJ |dz  d	z
  ||z  d	z
  g}|d	z   |g}d|z  d	z   }|j                  |      ||fk(  sJ t        dt              \  }  | d      j                   | d            dk(  sJ t        dt              \  }  | d      j                   | d            t	        dd      d
fk(  sJ y )Nr%   r#   rO  rH   *   r:  rQ  r$   r   r2   rI   rq   ry   r(   )r   r#   )r   r   r   r  r   )	rB   r%   rS   r   rK  r   r&   GQs	            r.   test_PolyElement_divrc  /  s   RDAq	1r!Q$wA	AA	1qs
RAA55!:1#q!!!RDAq	1qs
QA55!A$=aS!H$$$RDAq	1qs
QA55!A$=b1gadlQ.23Q7777%U#FAq	!Q$q1Q3q51Q31$q(A55!A$=a1fQh1nqs2Q6:;Q????55!A#<Qq!tVaZ!^,acAg6666	AA	AA55!:1#q!!!	!Q$
A	
1q!a%A	
BA	A5581v	1Q1a4!Q$A	
1q!Q$(A	
Q
A	A	A5581v	
A1Q37A	
Q
A	!aA5581v	b"BAQ488AaD>V###	b"BAQ488AaD>bAh]***r-   c                     t        dt        t              \  } }|dz  d|dz  z  z
  dz
  }|dz
  }d}|j                  |g      |j	                  |g      d   cxk(  r|k(  sJ  J t        dt        t              \  } }}d	|dz  z  |z  d|z  |z  z
  d	|z  z   d|z  z
  d
z   }|j                   | d      g      |j	                   | d      g      d   cxk(  rdk(  sJ  J |j                  d|z  g      |j	                  d|z  g      d   cxk(  rd	|z  d
z   k(  sJ  J |dz
  }|dz
  }|j                  |g      |j	                  |g      d   cxk(  r|k(  sJ  J ||dz  z  dz   }||z  dz   |dz   g}d}|j                  |      |j	                  |      d   cxk(  r|k(  sJ  J |dz  |z  ||dz  z  z   |dz  z   }||z  dz
  |dz  dz
  g}||z   dz   }|j                  |      |j	                  |      d   cxk(  r|k(  sJ  J |dz  dz
  ||z  dz
  g}d|z  dz   }|j                  |      |j	                  |      d   cxk(  r|k(  sJ  J y )Nr%   r#   rO  rH   r_  r`  r$   r2   rI   rq   r   )r   r   r   r#  r  )rB   r%   rS   r   r   r&   ra  s          r.   test_PolyElement_remre  j  s   RDAq	1r!Q$wA	AAA55!:sA+!+++++%U#FAq	!Q$q1Q3q51Q31$q(A55!A$=AEE1Q4&M!,11111155!A#<155!A#<?5acAg55555	AA	AA55!:sA+!+++++	!Q$
A	
1q!a%A	A558quuQx{'a'''''	1Q1a4!Q$A	
1q!Q$(A	A	A558quuQx{'a'''''	
A1Q37A	!aA558quuQx{'a'''''r-   c                     t        dt              \  } }d|dz  z  j                  |dz  d|dz  z  z   dz         dd|z  |dz  d|z  z   dz   gfk(  sJ t        dt              \  } }} | d      j                   | d            dddgfk(  sJ  | d      j                   | d            dddgfk(  sJ  | d      j                   | d            dddgfk(  sJ  | d      j                  d|z        ddd|z  gfk(  sJ d|z  j                  d|z        dd|z  d|z  gfk(  sJ  | d      j                  d|dz  z        d	dd|z  gfk(  sJ d|dz  z  j                  d|dz  z        d	d|z  d|z  gfk(  sJ |dz  |dz  z  |dz  |z  z   dz   }|dz  |d
z  z  |dz  |z  z   dz   }|j                  |      d|dz  |dz  z  ||z  z   dz   ||d
z  z  ||z  z   dz   gfk(  sJ y )Nr%   rH   rI   r$   )rH   r2   r   r   )r$   rH   r#   )rH   r$   )r   r   deflaterB   r%   r&   rS   r   s        r.   test_PolyElement_deflateri    sH   R=DAqadFAqD1QT6MA-.4!A#q!taczA~9N2OOOO%_FAqQ4<<!&1a&!1111Q4<<!&1a&!1111Q4<<!&1a&!1111Q4<<!!QqS 2222aC==1&1Q3!*!5555Q4<<!Q$FQ!H#5555adFAadF#1ac
';;;;	1QT	AqDFQA	1QT	AqDFQA99Q<FQT!Q$Y1_q%8!AqD&1Q3,:J$KLLLLr-   c                  H   t        dt              \  } }} | d      j                         t        d      dfk(  sJ  | d      j                         t        d      dfk(  sJ  | t        dd            j                         dk(  sJ  | t        dd            j                         dk(  sJ d|dz  z  |z   j                         dd|dz  z  |z   fk(  sJ |dz  t        dd      |z  z   j                         dd|dz  z  |z   fk(  sJ t        dt        t              \  }}}t        dt        t              \  }}}|t        dd	      |dz  z  z
  t        d
d      |dz  z  z
  t        dd      |dz  z  z
  t        dd      |dz  z  z
  t        dd      |dz  z  z
  t        dd      |dz  z  z
  t        dd      |z  z
  t        dd      z
  |dz  t        dd      |dz  z  z   t        dd      |dz  z  z   t        d d      |dz  z  z   t        d!d"      |dz  z  z   t        d#d"      |dz  z  z   t        d$d      |dz  z  z   t        d%d      |z  z   t        d&d      z   g}d'|z  d(|dz  z  z
  d)|dz  z  z
  d*|dz  z  z
  d+|dz  z  z
  d,|dz  z  z
  d-|dz  z  z
  d.|z  z
  d/z
  d|dz  z  d0|dz  z  z   d|dz  z  z   d1|dz  z  z   d2|dz  z  z   d3|dz  z  z   d4|dz  z  z   d5|z  z   d6z   g}	|D 
cg c]$  }
|
j                         d   j                  |      & c}
|	k(  sJ y c c}
w )7Nr2   r$   rG   r#   )r#   rG   rH   zx,tl   O{]K_$-\WK.j/%=udLhL` l     :P$GNA3VCc8RNe] l   HBSW~b]"zZM}E |u"K2 l    h^%==2pDu.q~@|`:*w
h rK   l   [_+J[kPu=\L=IGS{,c.\) o l    P=Kzzda$\0ci}=$?&@#uTn0Q rJ   l   CNVO&ilo?uTvBp5y\
$l$aP-NCR l    Hi)Sbx|5eS6O--:QRbV.r?1lW rI   l   M[S hl<M6>P|oPoDuge l    [WGfNQNB3NoCBxcBR'.Cml   .wSK-G+~96nzLwGD<u)qG	l   >0I	B,Iu!|J=y9-l   @VTry![t
RdlCHj\LLf:' l   0%H8[J/@)\LM3B\_>mxwr) l   $><JktGl+ogKzeXBORFl   `%C!+[O;RY.{;gW!o^@*> rq   l   `(sx]Yl   i 4&m: l   ,8y'X^l   :W]l    kB`l    
O<p{l   ;7>rI l    ``6]j_{l    @o;b|?l      T=-l     lFOR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   `k-@\K'l    4C|	,Ydm l    Lo5Rs l     "#?Vq l    @otc?c l      t-JOl     Sz(G)r   r   clear_denomsr   r   set_ring)rB   r%   r&   rQQr0   rZZr   Trn   ra  rS   s              r.   test_PolyElement_clear_denomsrp    s   %_FAqQ42a5!*,,,Q42a5!*,,,R!W:""$...R!W:""$...adFQJ$$&1a1fqj/999qD2a719**,AadFQJ???E2s#HC1E2s#HC1	
Rl  nB  C  DE  GH  DH  H  
Hk  m@  A  BC  EF  BF  F
Fl  nA  B  CD  FG  CG  G
G m  oB  C  DE  GH  DH  H
H k  m  @  AB  DE  AE  E	
E
 j  l|  }  ~  AB  ~B  B
B h  jy  z  {|  |
| f  hv  w
w 
A()=>q!tC	C*+@A!Q$F
G)*>?1D
E *+@A!Q$F
G *+@A!Q$F	
G
 )*>?1D
E )*>?A
B ()=>
?	@A" 
__`	`	fghjkgk	k
l	ghiklhl	l
m 
hhiklhl	l
m 
iijlmim	m	
n
 
iijlmim	m
n 
hhiklhl	l
m 
hhi	i
j 
g
g 
q!t	#	1	$
%	 A	%
& 
!A	%
& 
"!Q$	&	
'
 
"!Q$	&
' 
!A	%
& 
!	"
# 
 
 	!A& 9:;1Q^^a ))#.;q@@@;s   -)Lc                  	   t        dt              \  } }} | d       | d      }}|j                  |      dk(  sJ  | d       | d      }}|j                  |      dk(  sJ  | d       | d      }}|j                  |      dk(  sJ  | d       | d      }}|j                  |      dk(  sJ  | d      d|z  d	z   }}|j                  |      d|z  d	z   dd
fk(  sJ d|z  d	z    | d      }}|j                  |      d|z  d	z   d
dfk(  sJ  | d       | d      }}|j                  |      dk(  sJ  | d       | d      }}|j                  |      dk(  sJ  | d       | d      }}|j                  |      dk(  sJ  | d       | d      }}|j                  |      dk(  sJ |dz  d|z  z   d
z    | d
      }}|j                  |      d
|dz  d|z  z   d
z   d
fk(  sJ |dz  d|z  z   d
z    | d      }}|j                  |      d
|dz  d|z  z   d
z   dfk(  sJ d|dz  z  d	|z  z   dz    | d      }}|j                  |      d|dz  d|z  z   d
z   d
fk(  sJ  | d      d|dz  z  d	|z  z   dz   }}|j                  |      dd
|dz  d|z  z   d
z   fk(  sJ d|dz  z  d	|z  z   dz   |d
z   }}|j                  |      |d
z   d|z  dz   d
fk(  sJ |d
z   d|dz  z  d	|z  z   dz   }}|j                  |      |d
z   d
d|z  dz   fk(  sJ t        dt              \  } }}}}|dz  d|z  z   d
z   d|z  dz   }}|j                  |      |d
z   |d
z   dfk(  sJ |dz  |dz  z  d|dz  z  |z  z   |dz  z   ||z  z   |z   |dz  d|z  z   d
z   }}|d
z   |dz  |z  |dz  z   |z   |d
z   }	}}|j                  |      |||	fk(  sJ |j                  |      ||	|fk(  sJ t        dt              \  } }}t        d
d      |dz  z  |z   t        d
d      z   }t        d
d      |z  t        d
d      z   }|d
z   }|j                  |      ||t        d
d      fk(  sJ |j                  |      |t        d
d      |fk(  sJ t        dt              \  } }}d|z  |dz  z  d|z  |z  z
  d|z  z   }d|dz  z  }d|z  }|j                  |      |||z  ||z  fk(  sJ |j                  |      |||z  ||z  fk(  sJ y )Nr2   r   rQ   rH   )rH   r$   r   )rH   ry   r   )rH   r   ry   rI   r$   )rH   r$   r$   )rH   ry   r$   )rH   r$   ry   )rH   ry   ry   rv   g @r#   g      ?)r   r   	cofactorsr   r   )
rB   r%   r&   rS   r   r'   r0   hcffcfgs
             r.   test_PolyElement_cofactorsrw    s   5"oGAq!Q41qA;;q>Y&&&Q41qA;;q>Y&&&R5!A$qA;;q>Z'''Q42qA;;q>Z'''Q41qqA;;q>acAgq!_,,,Q37AaDqA;;q>acAgq!_,,,Q41qA;;q>Y&&&R5!A$qA;;q>Z'''Q42qA;;q>Z'''R5!B%qA;;q>[(((a4!A#:>1Q4qA;;q>aA!a3333a4!A#:>1Q4qA;;q>aA!a3333QT6AaC<!QqTqA;;q>aA!a3333Q41a4!A#!qA;;q>aAqD1Q3JN3333QT6AaC<!QUqA;;q>a!eQqS1Wa0000q5!AqD&1Q3,"qA;;q>a!eQ!a0000B'MAq!Qa4!A#:>1Q37qA;;q>a!eQUA....a419qAvax!Q$&1,q0!Q$1*q.qAa%Aa!Q$*AECsA;;q>ac]***;;q>ac]***5"oGAq!
1Q1q2a7"A
1Q	BqGA	AA;;q>aBqG_,,,;;q>aAa!_,,,5"oGAq!Aad
SU1Ws1u$AAqDAAA;;q>a1ac]***;;q>a1ac]***r-   c                      t        dt              \  } }}t        dd      |dz  z  |z   t        dd      z   }t        dd      |z  t        dd      z   }|j                  |      |dz   k(  sJ y )Nr2   r$   rH   )r   r   gcdrh  s        r.   test_PolyElement_gcdrz  *  sj    5"oGAq!
1Q1q2a7"A
1Q	BqGA558q1ur-   c                  v   t        dt              \  } }}d|dz  z  d|dz  z  z   d|z  z   }d|dz  z  d|z  z   }d|z  dz   }d}|j                  |      ||fk(  sJ | j                  |      | |fk(  sJ |j                  |       | |fk(  sJ t        dt              \  } }}t        dd      |dz  z  |dz  z   t        dd      |z  z   }t        dd      |dz  z  t        dd      |z  z   }d|z  dz   }d}|j                  |      ||fk(  sJ | j                  |      | |fk(  sJ |j                  |       | |fk(  sJ t	        dt              \  }}t        d|      \  }}	|dz   dz
  dz  |	z  }|	dz  |dz  dz   dz  z   }|j                  |      |dz   dz
  |	z  d|	dz  z  d|dz  z  z   dz   fk(  sJ y )Nr2   rH   r#   rI   r$   r%   r0   )r   r   cancelr   r   )
rB   r%   r&   rS   r   rn   ra  Fxr   r0   s
             r.   test_PolyElement_cancelr~  2  s	   5"oGAq!	!Q$1a4!A#A	!Q$1A	!aA	A88A;1a&   B;;q>qb!W$$$88QB<QB7"""5"oGAq!
1Q1q!tb1gai'A
1Q1r!Awqy A	!aA	A88A;1a&   B;;q>qb!W$$$88QB<QB7"""#rNEBbMEB
Q$AaA	11q!|A88A;QTEAIq=!AqD&1QT6/A*=>>>>r-   c                      t        dt              \  } }} | d      j                         dk(  sJ  | d      j                         dk(  sJ |dz  d|dz  z  z   d|z  z   dz   j                         dk(  sJ y )Nr2   r   r$   r#   rI   rH   )r   r   max_normr_   s      r.   test_PolyElement_max_normr  S  sx    5"oGAq!Q4==?aQ4==?aqD1QT6MAaC!#--/1444r-   c                      t        dt              \  } }} | d      j                         dk(  sJ  | d      j                         dk(  sJ |dz  d|dz  z  z   d|z  z   dz   j                         dk(  sJ y )Nr2   r   r$   r#   rI   rH   rZ  )r   r   l1_normr_   s      r.   test_PolyElement_l1_normr  [  sx    5"oGAq!Q4<<>QQ4<<>QqD1QT6MAaC!#,,."444r-   c                     t        dt              \  } }t        dd      |d   dz  z  |d   dz  z  |d   d	z  z  |d
   dz  z  d|d   dz  z  |d   d	z  z  |d   d	z  z  z   d|d   dz  z  z   d|d   dz  z  z
  }|j                  |d         t        dd      |d   dz  z  |d   dz  z  |d   d	z  z  |d
   dz  z  d|d   z  |d   d	z  z  |d   d	z  z  z   d|d   z  z   k(  sJ |j                  |d         t        dd      |d   dz  z  |d   dz  z  |d   dz  z  |d
   dz  z  d|d   dz  z  |d   d	z  z  |d   dz  z  z   k(  sJ |j                  |d
         t        dd      |d   dz  z  |d   dz  z  |d   d	z  z  |d
   z  k(  sJ y )Nzx:11i   rJ   r   rq   r$   rK   rI   r#   rZ  rH   i 	  rG   rR  i`  ri   @  )r   r   diff)rB   r   rS   s      r.   test_PolyElement_diffr  c  s   DAq
3q	!A$'!A$'!!A$')!B%(2QqtQwYqtQw5FqtQw5NNPQRSTURVXYRYPYY\]^_`a^bde^e\eeA66!A$<2d1:adAg-adAg5adAg=aeQhFAaDQRSTQUWXQXYZ[\Y]_`Y`I``cdefgheiciiiii66!A$<2c!9QqT1W,QqT1W4QqT1W<QrUAXE1Q4QR7
STUVSWYZSZHZ[\]^[_ab[bHbbbbb66!B%=Bs1IadAg-adAg5adAg=aeCCCCr-   c                     t        dt              \  } }d|z  dz    d      dk(  sJ  d      dk(  sJ t        t        fd       t        t        fd       t        t        fd       t        d	t              \  } }}d|z  |d
z  z   dz    dd      dk(  sJ  dd      dk(  sJ | j                  |      } d      |j                  d
z  dz   k(  sJ  d      |j                  d
z  dz   k(  sJ t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       y )Nr%   r#   r$   r   rI   c                               S r^   r,   r   s   r.   r/   z+test_PolyElement___call__.<locals>.<lambda>s  	    qs r-   c                        dd      S )Nr   r$   r,   r   s   r.   r/   z+test_PolyElement___call__.<locals>.<lambda>t  s    qAw r-   c                  (      t        dd            S Nr$   rG   r   r   s   r.   r/   z+test_PolyElement___call__.<locals>.<lambda>v  s    1R!W: r-   r2   rH   rG   5   c                               S r^   r,   r   s   r.   r/   z+test_PolyElement___call__.<locals>.<lambda>  r  r-   c                        ddd      S )Nr   r$   rH   r,   r   s   r.   r/   z+test_PolyElement___call__.<locals>.<lambda>  s    qAqz r-   c                  *      dt        dd            S r  r  r   s   r.   r/   z+test_PolyElement___call__.<locals>.<lambda>  s    1Q1Q= r-   c                  *      t        dd      d      S r  r  r   s   r.   r/   z+test_PolyElement___call__.<locals>.<lambda>  s    1R!Wa= r-   c                  >      t        dd      t        dd            S r  r  r   s   r.   r/   z+test_PolyElement___call__.<locals>.<lambda>  s    1R!Wb1g#6 r-   )r   r   r   r`   r   rZ   r&   )rB   r%   r&   RyrS   s       @r.   test_PolyElement___call__r  l  s'   R=DAq	!aAQ4199Q4199
:{#
:'
>-.%_FAq	!ad
QAQ7a<<Q7b==	
BQ42447Q;Q42447Q;
:{#
:)*
>01
>01
>67r-   c                  *   t        dt              \  } dz  ddz  z  z   dz  z   dz   j                  d      }|dk(  rt        |t              rJ t        t        fd       t        dt              \  } }z  dz  dz  dz  z  z   dz  z  z   dz   j                  d      }|dk(  r%t        || j                        j                        sJ j                  dfdfg      }|dk(  r&t        || j                        j                        sJ j                  d      }|dk(  r%t        || j                        j                        sJ j                  dfdfg      }|dk(  r&t        || j                        j                        sJ j                  dfdf|dfg      }|dk(  rt        |t              rJ t        t        fd       t        t        fd	       t        t        fd
       y )Nr%   r#   rI   rH   r   c                  <     j                  t        dd            S r  evaluater   rS   r%   s   r.   r/   z+test_PolyElement_evaluate.<locals>.<lambda>  s    1::aAa#9 r-   r"   c                  F     j                  dft        dd      fg      S r  r  r   s   r.   r/   z+test_PolyElement_evaluate.<locals>.<lambda>  s#    1::1v2a7|.D#E r-   c                  F     j                  t        dd      fdfg      S r  r  r   s   r.   r/   z+test_PolyElement_evaluate.<locals>.<lambda>  s#    1::2a7|aV.D#E r-   c                  Z     j                  t        dd      ft        dd      fg      S r  r  r   s   r.   r/   z+test_PolyElement_evaluate.<locals>.<lambda>  s)    1::2a7|aAa\.J#K r-   )	r   r   r  r   r
   r   r   rZ   r   rB   r   r'   rS   r%   r&   s      @@@r.   test_PolyElement_evaluater    s   R=DAq	1qAv!aA	

1aA6*Q444
>9:gr"JAq!Q	
1q1acAX:!A%)A	

1aA6jAFF1IOO444	

QFQF#$A6jAFF1aL$6$6777	

1aA6jAFF1IOO444	

QFQF#$A6jAFF1aL$6$6777	

QFQFQF+,A6*Q444
>EF
>EF
>KLr-   c                     t        dt              \  } dz  ddz  z  z   dz  z   dz   j                  d      }|dk(  rt        || j                        sJ t        t        fd       t        dt              \  } }dz  ddz  z  z   dz  z   dz   j                  d      }|dk(  rt        || j                        sJ j                  dfdfg      }|dk(  rt        || j                        sJ t        t        fd       t        t        fd	       t        t        fd
       y )Nr%   r#   rI   rH   r   c                  <     j                  t        dd            S r  subsr   r  s   r.   r/   z'test_PolyElement_subs.<locals>.<lambda>  s    166!R!W#5 r-   r"   c                  F     j                  dft        dd      fg      S r  r  r   s   r.   r/   z'test_PolyElement_subs.<locals>.<lambda>  s#    166Aq6Ar!Aw<*@#A r-   c                  F     j                  t        dd      fdfg      S r  r  r   s   r.   r/   z'test_PolyElement_subs.<locals>.<lambda>  s#    166Ar!Aw<!Q*@#A r-   c                  Z     j                  t        dd      ft        dd      fg      S r  r  r   s   r.   r/   z'test_PolyElement_subs.<locals>.<lambda>  s)    166Ar!Aw<!R!W*F#G r-   )r   r   r  r   r   r   r   r  s      @@@r.   test_PolyElement_subsr    s   R=DAq	1qAv!aA	q!A6jAGG,,,
>56gr"JAq!Q	1qAv!aA	q!A6jAGG,,,	AA A6jAGG,,,
>AB
>AB
>GHr-   c                      t        dt              \  } }}|dz  |dz  z   }|j                         \  }}}|dk(  sJ |j                  |      |z   |k(  sJ |dz  |dz  z
  }|j                         \  }}}|dk7  sJ |j                  |      |z   |k(  sJ ||z  dz   }|j                         \  }}}|dk(  sJ |j                  |      |z   |k(  sJ |dz   }|j                         \  }}}|dk7  sJ |j                  |      |z   |k(  sJ | j	                  d      }|j                         \  }}}|dk(  sJ |j                  |      |z   |k(  sJ t        d      \  } }|j                         \  }}}|dk(  sJ |j                  |      |z   |k(  sJ y )Nr2   rH   r   rG   r#   )r   r   
symmetrizecomposer   r   )rB   r%   r&   rS   symr#  ms          r.   test_PolyElement_symmetrizer    s   5"oGAq! 	
1q!tA,,.KCa!8O8;;q>C1$$$ 	
1q!tA,,.KCa!8O8;;q>C1$$$ 	
!aA,,.KCa!8O8;;q>C1$$$ 	
AA,,.KCa!8O8;;q>C1$$$ 	
AA,,.KCa!8O8;;q>C1$$$ 8DAq,,.KCa!8O8;;q>C1$$$r-   c                     t        dt              \  } dz  ddz  z  z   dz  z   dz   j                  d      }|dk(  rt        || j                        sJ j                        k(  sJ j                  dz        dz  ddz  z  z   ddz  z  z   dz   k(  sJ t        t        fd       t        dt              \  } }}dz  ddz  z  z   dz  z   dz   j                  d      }|dk(  rt        || j                        sJ j                  df|dfg      }|dk(  rt        || j                        sJ dz  ddz  z  z   dz  |z  |z  z   dz   j                  ||dz  z  d	z
        }||dz  z  d	z
  dz  d||dz  z  d	z
  dz  z  z   d||dz  z  d	z
  z  |z  |z  z   dz   }||k(  rt        || j                        sJ y )
Nr%   r#   rI   rH   r   rK   c                  <     j                  t        dd            S r  )r  r   r  s   r.   r/   z*test_PolyElement_compose.<locals>.<lambda>  s    199Q1Q#8 r-   r"   r$   )r   r   r  r   r   r   r   )rB   r   r&   r'   rK  rS   r%   s        @@r.   test_PolyElement_composer    s	   R=DAq	1qAv!aA			!QA6jAGG,,,99Q?a99Q1A!Q$1a4!7!!;;;;
>89gr"JAq!Q	1qAv!aA			!QA6jAGG,,,			Aq6Aq6"#A6jAGG,,,	
A!Q$1Qq	 1	$--a1a4!<A	
1a4!a!Qq!tVaZ!O++a1a4!nQ.>q.@@1DA6jAGG,,,,r-   c                     t        dt              \  } }}z
  j                  dk(  sJ z
  j                  dk(  sJ z
  j                  dk(  sJ z
  j
                  dk(  sJ z
  dz   j                  dk(  sJ z
  dz   j                  dk(  sJ z
  dz   j                  dk(  sJ z
  dz   j
                  dk(  sJ j                  dk(  sJ j                  dk(  sJ j                  dk(  sJ j
                  dk(  sJ |z  j                  dk(  sJ |z  j                  dk(  sJ |z  j                  dk(  sJ |z  j
                  dk(  sJ dz  j                  dk(  sJ dz  j                  dk(  sJ dz  j                  dk(  sJ dz  j
                  dk(  sJ dz  dz   j                  dk(  sJ dz  dz   j                  dk(  sJ dz  dz   j                  dk(  sJ dz  dz   j
                  dk(  sJ  | d      j                  du sJ  | d      j                  du sJ  | d      j                  du sJ  | d      j                  du sJ dz
  j                  du sJ dz  dz
  j                  du sJ dz  dz   j                  du sJ dz  dz   j                  du sJ |z   |z   dz   j                  du sJ |z  |z  dz   j                  du sJ |z  |z   dz   j                  du sJ |z  |z  dz   j                  du sJ dz
  j                  du sJ dz
  dz  j                  du sJ dz  z   dz   j                  du sJ dz  dz  z   dz   j                  du sJ t        d	t        d
            \  }}d|z  dz   j                  du sJ d|dz  z  d|z  z   dz   j                  du sJ t        dt              \  }}|dz  |dz  z   |dz  z
  |dz  z
  |dz  z
  |dz  z   }|j                   du sJ |dz   j                   du sJ t#        t$        fd       t        dt              \  }  | d      j                  du sJ  | d      j                  du sJ y )Nr"   FTr$   r#   r   rH   rI   r0      rG   r   rR  rj   rZ  rq   rK   c                       j                   S r^   )is_cyclotomicr%   s   r.   r/   z&test_PolyElement_is_.<locals>.<lambda>>  s     r-   r(   )r   r   is_generator	is_groundis_monomialis_termis_zerois_oneis_monicis_primitive	is_linearis_quadraticis_squarefreeis_irreducibler   r   r  r   r   )rB   r&   r'   _r0   r   rS   r%   s          @r.   test_PolyElement_is_r    s!   GR HAq1E5(((E$$$E$&&&E??d"""EAI##u,,,EAI  D(((EAI""d***EAI$&&&>>T!!!;;%==D   99aC&&&aC??e###aC$$$aC==D   aC&&&aC??e###aC%%%aC==D   aC!G!!U***aC!G%'''aC!G  E)))aC!G%%%Q4<<4Q4<<5   Q4;;%Q4;;$Et###aC!G&&&aC!G!!T)))aC!G!!U***EAIM$$,,,aCEAI  E)))aC!GaK%%---aCEAI##u,,,E  D(((UQJ%%...qD1HqL((D000qD1Q3JN**e333RVDAqaC!G##t+++adFQqSL1,,555R=DAq	2221$q!t+ad2A??e###E  D(((
&(?@	b"BAQ4%%%Q4$&&&r-   c                     t        dt              \  } } | d      j                  d      j                   t        dt        t              k(  sJ  | d      j                  d      j                  d      j                   t        dt        t              k(  sJ t         | d      j                  d      j                  d      j                  d      | j                        du sJ t        t        fd       t        t        fd       y )	Nr"   r$   r   rV   r'   Fc                  b     j                  d      j                  d      j                  d      S r*   rY   )r'   s   r.   r/   z'test_PolyElement_drop.<locals>.<lambda>K  s#    qvvay~~a055a8 r-   c                  &     j                  d      S r*   rY   r  s   r.   r/   z'test_PolyElement_drop.<locals>.<lambda>L  r\   r-   )	r   r   rZ   r	   r   r   r   r   r`   )rB   r&   r%   r'   s     @@r.   test_PolyElement_dropr  D  s    GR HAq1Q499Q<C 8888Q499Q<Q$$b#(>>>>adiil''*//2AGG<EEE
:89
:()r-   c                  \   t        dt              \  } }}}d|dz  z  d|dz  z  z   d|dz  z  |z  z   dz   }|j                  dd      d|z  dz   k(  sJ |j                  |d      dk(  sJ d|dz  z  d|z  |dz  z  |z  z   d	|dz  z  z   d	|z  |dz  z  z   }|j                  |d      d|dz  z  |z  d	|dz  z  z   k(  sJ |j                  |d      d|z  |z  d	z   k(  sJ d|dz  z  d|z  |z  z   dz   }|j                  |d       | d
      k(  sJ |j                  |d       | d
      k(  sJ y )Nzx, y, zrI   r#   rJ   rH   rK   rG   r$   rZ  r   )r   r   	coeff_wrt)rB   r%   r&   r'   ps        r.   test_PolyElement_coeff_wrtr  N  sn   i$JAq!Q	!Q$1a4!AqD&("Q&A;;q!!a''';;q!!!!	!Q$1QT!bAg%1QT	1A;;q!!Q$q2ad7 2222;;q!!A
***	!Q$1QA;;q!!$$$;;q!!$$$r-   c                  Z   t        dt              \  } }| dz  | |z  z   d| z  dz   c}j                  |      d|z  dz   k(  sJ | dz  dz   d| z  dz
  c}j                  |      j                  ||       cxk(  rdk(  sJ  J j                  |d       d      k(  sJ | |z  d| z  z   dz   | |z   c}j                  |      |dz   d|z  z
  dz   k(  sJ j                  |d      j                  ||      cxk(  r| dz   d| z  z   dz   k(  sJ  J t        t        fd       y )	Nr   rH   rI   r$   r8  r   c                  2    j                    d            S r*   premrB   rS   s   r.   r/   z'test_PolyElement_prem.<locals>.<lambda>k      affQqTl r-   )r   r   r  r   rJ  r%   r&   r   rB   rS   s      @@r.   test_PolyElement_premr  ]  sF   62GAq!a4!A#:qsQwDAq66!91q   a4!8QqS1WDAq66!9q!******66!Q<1Q4Q319q=!a%DAq66!9A!a'''66!Q<166!Q<:AqD51Q3;?:::::
23r-   c                     t        dt              \  } }| dz  d| dz  z  z   d| dz  z  z   d| dz  z  dz   c}j                  |      j                  ||       cxk(  rd| dz  z  d| z  z   dz   d	| z  d
z
  fk(  sJ  J | dz  |dz  z
  | |z
  c}j                  |      j                  |d      cxk(  r| |z   dfk(  sJ  J | |z  d| z  z   dz   | |z   c}j                  |      |dz   |dz   d|z  z
  dz   fk(  sJ j                  ||      j                  |d      cxk(  r| dz   | dz   d| z  z   dz   fk(  sJ  J  d      j                  |      dk(  sJ t        t        fd       y )Nr2   rI   rJ   r#   rG   rH   r8     iB   r   r$   r   c                  2    j                    d            S r*   r  r  s   r.   r/   z'test_PolyElement_pdiv.<locals>.<lambda>{  r  r-   )r   r   pdivr   rJ  r  s      @@r.   test_PolyElement_pdivr  m  s   5"oGAq!a4!AqD&=1QT6!1QT6A:DAq66!9q!H1a4"Q$);SURZ(HHHHHHa4!Q$;ADAq66!9q!2Q
22222Q319q=!a%DAq66!9QA!a000066!Q<166!Q<CAEAqD51Q3;?+CCCCCCQ499Q<6!!!
23r-   c                     t        dt              \  } }}|dz  d|dz  z  |z  z
  d|dz  z  z   |dz  d|z  z
  }}|j                  |      |j                  ||      cxk(  r|dz  d|z  z
  k(  sJ  J |j                  ||      d|dz  z  d|z  z
  dz   k(  sJ |dz  |dz  z
  |dz  |dz  z
  }}|j                  |      |j                  |d      cxk(  r|dz  |dz  z   k(  sJ  J y )Nr   rI   rH   rq   r   )r   r   pquorh  s        r.   test_PolyElement_pquor  }  s   62GAq!a4!AqD&(?Qq!tV#QTAaCZqA66!9q!21qs
2222266!Q<1QT6AaC<!++++a4!Q$;1q!tqA66!9q!31q!t33333r-   c                  r   t        dt              \  } }}|dz  |dz  z
  ||z
  cj                        j                  |      cxk(  r	||z   k(  sJ  J j                  |      j                  d      cxk(  r||z   dz   k(  sJ  J |dz  d|z  z   dz   |dz   ct        t        fd       y )Nr   rH   r$   r#   rK   c                  &     j                        S r^   )pexquor  s   r.   r/   z)test_PolyElement_pexquo.<locals>.<lambda>  s     r-   )r   r   r  r   r   rh  s      @@r.   test_PolyElement_pexquor    s    62GAq!a4!Q$;ADAq88A;!((1a.1AE1111188Aq>QXXa^8q1uqy88888a4!A#:>1q5DAq
 34r-   c                      t        dt              \  } }d|z  |dz  dz
  }}|dz  t        dd       d}}}|j                  |      ||fk(  sJ |j                  |      |||fk(  sJ y )Nr%   rH   rR  rV  r$   )r   r   
half_gcdexgcdex)r  r%   rS   r   sr0   rt  s          r.   test_PolyElement_gcdexr    su    R=DAqQ31r	qAdR2YJ!qA<<?q!f$$$771:!Q"""r-   c                     t        dt              \  } }}|dz  |z  ||z  z   ||z   }}|dz  |dz  z
  }|j                  |      |||gk(  sJ |j                  |d      |j                  ||      cxk(  r	|||gk(  sJ  J |j                  ||      |dz  |z  ||z  z   ||z   |dz  |dz  z   gk(  sJ d|z  |z
  |dz  d|z  z   |z   }}|j                  |      |dz  |z   d|z  z   d|z  |z
  |dz  d|z  z   gk(  sJ  | d      |dz  |dz  z
  }}|j                  |      |dz  |dz  z
  dgk(  sJ |dz  |z  ||z  z    | d      }}|j                  |      |dz  |z  ||z  z   dgk(  sJ  | d       | d      }}|j                  |      ddgk(  sJ |dz  |z   |dz  |z   }}|j                  |      |dz  |z   |dz  |z   gk(  sJ y )Nr   rH   r#   r   rZ  r$   )r   r   subresultants)rB   r%   r&   rS   r   rt  s         r.   test_PolyElement_subresultantsr    s4   62GAq!a46AaC<QqA	1q!tA??1!Q*** ??1a Q__Q%:Gq!QiGGGGG??1a QT!Vac\1q5!Q$A+$FFFFQ37AqD1Q3JNqA??1!Q$(QqS.!A#'1a4"Q$;!GGGGQ4A1qA??1!Q$A+q!1111a46AaC<1qA??1!Q$q&1Q3,!2222Q41qA??1!Q'''a4!8QTAXqA??1!Q$(AqD1H!5555r-   c                      t        dt              \  } }|dz  d|z  z
  dz   |dz  dz
  d}}}|j                  |      |k(  sJ y )Nr%   rH   r$   r   )r   r   	resultantr  r%   rS   r   rt  s        r.   test_PolyElement_resultantr    sL    R=DAqdQqSj1nadQh!qA;;q>Qr-   c                  6   t        dt              \  } }|dz  d|dz  z  z   d|z  z   dz
  d}}|j                         |k(  sJ t        dt              \  }}}}t        d|      \  } }||dz  z  ||z  z   |z   |dz  d|z  |z  z
  }}|j                         |k(  sJ y )	Nr%   r#   rH   r:     ipza,b,crI   )r   r   discriminant)r  r%   rS   r   rn   r   bcs           r.   test_PolyElement_discriminantr    s    R=DAqa4!AqD&=1Q3#VqA>>q   gr"JAq!QQ<DAqQT6AaC<!QTAaCE\qA>>q   r-   c                  .   t        dt              \  } }|dz  d|dz  z  z   d|dz  z  z   d|dz  z  z   d	|d
z  z  z   d|dz  z  z
  d|z  z
  dz   }|d
z  d|z  z
  dz   }|dz  d|z  z   }|j                  ||      |k(  sJ |j                         ||gk(  sJ y )Nr%   rO  r8  rZ     rq   i  rK   q  rI   rH   r#   r:  rJ   )r   r   r  	decomposer  s        r.   test_PolyElement_decomposer    s    R=DAq	21b53q!t8#c!Q$h.QT9AadFBRTIAMA	1qs
QA	1qs
A99Q?a;;=QF"""r-   c                     t        dt              \  } dz  dz  z
  dz   j                  d      dz  dz  z   dz   k(  sJ dz  dz  z
  dz   j                  dg      dz  dz  z   dz   k(  sJ t        dt              \  }z  j                  ddg      dz   dz   z  k(  sJ t	        t
        fd       y )Nr%   rH   r$   r   c                  ,     z  j                  d      S r   )shift)r%   r&   s   r.   r/   z(test_PolyElement_shift.<locals>.<lambda>  s    1A r-   )r   r   r  
shift_listr   r   )r  rB   r%   r&   s     @@r.   test_PolyElement_shiftr    s    R=DAqqD1Q3JN!!!$1qs
Q666qD1Q3JN&&s+q!taczA~===62GAq!aCQF#!ac{222
&(>?r-   c            	      N   t        dt              \  } }t        d|       \  }}dd|dz  z  z  |dz  z  dd|dz  z  z  |d	z  z  z
  d
d|d	z  z  z  |dz  z  z   dd|d	z  z  z  |dz  z  z
   | d      dz  |z  z    | d      dz  z
  }|j                         |dz  d|dz  z  z
  |d	z  dz  |z  z   d|d	z  z  dz  z
  d|dz  z  d|z  z
  |d	z  dz  z   |d	z   dz   | d      dz  z   |z  d|d	z  z  dz  z   d|dz  z  d|dz  z  z
  d|d	z  z  z
  d|dz  z  d|d	z  z  z
  dz   z  gk(  sJ y ) Nr0   r%   i   i	=  rq   rJ   i   r  rI   rV  r#      rH   r$   i$  d   @   r@  rR     rS  i N  r:     irO  i ȯ l      ir  i  l      ^_)r   r   r   sturm)rn   r0   r  r%   rS   s        r.   test_PolyElement_sturmr    s   b>DAqQ<DAqeAqDj!Q$s1a4xA!55E!Q$J18LLsTWXY[\X\T\~^_ab^bObbefgheijoeopqeqqtuvwtxy|t||A779	1s1a4x!Q$r'!)#bAgbj0	!Q$QAb 
Q$rAeHQJ	!Bq!tGBJ.	ArEHQTM	!M!Q$$6	6QTIaQRdN9RUc9cd	   r-   c                  R   t        dt              \  } }|dz  d|dz  z  z   |dz  z
  d|dz  z  z
  }|j                         |df|dz   dfgk(  sJ ||dz
  dz  z  |dz
  dz  z  |dz
  dz  z  |dz
  z  }|j                         |dz  d|z  z
  dz   df|dz  d|z  z
  dz   df|dfgk(  sJ y )Nr%   rJ   rH   rI   r#   r$   )r   r   gff_list)r  r%   rS   s      r.   test_PolyElement_gff_listr
    s    R=DAq	1qAv1qAv%A::<QFQUAJ////	1q51*a!eaZQ
*AE2A::<QTAaCZ!^Q/!Q$1*q.!1Dq!fMMMMr-   c                      t         } t        j                  t        d            }|j                  }t	        d|       \  }}}t	        d|      \  }}}||z  |z   j                         |dz  |dz  z  dz
  k(  sJ y )NrH   r2   )r   r   r   unitr   norm)kKsqrt2r  r   r   r%   r&   s           r.   test_PolyElement_normr    su    
A
47#AFFE5!nGAq!5!nGAq!aC%K1a419q=000r-   c                  0   t        dt        j                  t        d                  \  } }| j	                         j
                  }|dz  dz
  j                         dg|dz  dt        d      z  |z  z
  dz   |dz  d|dz  z  z
  dz   fk(  sJ t        dt        j                  t        d                  \  } }| j	                         j
                  }|dz  dz
  j                         dg|dz  dt        d      z  |z  z
  dz
  |dz  d|dz  z  z
  dz   fk(  sJ y )Nr%   r#   rH   r$   rI   rZ  )r   r   r   r   	to_groundr%   sqf_norm)rB   r%   r   s      r.   test_PolyElement_sqf_normr    s   R''Q01DAq	AqD1H aS!Q$471*<q*@!Q$AqD.STBT$UUUUR''Q01DAq	AqD1H aS!Q$471*<q*@!Q$AqD.STBT$UUUUr-   c                     t        dt              \  } }|dz  |dz  z
  |dz  z
  dz   }|dz  d|dz  z  z   d|z  z   dz   }|dz
  }|dz  |dz  z   |z
  dz
  }|j                         |k(  sJ |j                         d|df|dfgfk(  sJ y )Nr%   rJ   r#   rH   r$   rI   )r   r   sqf_partsqf_list)r  r%   rS   r   rt  r  s         r.   test_PolyElement_sqf_listr    s    R=DAq	1q!tadQA	1qAv!aA	AA	1q!ta!A::<1::<AAA/0000r-   c            
      x   t        d      dz  t        dt        d      z  dz         dz  z   t        d      dz  dt        d      z  dz  z   t        d      dz  dt        d      z  dz  z   t        d       dz  t        dt        d      z  dz         dz  z   g} t        | d      \  }}|j                  t	        j
                  t        d      t        dt        d      z  dz         z         k(  sJ |j                  dk(  sJ g }| D ],  }|j                  |j                  j                  |             . ||k(  sJ y )	Nr#   rR  rZ  rq   r$   Tr   r,   )	r   r   r   r6   r   r   r5   appendr   )itemsrB   r   resultitems        r.   test_issue_18894r    s/   qT"WtAd1gIN+A--qtAv$q'	"/Dad1fqQUVWQXyY[|F[^_`a^b]bce]ehlmnostuovmvy{m{h|}~h~]~E$'DAq88r))$q'$qay|2D*DEEEE66R<<F 1ahh))$/01;;r-   c                      t        dt              \  } }|dz  |dz  z
  |dz  z
  dz   }|dz   }|dz
  }|dz  |z   dz   }|j                         d|df|df|dfgfk(  sJ y )Nr%   rJ   r#   rH   r$   )r   r   factor_list)r  r%   rS   r   r   ws         r.   test_PolyElement_factor_listr#    s    R=DAq	1q!tadQA	AA	AA	1q1A==?qAq6Aq6Aq6":;;;;r-   c                      t        dt        d            \  } }|dz  |dz  z   |dz  z   |dz  z   dz   }|j                  d      |dz  |d	z  z   |d
z  z   |dz  z   dz   k(  sJ y )Nr%   rH   rK   rJ   rI   r#   r$   ri   r8  rR  rO  )r   r   r\  )rB   r%   r  s      r.   test_issue_21410r%  '  sz    RUDAq	1q!tadQT!A%Aa ArEArEMArE$9ArE$AA$EEEEr-   N)t__doc__	functoolsr   operatorr   r   sympy.polys.ringsr   r   r   r	   r
   sympy.polys.fieldsr   r   sympy.polys.densebasicr   sympy.polys.domainsr   r   r   r   r   sympy.polys.orderingsr   r   sympy.polys.polyerrorsr   r   r   r   sympy.testing.pytestr   
sympy.corer   r   sympy.core.singletonr   sympy.core.numbersr   &sympy.functions.elementary.exponentialr   (sympy.functions.elementary.miscellaneousr   r<   rC   rE   rT   ra   rc   rg   ro   rt   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  rL  r]  rc  re  ri  rp  rw  rz  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.   <module>r5     s      G G / ' 2 2 ,E E ( & " ! 6 9 D: )2(& ""
*'8#'J%	7*->#J!#F7<,42<C%(@"6"a:c:$KLo4bC:9+v$(LM(3AjO+b?B55D8<M8I*%%N-0H'T*%4 4 45#66!#@N1	V	1	<Fr-   