
    \h_                        S r SSKJr  SSKJrJr  SSKJrJrJ	r	J
r
Jr  SSKJrJr  SSKJr  SSKJrJrJrJrJr  SSKJrJr  SS	KJrJrJrJr  SS
KJ r   SSK!J"r"J#r#  SSK$J%r%  SSK&J'r'  SSK(J)r)  SSK*J+r+  S r,S r-S r.S r/S r0S r1S r2S r3S r4S r5S r6S r7S r8S r9S r:S r;S  r<S! r=S" r>S# r?S$ r@S% rAS& rBS' rCS( rDS) rES* rFS+ rGS, rHS- rIS. rJS/ rKS0 rLS1 rMS2 rNS3 rOS4 rPS5 rQS6 rRS7 rSS8 rTS9 rUS: rVS; rWS< rXS= rYS> rZS? r[S@ r\SA r]SB r^SC r_SD r`SE raSF rbSG rcSH rdSI reSJ rfSK rgSL rhSM riSN rjSO rkSP rlSQ rmSR rnSS roST rpSU rqSV rrSW rsSX rtgY)Zz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                     [        [        S5      u  pp#[        [        S[        [
        5      R                  5      S:X  d   e[        [        U [        [
        5      R                  5      S:X  d   e[        [        S[        [
        5      R                  5      S:X  d   e[        [        XU4[        [
        5      R                  5      S:X  d   e[        [        S[        [
        5      R                  5      S:X  d   e[        [        / [        [
        5      R                  5      S:X  d   e[        [        S 5        [        S	[        U   [
        5      R                  [        U   :X  d   e[        S	S
[
        5      R                  [        U   :X  d   e[        S	[        S[        [
        5      [
        5      R                  [        U   :X  d   e[        [        S 5        [        S5      n[        S	[        [
        5      R                  [
        :X  d   e[        S	[        U5      R                  [
        :X  d   e[        S	[        S5      R                  [
        :X  d   e[        S[        [
        5      n[        S[        [
        5      n[        S[        [
        5      nUR                  UR                  S   :X  d   eUR                  UR                  S   :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   eUR                  UR                  :w  d   eUR                  UR                  :w  d   eg )Nxyztx,y,z      )xyz r   c                  ,    [        S[        [        5      $ Nr   r	   r   r        T/var/www/auris/envauris/lib/python3.13/site-packages/sympy/polys/tests/test_rings.py<lambda>(test_PolyRing___init__.<locals>.<lambda>   s    HQC$8r-   r%   zZZ[t]tc                  J    [        S[        S[        [        5      [        5      $ )Nr%   r+   r,   r-   r.   r/   r0   %   s    HS(3C2H#$Nr-   r   x,y)mapr   lenr	   r   r   gensr   r   domainorderr%   r&   )r%   r&   r'   r1   _lexR1R2R3s           r.   test_PolyRing___init__r=      sv   VV$JA!xS)../1444x2s#(()Q...xS16671<<<xq	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                  N    [        S[        5      u  pp#[        U 5      (       d   eg Nr"   r   r   hashRr%   r&   r'   s       r.   test_PolyRing___hash__rD   7   s    gr"JA!77N7r-   c                     [        S[        5      S   [        S[        5      S   :X  d   e[        S[        5      S   [        S[        5      S   :w  d   e[        S[        5      S   [        S[        5      S   :w  d   e[        S[        5      S   [        S[        5      S   :w  d   e[        S[        5      S   [        S[        5      S   :w  d   eg )Nr"   r   r3   )r   r   r   r,   r-   r.   test_PolyRing___eq__rF   ;   s    Q4#4Q#7777Q4#4Q#7777Q4#4Q#7777Q4r?1#5555r?1gr!21!5555r-   c            	         [        S[        5      u  pp#U R                  S5      U " S5      :X  d   eU R                  SU-  U-  U-  5      SU-  U-  U-  :X  d   eUS-  SU-  U-  -   SU-  -   SUS-  -  -   SU-  -   S-   nU R                  S//S/S/// S	Q//5      U:X  d   eU R                  SSSSSSS
.5      U:X  d   eU R                  / SQ5      U:X  d   e[        S[        5      u  n U R                  S/5      U " S5      :X  d   eg )Nr"         r#            r$   )rJ   rK   rL   )rI   r   r   r$   r$   r   r$   r   r   r   r   rI   r   r   r$   r   r   r   ))rM   r$   )rN   rI   )rO   r#   )rP   rJ   )rQ   rK   )rR   rL   r(   )r,   rH   )r   r   ring_new)rC   r%   r&   r'   fs        r.   test_PolyRing_ring_newrU   B   s*   gr"JA!::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                  H  ^^^ [        S[        5      u  mmmn TR                  T5      [        S[        [        5      :X  d   eTR                  T5      [        S[        [        5      :X  d   eTR                  U 5      [        S[        [        5      :X  d   eTR                  S5      [        S[        [        5      :X  d   eTR                  S5      R                  S5      [        S[        [        5      :X  d   eTR                  S5      R                  S5      R                  S5      [        :X  d   eTR                  S5      [        S[        [        5      :X  d   eTR                  S5      [        S[        [        5      :X  d   eTR                  S5      R                  S5      [        S	[        [        5      :X  d   eTR                  S5      R                  S5      R                  S5      [        :X  d   e[        [        U4S
 j5        [        [        UUU4S j5        g )Nr"   y,zzx,zr3   r   r'   r$   rI   r%   c                  &   > T R                  S5      $ Nr#   droprC   s   r.   r/   $test_PolyRing_drop.<locals>.<lambda>b       qvvayr-   c                  D   > T R                  T5      R                  T5      $ NrZ   rC   r%   r&   s   r.   r/   r]   c   s    qvvay~~a0r-   )r   r   r[   r	   r   r   
ValueError)r'   rC   r%   r&   s    @@@r.   test_PolyRing_droprc   Q   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                      [        S[        5      u  pp#U SS  [        S[        [        5      :X  d   eU SS  [        S[        [        5      :X  d   eU SS  [        S[        [        5      :X  d   eU SS  [        :X  d   eg )Nr"   r   r$   rW   rI   r'   r#   )r   r   r	   r   rB   s       r.   test_PolyRing___getitem__re   e   s{    GR HAQR5HWb#....QR5HUB,,,,QR5HS"c****QR5B;;r-   c                  N   [        S[        [        5      n U R                  SL d   eU R                  SL d   e[        S[        [        5      n U R                  SL d   eU R                  SL d   e[        S[        [        5      n U R                  SL d   eU R                  SL d   eg )Nr%   TFr"   r(   )r	   r   r   is_univariateis_multivariater\   s    r.   test_PolyRing_is_ri   m   s    b#A??d"""%%%"c"A??e###$$$RA??e###%%%r-   c                  D   [        S[        5      u  p[        S5       Vs/ s H  o!S-  SU-  -   S-   PM     nnU R                  U5      [	        [        U5      s=:X  a  SUS-  -  S-   :X  d   e   e[        S[        5      u  n U R                  / SQ5      S:X  d   eg s  snf )	Nr%   rJ   rI   r#      r(   )rI   rK   rH      )r   r   ranger   r   rC   r%   iFs       r.   test_PolyRing_addrq   }   s    R=DA"'(,(QQ$1*q.(A,558vc1~41a4"44444	b"BA55r!!! 	-s   Bc                  t   [        S[        5      u  p[        S5       Vs/ s H  o!S-  SU-  -   S-   PM     nnU R                  U5      [	        [        U5      s=:X  a(  US-  SUS-  -  -   SUS-  -  -   S	US-  -  -   S
-   :X  d   e   e[        S[        5      u  n U R                  / SQ5      S:X  d   eg s  snf )Nr%   rJ   rI   r#      rk   rL      i  i  r(   )rI   r#   rK      )r   r   rm   r   r   rn   s       r.   test_PolyRing_mulrv      s    R=DA"'(,(QQ$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   B5c                    ^ [        S[        5      u  mpp#[        [        U4S j5        [        [        U4S j5        TR	                  S5      TR
                  :X  d   eTR	                  S5      X-   U-   U-   :X  d   eTR	                  S5      X-  X-  -   X-  -   X-  -   X-  -   X#-  -   :X  d   eTR	                  S5      X-  U-  X-  U-  -   X-  U-  -   X-  U-  -   :X  d   eTR	                  S5      X-  U-  U-  :X  d   eg )	Nx,y,z,tc                  &   > T R                  S5      $ Nsymmetric_polyr\   s   r.   r/   .test_PolyRing_symmetric_poly.<locals>.<lambda>   s    q//3r-   c                  &   > T R                  S5      $ )NrK   r|   r\   s   r.   r/   r~      s    q//2r-   r   r$   rI   r#   rJ   )r   r   r   rb   r}   one)r%   r&   r'   r1   rC   s       @r.   test_PolyRing_symmetric_polyr      s	   B'MAqQ
:34
:23A!%%'''A!%!)a-///A!#)ac/AC"7!#"="CCCCA!#a%!#a%-!#a%"7!#a%"????A!#a%')))r-   c                     [        S5      u  pp#[        S[        [        5      n[	        U SU-  -   SU-  -   5      XDR
                  SUR                  -  -   SUR                  -  -   4:X  d   e[        S[        [        5      n[	        U SU-  -   US-  -   5      XDR
                  SUR                  -  -   UR                  S-  -   4:X  d   e[	        U SU-  US-  /5      XDR
                  SUR                  -  UR                  S-  /4:X  d   e[        S[        [        5      n[        SU[        5      n[	        U SU-  U-  -   SUS-  -  U-  -   XU5      XDR
                  SUR                  -  UR                  -  -   SUR                  S-  -  UR                  -  -   4:X  d   e[        S[        [        5      n[        SU[        5      n[	        XU-  S-  -   US-  U-  S-  -   XU5      XDR
                  UR                  UR                  -  S-  -   UR                  S-  UR                  -  S-  -   4:X  d   e[        S[        [        5      n[        SU[        5      n[	        U SU-  U-  -   US-  U-  S-  -   XU5      XDR
                  SUR                  -  UR                  -  -   UR                  S-  UR                  -  S-  -   4:X  d   e[        S5      [        S5      -
  n[	        USS9u  pGUR                  [        R                  " [        S5      [        S5      -   5      :X  d   eUR                  S:X  d   eXtR                  R                  U5      :X  d   eg )	Nrx   r"   rI   r#   r1   T	extensionr,   )r   r	   r   r   r   r%   r&   r'   r   r1   r   r   r7   algebraic_fieldr6   
from_sympy)r%   r&   r'   r1   rC   Rtras           r.   
test_sringr      s   #JA!"c"AQqS1Q3AssQqssU{QqssU':#;;;;"c"AQqS1Q3AssQqssU{QSSU':#;;;;!QqS!A#AQqssUACCE':#;;;;	#r3	B"c"AQqSUQq!tVAX%qQ/AssQrttVACCZ7G!BDDRSG)TUTWTW-7W3XXXX	#r3	B"c"AqSUQT!VAX%qQ/AssRTT!##XaZ7G"$$PQ'RSRURU+VW-7W3XXXX	3C	 B"c"AQqSUQT!VAX%qQ/AssQqssU244Z7G"$$PQ'RSRURU+VW-7W3XXXXQ$q'Ad#DA88r))$q'DG*;<<<<66R<<##A&&&&r-   c                  X    [        S[        5      u  pp#[        X-  U-  5      (       d   eg r?   r@   rB   s       r.   test_PolyElement___hash__r      s&    gr"JA!A;;;r-   c                  v   [        S[        [        5      u  pnX-  SU-  U-  -   S:H  S:X  d   eX-  SU-  U-  -   SU-  U-  :H  S:X  d   eSX-  SU-  U-  -   :H  S:X  d   eSU-  U-  X-  SU-  U-  -   :H  S:X  d   eX-  X-  -
  S:H  S:X  d   eSX-  X-  -
  :H  S:X  d   eX-  X-  -
  S:H  S:X  d   eSX-  X-  -
  :H  S:X  d   eX-  X-  -
  S:H  S:X  d   eSX-  X-  -
  :H  S:X  d   eX-  SU-  U-  -   S:g  S:X  d   eX-  SU-  U-  -   SU-  U-  :g  S:X  d   eSX-  SU-  U-  -   :g  S:X  d   eSU-  U-  X-  SU-  U-  -   :g  S:X  d   eX-  X-  -
  S:g  S:X  d   eSX-  X-  -
  :g  S:X  d   eX-  X-  -
  S:g  S:X  d   eSX-  X-  -
  :g  S:X  d   eU R                  [	        SS5      s=:X  a  U R                  :X  d   e   eU R                  Ss=:X  a  U R                  :X  d   e   e[        S[        5      u  p4[        SU5      u  pnUS	-  U-  U-  US	-  :H  S:X  d   eUS	-  U-  U-  US
-  :H  S:X  d   eg )Nr3   rK   rL   FTr   r$   r1   r#   rJ   )r   r   r   r   r   )rC   r%   r&   r   r1   s        r.   test_PolyElement___eq__r      s   5"c"GA!S1Q3q5[Q5(((S1Q3q5[QqSU"t+++!#!A+5(((aCEacAaCEk"t+++S13Y1%%%!#)%%%S13Y1&&&!#)&&&S13Y1&&&!#)&&&S1Q3q5[Q4'''S1Q3q5[QqSU"u,,,!#!A+4'''aCEacAaCEk"u,,,S13Y1&&&!#)&&&S13Y1%%%!#)%%%55Bq!H%%%%%%55AbMEB5"oGA!qDF1H1%%%qDF1H1&&&r-   c                  R   [        S[        5      u  pnU " S5      Us=:  a  US-  s=:  a
  US-  :  d   e   eU " S5      Us=::  a  US-  s=::  a
  US-  ::  d   e   eUS-  US-  s=:  a  Us=:  a  U " S5      :  d   e   eUS-  US-  s=:  a  Us=:  a  U " S5      :  d   e   eg )Nr3   r$   rI   r#   )r   r   ra   s      r.   test_PolyElement__lt_le_gt_ge__r      s    5"oGA!Q4!!ad!QT!!!!!Q41$1$1$$$$$a4!Q$!!QqT!!!!!a41a4$1$!$$$$$r-   c                  H   [        S5      u  p[        [        [        U    [        X4   [        U    U   4 H+  n[        SU5      u  p4[	        SUS-  -  S-   5      S:X  a  M+   e   [
        [
        U    4 H+  n[        SU5      u  p4[	        SUS-  -  S-   5      S:X  a  M+   e   g )Nx, yr1   rI   r$   z
2*t**2 + 1zEX(2)*t**2 + EX(1))r   r   r   r   strr   )r%   r&   domrC   r1   s        r.   test_PolyElement__str__r      s    6?DAB1r!#w1a1C~1QT6A:,... 2 BqE{C~1QT6A:"6666 r-   c                      [        S[        5      u  pp#X-  SU-  -   nUR                  5       nXE:X  d   eSUS'   XE:w  d   eg )Nr"   r#   rH   r$   r$   r$   )r   r   copy)rC   r%   r&   r'   rT   gs         r.   test_PolyElement_copyr      sG    gr"JA!	ac	A	A6M6AiL6M6r-   c                  &  ^
^ [        S[        5      u  pp#SUS-  -  U-  X-  U-  -
  SUS-  -  -   S-   mU R                  u  m
pEST
S-  -  U-  T
U-  U-  -
  SUS-  -  -   S-   nTU:w  d   eTR                  5       U:X  d   e[        S5      u  pxn	SUS-  -  U-  Xx-  U	-  -
  SU	S-  -  -   S-   nTU:w  d   eTR                  XxU	5      U:X  d   e[	        [
        U
U4S j5        [        S[        5      u  n U " S5      R                  5       S:X  d   eg )	Nr"   r#   rI   rH   r$   zu,v,wc                  &   > TR                  T 5      $ r`   )as_expr)XrT   s   r.   r/   *test_PolyElement_as_expr.<locals>.<lambda>  s    qyy|r-   r(   )r   r   r   r   r   rb   )rC   r%   r&   r'   YZr   UVWr   rT   s             @@r.   test_PolyElement_as_exprr      s-   gr"JA!	!Q$q13q51QT6!A%AiiGAq	!Q$q1Q3q51QT6!A%A6M699;!gGA!	!Q$q13q51QT6!A%A6M699Q1"""
:+,	b"BAQ4<<>Qr-   c                  r  ^^	 [        S5      u  m	p[        T	X4[        5      u  mp#nTR                  S5      nUS:X  a  TR	                  U5      (       d   eTR                  T	5      nXR:X  a  TR	                  U5      (       d   eTR                  T	U -  U-  5      nXRU-  U-  :X  a  TR	                  U5      (       d   eTR                  T	U -  U-  T	U -  -   T	-   5      nXRU-  U-  X#-  -   U-   :X  a  TR	                  U5      (       d   eTR                  T	S-  U -  U-  T	S-  U S-  -  -   S-   5      nXRS-  U-  U-  US-  US-  -  -   S-   :X  a  TR	                  U5      (       d   e[        [        S5      /5      u  pgUR                  [        S5      5      nXWS   :X  a  UR	                  U5      (       d   e[        [        UU	4S j5        [        [        UU	4S j5        [        [        UU	4S	 j5        [        S
[        5      u  mTR                  S5      nUS:X  a  TR	                  U5      (       d   eg )Nr"   r$   r#   rI   rH   r   c                  ,   > T R                  ST-  5      $ Nr$   	from_exprrC   r%   s   r.   r/   ,test_PolyElement_from_expr.<locals>.<lambda>,  s    q{{1Q3/r-   c                  ,   > T R                  ST-  5      $ NrI   r   r   s   r.   r/   r   -  s    q{{1a40r-   c                  D   > T R                  ST-  [        S5      -   5      $ )NrH   rI   )r   r   r   s   r.   r/   r   .  s    q{{1Q3a=9r-   r(   )	r   r   r   r   
is_elementr   r   r   rb   )
r&   r'   r   r   r   rT   r   rp   rC   r%   s
           @@r.   test_PolyElement_from_exprr     s   gGAqq!i$JAqQ	AA6all1oo%%	AA6all1oo%%	AaCEA!A:!,,q//))	AaCEAaCK!O$A!AaALLOO33	AqDF1Hq!tAqDy(1,-A1Qq1a419$q((Q\\!__<<#a&?DA	CFA!9a((
:/0
:01
:9:	b"BA	AA6all1oo%%or-   c                     [        S[        5      u  pp#[        [        S5      :X  d   eU " S5      R	                  5       [        L d   eU " S5      R	                  5       S:X  d   eUS-   R	                  5       S:X  d   eSUS-  -  U-   R	                  5       S:X  d   eXS-  -  U-   R	                  5       S:X  d   eUS-  US-  -  U-   R	                  5       S:X  d   eU " S5      R	                  U5      [        L d   eU " S5      R	                  U5      S:X  d   eUS-   R	                  U5      S:X  d   eSUS-  -  U-   R	                  U5      S:X  d   eXS-  -  U-   R	                  U5      S:X  d   eSUS-  -  US-  -  U-   R	                  U5      S:X  d   eU " S5      R	                  U5      [        L d   eU " S5      R	                  U5      S:X  d   eUS-   R	                  U5      S:X  d   eSUS-  -  U-   R	                  U5      S:X  d   eXS-  -  U-   R	                  U5      S:X  d   eSUS-  -  US-  -  U-   R	                  U5      S:X  d   eU " S5      R	                  U5      [        L d   eU " S5      R	                  U5      S:X  d   eUS-   R	                  U5      S:X  d   eSUS-  -  U-   R	                  U5      S:X  d   eXS-  -  U-   R	                  U5      S:X  d   eSUS-  -  US-  -  U-   R	                  U5      S:X  d   e[        S	[        5      u  n U " S5      R	                  5       [        L d   eU " S5      R	                  5       S:X  d   eg )
Nr"   z-infr   r$   rI   r#   rK   rH   r(   )r   r   r   floatdegreerB   s       r.   test_PolyElement_degreer   4  sa   GR HA5=   Q4;;=D   Q4;;=AE>>q   adFQJ A%%%dFQJ A%%%qDAIM!!#q(((Q4;;q>T!!!Q4;;q>QE>>!!!!adFQJq!Q&&&dFQJq!Q&&&adF1a4K!O##A&!+++Q4;;q>T!!!Q4;;q>QE>>!!!!adFQJq!Q&&&dFQJq!Q&&&adF1a4K!O##A&!+++Q4;;q>T!!!Q4;;q>QE>>!!!!adFQJq!Q&&&dFQJq!Q&&&adF1a4K!O##A&!+++	b"BAQ4;;=D   Q4;;=Ar-   c                  "   [        S[        5      u  pp#U " S5      R                  5       [        L d   eU " S5      R                  5       S:X  d   eUS-   R                  5       S:X  d   eSUS-  -  US-  U-  -   R                  5       S:X  d   eXS-  -  US-  U-  -   R                  5       S:X  d   eUS-  US-  -  US-  U-  -   R                  5       S:X  d   eU " S5      R                  U5      [        L d   eU " S5      R                  U5      S:X  d   eUS-   R                  U5      S:X  d   eSUS-  -  US-  U-  -   R                  U5      S:X  d   eXS-  -  US-  U-  -   R                  U5      S:X  d   eSUS-  -  US-  -  US-  U-  -   R                  U5      S:X  d   eU " S5      R                  U5      [        L d   eU " S5      R                  U5      S:X  d   eUS-   R                  U5      S:X  d   eSUS-  -  US-  U-  -   R                  U5      S:X  d   eXS-  -  US-  U-  -   R                  U5      S:X  d   eSUS-  -  US-  -  US-  U-  -   R                  U5      S:X  d   eU " S5      R                  U5      [        L d   eU " S5      R                  U5      S:X  d   eUS-   R                  U5      S:X  d   eSUS-  -  US-  U-  -   R                  U5      S:X  d   eXS-  -  US-  U-  -   R                  U5      S:X  d   eSUS-  -  US-  -  US-  U-  -   R                  U5      S:X  d   e[        S[        5      u  n U " S5      R                  5       [        L d   eU " S5      R                  5       S:X  d   eg )	Nr"   r   r$   rI   r#   rK   rH   r(   )r   r   tail_degreer   rB   s       r.   test_PolyElement_tail_degreer   Y  s   GR HAQ4%%%Q4"""E A%%%adFQT!VO((*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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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dFQT!VO((+q000adF1a4K!Q$q& --a0A555	b"BAQ4%%%Q4"""r-   c                     [        S[        5      u  pp#U " S5      R                  5       [        [        [        4:X  d   eU " S5      R                  5       S:X  d   eUS-  U-  US-  US-  -  -   R                  5       S:X  d   eg )Nr"   r   r$   rR   rI   r#   )r#   r$   rI   )r   r   degreesr   rB   s       r.   test_PolyElement_degreesr   |  sy    GR HAQ4<<>dD$////Q4<<>Y&&&qDFQT!Q$Y'')Y666r-   c                     [        S[        5      u  pp#U " S5      R                  5       [        [        [        4:X  d   eU " S5      R                  5       S:X  d   eUS-  U-  US-  US-  -  -   R                  5       S:X  d   eg )Nr"   r   r$   rR   rI   r#   rM   )r   r   tail_degreesr   rB   s       r.   test_PolyElement_tail_degreesr     s    GR HAQ44t"4444Q4)+++qDFQT!Q$Y,,.);;;r-   c                    ^^^^ [        S[        [        5      u  n mmmSTS-  -  T-  TT-  T-  -
  STS-  -  -   S-   mTR                  S5      S:X  d   e[	        [
        U4S j5        TR                  T5      S:X  d   eTR                  T5      S:X  d   eTR                  T5      S:X  d   eTR                  TS-  T-  5      S:X  d   eTR                  TT-  T-  5      S	:X  d   eTR                  TS-  5      S:X  d   e[	        [
        UUU4S
 j5        [	        [
        UUUU4S j5        [	        [
        UU4S j5        [        S[        5      u  n U " S5      R                  S5      S:X  d   eg )Nr"   r#   rI   rH      r$   c                  &   > T R                  S5      $ rY   coeffrT   s   r.   r/   (test_PolyElement_coeff.<locals>.<lambda>  s    qwwqzr-   r   r{   c                  8   > T R                  STS-  -  T-  5      $ )Nr#   rI   r   rT   r%   r&   s   r.   r/   r     s    qwwqAvax0r-   c                  4   > T R                  T* T-  T-  5      $ r`   r   )rT   r%   r&   r'   s   r.   r/   r     s    qwwr!tAvr-   c                  2   > T R                  STS-  -  5      $ )NrH   r#   r   )rT   r'   s   r.   r/   r     s    qwwqAvr-   r(   )r   r   r   r   r   rb   )rC   rT   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                  @   [        S[        [        5      u  pnU " S5      R                  [        S5      :X  d   e[        SS5      U-  R                  [        SS5      :X  d   e[        SS5      U-  U-  [        SS5      U-  -   R                  [        SS5      :X  d   eg Nr3   r   r$   rI   rJ   )r   r   r   LCra   s      r.   test_PolyElement_LCr     s    5"c"GA!Q477beqGAI>>R1X%%%qGAIaK"Qq'!)#''2a8333r-   c                     [        S[        [        5      u  pnU " S5      R                  S:X  d   e[        SS5      U-  R                  S:X  d   e[        SS5      U-  U-  [        SS5      U-  -   R                  S:X  d   eg )	Nr3   r   r   r   r$   rI   r$   r   rJ   r$   r$   )r   r   r   LMra   s      r.   test_PolyElement_LMr     sw    5"c"GA!Q477fqGAI>>V###qGAIaK"Qq'!)#''6111r-   c                     [        S[        [        5      u  pnU " S5      R                  S[        S5      4:X  d   e[        SS5      U-  R                  S[        SS5      4:X  d   e[        SS5      U-  U-  [        SS5      U-  -   R                  S[        SS5      4:X  d   e[        S	[        5      u  n U " S5      R                  S
:X  d   eU " S5      R                  S:X  d   eg )Nr3   r   r   r$   rI   r   rJ   r   r(   )r,   r   )r,   r$   )r   r   r   LTr   ra   s      r.   test_PolyElement_LTr     s    5"c"GA!Q477vr!uo%%%qGAI>>fbAh////qGAIaK"Qq'!)#''FBq!H+====	b"BAQ477gQ477gr-   c                  "   [        S[        [        5      u  pnU " S5      R                  5       S:X  d   e[        SS5      U-  R                  5       U:X  d   e[        SS5      U-  U-  [        SS5      U-  -   R                  5       X-  :X  d   eg r   )r   r   r   leading_monomra   s      r.   test_PolyElement_leading_monomr     s    5"c"GA!Q41$$$qGAI$$&!+++qGAIaK"Qq'!)#224;;;r-   c                  X   [        S[        [        5      u  pnU " S5      R                  5       S:X  d   e[        SS5      U-  R                  5       [        SS5      U-  :X  d   e[        SS5      U-  U-  [        SS5      U-  -   R                  5       [        SS5      U-  U-  :X  d   eg r   )r   r   r   leading_termra   s      r.   test_PolyElement_leading_termr     s    5"c"GA!Q4!###qGAI##%Aa222qGAIaK"Qq'!)#113r!Awqy{BBBr-   c                     [        S[        5      u  pp#US-  S-  US-  S-  -   US-  S-  -   R                  5       nUS[        SS5      4S[        SS5      4S	[        SS5      4/:X  d   e[        S
[        [        5      u  pnXS-  -  SUS-  -  US-  -  -   nUR                  5       UR                  [        5      s=:X  a  UR                  S5      s=:X  a	  SS/:X  d   e   eUR                  [
        5      UR                  S5      s=:X  a	  SS/:X  d   e   e[        S
[        [
        5      u  pnXS-  -  SUS-  -  US-  -  -   nUR                  5       UR                  [
        5      s=:X  a  UR                  S5      s=:X  a	  SS/:X  d   e   eUR                  [        5      UR                  S5      s=:X  a	  SS/:X  d   e   e[        S[        5      u  n U " S5      R                  5       S/:X  d   eg )Nr"   rI   r#   rJ   rK   rM   r$   r   r#   r   r   r   rJ   r3   rH   r   )rI   r#   rI   )r$   rH   r$   r   r(   )r,   r#   )r   r   termsr   r   r   )rC   r%   r&   r'   r   rT   s         r.   test_PolyElement_termsr     s   GR HAT!Vad1f_q!tAv%,,.Egr!Aw''2a7);gr!Aw=OPPPP%S!FA	Q$1a41A779TT;:TTTTTT775>QWWW-K+{1KKKKKK%U#FA	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                  J   [        S[        5      u  pp#US-  S-  US-  S-  -   US-  S-  -   R                  5       nU/ SQ:X  d   e[        S[        [        5      u  pnXS-  -  SUS-  -  US-  -  -   nUR                  5       UR                  [        5      s=:X  a  UR                  S	5      s=:X  a	  S
S/:X  d   e   eUR                  [
        5      UR                  S5      s=:X  a	  SS
/:X  d   e   e[        S[        [
        5      u  pnXS-  -  SUS-  -  US-  -  -   nUR                  5       UR                  [
        5      s=:X  a  UR                  S5      s=:X  a	  SS
/:X  d   e   eUR                  [        5      UR                  S	5      s=:X  a	  S
S/:X  d   e   eg )Nr"   rI   r#   rJ   rK   )rM   r   r   r3   rH   r   r   r   r   )r   r   monomsr   r   r   )rC   r%   r&   r'   r   rT   s         r.   test_PolyElement_monomsr     s   GR HAd1fq!tAvo1Q&..0F0000%S!FA	Q$1a41A88:#M!((5/Mff=MMMMMM88E?ahhw/CFF3CCCCCC%U#FA	Q$1a41A88:%QAHHW,=Q&&AQQQQQQ88C=AHHUO?/??????r-   c                     [        S[        5      u  pp#US-  S-  US-  S-  -   US-  S-  -   R                  5       nU[        SS5      [        SS5      [        SS5      /:X  d   e[        S[        [        5      u  pnXS-  -  SUS-  -  US-  -  -   nUR                  5       UR                  [        5      s=:X  a  UR                  S	5      s=:X  a	  SS/:X  d   e   eUR                  [
        5      UR                  S
5      s=:X  a	  SS/:X  d   e   e[        S[        [
        5      u  pnXS-  -  SUS-  -  US-  -  -   nUR                  5       UR                  [
        5      s=:X  a  UR                  S
5      s=:X  a	  SS/:X  d   e   eUR                  [        5      UR                  S	5      s=:X  a	  SS/:X  d   e   eg )Nr"   rI   r#   rJ   rK   r$   r3   rH   r   r   )r   r   coeffsr   r   r   )rC   r%   r&   r'   r   rT   s         r.   test_PolyElement_coeffsr     s   GR HAd1fq!tAvo1Q&..0Fb1gr!Aw1Q0000%S!FA	Q$1a41A88:#C!((5/CaVCCCCC88E?ahhw/9Aq699999%U#FA	Q$1a41A88:%GAHHW,=G!QGGGGG88C=AHHUO51v55555r-   c                    ^^^	 [        S[        5      u  n m[        S[        5      u  nmn[        SU5      u  nm	pE[        T	SU-  -   5      SSS.:X  d   e[        TT	-   5      [        T	T-   5      s=:X  a
  STS.:X  d   e   e[        TT	U-  -   5      [        T	U-  T-   5      s=:X  a
  STS.:X  d   e   e[        TT	U-  -   U-   5      [        T	U-  U-   T-   5      s=:X  a  SSTS	.:X  d   e   e[        TT	-  T	-   5      [        T	TT	-  -   5      s=:X  a  S
TS-   0:X  d   e   e[        TT	-  T	U-  -   5      [        T	U-  TT	-  -   5      s=:X  a
  STS.:X  d   e   e[        TT	-  T	U-  -   U-   5      [        T	U-  U-   TT	-  -   5      s=:X  a  SSTS.:X  d   e   e[        [        UU	4S j5        [        [        UU	4S j5        [        [        UU4S j5        [        [        UU4S j5        [        S[        5      u  nmn[        SU5      u  nm	pE[        TT	-   5      [        T	T-   5      s=:X  a
  STS.:X  d   e   e[        S[        5      u  nm	pE[        [        [        5      T	U-  U-  -   5      [        T	U-  U-  [        [        5      -   5      s=:X  a   [        S5      [        [        5      S.:X  d   e   eg )Nr1   u,vr"   r#   r$   rO   r   r$   r   rO   rR   rN   rR   rN   rQ   rR   rO   rN   rO   rN   rQ   rO   c                     > T T-   $ r`   r,   r1   r%   s   r.   r/   *test_PolyElement___add__.<locals>.<lambda>  	    a!er-   c                     > TT -   $ r`   r,   r   s   r.   r/   r     r   r-   c                     > T T-   $ r`   r,   r1   us   r.   r/   r   	  r   r-   c                     > TT -   $ r`   r,   r   s   r.   r/   r   
  r   r-   r   rR   r   r   dictr   	TypeErrorr   r   r   
r   RuvvRxyzr&   r'   Fuvr1   r   r%   s
          @@@r.   test_PolyElement___add__r    s   bMEBE2HC1w$KD!A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!AA;$q1u+EQ1)EEEEEEw#KD!A21Q4!A2#7`r!uY[\^Y_;``````r-   c                    ^^^	 [        S[        5      u  n m[        S[        5      u  nmn[        SU5      u  nm	pE[        T	SU-  -
  5      SSS.:X  d   e[        T* T	-   5      [        T	T-
  5      s=:X  a  ST* S.:X  d   e   e[        T* T	U-  -   5      [        T	U-  T-
  5      s=:X  a  ST* S	.:X  d   e   e[        T* T	U-  -   U-   5      [        T	U-  U-   T-
  5      s=:X  a  SST* S
.:X  d   e   e[        T* T	-  T	-   5      [        T	TT	-  -
  5      s=:X  a  ST* S-   0:X  d   e   e[        T* T	-  T	U-  -   5      [        T	U-  TT	-  -
  5      s=:X  a  ST* S.:X  d   e   e[        T* T	-  T	U-  -   U-   5      [        T	U-  U-   TT	-  -
  5      s=:X  a  SST* S.:X  d   e   e[        [        UU	4S j5        [        [        UU	4S j5        [        [        UU4S j5        [        [        UU4S j5        [        S[        5      u  nmn[        SU5      u  nm	pE[        T* T	-   5      [        T	T-
  5      s=:X  a  ST* S.:X  d   e   e[        S[        5      u  nm	pE[        [        [        5      * T	U-  U-  -   5      [        T	U-  U-  [        [        5      -
  5      s=:X  a!  [        S5      [        [        5      * S.:X  d   e   eg )Nr1   r   r"   r#   r$   r   r   r   r   rO   r   r   c                     > T T-
  $ r`   r,   r   s   r.   r/   *test_PolyElement___sub__.<locals>.<lambda>$  r   r-   c                     > TT -
  $ r`   r,   r   s   r.   r/   r
  %  r   r-   c                     > T T-
  $ r`   r,   r   s   r.   r/   r
  &  r   r-   c                     > TT -
  $ r`   r,   r   s   r.   r/   r
  '  r   r-   r   r   r  s
          @@@r.   test_PolyElement___sub__r    s   bMEBE2HC1w$KD!A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!AQ<4A;GaQB*GGGGGGw#KD!AB!A#a% D1QB$8b1[]^`[aZa<bbbbbbr-   c                  	  ^^^^	 [        S[        5      u  n m[        S[        5      u  nmn[        SU5      u  nmnm	[        TT-  5      [        TT-  5      s=:X  a	  ST0:X  d   e   e[        ST-  T-  T	-   5      [        TS-  T-  T	-   5      s=:X  a  ST-  SS.:X  d   e   e[        TS-  T-  T	-   5      [        ST-  T-  T	-   5      s=:X  a  ST-  SS.:X  d   e   e[        ST-  T-  T	-   5      [        TS-  T-  T	-   5      s=:X  a  ST-  SS.:X  d   e   e[        TT-  S-  T	-   5      [        TT-  S-  T	-   5      s=:X  a  ST-  SS.:X  d   e   e[        ST-  T-  U-  T	-   5      [        TU-  S-  T-  T	-   5      s=:X  a  ST-  SS.:X  d   e   e[        TS-  T-  U-  T	-   5      [        ST-  U-  T-  T	-   5      s=:X  a  ST-  SS.:X  d   e   e[        ST-  T-  U-  T	-   5      [        TU-  S-  T-  T	-   5      s=:X  a  ST-  SS.:X  d   e   e[        TT-  U-  S-  T	-   5      [        TU-  T-  S-  T	-   5      s=:X  a  ST-  SS.:X  d   e   e[        ST-  U-  T-  T	-   5      [        UT-  S-  T-  T	-   5      s=:X  a  ST-  SS.:X  d   e   e[        TS-  U-  T-  T	-   5      [        SU-  T-  T-  T	-   5      s=:X  a  ST-  SS.:X  d   e   e[        ST-  U-  T-  T	-   5      [        UT-  S-  T-  T	-   5      s=:X  a  ST-  SS.:X  d   e   e[        TU-  T-  S-  T	-   5      [        UT-  T-  S-  T	-   5      s=:X  a  ST-  SS.:X  d   e   e[        S	T-  TU-   -  T	-   5      [        TU-   S	-  T-  T	-   5      s=:X  a  S	T-  S	T-  SS
.:X  d   e   e[        [        UUU	4S j5        [        [        UUU	4S j5        [        [        UUU	4S j5        [        [        UUU	4S j5        [        S[        5      u  nmn[        SU5      u  nmnm	[        TT-  5      [        TT-  5      s=:X  a	  ST0:X  d   e   e[        S[        5      u  nmnm	[        [        [        5      T-  U-  T	-  5      [        TU-  T	-  [        [        5      -  5      s=:X  a  S[        [        5      0:X  d   e   eg )Nr1   r   r"   rO   rI   r$   )rO   rQ   )rN   rQ   r#   )rO   r   rQ   c                     > T T-  T-   $ r`   r,   r1   r%   r'   s   r.   r/   *test_PolyElement___mul__.<locals>.<lambda>J      acAgr-   c                     > TT -  T-   $ r`   r,   r  s   r.   r/   r  K  r  r-   c                     > T T-  T-   $ r`   r,   r1   r   r'   s   r.   r/   r  L  r  r-   c                     > TT -  T-   $ r`   r,   r  s   r.   r/   r  M  r  r-   r   r   )
r   r  r  r  r&   r  r1   r   r%   r'   s
         @@@@r.   test_PolyElement___mul__r  2  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                    ^	^
^^^ [        S[        5      u  n mpSTS-  -  S-
  S-  TS-  S-
  :X  d   eSTS-  -  S-
  S-  TS-  :X  d   eTS-  S-
  R                  T5      T:X  d   eTS-  T-
  R                  T5      TS-
  :X  d   e[        [        U4S j5        TS-  T-
  T-  TS-
  :X  d   e[        [        U4S j5        TS-  S-
  R                  ST-  5      S:X  d   eTS-  T-
  TS-
  -  TS-  T-
  R                  TS-
  5      s=:X  a  T:X  d   e   e[        S[        5      u  n mp[        TS-  S-  US-  S-  -   US-  S	-  -   R                  5       5      S:X  d   e[        S[        5      u  n mp[        TS-  S-  US-  S-  -   US-  S	-  -   R                  5       5      S:X  d   e[        S
[        5      u  nm[        S[        5      u  nmn[        SU5      u  nmp[        TS-  T-  T-   T-  5      TSS.:X  d   e[        [        UU4S j5        [        [        UU4S j5        [        [        UU4S j5        [        [        UU4S j5        [        [        UU4S j5        [        S[        5      u  n mTS-  ST-  -   S-   U " S5      sm	m
[        [        U	U
4S j5        [        [        U	U
4S j5        [        [        U	U
4S j5        [        [        U	U
4S j5        [        [        U	U
4S j5        [        [        U	U
4S j5        [        [        U	U
4S j5        [        S[        5      u  n mnTU-  ST-  -   S-   U " S5      sm	m
[        [        U	U
4S j5        [        [        U	U
4S j5        [        [        U	U
4S j5        [        [        U	U
4S j5        [        [        U	U
4S j5        [        [        U	U
4S  j5        [        [        U	U
4S! j5        [        S[        5      u  n mTS-  S-   ST-  S-
  sm	m
U " S5      TS-  S-   pT	R                  T
5      [        T	T
5      s=:X  a  Xx4:X  d   e   eT	R                  T
5      T	T
-  s=:X  a  U:X  d   e   eT	R                  T
5      U:X  d   e[        [        U	U
4S" j5        [        [        U	U
4S# j5        STS-  -  TS-  -   T-   S	-   S	TS-  -  ST-  -
  S-   sm	m
U " S5      T	pT	R                  T
5      [        T	T
5      s=:X  a  Xx4:X  d   e   eT	R                  T
5      T	T
-  s=:X  a  U:X  d   e   eT	R                  T
5      U:X  d   e[        [        U	U
4S$ j5        [        [        U	U
4S% j5        S	TS-  -  STS-  -  -   STS-  -  -   ST-  -   S-   TS-  ST-  -   S-   sm	m
S	TS-  -  S&T-  -
  S'T-  S-   pT	R                  T
5      [        T	T
5      s=:X  a  Xx4:X  d   e   eT	R                  T
5      T	T
-  s=:X  a  U:X  d   e   eT	R                  T
5      U:X  d   e[        [        U	U
4S( j5        [        [        U	U
4S) j5        S	TS	-  -  STS-  -  -   STS-  -  -   STS-  -  -   T-   TS-  STS-  -  -   S*-   sm	m
S	T-  S&-
  S+TS-  -  STS-  -  -   S,T-  -
  S--   pT	R                  T
5      [        T	T
5      s=:X  a  Xx4:X  d   e   eT	R                  T
5      T	T
-  s=:X  a  U:X  d   e   eT	R                  T
5      U:X  d   e[        [        U	U
4S. j5        [        [        U	U
4S/ j5        [        S[        5      u  n mTS-  S-   ST-  S-
  sm	m
TS-  S-   U " S	5      pT	R                  T
5      [        T	T
5      s=:X  a  Xx4:X  d   e   eT	R                  T
5      T	T
-  s=:X  a  U:X  d   e   eT	R                  T
5      U:X  d   e[        [        U	U
4S0 j5        [        [        U	U
4S1 j5        STS-  -  TS-  -   T-   S	-   S	TS-  -  ST-  -
  S-   sm	m
[        SS	5      T-  [        S2S35      -   [        S4S35      T-  [        S5S35      -   pT	R                  T
5      [        T	T
5      s=:X  a  Xx4:X  d   e   eT	R                  T
5      T	T
-  s=:X  a  U:X  d   e   eT	R                  T
5      U:X  d   e[        [        U	U
4S6 j5        [        [        U	U
4S7 j5        [        S[        5      u  n mnTS-  US-  -
  TU-
  sm	m
TU-   U " S5      pT	R                  T
5      [        T	T
5      s=:X  a  Xx4:X  d   e   eT	R                  T
5      T	T
-  s=:X  a  U:X  d   e   eT	R                  T
5      U:X  d   eT	R                  T
5      T	T
-  s=:X  a  U:X  d   e   eTS-  US-  -   TU-
  sm	m
TU-   SUS-  -  pT	R                  T
5      [        T	T
5      s=:X  a  Xx4:X  d   e   eT	R                  T
5      T	T
-  s=:X  a  U:X  d   e   eT	R                  T
5      U:X  d   e[        [        U	U
4S8 j5        [        [        U	U
4S9 j5        TS-  US-  -   T* U-   sm	m
T* U-
  SUS-  -  pT	R                  T
5      [        T	T
5      s=:X  a  Xx4:X  d   e   eT	R                  T
5      T	T
-  s=:X  a  U:X  d   e   eT	R                  T
5      U:X  d   e[        [        U	U
4S: j5        [        [        U	U
4S; j5        TS-  US-  -   ST-  SU-  -
  sm	m
U " S5      T	pT	R                  T
5      [        T	T
5      s=:X  a  Xx4:X  d   e   eT	R                  T
5      T	T
-  s=:X  a  U:X  d   e   eT	R                  T
5      U:X  d   e[        [        U	U
4S< j5        [        [        U	U
4S= j5        [        S[        5      u  n mnTS-  US-  -
  TU-
  sm	m
TU-   U " S5      pT	R                  T
5      [        T	T
5      s=:X  a  Xx4:X  d   e   eT	R                  T
5      T	T
-  s=:X  a  U:X  d   e   eT	R                  T
5      U:X  d   eT	R                  T
5      T	T
-  s=:X  a  U:X  d   e   eTS-  US-  -   TU-
  sm	m
TU-   SUS-  -  pT	R                  T
5      [        T	T
5      s=:X  a  Xx4:X  d   e   eT	R                  T
5      T	T
-  s=:X  a  U:X  d   e   eT	R                  T
5      U:X  d   e[        [        U	U
4S> j5        [        [        U	U
4S? j5        TS-  US-  -   T* U-   sm	m
T* U-
  SUS-  -  pT	R                  T
5      [        T	T
5      s=:X  a  Xx4:X  d   e   eT	R                  T
5      T	T
-  s=:X  a  U:X  d   e   eT	R                  T
5      U:X  d   e[        [        U	U
4S@ j5        [        [        U	U
4SA j5        TS-  US-  -   ST-  SU-  -
  sm	m
TS-  US-  -   SUS-  -  pT	R                  T
5      [        T	T
5      s=:X  a  Xx4:X  d   e   eT	R                  T
5      T	T
-  s=:X  a  U:X  d   e   eT	R                  T
5      U:X  d   e[        [        U	U
4SB j5        [        [        U	U
4SC j5        g )DNr"   rI   rJ   r#   r$   c                     > T S-  S-
  T -  $ NrI   r$   r,   r%   s   r.   r/   .test_PolyElement___truediv__.<locals>.<lambda>a  s    A1r-   c                      > T S-  S-
  ST -  -  $ r  r,   r  s   r.   r/   r  c  s    AAaC(8r-   r   rK   r1   r   r   c                      > T T S-  T-  T -   -  $ r   r,   )r   r%   s   r.   r/   r  t  s    1a46A:r-   c                     > T T-  $ r`   r,   r   s   r.   r/   r  v  	    acr-   c                     > TT -  $ r`   r,   r   s   r.   r/   r  w  r!  r-   c                     > T T-  $ r`   r,   r   s   r.   r/   r  x  r!  r-   c                     > TT -  $ r`   r,   r   s   r.   r/   r  y  r!  r-   r%   c                  &   > T R                  T5      $ r`   divrT   r   s   r.   r/   r  ~      aeeAhr-   c                     > [        T T5      $ r`   divmodr(  s   r.   r/   r        fQlr-   c                  &   > T R                  T5      $ r`   remr(  s   r.   r/   r    r)  r-   c                     > T T-  $ r`   r,   r(  s   r.   r/   r    	    a!er-   c                  &   > T R                  T5      $ r`   quor(  s   r.   r/   r    r)  r-   c                     > T T-  $ r`   r,   r(  s   r.   r/   r    r2  r-   c                  &   > T R                  T5      $ r`   exquor(  s   r.   r/   r        aggajr-   r3   c                  &   > T R                  T5      $ r`   r&  r(  s   r.   r/   r    r)  r-   c                     > [        T T5      $ r`   r+  r(  s   r.   r/   r    r-  r-   c                  &   > T R                  T5      $ r`   r/  r(  s   r.   r/   r    r)  r-   c                     > T T-  $ r`   r,   r(  s   r.   r/   r    r2  r-   c                  &   > T R                  T5      $ r`   r4  r(  s   r.   r/   r    r)  r-   c                     > T T-  $ r`   r,   r(  s   r.   r/   r    r2  r-   c                  &   > T R                  T5      $ r`   r8  r(  s   r.   r/   r    r:  r-   c                     > T T-  $ r`   r,   r(  s   r.   r/   r    	    Ar-   c                  &   > T R                  T5      $ r`   r8  r(  s   r.   r/   r        
r-   c                     > T T-  $ r`   r,   r(  s   r.   r/   r    rC  r-   c                  &   > T R                  T5      $ r`   r8  r(  s   r.   r/   r    rE  r-   rL      c                     > T T-  $ r`   r,   r(  s   r.   r/   r    rC  r-   c                  &   > T R                  T5      $ r`   r8  r(  s   r.   r/   r    rE  r-   	      ,   6   c                     > T T-  $ r`   r,   r(  s   r.   r/   r    rC  r-   c                  &   > T R                  T5      $ r`   r8  r(  s   r.   r/   r    rE  r-   c                     > T T-  $ r`   r,   r(  s   r.   r/   r    rC  r-   c                  &   > T R                  T5      $ r`   r8  r(  s   r.   r/   r    rE  r-   rl      4   o   c                     > T T-  $ r`   r,   r(  s   r.   r/   r    rC  r-   c                  &   > T R                  T5      $ r`   r8  r(  s   r.   r/   r    rE  r-   c                     > T T-  $ r`   r,   r(  s   r.   r/   r    rC  r-   c                  &   > T R                  T5      $ r`   r8  r(  s   r.   r/   r    rE  r-   c                     > T T-  $ r`   r,   r(  s   r.   r/   r    rC  r-   c                  &   > T R                  T5      $ r`   r8  r(  s   r.   r/   r    rE  r-   c                     > T T-  $ r`   r,   r(  s   r.   r/   r    rC  r-   c                  &   > T R                  T5      $ r`   r8  r(  s   r.   r/   r    rE  r-   c                     > T T-  $ r`   r,   r(  s   r.   r/   r     rC  r-   c                  &   > T R                  T5      $ r`   r8  r(  s   r.   r/   r    rE  r-   c                     > T T-  $ r`   r,   r(  s   r.   r/   r  	  rC  r-   c                  &   > T R                  T5      $ r`   r8  r(  s   r.   r/   r  
  rE  r-   c                     > T T-  $ r`   r,   r(  s   r.   r/   r    rC  r-   c                  &   > T R                  T5      $ r`   r8  r(  s   r.   r/   r    rE  r-   )r   r   r5  r   r   r5   r   r   r   r   ZeroDivisionErrorr'  r,  r0  r9  )rC   r&   r'   r   r  r  r  qr   rT   r   r1   r   r%   s            @@@@@r.   test_PolyElement___truediv__rf  X  s   GR HAqadFQJ>QTAX%%%adFQJ>QT!!!qD1H>>!!!!qD1H>>!A%%%
 45qD1Ha<1q5   
 89qD1H>>!A#!###qD1Hq1u!Q$(A!6;!;;;;; GR HAq1QAa!Q$q&(//12a777GR HAq1QAa!Q$q&(//12a777bMEBE2HC1w$KD!AAa!QqQ#????
 67
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q558va|-v-----558q1u!!!!!!558q==
.
 23QT6AqD=1q !AqD&1Q3,"2DAqQ4q558va|-v-----558q1u!!!!!!558q==
.
 23QT6AadF?Qq!tV#ac)A-q!taczA~DAqQT6AaC<Aq558va|-v-----558q1u!!!!!!558q==
.
 23QT6AadF?Qq!tV#a1f,q0!Q$1a4-!2CDAqQ37Bq!tGa1f$r!t+b0q558va|-v-----558q1u!!!!!!558q==
.
 23R=DAqa4!8QqS1WDAqQ37AaDq558va|-v-----558q1u!!!!!!558q==
.
 23QT6AqD=1q !AqD&1Q3,"2DAqa8A:2r
"Br2JqL2c2;$>q558va|-v-----558q1u!!!!!!558q==
.
 23%_FAqa4!Q$;ADAqq5!A$q558va|-v-----558q1u!!!!!!558q==771:Q#!#####a4!Q$;ADAqq5!AqD&q558va|-v-----558q1u!!!!!!558q==
.
 23a4!Q$;QDAq261QT6q558va|-v-----558q1u!!!!!!558q==
.
 23a4!Q$;!ac	DAqQ4q558va|-v-----558q1u!!!!!!558q==
.
 23%_FAqa4!Q$;ADAqq5!A$q558va|-v-----558q1u!!!!!!558q==771:Q#!#####a4!Q$;ADAqq5!AqD&q558va|-v-----558q1u!!!!!!558q==
.
 23a4!Q$;QDAq261QT6q558va|-v-----558q1u!!!!!!558q==
.
 23a4!Q$;!ac	DAqQ319a1fq558va|-v-----558q1u!!!!!!558q==
.
 23r-   c                  `  ^ [        S[        [        5      u  pSU-  S-   mTS-  S:X  d   eTS-  T:X  d   e[        [        U4S j5        TS-  TR                  S5      s=:X  a,  TR                  S5      s=:X  a  SUS-  -  SU-  -   S	-   :X  d   e   eTS-  TR                  S5      s=:X  a5  TR                  S5      s=:X  a  S
US-  -  SUS-  -  -   SU-  -   S-   :X  d   e   eTS-  TR                  S5      s=:X  a>  TR                  S5      s=:X  a(  SUS-  -  SUS-  -  -   SUS-  -  -   SU-  -   S-   :X  d   e   eTS-  TR                  S5      s=:X  aG  TR                  S5      s=:X  a1  SUS-  -  SUS-  -  -   SUS-  -  -   SUS-  -  -   SU-  -   S-   :X  d   e   e[        S[        [        5      u  pp#US-  U-  SU-  US-  -  -
  SU-  -
  S-   mUS-  US-  -  SUS-  -  US-  -  -
  SUS-  -  U-  U-  -
  SUS-  -  U-  -   SUS-  -  US-  -  -   SU-  US-  -  U-  -   SU-  US-  -  -
  S	US-  -  -   SU-  -
  S-   nTS-  TR                  S5      s=:X  a  TR                  S5      s=:X  a  U:X  d   e   e[        S[        5      u  pSUS-  -  SUS-  -  -
  S-   mSUS-  -  S US!-  -  -   S"US-  -  -   S#US$-  -  -   S%US
-  -  -   S&US-  -  -
  S'US-  -  -   S(US-  -  -
  S)-   nTS-  TR                  S5      s=:X  a  TR                  S5      s=:X  a  U:X  d   e   eg )*Nr%   rI   r#   r   r$   c                     > T S-  $ rz   r,   r   s   r.   r/   *test_PolyElement___pow__.<locals>.<lambda>  s	    q2wr-   rJ      rK  rs   $   rN        `      Q   rK          i  i8  i*     r"   rL   r1   i@i,
  1   l      Ml     3url   l     L] l    @LV 
   l    Aecl    F	l   `V i
IiW )r   r   r   r   rb   _pow_generic_pow_multinomial)rC   r%   r&   r'   r   r1   rT   s         @r.   test_PolyElement___pow__rx    s   RDA	!aAa4199a4199
:'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'HA	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=DA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                     [        S[        [        5      u  pUS-  SUS-  -  -
  S-
  nUS-
  nUS-  SU-  -
  S-
  nSnUR                  U/5      U/U4:X  d   e[        S[        [        5      u  pUS-  SU-  -   S-   nUR                  U " S	5      /5      U/S
4:X  d   e[        S[        [        5      u  pUS-  SU-  -   S-   nUR                  U " S5      /5      [	        S	S5      US-  -  U-   S	-   /S
4:X  d   e[        S[        [        5      u  pnSUS-  -  U-  SU-  U-  -
  SU-  -   SU-  -
  S-   nUR                  U " S5      /5      SUS-  -  U-  X-  -
  SU-  -   U-
  S-   /S
4:X  d   eUR                  SU-  /5      SUS-  -  U-
  S	-
  /SU-  S-   4:X  d   eUS	-
  nUS	-
  nUR                  U/5      S
/U4:X  d   eXS-  -  S	-   nX-  S	-   US	-   /nUS/nSnUR                  U5      X4:X  d   eUS-  U-  XS-  -  -   US-  -   nX-  S	-
  US-  S	-
  /nX-   S	/nX-   S	-   nUR                  U5      X4:X  d   eUS-  S	-
  X-  S	-
  /nUS	-   U/nSU-  S	-   nUR                  U5      X4:X  d   e[        S[        5      u  n U " S5      R                  U " S5      5      S:X  d   e[        S[        5      u  n U " S5      R                  U " S5      5      [	        SS5      S
4:X  d   eg )Nr%   r#   rj  rI   *   rK  rl  r$   r   r3   rJ   rs   r{   r(   )r   r#   )r   r   r   r'  r   )	rC   r%   rT   r   re  r   r&   GQs	            r.   test_PolyElement_divr~  0  sj   RDA	1r!Q$wA	AA	1qs
RAA55!:1#q!!!RDA	1qs
QA55!A$=aS!H$$$RDA	1qs
QA55!A$=b1gadlQ.23Q7777%U#FA	!Q$q1Q3q51Q31$q(A55!A$=a1fQhnqs2Q6:;Q????55!A#<Qq!tVaZ!^,acAg6666	AA	AA55!:1#q!!!	Q$
A	
q!a%A	
BA	A558v	1Qa4!Q$A	
q!Q$(A	

A		A558v	
A137A	
Q
A	!aA558v	b"BAQ488AaD>V###	b"BAQ488AaD>bAh]***r-   c                     [        S[        [        5      u  pUS-  SUS-  -  -
  S-
  nUS-
  nSnUR                  U/5      UR	                  U/5      S   s=:X  a  U:X  d   e   e[        S[        [        5      u  pnS	US-  -  U-  SU-  U-  -
  S	U-  -   SU-  -
  S
-   nUR                  U " S5      /5      UR	                  U " S5      /5      S   s=:X  a  S:X  d   e   eUR                  SU-  /5      UR	                  SU-  /5      S   s=:X  a  S	U-  S
-   :X  d   e   eUS-
  nUS-
  nUR                  U/5      UR	                  U/5      S   s=:X  a  U:X  d   e   eXS-  -  S-   nX-  S-   US-   /nSnUR                  U5      UR	                  U5      S   s=:X  a  U:X  d   e   eUS-  U-  XS-  -  -   US-  -   nX-  S-
  US-  S-
  /nX-   S-   nUR                  U5      UR	                  U5      S   s=:X  a  U:X  d   e   eUS-  S-
  X-  S-
  /nSU-  S-   nUR                  U5      UR	                  U5      S   s=:X  a  U:X  d   e   eg )Nr%   r#   rj  rI   rz  r{  r$   r3   rJ   rs   r   )r   r   r   r0  r'  )rC   r%   rT   r   r   r&   r|  s          r.   test_PolyElement_remr  k  s   RDA	1r!Q$wA	AAA55!:sA+!+++++%U#FA	!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	
q!a%A	A558quuQx{'a'''''	1Qa4!Q$A	
q!Q$(A		A558quuQx{'a'''''	
A137A	!aA558quuQx{'a'''''r-   c                     [        S[        5      u  pSUS-  -  R                  US-  SUS-  -  -   S-   5      SSU-  US-  SU-  -   S-   /4:X  d   e[        S[        5      u  pnU " S5      R                  U " S5      5      SSS/4:X  d   eU " S5      R                  U " S5      5      SSS/4:X  d   eU " S5      R                  U " S5      5      SSS/4:X  d   eU " S5      R                  SU-  5      SSSU-  /4:X  d   eSU-  R                  SU-  5      SSU-  SU-  /4:X  d   eU " S5      R                  SUS-  -  5      S	SSU-  /4:X  d   eSUS-  -  R                  SUS-  -  5      S	SU-  SU-  /4:X  d   eUS-  US-  -  US-  U-  -   S-   nUS-  US
-  -  US-  U-  -   S-   nUR                  U5      SUS-  US-  -  X-  -   S-   XS
-  -  X-  -   S-   /4:X  d   eg )Nr%   rI   rJ   r$   )rI   r3   r   r   )r$   rI   r#   )rI   r$   )r   r   deflaterC   r%   r&   rT   r   s        r.   test_PolyElement_deflater    s>   R=DAadFAqD1QT6MA-.4!A#q!taczA~9N2OOOO%_FA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_q%8!qD&13,:J$KLLLLr-   c                  T   [        S[        5      u  pnU " S5      R                  5       [        S5      S4:X  d   eU " S5      R                  5       [        S5      S4:X  d   eU " [        SS5      5      R                  5       S:X  d   eU " [        SS5      5      R                  5       S:X  d   eSUS-  -  U-   R                  5       SSUS-  -  U-   4:X  d   eUS-  [        SS5      U-  -   R                  5       SSUS-  -  U-   4:X  d   e[        S[        [        5      u  p1n[        S[        [        5      u  pVnU[        SS	5      US-  -  -
  [        S
S5      US-  -  -
  [        SS5      US-  -  -
  [        SS5      US-  -  -
  [        SS5      US-  -  -
  [        SS5      US-  -  -
  [        SS5      U-  -
  [        SS5      -
  US-  [        SS5      US-  -  -   [        SS5      US-  -  -   [        S S5      US-  -  -   [        S!S"5      US-  -  -   [        S#S"5      US-  -  -   [        S$S5      US-  -  -   [        S%S5      U-  -   [        S&S5      -   /nS'U-  S(US-  -  -
  S)US-  -  -
  S*US-  -  -
  S+US-  -  -
  S,US-  -  -
  S-US-  -  -
  S.U-  -
  S/-
  SUS-  -  S0US-  -  -   SUS-  -  -   S1US-  -  -   S2US-  -  -   S3US-  -  -   S4US-  -  -   S5U-  -   S6-   /n	U V
s/ s H$  oR                  5       S   R                  U5      PM&     sn
U	:X  d   eg s  sn
f )7Nr3   r$   rH   r#   )r#   rH   rI   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 rL   l   [_+J[kPu=\L=IGS{,c.\) o l    P=Kzzda$\0ci}=$?&@#uTn0Q rK   l   CNVO&ilo?uTvBp5y\
$l$aP-NCR l    Hi)Sbx|5eS6O--:QRbV.r?1lW rJ   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^@*> rs   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)rC   r%   r&   rQQr1   rZZr   Trp   r|  rT   s              r.   test_PolyElement_clear_denomsr    s   %_FAQ42a5!*,,,Q42a5!*,,,R!W:""$...R!W:""$...adFQJ$$&1a1fqj/999qD2a719**,AadFQJ???E2s#HC1E2s#HC1	
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:;1^^a ))#.;q@@@;s   0+L%c                  	   [        S[        5      u  pnU " S5      U " S5      pCUR                  U5      S:X  d   eU " S5      U " S5      pCUR                  U5      S:X  d   eU " S5      U " S5      pCUR                  U5      S:X  d   eU " S5      U " S5      pCUR                  U5      S:X  d   eU " S5      SU-  S	-   pCUR                  U5      SU-  S	-   SS
4:X  d   eSU-  S	-   U " S5      pCUR                  U5      SU-  S	-   S
S4:X  d   eU " S5      U " S5      pCUR                  U5      S:X  d   eU " S5      U " S5      pCUR                  U5      S:X  d   eU " S5      U " S5      pCUR                  U5      S:X  d   eU " S5      U " S5      pCUR                  U5      S:X  d   eUS-  SU-  -   S
-   U " S
5      pCUR                  U5      S
US-  SU-  -   S
-   S
4:X  d   eUS-  SU-  -   S
-   U " S5      pCUR                  U5      S
US-  SU-  -   S
-   S4:X  d   eSUS-  -  S	U-  -   S-   U " S5      pCUR                  U5      SUS-  SU-  -   S
-   S
4:X  d   eU " S5      SUS-  -  S	U-  -   S-   pCUR                  U5      SS
US-  SU-  -   S
-   4:X  d   eSUS-  -  S	U-  -   S-   US
-   pCUR                  U5      US
-   SU-  S-   S
4:X  d   eUS
-   SUS-  -  S	U-  -   S-   pCUR                  U5      US
-   S
SU-  S-   4:X  d   e[        S[        5      u  pp%nUS-  SU-  -   S
-   SU-  S-   pCUR                  U5      US
-   US
-   S4:X  d   eUS-  US-  -  SUS-  -  U-  -   US-  -   XV-  -   U-   US-  SU-  -   S
-   pCUS
-   US-  U-  US-  -   U-   US
-   pnUR                  U5      XxU	4:X  d   eUR                  U5      XyU4:X  d   e[        S[        5      u  pn[        S
S5      US-  -  U-   [        S
S5      -   n[        S
S5      U-  [        S
S5      -   nUS
-   nUR                  U5      Xt[        S
S5      4:X  d   eUR                  U5      U[        S
S5      U4:X  d   e[        S[        5      u  pnSU-  US-  -  SU-  U-  -
  SU-  -   nSUS-  -  nSU-  nUR                  U5      XsU-  XG-  4:X  d   eUR                  U5      XtU-  X7-  4:X  d   eg )Nr3   r   rR   rI   )rI   r$   r   )rI   r{   r   )rI   r   r{   rJ   r$   )rI   r$   r$   )rI   r{   r$   )rI   r$   r{   )rI   r{   r{   rx   g @r#   g      ?)r   r   	cofactorsr   r   )
rC   r%   r&   rT   r   r'   r1   hcffcfgs
             r.   test_PolyElement_cofactorsr    s   5"oGA!Q41q;;q>Y&&&Q41q;;q>Y&&&R5!A$q;;q>Z'''Q42q;;q>Z'''Q41qq;;q>acAgq!_,,,Q37AaDq;;q>acAgq!_,,,Q41q;;q>Y&&&R5!A$q;;q>Z'''Q42q;;q>Z'''R5!B%q;;q>[(((a4!A#:>1Q4q;;q>aA!a3333a4!A#:>1Q4q;;q>aA!a3333QT6AaC<!QqTq;;q>aA!a3333Q41a4!A#!q;;q>aAqD1Q3JN3333QT6AaC<!QUq;;q>a!eQqS1Wa0000q5!AqD&1Q3,"q;;q>a!eQ!a0000B'MA!a4!A#:>1Q37q;;q>a!eQUA....a419qAvax!Q$&,q0!Q$1*q.qa%Aa!Q$*AECA;;q>ac]***;;q>ac]***5"oGA!
1Q1q2a7"A
1Q	BqGA	AA;;q>aBqG_,,,;;q>aAa!_,,,5"oGA!Aad
SU1Ws1u$AAqDAAA;;q>a1ac]***;;q>a1ac]***r-   c                      [        S[        5      u  pn[        SS5      US-  -  U-   [        SS5      -   n[        SS5      U-  [        SS5      -   nUR                  U5      US-   :X  d   eg )Nr3   r$   rI   )r   r   gcdr  s        r.   test_PolyElement_gcdr  +  sh    5"oGA!
1Q1q2a7"A
1Q	BqGA558q1ur-   c                  x   [        S[        5      u  pnSUS-  -  SUS-  -  -   SU-  -   nSUS-  -  SU-  -   nSU-  S-   nSnUR                  U5      XV4:X  d   eU* R                  U5      U* U4:X  d   eUR                  U* 5      U* U4:X  d   e[        S[        5      u  pn[        SS5      US-  -  US-  -   [        SS5      U-  -   n[        SS5      US-  -  [        SS5      U-  -   nSU-  S-   nSnUR                  U5      XV4:X  d   eU* R                  U5      U* U4:X  d   eUR                  U* 5      U* U4:X  d   e[	        S[        5      u  pq[        SU5      u  pUS-  * S-
  S-  U	-  nU	S-  US-  S-   S-  -   nUR                  U5      US-  * S-
  U	-  SU	S-  -  SUS-  -  -   S-   4:X  d   eg )Nr3   rI   r#   rJ   r$   r%   r1   )r   r   cancelr   r   )
rC   r%   r&   rT   r   rp   r|  Fxr   r1   s
             r.   test_PolyElement_cancelr  3  s   5"oGA!	!Q$1a4!A#A	!Q$1A	!aA	A88A;1&   B;;q>qb!W$$$88QB<QB7"""5"oGA!
1Q1q!tb1gai'A
1Q1r!Awqy A	!aA	A88A;1&   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                      [        S[        5      u  pnU " S5      R                  5       S:X  d   eU " S5      R                  5       S:X  d   eUS-  SUS-  -  -   SU-  -   S-   R                  5       S:X  d   eg )Nr3   r   r$   r#   rJ   rI   )r   r   max_normra   s      r.   test_PolyElement_max_normr  T  sv    5"oGA!Q4==?aQ4==?aqD1QT6MAaC!#--/1444r-   c                      [        S[        5      u  pnU " S5      R                  5       S:X  d   eU " S5      R                  5       S:X  d   eUS-  SUS-  -  -   SU-  -   S-   R                  5       S:X  d   eg )Nr3   r   r$   r#   rJ   rI   ru  )r   r   l1_normra   s      r.   test_PolyElement_l1_normr  \  sv    5"oGA!Q4<<>QQ4<<>QqD1QT6MAaC!#,,."444r-   c                  "   [        S[        5      u  p[        SS5      US   S-  -  US   S-  -  US   S	-  -  US
   S-  -  SUS   S-  -  US   S	-  -  US   S	-  -  -   SUS   S-  -  -   SUS   S-  -  -
  nUR                  US   5      [        SS5      US   S-  -  US   S-  -  US   S	-  -  US
   S-  -  SUS   -  US   S	-  -  US   S	-  -  -   SUS   -  -   :X  d   eUR                  US   5      [        SS5      US   S-  -  US   S-  -  US   S-  -  US
   S-  -  SUS   S-  -  US   S	-  -  US   S-  -  -   :X  d   eUR                  US
   5      [        SS5      US   S-  -  US   S-  -  US   S	-  -  US
   -  :X  d   eg )Nzx:11i   rK   r   rs   r$   rL   rJ   r#   ru  rI   i 	  rH   rm  i`  rk   @  )r   r   diff)rC   r   rT   s      r.   test_PolyElement_diffr  d  s   DA
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                    ^ [        S[        5      u  pSU-  S-   mT" S5      S:X  d   eT" S5      S:X  d   e[        [        U4S j5        [        [        U4S j5        [        [        U4S j5        [        S	[        5      u  pnSU-  US
-  -   S-   mT" SS5      S:X  d   eT" SS5      S:X  d   eU R                  U5      nT" S5      UR                  S
-  S-   :X  d   eT" S5      UR                  S
-  S-   :X  d   e[        [        U4S j5        [        [        U4S j5        [        [        U4S j5        [        [        U4S j5        [        [        U4S j5        g )Nr%   r#   r$   r   rJ   c                     > T " 5       $ r`   r,   r   s   r.   r/   +test_PolyElement___call__.<locals>.<lambda>t      qsr-   c                     > T " SS5      $ )Nr   r$   r,   r   s   r.   r/   r  u  s    qAwr-   c                  (   > T " [        SS5      5      $ Nr$   rH   r   r   s   r.   r/   r  w  s    1R!W:r-   r3   rI   rH   5   c                     > T " 5       $ r`   r,   r   s   r.   r/   r    r  r-   c                     > T " SSS5      $ )Nr   r$   rI   r,   r   s   r.   r/   r    s    qAqzr-   c                  *   > T " S[        SS5      5      $ r  r  r   s   r.   r/   r    s    1Q1Q=r-   c                  *   > T " [        SS5      S5      $ r  r  r   s   r.   r/   r    s    1R!Wa=r-   c                  >   > T " [        SS5      [        SS5      5      $ r  r  r   s   r.   r/   r    s    1R!Wb1g#6r-   )r   r   r   rb   r   r[   r&   )rC   r%   r&   RyrT   s       @r.   test_PolyElement___call__r  m  s#   R=DA	!aAQ4199Q4199
:{#
:'
>-.%_FA	!ad
QAQ7a<<Q7b==	
BQ42447Q;Q42447Q;
:{#
:)*
>01
>01
>67r-   c                  R  ^^^ [        S[        5      u  n mTS-  STS-  -  -   ST-  -   S-   mTR                  TS5      nUS:X  a  [        U[        5      (       a   e[        [        UU4S j5        [        S[        5      u  n mmnTT-  S-  STT-  S-  -  -   ST-  T-  -   S-   mTR                  TS5      nUS:X  a%  U R                  T5      R                  U5      (       d   eTR                  TS4TS4/5      nUS:X  a&  U R                  TT5      R                  U5      (       d   eTR                  TS5      nUS:X  a%  U R                  T5      R                  U5      (       d   eTR                  TS4TS4/5      nUS:X  a&  U R                  TT5      R                  U5      (       d   eTR                  TS4TS4US4/5      nUS:X  a  [        U[        5      (       a   e[        [        UUU4S j5        [        [        UUU4S	 j5        [        [        UUU4S
 j5        g )Nr%   r#   rJ   rI   r   c                  <   > T R                  T[        SS5      5      $ r  evaluater   rT   r%   s   r.   r/   +test_PolyElement_evaluate.<locals>.<lambda>  s    1::aAa#9r-   r"   c                  F   > T R                  TS4T[        SS5      4/5      $ r  r  r   s   r.   r/   r    s!    1::1v2a7|.D#Er-   c                  F   > T R                  T[        SS5      4TS4/5      $ r  r  r   s   r.   r/   r    s!    1::2a7|aV.D#Er-   c                  Z   > T R                  T[        SS5      4T[        SS5      4/5      $ r  r  r   s   r.   r/   r    s'    1::2a7|aAa\.J#Kr-   )	r   r   r  
isinstancer
   r   r   r[   r   rC   r   r'   rT   r%   r&   s      @@@r.   test_PolyElement_evaluater    s   R=DAq	1qAv!aA	

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

1aA6affQi**1----	

QFQF#$A6affQl--a0000	

1aA6affQi**1----	

QFQF#$A6affQl--a0000	

QFQFQF+,A6*Q4444
>EF
>EF
>KLr-   c                    ^^^ [        S[        5      u  n mTS-  STS-  -  -   ST-  -   S-   mTR                  TS5      nUS:X  a  U R                  U5      (       d   e[	        [
        UU4S j5        [        S[        5      u  n mmnTS-  STS-  -  -   ST-  -   S-   mTR                  TS5      nUS:X  a  U R                  U5      (       d   eTR                  TS4TS4/5      nUS:X  a  U R                  U5      (       d   e[	        [
        UUU4S j5        [	        [
        UUU4S	 j5        [	        [
        UUU4S
 j5        g )Nr%   r#   rJ   rI   r   c                  <   > T R                  T[        SS5      5      $ r  subsr   r  s   r.   r/   'test_PolyElement_subs.<locals>.<lambda>  s    166!R!W#5r-   r"   c                  F   > T R                  TS4T[        SS5      4/5      $ r  r  r   s   r.   r/   r    s!    166Aq6Ar!Aw<*@#Ar-   c                  F   > T R                  T[        SS5      4TS4/5      $ r  r  r   s   r.   r/   r    s!    166Ar!Aw<!Q*@#Ar-   c                  Z   > T R                  T[        SS5      4T[        SS5      4/5      $ r  r  r   s   r.   r/   r    s'    166Ar!Aw<!R!W*F#Gr-   )r   r   r  r   r   r   r  s      @@@r.   test_PolyElement_subsr    s   R=DAq	1qAv!aA	q!A6all1oo%%
>56gr"JAq!Q	1qAv!aA	q!A6all1oo%%	AA A6all1oo%%
>AB
>AB
>GHr-   c                  &   [        S[        5      u  pnUS-  US-  -   nUR                  5       u  pEnUS:X  d   eUR                  U5      U-   U:X  d   eUS-  US-  -
  nUR                  5       u  pEnUS:w  d   eUR                  U5      U-   U:X  d   eX-  S-   nUR                  5       u  pEnUS:X  d   eUR                  U5      U-   U:X  d   eUS-   nUR                  5       u  pEnUS:w  d   eUR                  U5      U-   U:X  d   eU R	                  S5      nUR                  5       u  pEnUS:X  d   eUR                  U5      U-   U:X  d   e[        S5      u  pUR                  5       u  pEnUS:X  d   eUR                  U5      U-   U:X  d   eg )Nr3   rI   r   rH   r#   )r   r   
symmetrizecomposer   r   )rC   r%   r&   rT   symr0  ms          r.   test_PolyElement_symmetrizer    s   5"oGA! 	
1q!tA,,.KCa!8O8;;q>C1$$$ 	
1q!tA,,.KCa!8O8;;q>C1$$$ 	
aA,,.KCa!8O8;;q>C1$$$ 	
AA,,.KCa!8O8;;q>C1$$$ 	
AA,,.KCa!8O8;;q>C1$$$ 8DA,,.KCa!8O8;;q>C1$$$r-   c                    ^^ [        S[        5      u  n mTS-  STS-  -  -   ST-  -   S-   mTR                  TS5      nUS:X  a  U R                  U5      (       d   eTR                  TT5      T:X  d   eTR                  TTS-  5      TS-  STS-  -  -   STS-  -  -   S-   :X  d   e[	        [
        UU4S j5        [        S[        5      u  n mp#TS-  STS-  -  -   ST-  -   S-   mTR                  TS5      nUS:X  a  U R                  U5      (       d   eTR                  TS4US4/5      nUS:X  a  U R                  U5      (       d   eTS-  STS-  -  -   ST-  U-  U-  -   S-   R                  TX#S-  -  S	-
  5      nX#S-  -  S	-
  S-  SX#S-  -  S	-
  S-  -  -   SX#S-  -  S	-
  -  U-  U-  -   S-   nX:X  a  U R                  U5      (       d   eg )
Nr%   r#   rJ   rI   r   rL   c                  <   > T R                  T[        SS5      5      $ r  )r  r   r  s   r.   r/   *test_PolyElement_compose.<locals>.<lambda>  s    199Q1Q#8r-   r"   r$   )r   r   r  r   r   r   )rC   r   r&   r'   re  rT   r%   s        @@r.   test_PolyElement_composer    s   R=DAq	1qAv!aA			!QA6all1oo%%99Q?a99Q1A!Q$1a4!7!!;;;;
>89gr"JAq!	1qAv!aA			!QA6all1oo%%			Aq6Aq6"#A6all1oo%%	
A!Q$1Qq	 1	$--aa4!<A	
a4!a!Q!tVaZ!O++aa4!nQ.>q.@@1DA6all1oo%%or-   c                  ,	  ^ [        S[        5      u  n mpTT-
  R                  S:X  d   eTT-
  R                  S:X  d   eTT-
  R                  S:X  d   eTT-
  R
                  S:X  d   eTT-
  S-   R                  S:X  d   eTT-
  S-   R                  S:X  d   eTT-
  S-   R                  S:X  d   eTT-
  S-   R
                  S:X  d   eTR                  S:X  d   eTR                  S:X  d   eTR                  S:X  d   eTR
                  S:X  d   eTU-  R                  S:X  d   eTU-  R                  S:X  d   eTU-  R                  S:X  d   eTU-  R
                  S:X  d   eST-  R                  S:X  d   eST-  R                  S:X  d   eST-  R                  S:X  d   eST-  R
                  S:X  d   eST-  S-   R                  S:X  d   eST-  S-   R                  S:X  d   eST-  S-   R                  S:X  d   eST-  S-   R
                  S:X  d   eU " S5      R                  SL d   eU " S5      R                  SL d   eU " S5      R                  SL d   eU " S5      R                  SL d   eTS-
  R                  SL d   eST-  S-
  R                  SL d   eST-  S-   R                  SL d   eST-  S-   R                  SL d   eTU-   U-   S-   R                  SL d   eTU-  U-  S-   R                  SL d   eTU-  U-   S-   R                  SL d   eTU-  U-  S-   R                  SL d   eTS-
  R                  SL d   eTS-
  S-  R                  SL d   eTS-  T-   S-   R                  SL d   eTS-  ST-  -   S-   R                  SL d   e[        S	[        S
5      5      u  p4SU-  S-   R                  SL d   eSUS-  -  SU-  -   S-   R                  SL d   e[        S[        5      u  p5US-  US-  -   US-  -
  US-  -
  US-  -
  US-  -   nUR                   SL d   eUS-   R                   SL d   e[#        [$        U4S j5        [        S[        5      u  n U " S5      R                  SL d   eU " S5      R                  SL d   eg )Nr"   FTr$   r#   r   rI   rJ   r1      rH   r   rm  rl   ru  rs   rL   c                     > T R                   $ r`   )is_cyclotomicr  s   r.   r/   &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   )rC   r&   r'   _r1   r   rT   r%   s          @r.   test_PolyElement_is_r    s   GR HAq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DAaC!G##t+++adFQqSL1,,555R=DA	2221$q!t+ad2A??e###E  D(((
&(?@	b"BAQ4%%%Q4$&&&r-   c                    ^^ [        S[        5      u  n mnmU " S5      R                  S5      R                   [        S[        [        5      :X  d   eU " S5      R                  S5      R                  S5      R                   [        S[        [        5      :X  d   eU R                  U " S5      R                  S5      R                  S5      R                  S5      5      SL d   e[        [        U4S j5        [        [        U4S j5        g )	Nr"   r$   r   rW   r'   Fc                  b   > T R                  S5      R                  S5      R                  S5      $ r*   rZ   )r'   s   r.   r/   'test_PolyElement_drop.<locals>.<lambda>L  s!    qvvay~~a055a8r-   c                  &   > T R                  S5      $ r*   rZ   r  s   r.   r/   r  M  r^   r-   )r   r   r[   r	   r   r   r   rb   )rC   r&   r%   r'   s     @@r.   test_PolyElement_dropr  E  s    GR HAq1Q499Q<C 8888Q499Q<Q$$b#(>>>><<!		!))!,11!45>>>
:89
:()r-   c                  d   [        S[        5      u  pp#SUS-  -  SUS-  -  -   SUS-  -  U-  -   S-   nUR                  SS5      SU-  S-   :X  d   eUR                  US5      S:X  d   eSUS-  -  SU-  US-  -  U-  -   S	US-  -  -   S	U-  US-  -  -   nUR                  US5      SUS-  -  U-  S	US-  -  -   :X  d   eUR                  US5      SU-  U-  S	-   :X  d   eSUS-  -  SU-  U-  -   S-   nUR                  US5      U " S
5      :X  d   eUR                  US5      U " S
5      :X  d   eg )Nzx, y, zrJ   r#   rK   rI   rL   rH   r$   ru  r   )r   r   	coeff_wrt)rC   r%   r&   r'   ps        r.   test_PolyElement_coeff_wrtr  O  sj   i$JA!	!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                  ^  ^^ [        S[        5      u  mpU S-  X-  -   SU -  S-   smnTR                  U5      SU-  S-   :X  d   eU S-  S-   SU -  S-
  smnTR                  U5      TR                  X 5      s=:X  a  S:X  d   e   eTR                  US5      T" S5      :X  d   eX-  SU -  -   S-   X-   smnTR                  U5      US-  * SU-  -
  S-   :X  d   eTR                  US5      TR                  X!5      s=:X  a  U S-  * SU -  -   S-   :X  d   e   e[        [        UU4S j5        g )	Nr   rI   rJ   r$   rH  r   c                  2   > TR                  T " S5      5      $ r*   premrC   rT   s   r.   r/   'test_PolyElement_prem.<locals>.<lambda>l      affQqTlr-   )r   r   r  r   rd  r%   r&   r   rC   rT   s      @@r.   test_PolyElement_premr  ^  s:   62GAqa4!#:qsQwDAq66!91q   a4!8QqS1WDAq66!9q******66!Q<1Q4319q=!%DAq66!9A!a'''66!Q<166!<:AqD51Q3;?:::::
23r-   c                    ^^ [        S[        5      u  mpU S-  SU S-  -  -   SU S-  -  -   SU S-  -  S-   smnTR                  U5      TR                  X 5      s=:X  a  SU S-  -  SU -  -   S-   S	U -  S
-
  4:X  d   e   eU S-  US-  -
  X-
  smnTR                  U5      TR                  US5      s=:X  a  X-   S4:X  d   e   eX-  SU -  -   S-   X-   smnTR                  U5      US-   US-  * SU-  -
  S-   4:X  d   eTR                  X!5      TR                  US5      s=:X  a  U S-   U S-  * SU -  -   S-   4:X  d   e   eT" S5      R                  U5      S:X  d   e[        [        UU4S j5        g )Nr3   rJ   rK   r#   rH   rI   rH     iB   r   r$   r   c                  2   > TR                  T " S5      5      $ r*   r  r  s   r.   r/   'test_PolyElement_pdiv.<locals>.<lambda>|  r  r-   )r   r   pdivr   rd  r  s      @@r.   test_PolyElement_pdivr  n  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$;DAq66!9q!2
22222319q=!%DAq66!9QA!a000066!<166!Q<CAEAqD51Q3;?+CCCCCCQ499Q<6!!!
23r-   c                     [        S[        5      u  pnUS-  SUS-  -  U-  -
  SUS-  -  -   US-  SU-  -
  pCUR                  U5      UR                  XA5      s=:X  a  US-  SU-  -
  :X  d   e   eUR                  XB5      SUS-  -  SU-  -
  S-   :X  d   eUS-  US-  -
  US-  US-  -
  pCUR                  U5      UR                  US5      s=:X  a  US-  US-  -   :X  d   e   eg )Nr   rJ   rI   rs   r   )r   r   pquor  s        r.   test_PolyElement_pquor  ~  s    62GA!a4!AqD&(?Qq!tV#QTAaCZq66!9q21qs
2222266!<1QT6AaC<!++++a4!Q$;1q!tq66!9q!31q!t33333r-   c                  t  ^^ [        S[        5      u  pnUS-  US-  -
  X-
  smmTR                  T5      TR                  TU5      s=:X  a	  X-   :X  d   e   eTR                  TU5      TR                  TS5      s=:X  a  X-   S-   :X  d   e   eUS-  SU-  -   S-   US-   smm[        [        UU4S j5        g )Nr   rI   r$   r#   rL   c                  &   > T R                  T5      $ r`   )pexquor(  s   r.   r/   )test_PolyElement_pexquo.<locals>.<lambda>  s    r-   )r   r   r  r   r   r  s      @@r.   test_PolyElement_pexquor    s    62GA!a4!Q$;DAq88A;!((1a.1AE1111188Aq>QXXa^8quqy88888a4!A#:>1q5DAq
 34r-   c                      [        S[        5      u  pSU-  US-  S-
  p2US-  [        SS5      * SpenUR                  U5      XF4:X  d   eUR                  U5      XEU4:X  d   eg )Nr%   rI   rm  rq  r$   )r   r   
half_gcdexgcdex)r  r%   rT   r   sr1   r  s          r.   test_PolyElement_gcdexr    sk    R=DAQ31r	qdR2YJ!A<<?qf$$$771:!"""r-   c                  |   [        S[        5      u  pnUS-  U-  X-  -   X-   pCUS-  US-  -
  nUR                  U5      X4U/:X  d   eUR                  US5      UR                  XA5      s=:X  a	  X4U/:X  d   e   eUR                  XB5      US-  U-  X-  -   X-   US-  US-  -   /:X  d   eSU-  U-
  US-  SU-  -   U-   pCUR                  U5      US-  U-   SU-  -   SU-  U-
  US-  SU-  -   /:X  d   eU " S5      US-  US-  -
  pCUR                  U5      US-  US-  -
  S/:X  d   eUS-  U-  X-  -   U " S5      pCUR                  U5      US-  U-  X-  -   S/:X  d   eU " S5      U " S5      pCUR                  U5      SS/:X  d   eUS-  U-   US-  U-   pCUR                  U5      US-  U-   US-  U-   /:X  d   eg )Nr   rI   r#   r   ru  r$   )r   r   subresultants)rC   r%   r&   rT   r   r  s         r.   test_PolyElement_subresultantsr    s   62GA!a46AC<q	1q!tA??1!*** ??1a Q__Q%:GqQiGGGGG??1 QT!Vac\15!Q$A+$FFFFQ37AqD1Q3JNq??1!Q$(QqS.!A#'1a4"Q$;!GGGGQ4A1q??1!Q$A+q!1111a46AC<1q??1!Q$q&13,!2222Q41q??1!Q'''a4!8QTAXq??1!Q$(AqD1H!5555r-   c                      [        S[        5      u  pUS-  SU-  -
  S-   US-  S-
  SpCnUR                  U5      U:X  d   eg )Nr%   rI   r$   r   )r   r   	resultantr  r%   rT   r   r  s        r.   test_PolyElement_resultantr    sH    R=DAdQqSj1nadQh!A;;q>Qr-   c                  *   [        S[        5      u  pUS-  SUS-  -  -   SU-  -   S-
  Sp2UR                  5       U:X  d   e[        S[        5      u  pEpg[        SU5      u  pXQS-  -  Xa-  -   U-   US-  SU-  U-  -
  p2UR                  5       U:X  d   eg )	Nr%   r#   rI   rK     ipza,b,crJ   )r   r   discriminant)r  r%   rT   r   rp   r   bcs           r.   test_PolyElement_discriminantr    s    R=DAa4!AqD&=1Q3#Vq>>q   gr"JA!Q<DAT6AC<!QTAaCE\q>>q   r-   c                  ,   [        S[        5      u  pUS-  SUS-  -  -   SUS-  -  -   SUS-  -  -   S	US
-  -  -   SUS-  -  -
  SU-  -
  S-   nUS
-  SU-  -
  S-   nUS-  SU-  -   nUR                  X5      U:X  d   eUR                  5       X4/:X  d   eg )Nr%   rj  rH  ru     rs   i  rL   q  rJ   rI   r#   rK  rK   )r   r   r  	decomposer  s        r.   test_PolyElement_decomposer    s    R=DA	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;;=QF"""r-   c                    ^^ [        S[        5      u  n mTS-  ST-  -
  S-   R                  S5      TS-  ST-  -   S-   :X  d   eTS-  ST-  -
  S-   R                  S/5      TS-  ST-  -   S-   :X  d   e[        S[        5      u  nmmTT-  R                  SS/5      TS-   TS-   -  :X  d   e[	        [
        UU4S j5        g )Nr%   rI   r$   r   c                  ,   > T T-  R                  S5      $ r   )shift)r%   r&   s   r.   r/   (test_PolyElement_shift.<locals>.<lambda>  s    1Ar-   )r   r   r!  
shift_listr   r   )r  rC   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            	      L   [        S[        5      u  p[        SU 5      u  p#SSUS-  -  -  US-  -  SSUS-  -  -  US	-  -  -
  S
SUS	-  -  -  US-  -  -   SSUS	-  -  -  US-  -  -
  U " S5      S-  U-  -   U " S5      S-  -
  nUR                  5       US-  SUS-  -  -
  US	-  S-  U-  -   SUS	-  -  S-  -
  SUS-  -  SU-  -
  US	-  S-  -   US	-  * S-  U " S5      S-  -   U-  SUS	-  -  S-  -   SUS-  -  SUS-  -  -
  SUS	-  -  -
  SUS-  -  SUS	-  -  -
  S-   -  /:X  d   eg ) Nr1   r%   i   i	=  rs   rK   i   r  rJ   rq  r#      rI   r$   i$  d   @   rS  rm     rn  i N  rK     irj  i ȯ l      ir  i  l      ^_)r   r   r   sturm)rp   r1   r  r%   rT   s        r.   test_PolyElement_sturmr,    s   b>DAQ<DA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   [        S[        5      u  pUS-  SUS-  -  -   US-  -
  SUS-  -  -
  nUR                  5       US4US-   S4/:X  d   eXS-
  S-  -  US-
  S-  -  US-
  S-  -  US-
  -  nUR                  5       US-  SU-  -
  S-   S4US-  SU-  -
  S-   S4US4/:X  d   eg )Nr%   rK   rI   rJ   r#   r$   )r   r   gff_list)r  r%   rT   s      r.   test_PolyElement_gff_listr/    s    R=DA	1qAv1qAv%A::<QFQUAJ////	q51*a!eaZQ
*AE2A::<QTAaCZ!^Q/!Q$1*q.!1Dq!fMMMMr-   c                      [         n [         R                  " [        S5      5      nUR                  n[	        SU 5      u  p4n[	        SU5      u  p6nXg-  U-   R                  5       US-  US-  -  S-
  :X  d   eg )NrI   r3   )r   r   r   unitr   norm)kKsqrt2r  r   r   r%   r&   s           r.   test_PolyElement_normr6    so    
A
47#AFFE5!nGA!5!nGA!C%K1a419q=000r-   c                  4   [        S[        R                  " [        S5      5      5      u  pU R	                  5       R
                  nUS-  S-
  R                  5       S/US-  S[        S5      -  U-  -
  S-   US-  SUS-  -  -
  S-   4:X  d   e[        S[        R                  " [        S5      5      5      u  pU R	                  5       R
                  nUS-  S-
  R                  5       S/US-  S[        S5      -  U-  -
  S-
  US-  SUS-  -  -
  S-   4:X  d   eg )Nr%   r#   rI   r$   rJ   ru  )r   r   r   r   	to_groundr%   sqf_norm)rC   r%   r   s      r.   test_PolyElement_sqf_normr:    s
   R''Q01DA	AqD1H aS!Q$471*<q*@!Q$AqD.STBT$UUUUR''Q01DA	AqD1H aS!Q$471*<q*@!Q$AqD.STBT$UUUUr-   c                     [        S[        5      u  pUS-  US-  -
  US-  -
  S-   nUS-  SUS-  -  -   SU-  -   S-   nUS-
  nUS-  US-  -   U-
  S-
  nUR                  5       U:X  d   eUR                  5       SUS4US4/4:X  d   eg )Nr%   rK   r#   rI   r$   rJ   )r   r   sqf_partsqf_list)r  r%   rT   r   r  r  s         r.   test_PolyElement_sqf_listr>    s    R=DA	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            
      z   [        S5      S-  [        S[        S5      -  S-   5      S-  -   [        S5      S-  S[        S5      -  S-  -   [        S5      S-  S[        S5      -  S-  -   [        S5      * S-  [        S[        S5      -  S-   5      S-  -   /n [        U SS9u  pUR                  [        R
                  " [        S5      [        S[        S5      -  S-   5      -   5      :X  d   eUR                  S:X  d   e/ nU  H-  nUR                  UR                  R                  U5      5        M/     X#:X  d   eg )	Nr#   rm  ru  rs   r$   Tr   r,   )	r   r   r   r7   r   r   r6   appendr   )itemsrC   r   resultitems        r.   test_issue_18894rD    s&   qT"WtAd1gIN+A--qtAv$q'	"/Dad1fqQUVWQXyY[|F[^_`a^b]bce]ehlmnostuovmvy{m{h|}~h~]~E$'DA88r))$q'$qay|2D*DEEEE66R<<Fahh))$/0 ;;r-   c                      [        S[        5      u  pUS-  US-  -
  US-  -
  S-   nUS-   nUS-
  nUS-  U-   S-   nUR                  5       SUS4US4US4/4:X  d   eg )Nr%   rK   r#   rI   r$   )r   r   factor_list)r  r%   rT   r   r  ws         r.   test_PolyElement_factor_listrH    s}    R=DA	1q!tadQA	AA	AA	1q1A==?qAq6Aq6Aq6":;;;;r-   c                      [        S[        S5      5      u  pUS-  US-  -   US-  -   US-  -   S-   nUR                  S5      US-  US	-  -   US
-  -   US-  -   S-   :X  d   eg )Nr%   rI   rL   rK   rJ   r#   r$   rk   rH  rm  rj  )r   r   rw  )rC   r%   r  s      r.   test_issue_21410rJ  (  sx    RUDA	1q!tadQT!A%Aa ArEArEMArE$9ArE$AA$EEEEr-   c                      [        S5      n [        U    nU" S5      nUR                  5       u  p4US:X  d   eXB:X  d   eUR                  SL d   eg )Nr%   r   F)r   r   	primitiver  )r%   rC   	zero_polycontprims        r.   test_zero_polynomial_primitiverP  .  sY    A
1A!I$$&JD199%%%r-   N)u__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=   rD   rF   rU   rc   re   ri   rq   rv   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  rf  rx  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/  r6  r:  r>  rD  rH  rJ  rP  r,   r-   r.   <module>r`     s      G G / ' 2 2 ,E E ( & " ! 6 9 D6)2(& ""
*'8#'J%	7*&>#J!#F7<,42<C%(@"6"a:c:$KL{4zC69+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-   