+
    i                       R t ^ RIt^ RIHtHtHtHtHtHtH	t	H
t
HtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0H1t1H2t2H3t3H4t4H5t5H6t6H7t7H8t8H9t9H:t:H;t;H<t<H=t=H>t> ^ RI?H@t@HAtAHBtBHCtCHDtDHEtEHFtFHGtGHHtHHItIHJtJHKtKHLtL ^ RIMHNtN ^ RIOHPtP ^ RIQHRtRHStSHTtTHUtUHVtVHWtWHXtX ^ RIYHZtZ ^ RI[H\t\ ^ R	I]H^t^H_t_H`t` ^ R
IaHbtb ^ RIcHdtd ^ RIeHftf ^ RIgHhth ^ RIiHjtj ^ RIkHltlHmtmHntn ^ RIoHptpHqtq ^ RIrHstsHtttHutuHvtvHwtwHxtx ^ RIyHztz ^ RI{H|t| ^ RI}H~t~ ^ RIHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R IHt ^ R!IHt ^ R"IHtHtHtHtHt ^ R#IHtHtHtHtHtHtHtHtHtHtHt R$ tR% tR& tR' tR( tR) tR* tR+ t]R, 4       t]R- 4       tR. tR/ tR0 tR1 tR2 tR3 tR4 tR5 tR6 tR7 tR8 tR9 tR: tR; tR< tR= tR> tR? tR@ tRA tRB tRC tRD tRE tRF tRG tRH tRI tRJ tRK tRL tRM tRN tRO tRP tRQ tRR tRS tRT tRU tRV tRW tRX tRY tRZ tR[ tR\ tR] tR^ tR_ tR` tRa tRb tRc tRd tRe tRf tRg tRh tRi tRj tRk tRl tRm tRn tRo tRp tRq tRr tRs tRt tRu tRv tRw tRx Et Ry EtRz EtR{ EtR| EtR} EtR~ EtR EtR EtR Et	R Et
R EtR EtR EtR EtR EtR EtR EtR EtR EtR EtR EtR EtR EtR EtR EtR EtR EtR EtR EtR EtR EtR Et R Et!R Et"R Et#R Et$R Et%R Et&R Et'R Et(R Et)R Et*R Et+R Et,R Et-R Et.R Et/R Et0R Et1R Et2R Et3R Et4R Et5R Et6R Et7R Et8R Et9R Et:R Et;R Et<R Et=R Et>R Et?R Et@R EtAR EtBR EtCR EtDR EtER EtFR EtGR EtHR EtIR EtJR EtKR EtLR EtMR EtNR EtOR EtPR EtQR EtRR EtSR EtTR EtUR EtVR EtWR EtXR# )zBTests for user-friendly public interface to polynomial functions. N)<PolyPurePolypolyparallel_poly_from_exprdegreedegree_listtotal_degreeLCLMLTpdivprempquopexquodivremquoexquo
half_gcdexgcdexinvertsubresultants	resultantdiscriminant	terms_gcd	cofactorsgcdgcd_listlcmlcm_listtruncmoniccontent	primitivecompose	decomposesturmgff_listgffsqf_normsqf_partsqf_listsqffactor_listfactor	intervalsrefine_rootcount_roots	all_roots
real_rootsnrootsground_rootsnth_power_roots_polycancelreducedgroebnerGroebnerBasisis_zero_dimensional_torational_factor_listto_rational_coeffs)MultivariatePolynomialErrorExactQuotientFailedPolificationFailedComputationFailedUnificationFailedRefinementFailedGeneratorsNeededGeneratorsErrorPolynomialErrorCoercionFailedDomainErrorOptionError	FlagError)DMPfield)FFZZQQZZ_IQQ_IRREX)	RealField)ComplexField)lexgrlexgrevlex)S4TransitiveSubgroups)Add)_aresame)Tuple)Expr)
Derivativediffexpand)_keep_coeffMul)FloatIIntegerRationaloopi)Pow)Eq)S)Symbol)imre)exp)tanh)sqrt)	Piecewise)sin)Matrix)MatrixSymbol)rootof)signsimp)iterable)SymPyDeprecationWarning)raiseswarns_deprecated_sympywarnstooslowXFAIL)abcdpqtwxyzc                 `    \        W4       F  w  r#\        W#,
          4      R 8  g   K   R# 	  R# )g|=FT)zipabs)r   r   uvs   &&  ^/var/www/html/photoedit/myenv/lib/python3.14/site-packages/sympy/polys/tests/test_polytools.py_epsilon_eqr   Y   s(    A	qu:      c                 t   \        V 4      \        V4      8X  d   \        V 4      '       db   \        V 4      \        V4      8X  dG   \        ;QJ d%    R  \	        W4       4       F  '       d   K   R# 	  R# ! R  \	        W4       4       4      # R# \        V \        4      ;'       d    V P                  ! VRR7      # R# )c              3   <   "   T F  w  r\        W4      x  K  	  R # 5iN)
_strict_eq).0r   r   s   &  r   	<genexpr>_strict_eq.<locals>.<genexpr>d   s     B	:a++	s   FTstrict)typery   lenallr   
isinstancer   eq)r   r   s   &&r   r   r   `   s    Aw$q'A;;1vQsBA	BssBsBsBA	BBBa&??144$+??r   c                     \        \        \        4      p \        4       ;_uu_ 4        V \        \        4      ,           R R R 4       \        4       ;_uu_ 4        V \        \        4      ,            R R R 4       \        4       ;_uu_ 4        V \        \        4      ,
           R R R 4       R #   + '       g   i     Lt; i  + '       g   i     LV; i  + '       g   i     R # ; ir   )r   r   r|   rp   r   s    r   test_Poly_mixed_operationsr   m   su    Q
A		!	!	CF
 
"		!	!	CF
 
"		!	!	CF
 
"	!	 
"	!	!	!	!	!	!s#   B*B=	C*B:	=C	C!	c                  
   \        ^4      p \        P                  ! ^ ^^^/\        V R7      P                  \        V ! ^4      V ! ^4      .V 4      8X  g   Q h\        P                  ! ^ ^^^/\        V R7      P                  \        V ! ^4      V ! ^4      .V 4      8X  g   Q h\        P                  ! R^R^/\        V R7      P                  \        V ! ^4      V ! ^4      .V 4      8X  g   Q h\        P                  ! R^R^/\        V R7      P                  \        V ! ^4      V ! ^4      .V 4      8X  g   Q h\        P                  ! R^R^/\        \        3V R7      P                  \        V ! ^4      V ! ^ 4      .V ! ^4      ..V 4      8X  g   Q h\        P                  ! ^ ^^^/\        R7      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\        P                  ! ^ ^^^/\        RR7      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\        P                  ! ^ ^^^/\        \        R7      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\        P                  ! ^ ^^^/\        \        R7      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\        P                  ! R^R^/\        R7      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\        P                  ! R^R^/\        RR7      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\        P                  ! R^R^/\        \        R7      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\        P                  ! R^R^/\        \        R7      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\        P                  ! R\        \        4      /\        RR7      \        \        \        4      \        ,          \        RR7      8X  g   Q h\        P                  ! R\        /\        RR7      \        \        \        ,          \        RR7      8X  g   Q h\        P                  ! R^/\        \        3RR7      \        \        \        ,          \        \        R	R7      8X  g   Q h\        P                  ! R\        /\        \        3RR7      \        \        \        ,          \        \        RR7      8X  g   Q hR
# )   gensdomainr   Tr   rM   F)r   	compositerT   r   rO   N       r   r   r   r   r   r   )rN   r   	from_dictr   reprK   r   rO   rP   rt   r   Ks    r   test_Poly_from_dictr   w   s   
1A>>	
Aq!1Q((+sAaD!A$</CD D D>>	
Aq!1Q((+sAaD!A$</CD D D >>	q$1..1cS!A$!q5IJ J J>>	q$1..1cS!A$!q5IJ J J >>61fa0	18adAaD\AaD6$:A >? ? ? >>1aA,Q/33sBqE2a5>27NNNN>>	
Aq!1D**-#beRU^R1HI I I >>	
Aq!1R)),RUBqENB0GH H H>>	
Aq!1R)),RUBqENB0GH H H >>	q$$$'C31r!u~r+BC C C>>	q$$003sBqE2a5>27NO O O >>	q$2//2sc2a5"Q%."6MN N N>>	q$2//2sc2a5"Q%."6MN N N >>4Q.qEBSVAXq&' ' '>>4)!u=QqS!D!" " ">>61+QFeDQqS!Qt$% % %>>61+QFeDQqS!Qt$% % %r   c                  ,   \        ^4      p \        P                  ! ^^.\        V R7      P                  \        V ! ^4      V ! ^4      .V 4      8X  g   Q h\        P                  ! ^^.\        V R7      P                  \        V ! ^4      V ! ^4      .V 4      8X  g   Q h\        P                  ! ^^.\        R7      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\        P                  ! ^^.\        RR7      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\        P                  ! ^^.\        \        R7      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\        P                  ! ^^.\        \        R7      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\        P                  ! ^ R.\        R7      P                  \        \        R4      .\        4      8X  g   Q h\        P                  ! R^ .\        R7      P                  \        \        R4      \        R4      .\        4      8X  g   Q h\        \        R 4       R# )	r   r   r   Tr         ?        c                  H    \         P                  ! . .\        \        3R 7      # )r   )r   	from_listr   r    r   r   <lambda>%test_Poly_from_list.<locals>.<lambda>   s    t1a&0Qr   N)rN   r   r   r   r   rK   rO   rP   rS   r{   r>   r   s    r   test_Poly_from_listr      s   
1A>>1a&q3773!ad|Q;OOOO>>1a&q3773!ad|Q;OOOO>>1a&q)--beRU^R1HHHH>>1a&q599S"Q%AQS=TTTT>>1a&q488CA1PR<SSSS>>1a&q488CA1PR<SSSS>>1c(+//33y"3EEEE>>3(+//33C7I23NNNN
&(QRr   c                  H  a aaa \        \        ^,           \        \        R7      o\        \        ^,           \        ^R7      o\        \        \        ,           \        \        \        R7      o\	        ^4      o \         P
                  ! S4      S8X  g   Q h\         P
                  ! SS R7      P                  \        S ! ^4      S ! ^4      .S 4      8X  g   Q h\         P
                  ! S\        R7      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\         P
                  ! S\        R7      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\         P
                  ! S\        R7      S8X  g   Q h\         P
                  ! S\        S R7      P                  \        S ! ^4      S ! ^4      .S 4      8X  g   Q h\         P
                  ! S\        \        R7      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\         P
                  ! S\        \        R7      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\         P
                  ! S\        R7      \        \        ^,           \        RR7      8X  g   Q h\        \        V V3R l4       \        \        V3R l4       \        \        V3R l4       \         P
                  ! S\        \        3R7      \        \        ^,           \        \        R	R7      8X  g   Q h\         P
                  ! S\        \        3\        R7      \        \        ^,           \        \        R	R7      8X  g   Q h\         P
                  ! S\        \        3\        R7      \        \        ^,           \        \        R
R7      8X  g   Q h\         P
                  ! S\        \        3^R7      \        \        ^,           \        \        RR7      8X  g   Q h\	        ^4      o \         P
                  ! S4      S8X  g   Q h\         P
                  ! S\        R7      P                  \        \        ^4      \        R4      .\        4      8X  g   Q h\        \        V3R l4       \         P
                  ! SS R7      P                  \        S ! ^4      S ! ^ 4      .S 4      8X  g   Q h\         P
                  ! S\        R7      S8X  g   Q h\         P
                  ! S\        \        R7      P                  \        \        ^4      \        R4      .\        4      8X  g   Q h\        \        V3R l4       \         P
                  ! S\        S R7      P                  \        S ! ^4      S ! ^ 4      .S 4      8X  g   Q h\	        ^4      o \         P
                  ! S4      S8X  g   Q h\         P
                  ! S\        R7      P                  \        \        ^4      .\        ^4      \        ^ 4      ..\        4      8X  g   Q h\         P
                  ! S\        R7      P                  \        \        ^4      .\        ^4      \        ^ 4      ..\        4      8X  g   Q h\         P
                  ! SS R7      P                  \        S ! ^4      .S ! ^4      S ! ^ 4      ..S 4      8X  g   Q h\         P
                  ! S\        R7      \        \        \        ,           \        \        \        ,          R7      8X  g   Q h\        \        V3R l4       \         P
                  ! S\        \        \        ,          R7      \        \        \        ,           \        \        \        ,          R7      8X  g   Q h\        \        V3R l4       \         P
                  ! S\        \        \        ,          R7      \        \        \        ,           \        \        \        ,          R7      8X  g   Q h\        \        V3R l4       \         P
                  ! S\        R7      \        \        \        ,           \        \        \        ,          R7      8X  g   Q h\        \        V3R l4       \         P
                  ! S\        \        \        ,          R7      \        \        \        ,           \        \        \        ,          R7      8X  g   Q h\        \        V3R l4       \         P
                  ! S\        \        \        ,          R7      \        \        \        ,           \        \        \        ,          R7      8X  g   Q h\        \        V3R l4       \         P
                  ! S\        \        3R7      S8X  g   Q h\         P
                  ! S\        \        3\        R7      P                  \        \        ^4      .\        ^4      \        ^ 4      ..\        4      8X  g   Q h\         P
                  ! S\        \        3\        R7      P                  \        \        ^4      .\        ^4      \        ^ 4      ..\        4      8X  g   Q h\         P
                  ! S\        \        3S R7      P                  \        S ! ^4      .S ! ^4      S ! ^ 4      ..S 4      8X  g   Q h\         P
                  ! S\        \        3R7      P                  \        \        ^4      .\        ^4      \        ^ 4      ..\        4      8X  g   Q h\         P
                  ! S\        \        3\        R7      P                  \        \        ^4      .\        ^4      \        ^ 4      ..\        4      8X  g   Q h\         P
                  ! S\        \        3\        R7      P                  \        \        ^4      .\        ^4      \        ^ 4      ..\        4      8X  g   Q h\         P
                  ! S\        \        3S R7      P                  \        S ! ^4      .S ! ^4      S ! ^ 4      ..S 4      8X  g   Q h\         P
                  ! S\        \        3RR7      P                  \        \        ^4      .\        ^4      \        ^ 4      ..\        4      8X  g   Q h\         P
                  ! S\        \        3RR7      P                  \        \        ^4      .\        ^4      \        ^ 4      ..\        4      8X  g   Q hR# )   r   modulusr   r   ZZ[x]c                  >   < \         P                  ! S\        S R 7      # r   r   	from_polyr   )r   fs   r   r   %test_Poly_from_poly.<locals>.<lambda>   s    4>>!!A#Fr   c                  F   < \         P                  ! S \        \        R 7      # r   r   r   r   rO   r   s   r   r   r          4>>!!B#Gr   c                  F   < \         P                  ! S \        \        R 7      # r   r   r   r   rP   r   s   r   r   r      r   r   rO   rP   r   r   zFF(3)c                  <   < \         P                  ! S \        R 7      # r   )r   r   rP   gs   r   r   r      s    4>>!B#?r   c                  F   < \         P                  ! S \        \        R 7      # r   r   r   r   rP   r   s   r   r   r      r   r   c                  F   < \         P                  ! S \        \        R 7      # r   )r   r   r   rO   hs   r   r   r      r   r   c                  F   < \         P                  ! S \        \        R 7      # r   r   r   s   r   r   r      r   r   c                  >   < \         P                  ! S \        ^R7      # r   r   )r   r   r   r   s   r   r   r          4>>!!Q#Gr   c                  F   < \         P                  ! S \        \        R 7      # r   r   r   s   r   r   r      r   r   c                  F   < \         P                  ! S \        \        R 7      # r   r   r   s   r   r   r      r   r   c                  >   < \         P                  ! S \        ^R7      # r   r   r   s   r   r   r      r   r   Tr   N)r   r   rO   r   rN   r   r   rK   rP   r{   rG   )r   r   r   r   s   @@@@r   test_Poly_from_polyr      s;	   QUAb!AQUAq!AQUAq$A
1A>>!!!!>>!A&**c1Q41,.BBBB>>!B'++sBqE2a5>2/FFFF>>!B'++sBqE2a5>2/FFFF>>!!$)))>>!!A.22c1Q41,6JJJJ>>!!B/33sBqE2a5>27NNNN>>!!B/33sBqE2a5>27NNNN>>!!$QUAg(FFFF
>FG
>GH
>GH>>!1a&)T!a%Ad-KKKK>>	Ar#&*1q5!Qt&DE E E>>	Ar#&*1q5!Qt&DE E E>>	A#&*1q5!Qw&GH H H 	1A>>!!!!>>!B'++sBqE2b6?B/GGGG
>?@>>!A&**c1Q41,.BBBB>>!!$)))>>!!B/33sBqE2b6?B7OOOO
>GH>>!!A.22c1Q41,6JJJJ
1A>>!!!!>>	"cS2a5'BqE2a5>!:B?@ @ @>>	"cS2a5'BqE2a5>!:B?@ @ @>>!A&**cAaD6AaD!A$<2H!.LLLL>>!!$QUAbe(DDDD
>GH>>	"Q%!$(Q"Q%$@A A A
>GH>>	"Q%!$(Q"Q%$@A A A
>GH>>!!$QUAbe(DDDD
>GH>>	"Q%!$(Q"Q%$@A A A
>GH>>	"Q%!$(Q"Q%$@A A A
>GH>>!1a&)Q...>>	Ar##&3#1wA1.G*LM M M>>	Ar##&3#1wA1.G*LM M M>>	Aq""%#qtfqtQqTl-CQ)GH H H >>	AsRUGbeRU^#<bAB B B>>	Ar##&3#1wA1.G*LM M M>>	Ar##&3#1wA1.G*LM M M>>	Aq""%#qtfqtQqTl-CQ)GH H H >>	Ad$$'C3A"Q%A/H"+MN N N>>	Ad$$'C3A"Q%A/H"+MN N Nr   c                  z   \        \        R  4       \        \        R 4       \        ^4      p \        P                  ! \
        ^,           V R7      P                  \        V ! ^4      V ! ^4      .V 4      8X  g   Q h\        P                  ! \        ^,           V R7      P                  \        V ! ^4      V ! ^4      .V 4      8X  g   Q h\        P                  ! \
        ^,           \
        V R7      P                  \        V ! ^4      V ! ^4      .V 4      8X  g   Q h\        P                  ! \        ^,           \        V R7      P                  \        V ! ^4      V ! ^4      .V 4      8X  g   Q h\        P                  ! \
        \        ,           V R7      P                  \        V ! ^4      .V ! ^4      V ! ^ 4      ..V 4      8X  g   Q h\        P                  ! \
        \        ,           \
        \        V R7      P                  \        V ! ^4      .V ! ^4      V ! ^ 4      ..V 4      8X  g   Q h\        P                  ! \
        ^,           4      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\        P                  ! \        ^,           4      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\        P                  ! \
        ^,           \
        4      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\        P                  ! \        ^,           \        4      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\        P                  ! \
        ^,           \        R7      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\        P                  ! \        ^,           \        R7      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\        P                  ! \
        ^,           \
        \        R7      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\        P                  ! \        ^,           \        \        R7      P                  \        \        ^4      \        ^4      .\        4      8X  g   Q h\        P                  ! \
        ^,           \
        \        \        R7      P                  \        \        ^4      .\        ^4      ..\        4      8X  g   Q h\        P                  ! \        ^,           \
        \        \        R7      P                  \        \        ^4      \        ^4      ..\        4      8X  g   Q hR# )c                  J    \         P                  ! \        P                  4      # r   )r   	from_exprrl   Zeror   r   r   r   %test_Poly_from_expr.<locals>.<lambda>  s    T^^AFF%;r   c                  @    \         P                  ! \        ^4      4      # r   )r   r   rl   r   r   r   r   r     s    T^^AaD%9r   r   N)
r{   rD   rN   r   r   r   r   rK   r   rO   )F3s    r   test_Poly_from_exprr     s   
;<
9:	AB>>!a%+//31r!u~r3JJJJ>>!a%+//31r!u~r3JJJJ>>!a%2.22c2a5"Q%."6MMMM>>!a%2.22c2a5"Q%."6MMMM>>!a%+//3A"Q%A7PRT3UUUU>>!a%Ab155r!ug1rRSu~=VXZ9[[[[>>!a% $$RUBqENB(????>>!a% $$RUBqENB(????>>!a%#''31r!u~r+BBBB>>!a%#''31r!u~r+BBBB>>!a%+//31r!u~r3JJJJ>>!a%+//31r!u~r3JJJJ>>!a%2.22c2a5"Q%."6MMMM>>!a%2.22c2a5"Q%."6MMMM>>!a%Ab155r!ug1w=OQS9TTTT>>!a%Ab155r!uben=Mr9RRRRr   c                  R   \        \        ^,          \        ,           ^,           ^ 4      p \        \        ^,          \        ,           ^,           ^4      p\        P                  ! V 4      p\        P                  ! V4      p\	        V \
        4      \	        V \
        \        R7      8X  g   Q h\	        V\
        4      \	        V\
        \        R7      8X  g   Q h\	        V \
        RR7      \	        V \
        VR7      8X  g   Q h\	        V\
        RR7      \	        V\
        VR7      8X  g   Q hR# r   r   T	extensionN)rw   r   rP   algebraic_fieldr   r   rT   )r1r2K1K2s       r   test_Poly_rootof_extensionr   1  s    	1q1a	 B	1q1a	 B			B	B			B	BA;$r1R0000A;$r1R0000A&$r1R*@@@@A&$r1R*@@@@r   c                  |   \        \        ^,          \        ,           ^,           ^ 4      p \        \        ^,          \        ,           ^,           ^4      p\        P                  ! W,           4      p\	        V \
        ,          V,           \
        RR7      \	        V \
        ,          V,           \
        VR7      8X  g   Q hR# )r   Tr   r   N)rw   r   rP   r   r   r   )r   r   K12s      r   ,test_Poly_rootof_extension_primitive_elementr   <  st    	1q1a	 B	1q1a	 B


RW
%C1r	1-bdRi31OOOOr   c                  ,   \        \        ^,          \        ,           ^,           ^ 4      p \        P                  ! V 4      p\	        V \        4      \	        V \        \
        R7      8X  g   Q h\	        V \        RR7      \	        V \        VR7      8X  g   Q hR# r   )rw   r   rP   r   r   rT   )r   r   s     r   (test_Poly_rootof_same_symbol_issue_26808r   D  si     
1q1a	 B			B	BA;$r1R0000A&$r1R*@@@@r   c                     \        \        ^,          \        ^,          ,           ^,
          ^ 4      p \        \        ^,          \        ^,          ,           ^,
          ^ 4      p\        ^,          ) \        ^,          ,           \        V ,          ,           V,
          ^V ^,          ,          ,           pVP                  ! \        RR7      P                  4       V8X  g   Q hR# )r   Tr   N)rw   r   r   r   as_polyas_exprr   r   r   s      r   #test_Poly_rootof_extension_to_sympyr  M  s     
1q!ta	#B	1q!ta	#B	
A1qtb 1RU7*A99Q$'//1Q666r   c            	      r   \         \        ,          p \        V ! \        ^,           4      \        V R7      P                  \        V ! \        ^,           4      .V 4      8X  g   Q hV P                  4       p \        V ! \        ^,           4      \        V R7      P                  \        V ! \        ^,           4      .V 4      8X  g   Q h\        \        ,          p \        V ! \        ^,           4      \        V R7      P                  \        V ! \        ^,           4      .V 4      8X  g   Q hV P                  4       p \        V ! \        ^,           4      \        V R7      P                  \        V ! \        ^,           4      .V 4      8X  g   Q h\         P                  ! \        4      p \        V ! \        ^4      \        ^4      .4      \        V R7      P                  \        V ! \        ^4      \        ^4      .4      .V 4      8X  g   Q hV P                  4       p \        V ! \        ^4      \        ^4      .4      \        V R7      P                  \        V ! \        ^4      \        ^4      .4      .V 4      8X  g   Q h\        P                  ! \        4      p \        V ! \        ^4      \        ^4      .4      \        V R7      P                  \        V ! \        ^4      \        ^4      .4      .V 4      8X  g   Q hV P                  4       p \        V ! \        ^4      \        ^4      .4      \        V R7      P                  \        V ! \        ^4      \        ^4      .4      .V 4      8X  g   Q h\        P                  ! \        4      p \        V ! ^^.4      \        V R7      P                  \        V ! ^^.4      .V 4      8X  g   Q hR# r   r   N)rO   r   r   r   r   rK   	get_fieldrP   old_poly_ringr   re   )doms    r   test_poly_from_domain_elementr  V  s   
Q%CAaC!C(,,S1XJ0DDDD
--/CAaC!C(,,S1XJ0DDDD
Q%CAaC!C(,,S1XJ0DDDD
--/CAaC!C(,,S1XJ0DDDD


1
CRUBqEN#Qs3773RUBqEN@S?TVY;ZZZZ
--/CRUBqEN#Qs3773RUBqEN@S?TVY;ZZZZ


1
CRUBqEN#Qs3773RUBqEN@S?TVY;ZZZZ
--/CRUBqEN#Qs3773RUBqEN@S?TVY;ZZZZ


Q
CQFQs+//3QF}c3JJJJr   c            
         \        \        R  4       \        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       \        \        R	 4       \        \        R
 4       \        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       \        R4      \        ^ \        4      8X  g   Q h\        \        ^,          ,          \        \        ,          ,           \        ,           p \        ^\        ^\        ^ \        /\        4      V 8X  g   Q h\        \        \        \        \        .4      \        4      V 8X  g   Q h\        \        \        \        .\        4      V 8X  g   Q h\        \        \        \        3\        4      V 8X  g   Q h\        / \        \        \        4      p V P                  \        \        \        38X  d   V P                  4       ^ 8X  g   Q h\        \        \        \        ,          \        \        ,          ,           \        \        4      \        4      \        \        \        ,          \        \        ,          ,           \        4      8X  g   Q h\        ^\        ^,          ,          ^\        ,          ,           ^,           RR7      P                  4       . R)O8X  g   Q h\        ^\        ^,          ,          ^\        ,          ,           ^,           RR7      P                  4       . R)O8X  g   Q h\        ^\        ^,          ,          ^\        ,          ,           ^,           RR7      P                  4       . R*O8X  g   Q h\        \         R 4       \        ^\        ^,          ,          ^,          \        \#        ^^4      ,          ,           ^,           RR7      P                  4       \#        ^^4      \#        ^^4      ^.8X  g   Q h\%        \        ^\        ^,          ,          ^,          \        \#        ^^4      ,          ,           ^,           RR7      P                  4       . R+O4      '       g   Q h\        R\        ^,          ,          R\        ,          ,           ^,           RR7      P                  4       . R)O8X  g   Q h\        R\        ^,          ,          R\        ,          ,           ^,           RR7      P                  4       . R)O8X  g   Q h\        R\        ^,          ,          R\        ,          ,           ^,           RR7      P                  4       . R*O8X  g   Q h\        \         R 4       \        R\        ^,          ,          R \        ,          ,           ^,           RR7      P                  4       \#        ^^
4      \#        ^^
4      ^.8X  g   Q h\        R\        ^,          ,          R \        ,          ,           ^,           RR7      P                  4       . R,O8X  g   Q h\        R-^R.^R/^/\        \        4      \        \        ^,          \        ,          ^\        ,          \        ^,          ,          ,           ^\        ,          \        ,          ,           \        \        4      8X  g   Q h\        \        ^,          ^,           \&        R!7      P)                  4       \*        P,                  ! \&        4      8X  g   Q h^\        ^,          ,          \        ^,          ,
          \        ^,          ,           \        ^,          ,
          R",           p \        V \        R#R$R%7      \        ^\        ^,          ,          \        ^,          ,
          \        ^,          ,           \        ^,          ,
          ^,           \        R#R$R%7      8X  g   Q h\        V \        R#R&R%7      \        ^\        ^,          ,          R'\        ^,          ,          ,           \        ^,          ,           R'\        ^,          ,          ,           ^,           \        R#R&R%7      8X  g   Q h^
^d,          p\        R0\        VR&R%7      P                  4       V^,
          8X  g   Q h\/        \        \        ^,          \        ,           R,           4      P)                  4       \0        4      '       g   Q h\/        \        \        ^,          \        ,           \&        ,           R,           4      P)                  4       \2        4      '       g   Q hR(# )1c                  B    \        \        ^,           \        \        4      # r   r   r   r   r   r   r   "test_Poly__new__.<locals>.<lambda>p  s    DQ1$5r   c                  l    \        \        \        ,           \        \        \        \        ,          R 7      # r   r   r   r   rO   r   r   r   r   r  r      DQ1RU$Cr   c                  l    \        \        \        ,           \        \        \        \        ,          R 7      # r   r  r   r   r   r   r  s  r  r   c                  .    \        \        \        R R7      # )T)	symmetricr  r   r   r   r   r  u  s    QT :r   c                  F    \        \        ^,           \        ^\        R7      # )   )r   r   r   r   rP   r   r   r   r   r  v  s    QUAq Dr   c                  F    \        \        ^,           \        \        RR7      # )r  T)r   gaussianr   r   rO   r   r   r   r   r  x  s    QUAb4 Hr   c                  >    \        \        ^,           \        ^RR7      # )r  T)r   r  r  r   r   r   r   r  y  s    QUAq4 Hr   c                  Z    \        \        ^,           \        \        \        ^4      .R7      # )r  r   r   )r   r   rO   rr   r   r   r   r   r  {  s    QUAbT!WI Nr   c                  R    \        \        ^,           \        ^\        ^4      .R7      # )r  r   r   )r   r   rr   r   r   r   r   r  |  s    QUAqT!WI Nr   c                  F    \        \        ^,           \        \        RR7      # )r  Tr  r  r   r   r   r   r  ~  s    QUAbD Ir   c                  >    \        \        ^,           \        ^RR7      # )r  Tr  r  r   r   r   r   r    s    QUAqD Ir   c                  F    \        \        ^,           \        \        RR7      # )r  Tr   greedyr  r   r   r   r   r    s    QUAb Fr   c                  F    \        \        ^,           \        \        RR7      # )r  Tr   rM   r  r   r   r   r   r    s    QUAb Er   c                  F    \        \        ^,           \        \        RR7      # )r  Fr!  r  r   r   r   r   r    s    QUAb Gr   c                  F    \        \        ^,           \        \        RR7      # )r  Fr$  r  r   r   r   r   r    s    QUAb Fr   c                  >    \        \        ^,           \        ^RR7      # )r   rX   )r   orderr  r   r   r   r   r    s    QUAq(Pr   c                  <    \        \        ^,           \        RR7      # )r   rX   r(  r  r   r   r   r   r    s    QUAW(Er   c                       \        ^^^ ^/4      # r   r   r   r   r   r   r    s    T1aA,%7r   c                      \        ^^.4      # r  r,  r   r   r   r   r    s    T1a&\r   c                      \        R4      # )r  r  r   r,  r   r   r   r   r    s    T&\r   c                      \        ^4      # r   r,  r   r   r   r   r        T!Wr   zx-xrO   r   rP   rS         @       @r   c                      \        ^\        ^,          ,          ^,          \        \        ^^4      ,          ,           ^,           RR7      # )r   rO   r   )r   r   rg   r   r   r   r   r    s-    4!Q$q1Xa^3C(Ca(GPT#Ur   c                  r    \        R \        ^,          ,          R\        ,          ,           ^,           RR7      # )@ @rO   r   r  r   r   r   r   r    s!    4AqD3q5(81(<T#Jr   r7  r8  r   i    Tr   r  F   N)r   r  r   )r3  r4  r   )g333333?g?r   )r7  r8  r   r0  r   r  r   r   )r{   rE   rI   NotImplementedErrorrD   r   r   r   r   r   iterr   r   r   r   
all_coeffsrG   rg   r   re   
get_domainrP   r   r   rU   rV   )r   Ns     r   test_Poly__new__rB  o  s   
?56
?CD
?CD
;:;
;DE
;HI
;HI
;NO
;NO
;IJ
;IJ
;FG
;EF
;GH
;FG
 PQ
 EF
78
12
12
_-;$q!*$$$	!Q$1qAAq!Q"A&!+++aAY#q(((Aq	1"""Aq	1"""RAqA66aAY199;!#333QqS1Q3Y1%q)T!A#!)Q-????!Q$1q .99;yHHH!Q$1q .99;yHHH!Q$1q .99;NNN
>UV	!Q$q1Xa^##a'66@jlxPQST~W_`acdWeghFij j jQq!tVAX(1a.((1,T:EEGZ Z Z Z AqD3q5 1$T2==?9LLLAqD3q5 1$T2==?9LLLAqD3q51T++5:<?K K K >JKAqD3q5 1$T2==?HRQSDTV^_aceVfhiCjjjjAqD3q5 1$T2==??RRRFAvq11a8QT!Vac!Q$h1Q&1-. . . 1qA&113r7I7I!7LLLL	!Q$A1q1u$u,A1et4Qq!tVad]QT!AE)A-q%	   1eu5Qq!tVeAqDj 1a4'%A+591e	-- - - 	CAAqE2::<AEEEd1a4!8c>*557CCCCd1a4!8a<#-.99;\JJJJr   c                      \        \        ^,          ^,           4      P                  \        ^,          ^,           \        38X  g   Q hR# r  N)r   r   argsr   r   r   test_Poly__argsrF    s.    1q>1a4!8Q-///r   c                     \        \        \        ,
          \        \        ,
          ,          \        4      P                  \        38X  g   Q h\        \        \        ,
          \        \        ,
          ,          \        4      P                  \        38X  g   Q h\        \        \        ,
          \        \        ,
          ,          \        4      P                  \        38X  g   Q h\        \        \        ,
          \        \        ,
          ,          \        \        4      P                  \        \        38X  g   Q h\        \        \        ,
          \        \        ,
          ,          \        \        4      P                  \        \        38X  g   Q h\        \        \        ,
          \        \        ,
          ,          \        \        \        4      P                  \        \        \        38X  g   Q h\        \        \        ,
          \        \        ,
          ,          \        \        \        4      P                  \        \        \        38X  g   Q h\        \        \        ,
          \        \        ,
          ,          \        \        \        4      P                  \        \        \        38X  g   Q h\        \        \        ,
          \        \        ,
          ,          4      P                  \        \        \        38X  g   Q h\        \        \        ,
          \        \        ,
          ,          R R7      P                  \        \        \        38X  g   Q h\        \        \        ,
          \        \        ,
          ,          RR7      P                  \        \        \        38X  g   Q h\        \        \        ,
          \        \        ,
          ,          RR7      P                  \        \        \        38X  g   Q h\        \        \        ,
          \        \        ,
          ,          \        \        \        RR7      P                  \        \        \        38X  g   Q h\        \        \        ,
          \        \        ,
          ,          RR7      P                  \        \        \        38X  g   Q h\        \        \        ,
          \        \        ,
          ,          RR7      P                  \        \        \        38X  g   Q h\        \        \        ,
          \        \        ,
          ,          RR7      P                  \        \        \        38X  g   Q h\        \        \        ,
          \        \        ,
          ,          \        R7      P                  \        \        \        38X  g   Q h\        \        \        ,
          \        \        ,
          ,          \        R7      P                  \        \        \        38X  g   Q h\        \        \        ,
          \        \        ,
          ,          \        R7      P                  \        \        \        38X  g   Q h\        \        \        ,
          \        \        ,
          ,          \        \        \        RR7      P                  \        \        \        38X  g   Q h\        \        \        ,
          \        \        ,
          ,          RRR	7      P                  \        \        \        38X  g   Q h\        \        \        ,
          \        \        ,
          ,          RR
R	7      P                  \        \        \        38X  g   Q hR# )z	x > p > q)sortz	p > x > qz	p > q > xr   wrtr   r   zq > x)rJ  rH  zp > xN)r   r   r   r   r   r   r   r   test_Poly__gensrK    s   QQ#((QD000QQ#((QD000QQ#((QD000QQA&++1v555QQA&++1v555QQAq)..1a);;;QQAq)..1a);;;QQAq)..1a);;;QQ %%!Q222QQk277Aq!9DDDQQk277Aq!9DDDQQk277Aq!9DDDQQAq{;@@Q1IMMMQQS)..1a);;;QQS)..1a);;;QQS)..1a);;;QQQ',,Aq	999QQQ',,Aq	999QQQ',,Aq	999QQAqc277Aq!9DDDQQSw7<<Aq	IIIQQSw7<<Aq	IIIr   c                      \        \        4      P                  \        ^ \        \        R7      8X  g   Q h\        \        ^,          4      P                  \        ^ \        \        R7      8X  g   Q hR# )r   r   N)r   r   zerorO   rP   r   r   r   test_Poly_zerorN    sD    7<<41R0000!9>>T!Qr2222r   c                      \        \        4      P                  \        ^\        \        R7      8X  g   Q h\        \        ^,          4      P                  \        ^\        \        R7      8X  g   Q hR# r  )r   r   onerO   rP   r   r   r   test_Poly_onerQ    sD    7;;$q!B////!9==DAb1111r   c            	      %   \        \        R  4       \        ^4      p \        \        \        ^R7      P                  \        \        \        ^R7      4      R,          \        V ! ^4      .. .V 4      \        V ! ^4      V ! ^ 4      ..V 4      38X  g   Q h\        \        R 4       \        \        R 4       \        \        R 4       \        \        ^,           \        4      P                  \        \        ^,           \        4      4      R,          \        \        ^4      \        ^4      .\        4      \        \        ^4      \        ^4      .\        4      38X  g   Q h\        \        ^,           \        RR7      P                  \        \        ^,           \        4      4      R,          \        \        ^4      \        ^4      .\        4      \        \        ^4      \        ^4      .\        4      38X  g   Q h\        \        ^,           \        4      P                  \        \        ^,           \        RR7      4      R,          \        \        ^4      \        ^4      .\        4      \        \        ^4      \        ^4      .\        4      38X  g   Q h\        \        ^,           \        4      P                  \        \        ^,           \        \        4      4      R,          \        \        ^4      .\        ^4      ..\        4      \        \        ^4      .\        ^4      ..\        4      38X  g   Q h\        \        ^,           \        RR7      P                  \        \        ^,           \        \        4      4      R,          \        \        ^4      .\        ^4      ..\        4      \        \        ^4      .\        ^4      ..\        4      38X  g   Q h\        \        ^,           \        4      P                  \        \        ^,           \        \        RR7      4      R,          \        \        ^4      .\        ^4      ..\        4      \        \        ^4      .\        ^4      ..\        4      38X  g   Q h\        \        ^,           \        \        4      P                  \        \        ^,           \        4      4      R,          \        \        ^4      .\        ^4      ..\        4      \        \        ^4      .\        ^4      ..\        4      38X  g   Q h\        \        ^,           \        \        RR7      P                  \        \        ^,           \        4      4      R,          \        \        ^4      .\        ^4      ..\        4      \        \        ^4      .\        ^4      ..\        4      38X  g   Q h\        \        ^,           \        \        4      P                  \        \        ^,           \        RR7      4      R,          \        \        ^4      .\        ^4      ..\        4      \        \        ^4      .\        ^4      ..\        4      38X  g   Q h\        \        ^,           \        \        4      P                  \        \        ^,           \        \        4      4      R,          \        \        ^4      .\        ^4      ..\        4      \        \        ^4      .\        ^4      ..\        4      38X  g   Q h\        \        ^,           \        \        RR7      P                  \        \        ^,           \        \        4      4      R,          \        \        ^4      .\        ^4      ..\        4      \        \        ^4      .\        ^4      ..\        4      38X  g   Q h\        \        ^,           \        \        4      P                  \        \        ^,           \        \        RR7      4      R,          \        \        ^4      .\        ^4      ..\        4      \        \        ^4      .\        ^4      ..\        4      38X  g   Q h\        \        ^,           \        4      P                  \        \        ^,           \        \        4      4      R,          \        \        ^4      \        ^4      ..\        4      \        \        ^4      \        ^4      ..\        4      38X  g   Q h\        \        ^,           \        RR7      P                  \        \        ^,           \        \        4      4      R,          \        \        ^4      \        ^4      ..\        4      \        \        ^4      \        ^4      ..\        4      38X  g   Q h\        \        ^,           \        4      P                  \        \        ^,           \        \        RR7      4      R,          \        \        ^4      \        ^4      ..\        4      \        \        ^4      \        ^4      ..\        4      38X  g   Q h\        \        ^,           \        \        4      P                  \        \        ^,           \        4      4      R,          \        \        ^4      \        ^4      ..\        4      \        \        ^4      \        ^4      ..\        4      38X  g   Q h\        \        ^,           \        \        RR7      P                  \        \        ^,           \        4      4      R,          \        \        ^4      \        ^4      ..\        4      \        \        ^4      \        ^4      ..\        4      38X  g   Q h\        \        ^,           \        \        4      P                  \        \        ^,           \        RR7      4      R,          \        \        ^4      \        ^4      ..\        4      \        \        ^4      \        ^4      ..\        4      38X  g   Q h\        \        ^,           \        \        4      P                  \        \        ^,           \        \        4      4      R,          \        \        ^4      .\        ^4      ..\        4      \        \        ^4      .\        ^4      ..\        4      38X  g   Q h\        \        ^,           \        \        RR7      P                  \        \        ^,           \        \        4      4      R,          \        \        ^4      .\        ^4      ..\        4      \        \        ^4      .\        ^4      ..\        4      38X  g   Q h\        \        ^,           \        \        4      P                  \        \        ^,           \        \        RR7      4      R,          \        \        ^4      .\        ^4      ..\        4      \        \        ^4      .\        ^4      ..\        4      38X  g   Q h\        \        ^,           \        \        4      P                  \        \        ^,           \        \        4      4      R,          \        \        ^4      \        ^4      ..\        4      \        \        ^4      \        ^4      ..\        4      38X  g   Q h\        \        ^,           \        \        RR7      P                  \        \        ^,           \        \        4      4      R,          \        \        ^4      \        ^4      ..\        4      \        \        ^4      \        ^4      ..\        4      38X  g   Q h\        \        ^,           \        \        4      P                  \        \        ^,           \        \        RR7      4      R,          \        \        ^4      \        ^4      ..\        4      \        \        ^4      \        ^4      ..\        4      38X  g   Q h\        \        ^,          \        ,           \        \        R7      P                  \        \        ^,          \        ^4      ,           \        RR	7      4      \        \        ^,          \        ,           \        R
R7      \        \        ^,          \        ^4      ,           \        R
R7      38X  g   Q h\        R\        4      w  rp\        \        \        ,          \        RR7      P                  \        \        \         ,          \        ,          \        RR7      4      R,          \        W!! ^ 4      .VP#                  4       4      \        W#,          V! ^ 4      .VP#                  4       4      38X  g   Q h\        \        \        ,          \        RR7      P                  \        \        \         ,          \        ,          \        RR7      4      R,          \        W!! ^ 4      .VP#                  4       4      \        W#,          V! ^ 4      .VP#                  4       4      38X  g   Q h\        \$        R 4       \        \&        ^,          \&        ^,          ,           \        ,           \&        RR7      p\        \&        ^,          \&        ^,          ,           \        ,           \&        RR7      pVP                  V4      R,          VP(                  VP(                  38X  g   Q hR# )c                  F    \        \        4      P                  \        4      # r   r   r   _unifyr   r   r   r   r   "test_Poly__unify.<locals>.<lambda>  s    d1gnnQ&7r   r   :r  NNc                  t    \        \        \        ^R7      P                  \        \        \        ^R7      4      # r   r   rT  r   r   r   r   rV    s"    d1a&;&B&B41VWCX&Yr   c                  z    \        \        \        \        4      P                  \        \        \        ^R7      4      # rX  )r   r   r   rU  r   r   r   r   rV     s     d1am&:&:41a;P&Qr   c                  z    \        \        \        ^R7      P                  \        \        \        \        4      4      # rX  rT  r   r   r   r   rV    s     d1a&;&B&B41a=&Qr   rP   r   Tr   zQQ<sqrt(2) + I>za,bZZ[a]zZZ(a,b)zZZ(a)c                      \        \        \        ^,          \        ^,          \        ,          ,           \        RR7      RR7      # )r  TrL   ZZ(x)r   )r   r   r   r   r   r   r   r   rV  F  s%    4QTAqDF]AT(JSZ#[r   zQQ(x)zQQ[x]N)r{   rB   rN   r   r   rU  r   rK   rO   rP   re   rQ   unifyrr   rM   r   r   	to_domainrG   r   r   )r   FABr   r   s         r   test_Poly__unifyrc    sM   
78	AB1a ''Q1(=>rBbeWbM2beRU^$4b 9G; ; ; ;
YZ
QR
QRAq>  a!eQ04	beRU^R	 #r!ubenb"9:; ; ;Aq&--d1q5!n=bA	beRU^R	 #r!ubenb"9:; ; ;Aq>  a!eQt!<=bA	beRU^R	 #r!ubenb"9:; ; ; Aq>  a!eQ!23B7	r!ug1w	$cBqE7RUG*<b&ABC C CAq&--d1q5!Q.?@D	r!ug1w	$cBqE7RUG*<b&ABC C CAq>  a!eQ$!?@D	r!ug1w	$cBqE7RUG*<b&ABC C C Aq!##DQN3B7	r!ug1w	$cBqE7RUG*<b&ABC C CAq!D)00a!eQ@D	r!ug1w	$cBqE7RUG*<b&ABC C CAq!##DQ$$?@D	r!ug1w	$cBqE7RUG*<b&ABC C C Aq!##DQ1$56r:	r!ug1w	$cBqE7RUG*<b&ABC C CAq!D)00a!eQ1BCBG	r!ug1w	$cBqE7RUG*<b&ABC C CAq!##DQ1T$BCBG	r!ug1w	$cBqE7RUG*<b&ABC C C Aq>  a!eQ!23B7	r!ubenr	"C"Q%A(8"$=>? ? ?Aq&--d1q5!Q.?@D	r!ubenr	"C"Q%A(8"$=>? ? ?Aq>  a!eQ$!?@D	r!ubenr	"C"Q%A(8"$=>? ? ? Aq!##DQN3B7	r!ubenr	"C"Q%A(8"$=>? ? ?Aq!D)00a!eQ@D	r!ubenr	"C"Q%A(8"$=>? ? ?Aq!##DQ$$?@D	r!ubenr	"C"Q%A(8"$=>? ? ? Aq!##DQ1$56r:	r!ug1w	$cBqE7RUG*<b&ABC C CAq!D)00a!eQ1BCBG	r!ug1w	$cBqE7RUG*<b&ABC C CAq!##DQ1T$BCBG	r!ug1w	$cBqE7RUG*<b&ABC C C Aq!##DQ1$56r:	r!ubenr	"C"Q%A(8"$=>? ? ?Aq!D)00a!eQ1BCBG	r!ubenr	"C"Q%A(8"$=>? ? ?Aq!##DQ1T$BCBG	r!ubenr	"C"Q%A(8"$=>? ? ? 1q!D)//QTDG^QRV0WX!Q$(A&78$q!td1g~qYj:klm m m E2GA!!Qw'..tAaCE1Y/OPQST	a1Y	&QS!A$K(GHI I I !Qw'..tAaCE1Y/OPQST	a1Y	&QS!A$K(GHI I I >[\QTAaCZ!^Qw/AQTAaCZ!^Qw/A88A;r?quuaeen,,,r   c                     \        \        ^,          ^,           4      P                  \        08X  g   Q h\        \        ^,          \        \        ,          ,           4      P                  \        \        \        08X  g   Q h\        \        ^,          \        \        ,          ,           \        4      P                  \        \        \        08X  g   Q h\        \        ^,          \        \        \        ,          4      ,           4      P                  \        \        \        08X  g   Q h\        \        ^,          \        \        \        ,          4      ,           \        4      P                  \        \        \        08X  g   Q h\        \        ^,          \        \        \        ,          4      ,           \        \        R7      P                  \        \        \        08X  g   Q h\        ^\        ,           \        ^,          ,           \        \        \        4      P                  \        08X  g   Q h\        \        \        \        4      ,           \        4      P                  \        \        08X  g   Q hR# r  r   N)r   r   free_symbolsr   r   rt   rT   r   r   r   test_Poly_free_symbolsrg  N  sc   1q>&&1#---1qs
((Q1I5551qs
A++1ay8881s1Q3x --!Q:::1s1Q3x#00Q1I===1s1Q3x2.;;1ayHHHA1aA&33s:::CF
A++1v555r   c                     \        \        ^,          ^,           4      P                  \        4       8X  g   Q h\        \        ^,          \        \
        ,          ,           4      P                  \        4       8X  g   Q h\        \        ^,          \        \
        ,          ,           \        4      P                  \        \
        08X  g   Q h\        \        ^,          \        \        \
        ,          4      ,           4      P                  \        4       8X  g   Q h\        \        ^,          \        \        \
        ,          4      ,           \        4      P                  \        \
        08X  g   Q h\        \        ^,          \        \        \
        ,          4      ,           \        \        R7      P                  \        \
        08X  g   Q hR# re  )r   r   rf  setr   r   rt   rT   r   r   r   test_PurePoly_free_symbolsrj  Y  s   AqD1H**ce333AqD1Q3J,,555AqD1Q3J"//Aq6999AqD3qs8O$11SU:::AqD3qs8OQ'44A>>>AqD3qs8OQr2??Aq6IIIr   c                  l   \        \        \        4      \        \        \        4      8H  R J g   Q h\        \        \        \        R7      \        \        \        4      8H  RJ g   Q h\        \        \        4      \        \        \        \        R7      8H  RJ g   Q h\        \        \        \        \        ,          R7      \        \        \        4      8H  RJ g   Q h\        \        \        4      \        \        \        \        \        ,          R7      8H  RJ g   Q h\        \        \
        ,          \        \
        4      \        \        \        4      8H  RJ g   Q h\        \        \        \
        4      \        \        \        4      8H  RJ g   Q h\        \        \        4      \        \        \        \
        4      8H  RJ g   Q h\        \        ^,          ^,           \        4      \        \
        ^,          ^,           \
        4      8H  RJ g   Q h\        \
        ^,          ^,           \
        4      \        \        ^,          ^,           \        4      8H  RJ g   Q h\        \        \        \        R7      p \        \        \        \        R7      pV P                  V4      RJ g   Q hV P                  V4      R J g   Q hV P                  VR R7      RJ g   Q hV P                  VR R7      R J g   Q h\        R4      p\        V^,          \        ^,          ,           \        ^,          ,          \        ^,          \        ,          ,
          \        RR7      p \        V^,          \        ^,          ,           \        ^,          ,          \        ^,          \        ,          ,
          \        RR7      pW8H  RJ g   Q hR# )Tr   Fr   t0zQQ[x,t0]zZZ(x,t0)N)
r   r   rP   rO   r   r   r   nerm   r   )r   r   rl  s      r   test_Poly__eq__rn  b  so   AJ$q!*$---Ab!T!QZ/E999AJ$q!B//E999Abe$Q
2u<<<AJ$q!BqE22u<<<1aOtAqz)e333AqMT!QZ'E111AJ$q!Q-'E111A1adQh!22u<<<A1adQh!22u<<<Q"AQ"A447e447d??44$45(((44$44'''	B	r!tad{AqD 1a46)1Z	@A	r!tad{AqD 1a46)1Z	@AFur   c                     \        \        \        4      \        \        \        4      8H  R J g   Q h\        \        \        \        R7      \        \        \        4      8H  R J g   Q h\        \        \        4      \        \        \        \        R7      8H  R J g   Q h\        \        \        \        \        ,          R7      \        \        \        4      8H  R J g   Q h\        \        \        4      \        \        \        \        \        ,          R7      8H  R J g   Q h\        \        \
        ,          \        \
        4      \        \        \        4      8H  RJ g   Q h\        \        \        \
        4      \        \        \        4      8H  RJ g   Q h\        \        \        4      \        \        \        \
        4      8H  RJ g   Q h\        \        ^,          ^,           \        4      \        \
        ^,          ^,           \
        4      8H  R J g   Q h\        \
        ^,          ^,           \
        4      \        \        ^,          ^,           \        4      8H  R J g   Q h\        \        \        \        R7      p \        \        \        \        R7      pV P                  V4      R J g   Q hV P                  V4      RJ g   Q hV P                  VR R7      RJ g   Q hV P                  VR R7      R J g   Q h\        \        \        \        R7      p \        \
        \
        \        R7      pV P                  V4      R J g   Q hV P                  V4      RJ g   Q hV P                  VR R7      RJ g   Q hV P                  VR R7      R J g   Q hR# )Tr   Fr   N)r   r   rP   rO   r   r   r   rm  r   r   s     r   test_PurePoly__eq__rq    su   QNhq!n,555Q"%!Q7D@@@QNhq!B77D@@@Q"Q%(HQN:tCCCQNhq!BqE::tCCCQqS!Q8Aq>1e;;;Q1!Q/E999QNhq!Q//E999QTAXq!XadQh%::tCCCQTAXq!XadQh%::tCCCAb!AAb!A447d??447e44$45(((44$44'''Ab!AAb!A447d??447e44$45(((44$44'''r   c                      \        \        \        \        ^,          ^,           4      4      \        4      RJ g   Q h\        \        \        \        ^,          ^,           4      4      \        4      RJ g   Q hR# )r  TN)r   r   r   r   r   r   r   test_PurePoly_Polyrs    sO    htAqD1H~.9TAAAd8AqD1H-.5===r   c                  ~   \        ^\        ,          4      P                  4       \        8X  g   Q h\        ^\        ,          RR7      P                  4       \        8X  g   Q h\        ^\        ,          RR7      P                  4       \        8X  g   Q h\        \        ^,          4      P                  4       \        8X  g   Q h\        \        R 4       \        \        ^,          RR7      P                  4       \        8X  g   Q h\        \        R\        ,          4      P                  4       \        4      '       g   Q hR# )r  rO   r   rP   c                  2    \        \        ^,          RR7      # )r  rO   r   r  r   r   r   r   &test_Poly_get_domain.<locals>.<lambda>  s    4!D#9r   皙?N)	r   r   r@  rO   rP   r{   rG   r   rU   r   r   r   test_Poly_get_domainrx    s    !9!R'''!D!,,."444!D!,,."444!9!R'''
>9:!D!,,."444d3q5k,,.	::::r   c                  |   \        ^\        ,          ^,           4      P                  \        4      \        ^\        ,          ^,           4      8X  g   Q h\        ^\        ,          ^,           4      P                  R4      \        ^\        ,          ^,           4      8X  g   Q h\        ^\        ,          ^,           4      P                  \        4      \        ^\        ,          ^,           RR7      8X  g   Q h\        ^\        ,          ^,           4      P                  R4      \        ^\        ,          ^,           RR7      8X  g   Q h\        \        ^^
4      \        ,          \        ^^
4      ,           4      P                  R4      \        R\        ,          R,           4      8X  g   Q h\        R\        ,          R,           4      P                  R4      \        \        ^^
4      \        ,          \        ^^
4      ,           4      8X  g   Q h\        \        R 4       \        \        R 4       \        \        R	 4       R
# )r  rO   rP   r   rS   rw  皙?c                  b    \        \        ^,          ^,           4      P                  \        4      # r.  )r   r   
set_domainrO   r   r   r   r   &test_Poly_set_domain.<locals>.<lambda>  s    4!a=#;#;B#?r   c                  X    \        \        ^,           ^R7      P                  \        4      # )r   r   )r   r   r|  rP   r   r   r   r   r}    s    4Aq#9#D#DR#Hr   c                      \        \        \        ,          \        \        4      P                  \        \        ,          4      # r   )r   r   r   r|  rO   r   r   r   r   r}    s    D1aO$>$>r!u$Er   N)	r   r   r|  rO   rP   rg   r{   rG   rE   r   r   r   test_Poly_set_domainr    ss   !a=##B'4!a=888!a=##D)T!A#']:::!a=##B'4!a+EEEE!a=##D)T!A#'$-GGGGB!HQO34??EcRSeVYkIZZZZA''-hq"oa6G(STVX/6Y1ZZZZ
>?@
>HI
?EFr   c                      \        \        ^,          ^,           ^R7      P                  4       ^8X  g   Q h\        \        R 4       R# )r  r   c                  X    \        \        ^,          ^,           4      P                  4       # r.  )r   r   get_modulusr   r   r   r   'test_Poly_get_modulus.<locals>.<lambda>  s    DAN$>$>$@r   N)r   r   r  r{   rF   r   r   r   test_Poly_get_modulusr    s3    1q!$002a777
?@Ar   c                     \        \        ^,          ^,           ^R7      P                  ^4      \        \        ^,          ^,           ^R7      8X  g   Q h\        \        ^,          ^,           ^R7      P                  ^4      \        \        ^,          ^,           ^R7      8X  g   Q h\        \        ^,          ^,           4      P                  ^4      \        \        ^,          ^,           ^R7      8X  g   Q h\        \        R 4       R# )r  r   c                  Z    \        \        ^,          ^,           4      P                  ^4      # r.  )r   r   set_modulusr   r   r   r   'test_Poly_set_modulus.<locals>.<lambda>  s    4!a=#<#<Q#?r   N)r   r   r  r{   rG   r   r   r   test_Poly_set_modulusr    s    	1q!([^tAqD1Ha/HI I I	1q!([^tAqD1Ha/HI I I 1q>%%a(DA1,EEEE
>?@r   c                      \        \        ^,           4      P                  ^4      \        \        ^,           4      8X  g   Q hR# r   N)r   r   
add_groundr   r   r   test_Poly_add_groundr    +    A;!!!$QU333r   c                      \        \        ^,           4      P                  ^4      \        \        ^,
          4      8X  g   Q hR# r  )r   r   
sub_groundr   r   r   test_Poly_sub_groundr    r  r   c                      \        \        ^,           4      P                  ^4      \        ^\        ,          ^,           4      8X  g   Q hR# r  )r   r   
mul_groundr   r   r   test_Poly_mul_groundr    s/    A;!!!$QqS1W555r   c                  "   \        ^\        ,          ^,           4      P                  ^4      \        \        ^,           4      8X  g   Q h\        ^\        ,          ^,           4      P                  ^4      \        \        ^,           4      8X  g   Q hR# rD  )r   r   
quo_groundr   r   r   test_Poly_quo_groundr    s\    !a=##A&$q1u+555!a=##A&$q1u+555r   c                      \        ^\        ,          ^,           4      P                  ^4      \        \        ^,           4      8X  g   Q h\        \        R 4       R# )r  c                  Z    \        ^\        ,          ^,           4      P                  ^4      # r.  )r   r   exquo_groundr   r   r   r   (test_Poly_exquo_ground.<locals>.<lambda>  s    QqS1W(B(B1(Er   N)r   r   r  r{   r?   r   r   r   test_Poly_exquo_groundr    s;    !a=%%a(DQK777
 EFr   c                      \        \        ) ^,           \        4      P                  4       \        \        \        ) ^,           \        4      4      u;8X  d"   \        \        ^,           \        4      8X  g   Q h Q hR# r  )r   r   r   r   r   r   test_Poly_absr    sK    Q? CaR!VQ$8JDQNJJJJJr   c                      \        \        ) ^,           \        4      P                  4       \        \        ) ^,           \        4      ) u;8X  d"   \        \        ^,
          \        4      8X  g   Q h Q hR# r  )r   r   negr   r   r   test_Poly_negr    sI    Q? T1"q&!_$4FQUAFFFFFr   c                  :   \        ^ \        4      P                  \        ^ \        4      4      \        ^ \        4      8X  g   Q h\        ^ \        4      \        ^ \        4      ,           \        ^ \        4      8X  g   Q h\        ^\        4      P                  \        ^ \        4      4      \        ^\        4      8X  g   Q h\        ^\        \        4      \        ^ \        4      ,           \        ^\        \        4      8X  g   Q h\        ^ \        4      P                  \        ^\        \        4      4      \        ^\        \        4      8X  g   Q h\        ^ \        \        4      \        ^\        \        4      ,           \        ^\        \        4      8X  g   Q h\        ^\        4      \        ,           \        \        ^,           \        4      8X  g   Q h\	        4       ;_uu_ 4        \        ^\        4      \        \        4      ,            RRR4       \        \        \        4      ^,           \        \        ^,           \        4      8X  g   Q h^\        \        \        4      ,           \        \        ^,           \        4      8X  g   Q hR#   + '       g   i     L; ir   N)r   r   addr   r|   rt   r   r   r   test_Poly_addr    s   1:>>$q!*%a3331:Q
"d1aj0001:>>$q!*%a3331a=41:%aA6661:>>$q!Q-(DAqM9991a=41a=(DAqM9991:>T!a%^+++		!	!Q
SV 
" 1:>T!a%^+++tAqz>T!a%^+++	 
"	!   %%J

J	c                  :   \        ^ \        4      P                  \        ^ \        4      4      \        ^ \        4      8X  g   Q h\        ^ \        4      \        ^ \        4      ,
          \        ^ \        4      8X  g   Q h\        ^\        4      P                  \        ^ \        4      4      \        ^\        4      8X  g   Q h\        ^\        \        4      \        ^ \        4      ,
          \        ^\        \        4      8X  g   Q h\        ^ \        4      P                  \        ^\        \        4      4      \        R\        \        4      8X  g   Q h\        ^ \        \        4      \        ^\        \        4      ,
          \        R\        \        4      8X  g   Q h\        ^\        4      \        ,
          \        ^\        ,
          \        4      8X  g   Q h\	        4       ;_uu_ 4        \        ^\        4      \        \        4      ,
           RRR4       \        \        \        4      ^,
          \        \        ^,
          \        4      8X  g   Q h^\        \        \        4      ,
          \        ^\        ,
          \        4      8X  g   Q hR#   + '       g   i     L; i)r   Nr   )r   r   subr   r|   rt   r   r   r   test_Poly_subr    s   1:>>$q!*%a3331:Q
"d1aj0001:>>$q!*%a3331a=41:%aA6661:>>$q!Q-(DQN:::1a=41a=(DQN:::1:>T!a%^+++		!	!Q
SV 
" 1:>T!a%^+++tAqz>T!a%^+++	 
"	!r  c                  ,   \        ^ \        4      P                  \        ^ \        4      4      \        ^ \        4      8X  g   Q h\        ^ \        4      \        ^ \        4      ,          \        ^ \        4      8X  g   Q h\        ^\        4      P                  \        ^\        4      4      \        ^\        4      8X  g   Q h\        ^\        \        4      \        ^\        4      ,          \        ^\        \        4      8X  g   Q h\        ^\        4      P                  \        ^\        \        4      4      \        ^\        \        4      8X  g   Q h\        ^\        \        4      \        ^\        \        4      ,          \        ^\        \        4      8X  g   Q h\        ^\        4      \        ,          \        \        \        4      8X  g   Q h\	        4       ;_uu_ 4        \        ^\        4      \        \        4      ,           RRR4       \        \        \        4      ^,          \        ^\        ,          \        4      8X  g   Q h^\        \        \        4      ,          \        ^\        ,          \        4      8X  g   Q hR#   + '       g   i     L; ir  )r   r   mulr   r|   rt   r   r   r   test_Poly_mulr    s   1:>>$q!*%a3331:Q
"d1aj0001:>>$q!*%a3331a=41:%aA6661:>>$q!Q-(DAqM9991a=41a=(DAqM9991:>T!QZ'''		!	!Q
SV 
" 1:>T!A#q\)))tAqz>T!A#q\)))	 
"	!s   %JJ	c                  j   \        \        4      \        ,          \        \        ^,          \        RR7      8X  g   Q h\        \        \        4      ,          \        \        ^,          \        RR7      8X  g   Q hR\        \        4      ,          \        R\        ,          \        RR7      8X  g   Q h\        R4      \        \        4      ,          \        R\        ,          \        RR7      8X  g   Q h\        \        4      \        R4      ,          \        R\        ,          \        RR7      8X  g   Q hR# )r  rO   r   N)r   r   rl   r   r   r   test_issue_13079r  )  s    719QT1T2222T!W9QT1T2222d1g:bdAd3333R5a=DAq666671R5=DAq6666r   c                      \        \        \        ,          \        \        4      P                  4       \        \        ^,          \        ^,          ,          \        \        4      8X  g   Q hR# rD  )r   r   r   sqrr   r   r   test_Poly_sqrr  0  s:    !Q? DAadAq$9999r   c                     \        \        \        4      P                  ^
4      \        \        ^
,          \        4      8X  g   Q h\        \        \        4      P                  \        ^
4      4      \        \        ^
,          \        4      8X  g   Q h\        ^\        ,          \        \        4      P                  ^4      \        ^\        ^,          ,          \        \        4      8X  g   Q h\        ^\        ,          \        \        4      P                  \        ^4      4      \        ^\        ^,          ,          \        \        4      8X  g   Q h\        ^\        ,          \        ,          \        \        4      ^,          \        R\        ^,          ,          \        ^,          ,          \        \        4      8X  g   Q h\        \        R 4       \        \        R 4       R# )
   iW  c                  f    \        \        \        ,          ^,           \        \        4      R,          # r   r   r   r   r   r   r   r   r   test_Poly_pow.<locals>.<lambda>=  s    d1Q37Aq1B7r   c                  n    \        \        \        ,          ^,           \        \        4      \        ,          # r   r  r   r   r   r   r  >  s    d1Q37Aq114r   N)r   r   powrf   r   r{   	TypeErrorr   r   r   test_Poly_powr  4  s   1:>>"aeQ///1:>>'"+&$q"ua.888!Q?q!T"QT'1a%8888!Q?wqz*d2ad7Aq.AAAA!Aq!a4AqDAq!#<<<<
978
945r   c                  .   \        \        ^,          4      \        \        4      rT\        ^ \        4      r2\        W4      W#38X  g   Q hW,          V8X  g   Q hW,          V8X  g   Q h\        V \        4      W#38X  g   Q hV \        ,          V8X  g   Q hV \        ,          V8X  g   Q h\        ^ \        4      \        ^\        4      r2\        ^V4      W#38X  g   Q h^V,          V8X  g   Q h^V,          V8X  g   Q h\        \        4      \        \        4      ,          ^8X  g   Q h\        \        ^,          4      \        \        4      ,          \        8X  g   Q h\        \        4      \        \        ^,          4      ,          ^\        ,          8X  g   Q hR# rD  )r   r   divmod)r   r   r   rs       r   test_Poly_divmodr  A  s-   1:tAwqd1ajq!<A6!!!6Q;;5A::!Q<A6!!!6Q;;q5A::1:tAqzq!Q<A6!!!6Q;;q5A::747?a1:d1g"""741:1$$$r   c                  
   \        \        \        ,           \        \        4      \        \        \        ,           \        \        4      8H  R J g   Q h\        \        \        ,           \        4      \        \        \        ,           \        \        4      8H  RJ g   Q h\        \        \        ,           \        \        4      \        \        \        ,           \        4      8H  RJ g   Q h\        \        \        ,           \        4      \        \        \        ,           \        4      8H  R J g   Q h\        \        \        ,           \        4      \        \        \        ,           \        4      8H  R J g   Q h\        \        \        ,           \        \        4      \        \        ,           8H  R J g   Q h\        \        \        ,           \        4      \        \        ,           8H  R J g   Q h\        \        \        ,           \        \        4      \        \        ,           8H  R J g   Q h\        \        \        ,           \        4      \        \        ,           8H  R J g   Q h\        \        \        ,           \        4      \        \        ,           8H  R J g   Q h\        \        \        ,           \        \        4      \        \        \        ,           \        \        4      8g  RJ g   Q h\        \        \        ,           \        4      \        \        \        ,           \        \        4      8g  R J g   Q h\        \        \        ,           \        \        4      \        \        \        ,           \        4      8g  R J g   Q h\        \        \        ,           \        4      \        \        \        ,           \        4      8g  RJ g   Q h\        \        \        ,           \        4      \        \        \        ,           \        4      8g  RJ g   Q h\        \        \        ,           \        \        4      \        \        ,           8g  RJ g   Q h\        \        \        ,           \        4      \        \        ,           8g  RJ g   Q h\        \        \        ,           \        \        4      \        \        ,           8g  RJ g   Q h\        \        \        ,           \        4      \        \        ,           8g  RJ g   Q h\        \        \        ,           \        4      \        \        ,           8g  RJ g   Q h\        \        \        4      \        \        4      8H  RJ g   Q h\        \        \        4      \        \        4      8g  R J g   Q hR# TFN)r   r   r   rt   r   r   r   test_Poly_eq_ner  X  s0   Q1a!eQ!22t;;;QNd1q5!Q//E999Q1a!eQ/E999QNd1q5!n,555QNd1q5!n,555Q1Q&4///QNa!e#,,,Q1Q&4///QNa!e#,,,QNa!e#,,,Q1a!eQ!22u<<<QNd1q5!Q//D888Q1a!eQ/D888QNd1q5!n,666QNd1q5!n,666Q1Q&5000QNa!e#---Q1Q&5000QNa!e#---QNa!e#---AJ#a& U***AJ#a& T)))r   c                      \        \        ^ \        4      4      RJ d   Q h\        \        ^\        4      4      RJ d   Q hR# r   TFN)boolr   r   r   r   r   test_Poly_nonzeror  u  s7    DAJ4'''DAJ5((((r   c                  
   \        ^ \        4      P                  RJ g   Q h\        ^\        4      P                  RJ g   Q h\        ^\        4      P                  RJ g   Q h\        ^\        4      P                  RJ g   Q h\        \        ^,
          \        4      P                  RJ g   Q h\        \        ^,
          ^,          \        4      P                  RJ g   Q h\        \        ^,
          \        4      P
                  RJ g   Q h\        ^\        ,          ^,
          \        4      P
                  RJ g   Q h\        ^\        ,          ^,           \        4      P                  RJ g   Q h\        ^\        ,          ^,           \        4      P                  RJ g   Q h\        ^\        4      P                  RJ g   Q h\        \        \        4      P                  RJ g   Q h\        \        \        ,           \        ,           ^,           4      P                  RJ g   Q h\        \        \        ,          \        ,          ^,           4      P                  RJ g   Q h\        \        \        ,          \        ,           ^,           4      P                  RJ g   Q h\        \        \        ,          \        ,          ^,           4      P                  RJ g   Q h\        \        \        ,          4      P                  RJ g   Q h\        \        \        ,          ^,           4      P                  RJ g   Q h\        \        ^,          \        \        ,          ,           4      P                  RJ g   Q h\        \        ^,          \        \        ,          ,           4      P                  RJ g   Q h\        \        4      P                  RJ g   Q h\        \        \        ,          4      P                  RJ g   Q h\        \        \        ,          4      P                  RJ g   Q h\        \        4      P                  RJ g   Q h\        \        ^,          \        ^,          ,           \        ^
,          ,
          \        ^,          ,           \        ^,          ,
          \        ^,          ,           ^,           4      P                   RJ g   Q h\        \        ^,          \        ^,          ,           \        ^
,          ,
          \        ^,          ,
          \        ^,          ,
          \        ^,          ,           ^,           4      P                   RJ g   Q hR# r  )r   r   is_zerois_oneis_sqfis_monicis_primitive	is_groundr   r   	is_linearis_quadraticis_monomialis_homogeneousis_univariateis_multivariateis_cyclotomicr   r   r   test_Poly_propertiesr  z  s   1:%%%1:&&&1:$$$1:%%%Aq>  D(((Q
A%%...Aq>""d***!a$$---!a((D000!a((E1111:4'''1:5(((A	A((D000!A	?$$---!a!))T111!A	?''5000!9  D(((!a=$$---1qs
**d2221qs
**e3337  D(((!9""e+++!9$$,,,7""e+++	2221$q!t+ad2Q688EO O O	2221$q!t+ad2Q688EN N Nr   c                     \        \        ^,          \        ,           ^,           4      P                  RJ g   Q h\        \        ^,          ^\        ,          ,           ^,           4      P                  RJ g   Q h\        ^\        ,          ^,           ^R7      P                  RJ g   Q h\        ^\        ^,          ,          ^\        ,          ,           ^,           ^R7      P                  RJ g   Q hR# )r  TFr   N)r   r   is_irreducibler   r   r   test_Poly_is_irreducibler    s    1q1,,4441qs
Q..%777!a$33t;;;!Q$1q "-<<EEEr   c                     \        \        ^,           4      P                  \        ^ 4      ^8X  g   Q h\        \        ^,           4      P                  \        \        4      \        \        ^,           4      8X  g   Q h\        \        ^,           4      P                  \        \        4      \        \        ^,           4      8X  g   Q h\        \        \        ,          \        4      P                  \        \        4      \        ^,          8X  g   Q h\        \        \        ,          \        4      P                  \        \        4      \        ^,          8X  g   Q hR# r  )r   r   subsr   r   r   r   test_Poly_subsr    s    A;Aq!Q&&&A;Aq!T!a%[000A;Aq!T!a%[000!Q<Q"ad***!Q<Q"ad***r   c                     \        \        ^,           4      P                  \        4      \        \        ^,           4      8X  g   Q h\        \        ^,           4      P                  \        4      \        \        ^,           4      8X  g   Q h\	        \
        R 4       \        \        ^,           4      P                  \        \        4      \        \        ^,           4      8X  g   Q h\        \        ^,           4      P                  \        \        4      \        \        ^,           4      8X  g   Q h\        \        \        ,           4      P                  \        \        4      \        \        \        ,           4      8X  g   Q h\        \        \        ,           4      P                  \        \        4      \        \        \        ,           \        \        4      8X  g   Q h\        \        \        ,           4      P                  \        \        4      \        \        \        ,           4      8X  g   Q h\        \        \        ,           4      P                  \        \        4      \        \        \        ,           \        \        4      8X  g   Q h\        \        \        ,           4      P                  \        \        4      \        \        \        ,           4      8X  g   Q h\	        \
        R 4       \        \        \        ,           \        4      P                  \        \        4      \        \        \        ,           \        4      8X  g   Q h\        \        \        ,           \        4      P                  \        \        4      \        \        \        ,           \        4      8X  g   Q h\	        \
        R 4       \	        \
        R 4       R# )r   c                  \    \        \        \        ,           4      P                  \        4      # r   )r   r   r   replacer   r   r   r   r   #test_Poly_replace.<locals>.<lambda>  s    DQK$7$7$:r   c                  f    \        \        \        ,           4      P                  \        \        4      # r   r   r   r   r  r   r   r   r   r        DQK$7$71$=r   c                  p    \        \        \        ,           \        4      P                  \        \        4      # r   r  r   r   r   r   r        DQN$:$:1a$@r   c                  p    \        \        \        ,           \        4      P                  \        \        4      # r   r  r   r   r   r   r    r  r   N)r   r   r  r   r{   rF   r   r   r   r   r   test_Poly_replacer    s   A;q!T!a%[000A;q!T!a%[000
?:;A;q!$QU333A;q!$QU333A;q!$QU333A;q!$QUAq(9999A;q!$QU333A;q!$QUAq(9999A;q!$QU333
?=>Aq>!!!Q'4Aq>999Aq>!!!Q'4Aq>999
?@A
?@Ar   c                     \        \        R  4       \        \        \        ,           \        \        4      P                  \        \        4      \        \        \        ,           \        \        4      8X  g   Q h\        \        \        ,           \        \        4      P                  \        \        4      \        \        \        ,           \        \        4      8X  g   Q h\        \        \        ,           \        \        4      P                  \        \        4      \        \        \        ,           \        \        4      8X  g   Q h\        \        \        ,           \        \        4      P                  \        \        4      \        \        \        ,           \        \        4      8X  g   Q h\        \        \        ,           \        \        4      P                  \        R7      \        \        \        ,           \        \        4      8X  g   Q h\        \        \        ,           \        \        4      P                  \        R7      \        \        \        ,           \        \        4      8X  g   Q hR# )c                  f    \        \        \        ,           4      P                  \        \        4      # r   )r   r   r   reorderr   r   r   r   r   #test_Poly_reorder.<locals>.<lambda>  r  r   rI  N)r{   rF   r   r   r   r  r   r   r   test_Poly_reorderr    sM   
?=>Aq!$$Q*d1q5!Q.????Aq!$$Q*d1q5!Q.????Aq!$$Q*d1q5!Q.????Aq!$$Q*d1q5!Q.????Aq!$$$+tAE1a/@@@@Aq!$$$+tAE1a/@@@@r   c                     \        \        ^,          \        \        ^,          ,          ,           \        \        \        4      P	                  \        4      p V P                  4       \        ^,          \        \        ^,          ,          ,           8X  d   V P                  \        \        38X  g   Q h\        \        \        ,          \        ,
          \        \        \        4      P	                  ^4      \        \        \        ,          \        ,
          \        \        4      8X  g   Q h\        \        R 4       \        \        R 4       R# )r  c                      \        \        \        ^,          ,          \        ^,          ,           \        \        4      P                  \        4      # r.  r   r   r   ltrimr   r   r   r   !test_Poly_ltrim.<locals>.<lambda>  s(    D1a4!Q$1$=$C$CA$Fr   c                  ~    \        \        \        ,          \        ,
          \        \        4      P                  R4      # r  r  r   r   r   r   r    s     D1q!Q$7$=$=b$Ar   N)	r   r   r   r   r  r   r   r{   rF   r   s    r   test_Poly_ltrimr    s    QTAadF]Aq!$**1-A99;!Q$1a4-'AFFq!f,<<<!aAq!''*d1Q37Aq.AAAA
?FG
?ABr   c                  h   \        \        \        ,          ^,           \        \        \        4      P	                  \        \        4      RJ g   Q h\        \        \        ,          \        ,           \        \        \        4      P	                  \        \        4      RJ g   Q h\        \        R 4       R# )r   TFc                      \        \        \        ^,          ,          \        ^,          ,           \        \        4      P                  \        4      # r.  )r   r   r   has_only_gensr   r   r   r   r   )test_Poly_has_only_gens.<locals>.<lambda>  s(    D1a4!Q$1$=$K$KA$Nr   N)r   r   r   r   r  r{   rE   r   r   r   test_Poly_has_only_gensr    si    !aAq!//15===!aAq!//15>>>
?NOr   c                     \        ^\        ,          ^,           RR7      P                  4       \        ^\        ,          ^,           RR7      8X  g   Q h\        ^\        ,          ^,           RR7      P                  4       \        ^\        ,          ^,           RR7      8X  g   Q h\        \        R 4       \        \
        R 4       R# )r  rO   r   rP   c                  X    \        \        ^,          ^,           4      P                  4       # r.  r   r   to_ringr   r   r   r   #test_Poly_to_ring.<locals>.<lambda>  s    4!a=#8#8#:r   c                  \    \        ^\        ,          ^,           ^R7      P                  4       # )r  r   r  r   r   r   r   r    s    QqS1Wa 8 @ @ Br   N)r   r   r  r{   rG   rH   r   r   r   test_Poly_to_ringr     s    !a%--/4!a3MMMM!a%--/4!a3MMMM
>:;
;BCr   c                  (   \        ^\        ,          ^,           RR7      P                  4       \        ^\        ,          ^,           RR7      8X  g   Q h\        ^\        ,          ^,           RR7      P                  4       \        ^\        ,          ^,           RR7      8X  g   Q h\        \        ^,          ^,           RR7      P                  4       \        \        ^,          ^,           RR7      8X  g   Q h\        ^\        ,          ^,           ^R7      P                  4       \        ^\        ,          ^,           ^R7      8X  g   Q h\        R\        ,          R,           4      P                  4       \        R\        ,          R,           4      8X  g   Q hR# )r  rO   r   rP   r   r4  r   N)r   r   to_fieldr   r   r   test_Poly_to_fieldr    s   !a%..0D1q4NNNN!a%..0D1q4NNNN!a%..0D1q4NNNN!a#,,.$qsQw2JJJJA%%'4A+<<<<r   c                     \        ^\        ,          4      P                  4       \        ^\        ,          4      8X  g   Q h\        \        ^,          4      P                  4       \        \        ^,          4      8X  g   Q h\        R\        ,          4      P                  4       \        \        ^
,          4      8X  g   Q hR# )r  rz  N)r   r   to_exactr   r   r   test_Poly_to_exactr    sw    !94!9,,,!94!9,,,A;!T!B$Z///r   c                     \        \        ^,          ^,           \        \        \        ,          R7      p V P	                  4       \        \        ^,          ^,           \        RR7      8X  g   Q hV P	                  RR7      \        \        ^,          ^,           \        RR7      8X  g   Q h\        ^ \        \        4      P	                  4       \        ^ \        \        4      8X  g   Q hR# )r  r   rO   TrL   rP   N)r   r   rP   r   retractr   s    r   test_Poly_retractr	    s    QTAXqA'A99;$q!tax488889949 DA1T$BBBB1a=  "d1am333r   c                  D   \        \        ^,          ^\        ^,          ,          ,           ^\        ,          ,           ^,           4      p V P                  ^ ^ 4      \        ^ \        4      8X  g   Q hV P                  ^ ^4      \        ^\        4      8X  g   Q hV P                  ^ ^4      \        ^\        ,          ^,           \        4      8X  g   Q hV P                  ^ ^4      \        ^\        ^,          ,          ^\        ,          ,           ^,           \        4      8X  g   Q hV P                  ^ ^4      \        \        ^,          ^\        ^,          ,          ,           ^\        ,          ,           ^,           \        4      8X  g   Q hV P                  \        ^ ^ 4      \        ^ \        4      8X  g   Q hV P                  \        ^ ^4      \        ^\        4      8X  g   Q hV P                  \        ^ ^4      \        ^\        ,          ^,           \        4      8X  g   Q hV P                  \        ^ ^4      \        ^\        ^,          ,          ^\        ,          ,           ^,           \        4      8X  g   Q hV P                  \        ^ ^4      \        \        ^,          ^\        ^,          ,          ,           ^\        ,          ,           ^,           \        4      8X  g   Q h\        \        ^,          ^,           4      pVP                  ^ ^4      \        ^\        4      8X  g   Q hR# )r   N)r   r   slicerp  s     r   test_Poly_slicer    s   QTAadF]QqS 1$%A771a=DAJ&&&771a=DAJ&&&771a=D1q!,,,,771a=D1a4!A#!115555771a=DA!Q$1!4q!8!<<<<771atAqz)))771atAqz)))771atAaC!GQ////771atAadFQqSL1$4a8888771atAqD1QT6MAaC$7!$;Q????QTAXA771a=DAJ&&&r   c                     \        ^ \        4      P                  4       ^ .8X  g   Q h\        ^\        4      P                  4       ^.8X  g   Q h\        ^\        ,          ^,           \        4      P                  4       ^^.8X  g   Q h\        ^\        ^,          ,          ^\        ,          ,           ^,           \        4      P                  4       . RO8X  g   Q h\        ^\        ^,          ,          ^\        ,          ,           ^,           \        4      P                  4       . RO8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           4      P                  R4      ^^.8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           4      P                  R4      ^^.8X  g   Q hR# )r   rW   rX   Nr   r  r   )r   r   coeffsr   r   r   r   test_Poly_coeffsr  "  sN   1:1#%%%1:1#%%%!a""$A...!Q$1q !$++-:::!Q$1q !$++-:::!Q$1a41$%,,U31v===!Q$1a41$%,,W5!Q???r   c                     \        ^ \        4      P                  4       R.8X  g   Q h\        ^\        4      P                  4       R.8X  g   Q h\        ^\        ,          ^,           \        4      P                  4       RR.8X  g   Q h\        ^\        ^,          ,          ^\        ,          ,           ^,           \        4      P                  4       . RO8X  g   Q h\        ^\        ^,          ,          ^\        ,          ,           ^,           \        4      P                  4       . RO8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           4      P                  R4      RR	.8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           4      P                  R4      R	R.8X  g   Q hR# )
r   rW   rX   Nr   r   r.  r   r   )   r   r   r  r   r   r   )r   r   monomsr   r   r   r   test_Poly_monomsr  /  sR   1:4&(((1:4&(((!a""$t444!Q$1q !$++-1CCCC!Q$1q !$++-1CCCC!Q$1a41$%,,U37GGGG!Q$1a41$%,,W5&&9IIIIr   c                     \        ^ \        4      P                  4       R.8X  g   Q h\        ^\        4      P                  4       R.8X  g   Q h\        ^\        ,          ^,           \        4      P                  4       RR.8X  g   Q h\        ^\        ^,          ,          ^\        ,          ,           ^,           \        4      P                  4       . RO8X  g   Q h\        ^\        ^,          ,          ^\        ,          ,           ^,           \        4      P                  4       . RO8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           4      P                  R4      R	R
.8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           4      P                  R4      R
R	.8X  g   Q hR# )r   rW   rX   Nr   r   r   r   r   r  )r.  r   r  r  )r  r   r  r  r  r  r  r   )r   r   termsr   r   r   r   test_Poly_termsr"  <  sg   1:),,,1:),,,!a!!#	9'====!Q$1q !$**,0QQQQ!Q$1q !$**,0QQQQ	!Q$1a41#eEl{K.HI I I	!Q$1a41#eGnk0JK K Kr   c                  X   \        ^ \        4      P                  4       ^ .8X  g   Q h\        ^\        4      P                  4       ^.8X  g   Q h\        ^\        ,          ^,           \        4      P                  4       ^^.8X  g   Q h\        ^\        ^,          ,          ^\        ,          ,           ^,           \        4      P                  4       . RO8X  g   Q h\        ^\        ^,          ,          ^\        ,          ,           ^,           \        4      P                  4       . RO8X  g   Q hR# )r   Nr  )r   r   r   r  r   )r   r   r?  r   r   r   test_Poly_all_coeffsr$  K  s    1:  "qc)))1:  "qc)))!a&&(QF222!Q$1q !$//1Y>>>!Q$1q !$//1_DDDr   c                  X   \        ^ \        4      P                  4       R.8X  g   Q h\        ^\        4      P                  4       R.8X  g   Q h\        ^\        ,          ^,           \        4      P                  4       RR.8X  g   Q h\        ^\        ^,          ,          ^\        ,          ,           ^,           \        4      P                  4       . RO8X  g   Q h\        ^\        ^,          ,          ^\        ,          ,           ^,           \        4      P                  4       . RO8X  g   Q hR# )r   Nr   r   r  )r  r   r.  r   r   )r   r   
all_monomsr   r   r   test_Poly_all_monomsr(  U  s    1:  "tf,,,1:  "tf,,,!a&&(T4L888!Q$1q !$//15GGGG!Q$1q !$//15SSSSr   c                  X   \        ^ \        4      P                  4       R.8X  g   Q h\        ^\        4      P                  4       R.8X  g   Q h\        ^\        ,          ^,           \        4      P                  4       RR.8X  g   Q h\        ^\        ^,          ,          ^\        ,          ,           ^,           \        4      P                  4       . RO8X  g   Q h\        ^\        ^,          ,          ^\        ,          ,           ^,           \        4      P                  4       . RO8X  g   Q hR# )r   Nr  r  r  r  )r  )r&  r   )r.  r   r  r  )r   r   	all_termsr   r   r   test_Poly_all_termsr+  _  s    1:!i[0001:!i[000!a%%'Iy+AAAA!Q$1q !$..0)* * *!Q$1q !$..0?@ @ @r   c                  .   \        \        ^,          ^\        ,          ,           R,           4      p \        \        ^,          ^\        ,          ,           ^,           4      pR pV P                  V4      V8X  g   Q hR pV P                  V4      V8X  g   Q hR# )r  i  c                 8    V w  pV^
^V,
          ,          ,          # r  r   monomcoeffks   && r   func test_Poly_termwise.<locals>.funco  s    b1q5k!!r   c                 >    V w  pV3V^
^V,
          ,          ,          3# r.  r   r/  s   && r   r3  r4  u  s#    tUBQK'''r   N)r   r   termwise)r   r   r3  s      r   test_Poly_termwiser7  k  ss    QTBqD[3AQTAaCZ!^A" ::dq   ( ::dq   r   c                  >   \        ^ \        4      P                  4       ^ 8X  g   Q h\        ^\        4      P                  4       ^8X  g   Q h\        \        \        4      P                  4       ^8X  g   Q h\        \        ^,           \        4      P                  4       ^8X  g   Q h\        \        ^,          ^,           \        4      P                  4       ^8X  g   Q h\        \        ^,          \        ,           ^,           \        4      P                  4       ^8X  g   Q hR# r  )r   r   lengthr   r   r   test_Poly_lengthr:  |  s    1:!###1:!###1:!###Aq>  "a'''1q!##%***1q1a '')Q...r   c                  |   \        ^ \        4      P                  4       / 8X  g   Q h\        ^ \        \        \        4      P                  4       / 8X  g   Q h\        ^\        4      P                  4       R^/8X  g   Q h\        ^\        \        \        4      P                  4       R^/8X  g   Q h\        \        ^,          ^,           \        4      P                  4       R^R^/8X  g   Q h\        \        ^,          ^,           \        \        \        4      P                  4       R^R^/8X  g   Q h\        ^\        ^,          ,          \        ,          \        ^,          ,          ^\        ,          \        ,          ,           ^\        ,          \        ,          ,           4      P                  4       R^R^R^/8X  g   Q hR# )	r   Nr   r   r   r   r.  )r  r   r   r  r   r   r   r   r   r   r   r   )r   r   as_dictr   r   r   r   r   test_Poly_as_dictrA    sJ   1:2%%%1a##%+++1:D!9,,,1a##%)Q7771q!$$&4D!*<<<<1q!Q"**,Ay!0LLLL!Q$qA!A%!A-.668Y1i=, , , ,r   c                  `  a  \        ^ \        4      P                  4       ^ 8X  g   Q h\        ^ \        \        \        4      P                  4       ^ 8X  g   Q h\        ^\        4      P                  4       ^8X  g   Q h\        ^\        \        \        4      P                  4       ^8X  g   Q h\        \        ^,          ^,           \        4      P                  4       \        ^,          ^,           8X  g   Q h\        \        ^,          ^,           \        \        \        4      P                  4       \        ^,          ^,           8X  g   Q h\        ^\        ^,          ,          \        ,          \        ^,          ,          ^\        ,          \        ,          ,           ^\        ,          \        ,          ,           4      P                  4       ^\        ^,          ,          \        ,          \        ^,          ,          ^\        ,          \        ,          ,           ^\        ,          \        ,          ,           8X  g   Q h\        \        ^,          ^\        ,          \        ^,          ,          ,           \        ,
          \        \        4      o S P                  4       \        ) \        ^,          ,           ^\        ,          \        ^,          ,          ,           8X  g   Q hS P                  \        ^/4      ^\        ,
          ^
\        ^,          ,          ,           8X  g   Q hS P                  \        ^/4      R^H\        ,          ,           \        ^,          ,           8X  g   Q hS P                  \        ^\        ^/4      R8X  g   Q hS P                  ^^4      R8X  g   Q h\        \        V 3R l4       R# )r   i{  c                  2   < S P                  \        ^/4      # r   )r   r   r   s   r   r   #test_Poly_as_expr.<locals>.<lambda>  s    AIIq!f$5r   Ni)r   r   r   r   r   r{   rE   r   s   @r   test_Poly_as_exprrE    sV   1:1$$$1a##%***1:1$$$1a##%***1q!$$&!Q$(2221q!Q"**,1q888	!Q$qA!A!A%''.wyAadF1HQTMAaCE4IAaCPQE4QR R R 	QTAaC1H_q !Q'A99;1"q!t)ac!Q$h....99aVQAqD 000099aVRT	AqD 000099aAq\"c)))99Q?c!!!
?56r   c                  L   \        \        ^,          \        \        ,          ,
          ^\        ,          ,           \        RR7      p V P                  ! 4       \        \        ^,          \        ^,          ,           ^"\        ,          ,
          R,           \        RR7      8X  g   Q hR# )r  Tr  i!  rP   r   N)r   r   re   liftr   s    r   test_Poly_liftrI    s\    QTAaCZ"Q$D1A668tAqD1a4K"Q$.4aEEEEr   c                     \        \        ^,          \        ^,          ,           ^,
          ^ 4      p \        \        ^,          \        ^,          ,           ^,
          ^ 4      p\        V \        ,          ^V ^,          ,          ,           V,
          \        ^,          ,           \        ^,          ,
          \        RR7      pVP
                  ! 4       \        \        ^K,          ) ^\        ^H,          ,          ,           ^\        ^G,          ,          ,
          ^\        ^F,          ,          ,           ^i\        ^E,          ,          ,
          ^F\        ^D,          ,          ,           ^\        ^C,          ,          ,
          R\        ^B,          ,          ,           R\        ^A,          ,          ,
          R\        ^@,          ,          ,           R\        ^?,          ,          ,
          R\        ^>,          ,          ,           R\        ^=,          ,          ,
          R	\        ^<,          ,          ,           R
\        ^;,          ,          ,
          R\        ^:,          ,          ,           R\        ^9,          ,          ,
          R\        ^8,          ,          ,           R\        ^7,          ,          ,
          R\        ^6,          ,          ,           R\        ^5,          ,          ,
          R\        ^4,          ,          ,           R\        ^3,          ,          ,
          R\        ^2,          ,          ,           R\        ^1,          ,          ,
          R\        ^0,          ,          ,           R\        ^/,          ,          ,
          R\        ^.,          ,          ,           R\        ^-,          ,          ,
          R\        ^,,          ,          ,           R\        ^+,          ,          ,
          R\        ^*,          ,          ,           R\        ^),          ,          ,
          R\        ^(,          ,          ,           R\        ^',          ,          ,
          R\        ^&,          ,          ,           R \        ^%,          ,          ,
          R!\        ^$,          ,          ,           R"\        ^#,          ,          ,
          R#\        ^",          ,          ,           R$\        ^!,          ,          ,
          R%\        ^ ,          ,          ,           R&\        ^,          ,          ,
          R'\        ^,          ,          ,           R(\        ^,          ,          ,
          R)\        ^,          ,          ,           R*\        ^,          ,          ,
          R+\        ^,          ,          ,           R,\        ^,          ,          ,
          R-\        ^,          ,          ,           R.\        ^,          ,          ,
          R/\        ^,          ,          ,           R0\        ^,          ,          ,
          R1\        ^,          ,          ,           R2\        ^,          ,          ,
          R3\        ^,          ,          ,           R4\        ^,          ,          ,
          R5\        ^,          ,          ,           R6\        ^,          ,          ,
          R7\        ^,          ,          ,           R8\        ^,          ,          ,
          R9\        ^,          ,          ,           R:\        ^,          ,          ,
          R;\        ^
,          ,          ,           R<\        ^	,          ,          ,
          R=\        ^,          ,          ,           R>\        ^,          ,          ,
          R?\        ^,          ,          ,           R@\        ^,          ,          ,
          RA\        ^,          ,          ,           RB\        ^,          ,          ,
          RC\        ^,          ,          ,           RD\        ,          ,
          RE,           \        RFRG7      8X  g   Q hRH# )Ir   Tr   i0  i{  i  i
  i?  i  i1  iJV  i}}  i  i]X iz iD i iK iӱ
 iZ i ig i- iz-? imV iz i iX ik"ivi`iDuis:(imi-i~iEiLi~s
iQMiٞi|iiAievpi*iUtioBHi*i3& iE$@!i0; iDp!iiYEiOiX?ibiL9ini;i
izGiHi!p^i1>ji'i?i i rP   r   N)rw   r   r   r   r   rH  r  s      r   test_Poly_lift_multiplerK    s   	1q!ta	#B	1q!ta	#BRTAb!eG^b 1a4'!Q$.TBA668t	
BArEAaeG#bBh.QU:R2XEArE		2I	 #ArE		*,0BJ	79=ae	DQU
	!R%Z	 "'2+	.05ae	<>CArEk	J 	ae	 ArEk	" %+1b5L	1 4:!R%<	@ CIB,	O B,		  2		& )02		6 9@2		F
 	2	
  2	&
 )02	6
 9@2	F 	2	 !B	' *2!R%	8 ;C1b5.	I 	B	 "!R%	( +31b5.	9 <DArE>	J 	B	 "!R%	( +4ArE/	: =FaeO	L 	!R%		 $ArE/		* -6aeO		< ?H2o		N 	!R%
	 $ArE/
	* -6aeO
	< ArE/	 &aeO	, /82o	> AJ!R%	P ArE/	 &aeO	, /82o	> AJ!R%	P ArE/	 &aeO	, ArE/	 &aeO	, /82o	> AJ!R%	P ArE/	 &aeO	, /81n	= @IA~	N  AqD.!	  $AqD=!	)  ,5QT>!	:  =EQTM!	J" 	A#	" !A#	&" )0	#	2" 5=#	=" ?@%   r   c                     \        ^ \        4      P                  4       R\        ^ \        4      38X  g   Q h\        ^\        4      P                  4       R\        ^\        4      38X  g   Q h\        \        \        4      P                  4       R\        \        \        4      38X  g   Q h\        \        ^,          \        4      P                  4       R\        \        \        4      38X  g   Q h\        \        ^,          \        4      P                  4       R\        \        \        4      38X  g   Q h\        \        ^,          \        ,          \        ^,          ,          \        ^,          \        ^,          ,          ,           4      P                  4       R\        \        \        ,          \        ,          \        ^,          \        ,          ,           4      38X  g   Q hR# )r   Nr   r.  )   )r  r      )r   r   deflater   r   r   r   r   test_Poly_deflaterP    s7   1:D$q!*#55551:D$q!*#55551:D$q!*#55551a=  "tT!QZ&88882q>!!#tAqz'::::	1Qq"uq!tArEz!##*79T!A#a%!Q$q&.=Q0RS S Sr   c                     \        \        ^,          \        ,          \        \        ^,          ,          ,           \        \        ,          ,           ^,           \        4      p V P                  4       \        \        ^,          \        ,          \        \        ^,          ,          ,           \        \        ,          ,           ^,           \        \        4      8X  g   Q hV P                  RR7      \        \        ^,          \        ,          \        \        ^,          ,          ,           \        \        ,          ,           ^,           \        \        4      8X  g   Q hR# )r  T)frontN)r   r   r   injectr   s    r   test_Poly_injectrT    s    QT!Va1f_qs"Q&*A88:ad1fqAvo!3a7A>>>>88$841Q1a4!A#(=(A1a#HHHHr   c            
      H   \        \        ^,          \        ,          \        \        ^,          ,          ,           \        \        ,          ,           ^,           \        \        4      p V P                  \        4      \        \        \        ^,          ,          \        ^,          \        ,           \        ,          ,           ^,           \        RR7      8X  g   Q hV P                  \        4      \        \        \        ^,          ,          \        ^,          \        ,           \        ,          ,           ^,           \        RR7      8X  g   Q h\        \        ,           \        ,           \
        ,           \        ,           p\        V\        \        \        \
        \        4      pVP                  \        4      \        V\        \        \
        \        RR7      8X  g   Q hVP                  \        \        4      \        V\        \
        \        RR7      8X  g   Q hVP                  \        \        \        4      \        V\
        \        RR7      8X  g   Q hVP                  \        4      \        V\        \        \        \
        RR7      8X  g   Q hVP                  \
        \        4      \        V\        \        \        RR7      8X  g   Q hVP                  \        \
        \        4      \        V\        \        RR7      8X  g   Q h\        \        R	 4       \        \        R
 4       R# )r  r   r   ZZ[y]zZZ[x, y]zZZ[x, y, z]zZZ[w]zZZ[t, w]zZZ[z, t, w]c                      \        \        \        ,          \        \        \        \        ,          R 7      P                  \        4      # r   )r   r   r   rO   r   ejectr   r   r   r   !test_Poly_eject.<locals>.<lambda>  s"    QqS!Qr!u = C CA Fr   c                  z    \        \        \        ,          \        \        \        4      P	                  \        4      # r   )r   r   r   r   rX  r   r   r   r   rY    s    QqS!Q(:(@(@(Cr   N)
r   r   r   rX  r   r   r   r{   rH   r=  )r   exr   s      r   test_Poly_ejectr\    s   QT!Va1f_qs"Q&1-A771:a1f1q!|3a77KKKK771:a1f1q!|3a77KKKK	
QQ	BRAq!QA771:b!Q1W====771a=DQ1Z@@@@771atB1]CCCC771:b!Q1W====771a=DQ1Z@@@@771atB1]CCCC
;FG
 CDr   c                     \        \        \        \        4      P                  4       \        \        \        4      8X  g   Q h\        \        \        ,          \        \        4      P                  4       \        \        \        ,          \        \        4      8X  g   Q h\        ^\        \        4      P                  4       \        ^\        \        4      8X  g   Q hR# r  )r   r   r   excluder   r   r   test_Poly_excluder_    s}    1a=  "d1aj000!Q?""$QqS!Q7771a=  "d1am333r   c                  N   \        ^\        \        4      P                  R4      ^ 8X  g   Q h\        ^\        \        4      P                  R	4      ^8X  g   Q h\        ^\        \        4      P                  ^ 4      ^ 8X  g   Q h\        ^\        \        4      P                  ^4      ^8X  g   Q h\	        \
        R 4       \	        \
        R 4       \        ^\        \        4      P                  \        4      ^ 8X  g   Q h\        ^\        \        4      P                  \        4      ^8X  g   Q h\        ^\        \        4      P                  R4      ^ 8X  g   Q h\        ^\        \        4      P                  R4      ^8X  g   Q h\	        \
        R 4       \	        \
        R 4       R# )
r   c                  J    \        ^\        \        4      P                  R4      # )r   r   r   r   _gen_to_levelr   r   r   r   )test_Poly__gen_to_level.<locals>.<lambda>  s    DAqM$?$?$Cr   c                  J    \        ^\        \        4      P                  ^4      # r   rc  r   r   r   r   re    s    DAqM$?$?$Cr   r   r   c                  R    \        ^\        \        4      P                  \        4      # r   )r   r   r   rd  r   r   r   r   r   re    s    DAqM$?$?$Br   c                  J    \        ^\        \        4      P                  R4      # )r   r   rc  r   r   r   r   re    s    DAqM$?$?$Dr   Nr  r   )r   r   r   rd  r{   rF   r   r   r   test_Poly__gen_to_levelri    s6   1a=&&r*a///1a=&&r*a///1a=&&*a///1a=&&*a///
?CD
?CD1a=&&q)Q...1a=&&q)Q...1a=&&s+q0001a=&&s+q000
?BC
?DEr   c                  \   \        ^ \        4      P                  4       \        ) J g   Q h\        ^\        4      P                  4       ^ 8X  g   Q h\        \        \        4      P                  4       ^8X  g   Q h\        ^ \        4      P                  ^ R7      \        ) J g   Q h\        ^\        4      P                  ^ R7      ^ 8X  g   Q h\        \        \        4      P                  ^ R7      ^8X  g   Q h\        ^ \        4      P                  \        R7      \        ) J g   Q h\        ^\        4      P                  \        R7      ^ 8X  g   Q h\        \        \        4      P                  \        R7      ^8X  g   Q h\        ^ \        4      P                  RR7      \        ) J g   Q h\        ^\        4      P                  RR7      ^ 8X  g   Q h\        \        \        4      P                  RR7      ^8X  g   Q h\	        \
        R 4       \	        \
        R 4       \	        \
        R 4       \        ^\        \        4      P                  4       ^ 8X  g   Q h\        ^\        ,          \        \        4      P                  4       ^ 8X  g   Q h\        \        \        ,          \        \        4      P                  4       ^8X  g   Q h\        ^\        \        4      P                  \        R7      ^ 8X  g   Q h\        ^\        ,          \        \        4      P                  \        R7      ^ 8X  g   Q h\        \        \        ,          \        \        4      P                  \        R7      ^8X  g   Q h\        ^\        \        4      P                  \        R7      ^ 8X  g   Q h\        ^\        ,          \        \        4      P                  \        R7      ^8X  g   Q h\        \        \        ,          \        \        4      P                  \        R7      ^8X  g   Q h\        ^ \        4      \        ) J g   Q h\        ^\        4      ^ 8X  g   Q h\        \        \        4      ^8X  g   Q h\        \        \        ^,          ,          \        4      ^8X  g   Q h\        \        \        ^,          ,          \        4      ^8X  g   Q h\        \        \        ^,          ,          \        4      ^ 8X  g   Q h\        \        4      ^8X  g   Q h\	        \        R 4       \	        \        R 4       \	        \
        R 4       \	        \
        R	 4       \        \        ^ \        4      \        4      \        ) J g   Q h\        \        ^\        4      \        4      ^ 8X  g   Q h\        \        \        ^,          \        ^,          ,           \        4      4      ^8X  g   Q h\        \        \        ^,          \        ^,          ,           \        \        4      ^4      ^8X  g   Q h\        \        \        ^,          \        ^,          ,           \        4      \        4      ^ 8X  g   Q h\        \        \        ^,          \        ^,          ,           \        ^,          ,           \        4      \        4      ^8X  g   Q hR
# )r   genr   c                  B    \        ^\        4      P                  ^R7      # r   rk  r   r   r   r   r   r   r   "test_Poly_degree.<locals>.<lambda>   s    DAJ$5$5!$5$<r   c                  J    \        ^\        4      P                  \        R7      # rn  )r   r   r   r   r   r   r   r   rp  !  s    DAJ$5$5!$5$<r   c                  B    \        ^\        4      P                  RR7      # )r   r   rk  ro  r   r   r   r   rp  "  s    DAJ$5$5#$5$>r   c                  R    \        \        ^,          \        ^,          ,           4      # r.  r   r   r   r   r   r   r   rp  :  s    fQTAqD[1r   c                  T    \        \        ^,          \        ^,          ,           ^4      # r.  rt  r   r   r   r   rp  ;  s    fQTAqD[!4r   c                  "    \        \        R 4      # )g?r   r   r   r   r   r   rp  <  s
    F1cNr   c                  j    \        \        ^,          \        ^,          ^,           ,          \        4      # r.  rw  r   r   r   r   rp  =  s    F1a4A?A$>r   N)
r   r   r   rh   r{   rF   r   r   ri   r  r   r   r   test_Poly_degreery    s   1:2#%%%1:!###1:!###1:#s***1:#q(((1:#q(((1:#s***1:#q(((1:#q(((1:%",,,1:%***1:%***
?<=
?<=
?>?1a=!Q&&&!Q?!!#q(((!Q?!!#q(((1a=A&!+++!Q?!!a!(A---!Q?!!a!(A---1a=A&!+++!Q?!!a!(A---!Q?!!a!(A---!Q<B3!Q<1!Q<1!AqD&!!!!!AqD&!!!!!AqD&!!!!":??
912
945
?23
?>?$q)A2#%%%$q)A!###$q!tAqDy#$)))$q!tad{Aq)1-222$q!tad{A&*a///$q!tad{QT)1-q1Q666r   c                     \        ^ \        4      P                  4       \        ) 38X  g   Q h\        ^ \        \        4      P                  4       \        ) \        ) 38X  g   Q h\        ^ \        \        \
        4      P                  4       \        ) \        ) \        ) 38X  g   Q h\        ^\        4      P                  4       R8X  g   Q h\        ^\        \        4      P                  4       R8X  g   Q h\        ^\        \        \
        4      P                  4       R8X  g   Q h\        \        ^,          \        ,          \        ^,          \
        ^,          ,          ,           ^,           4      P                  4       R8X  g   Q h\        ^\        4      R8X  g   Q h\        \        \        4      R8X  g   Q h\        \        \        ^,          ,          4      R8X  g   Q h\        \        R 4       R# )	r   c                      \        ^4      # r   )r   r   r   r   r   'test_Poly_degree_list.<locals>.<lambda>V  s    k!nr   Nr   r   r<  )r   r   r  r   r<  )r   r   r   rh   r   r   r{   rA   r   r   r   test_Poly_degree_listr}  F  sa   1:!!#v---1a=$$&B3*4441a'')rcB3_<<<1:!!#t+++1a=$$&&0001a'')Y6661QAad"Q&'335BBBq!$$$q!$$$qAv&(((
45r   c                  @   \        \        ^,          \        ,          \        ^,          \        ^,          ,          ,           ^,           4      P	                  4       ^8X  g   Q h\        \        ^,          \        ^,          ,           4      P	                  4       ^8X  g   Q h\        \        \        ,          \        ,          \        ^,          ,           4      P	                  4       ^8X  g   Q h\        \        ^,          \        ,           ^,           4      P	                  4       ^8X  g   Q h\	        \        \        ,          \        ^,          ,           4      ^8X  g   Q h\	        \        \        ,          \        ^,          ,           \        \        4      ^8X  g   Q h\	        ^4      ^ 8X  g   Q h\	        \        \        ^,          \        ^,          ,           \        ^,          ,           4      4      ^8X  g   Q h\	        \        \        ^,          \        ^,          ,           \        ^,          ,           \        4      4      ^8X  g   Q h\	        \        \        ^,          \        ^,          ,           \        ^,          ,           \        4      \        4      ^8X  g   Q h\	        \        \        ^	,          \        \        ,          \        ,          ,           \        ^,          \        ^,          ,          ,           \        ^,          ,           \        4      \        4      ^8X  g   Q hR# rD  )r   r   r   r   r   r   r   r   test_Poly_total_degreer  Y  s   1QAad"Q&'446!;;;1q!t))+q000!A1**,1111q1**,111!ad
#q(((!ad
Aq)Q...?aQTAqD[1a4/01Q666QTAqD[1a4/34999QTAqD[1a4/3Q71<<<QTAaCE\AqDAI51<Q?CqHHHr   c                  P   \        \        ^,          \        ,           4      P                  \        4      \        \        ^,          \        \        ,          ,           4      8X  g   Q h\        \        \        ,           4      P                  \        4      \        \        \        ,           \        \        \        4      8X  g   Q h\        \        \        ^,          ,           4      P                  \        4      \        \        \        ,          \        ^,          ,           4      8X  g   Q hR# rD  )r   r   r   
homogenizer   r   r   r   test_Poly_homogenizer  g  s    1Q<""1%ad1Q3h777!9"d1Q31a&8888!Q$<""1%ac!Q$h777r   c                  L   \        ^ \        \        4      P                  4       \        ) J g   Q h\        ^\        \        4      P                  4       ^ 8X  g   Q h\        \        \        \        4      P                  4       ^8X  g   Q h\        \        \        ,          \        \        4      P                  4       ^8X  g   Q h\        \        ^,           \        \        4      P                  4       e   Q h\        \        \        ,          \        ,           \        \        4      P                  4       e   Q h\        \        ^,          ^\        ^,          ,          \        ^,          ,          ,           ^	\        ,          \        ^,          ,          ,           4      P                  4       ^8X  g   Q h\        \        ^,          ^\        ^,          ,          \        ^,          ,          ,           ^	\        ,          \        ^,          ,          ,           4      P                  4       e   Q hR# r  )r   r   r   homogeneous_orderrh   r   r   r   test_Poly_homogeneous_orderr  m  sV   1a=**,3331a=**,1111a=**,111!Q?,,.!333Aq!..0888!aA002:::1qAvad{"QqSAX-.@@BaGGG1qAvad{"QqSAX-.@@BJJJr   c                     \        ^ \        4      P                  4       ^ 8X  g   Q h\        ^\        4      P                  4       ^8X  g   Q h\        ^\        ^,          ,          \        ,           \        4      P                  4       ^8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           4      P                  R4      ^8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           4      P                  R4      ^8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           RR7      ^8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           RR7      ^8X  g   Q hR# )r   rW   rX   r*  N)r   r   r	   r   r   r   r   test_Poly_LCr  z  s:   1:==?a1:==?a!Q$
A!!#q(((!Q$1a41$%((/1444!Q$1a41$%((1Q666a1fqAvad{"%0A555a1fqAvad{"'2a777r   c                     \        ^ \        4      P                  4       ^ 8X  g   Q h\        ^\        4      P                  4       ^8X  g   Q h\        ^\        ^,          ,          \        ,           \        4      P                  4       ^ 8X  g   Q hR# r  )r   r   TCr   r   r   test_Poly_TCr    s`    1:==?a1:==?a!Q$
A!!#q(((r   c                     \        ^ \        4      P                  4       ^ 8X  g   Q h\        ^\        4      P                  4       ^8X  g   Q h\        ^\        ^,          ,          \        ,           \        4      P                  4       ^8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           4      P                  R4      ^8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           4      P                  R4      ^8X  g   Q hR# )r   rW   rX   N)r   r   ECr   r   r   r   test_Poly_ECr    s    1:==?a1:==?a!Q$
A!!#q(((!Q$1a41$%((/1444!Q$1a41$%((1Q666r   c                     a  \        ^ \        4      P                  ^4      ^ 8X  g   Q h\        ^ \        4      P                  \        4      ^ 8X  g   Q h\        ^\        4      P                  ^4      ^8X  g   Q h\        ^\        4      P                  \        4      ^ 8X  g   Q h\        \        ^,          \        4      P                  ^4      ^ 8X  g   Q h\        \        ^,          \        4      P                  \        ^,          4      ^ 8X  g   Q h\        \        ^,          \        4      P                  \        ^,          4      ^8X  g   Q h\        \        ^,          \        4      P                  \        ^	,          4      ^ 8X  g   Q h\        ^\        ,          \        ^,          ,          ^,           \        \        4      P                  ^4      ^8X  g   Q h\        ^\        ,          \        ^,          ,          ^,           \        \        4      P                  \        \        ^,          ,          4      ^8X  g   Q h\        ^\        ,          \        ,          \	        ^4      ,          ^\        ,          ,           \        \        4      o S P                  ! \        4      ^8X  g   Q hS P                  ! \        4      ^ 8X  g   Q hS P                  ! \        \        ,          4      ^\	        ^4      ,          8X  g   Q hS P
                  ! 4       P                  \        4      ^\        ,          \	        ^4      ,          ^,           8X  g   Q h\        \        V 3R l4       \        \        R 4       \        \        R 4       \        \        R 4       R# )r   c                  0   < S P                   ! \        4      # r   )r1  r   r   s   r   r   !test_Poly_coeff.<locals>.<lambda>  s    
r   c                  L    \        \        ^,           4      P                  ^ 4      # r   r   r   coeff_monomialr   r   r   r   r    s    tAE{99!<r   c                  b    \        \        ^,           4      P                  ^\        ,          4      # r   r  r   r   r   r   r    s    tAE{99!A#>r   c                  x    \        \        ^,           4      P                  ^\        ,          \        ,          4      # r   )r   r   r  r   r   r   r   r   r    s    tAE{99!A#a%@r   N)
r   r   r  r   rp   r   r1  r{   r=  
ValueErrorr   s   @r   test_Poly_coeffr    s^   1:$$Q'1,,,1:$$Q'1,,,1:$$Q'1,,,1:$$Q'1,,,1a=''*a///1a=''1-2221a=''1-2221a=''1-222!AqD1a#2215:::!AqD1a#221QT6:a???RT!VCF]RT!1a(AA"$$$A!###AaC Bs1vI---99;Q2a4A;#3333
 23
:<=
:>?
:@Ar   c                      \        ^ \        4      P                  ^ 4      ^ 8X  g   Q h\        ^ \        4      P                  ^4      ^ 8X  g   Q h\        ^\        4      P                  ^ 4      ^8X  g   Q h\        ^\        4      P                  ^4      ^ 8X  g   Q h\        \        ^,          \        4      P                  ^ 4      ^ 8X  g   Q h\        \        ^,          \        4      P                  ^4      ^ 8X  g   Q h\        \        ^,          \        4      P                  ^4      ^8X  g   Q h\        \        ^,          \        4      P                  ^	4      ^ 8X  g   Q h\        ^\        ,          \        ^,          ,          ^,           \        \        4      P                  ^ ^ 4      ^8X  g   Q h\        ^\        ,          \        ^,          ,          ^,           \        \        4      P                  ^^4      ^8X  g   Q h\	        \
        R 4       R# )r   c                  v    \        \        \        ,          ^,           \        \        4      P                  ^4      # r   )r   r   r   nthr   r   r   r   test_Poly_nth.<locals>.<lambda>  s     tAaC!GQ266q9r   N)r   r   r  r   r{   r  r   r   r   test_Poly_nthr    su   1:>>!!!!1:>>!!!!1:>>!!!!1:>>!!!!1a=Q1$$$1a=Q1$$$1a=Q1$$$1a=Q1$$$!AqD1a#''1-222!AqD1a#''1-222
:9:r   c                  `   \        ^ \        4      P                  4       R8X  g   Q h\        ^\        4      P                  4       R8X  g   Q h\        ^\        ^,          ,          \        ,           \        4      P                  4       R8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           4      P                  R4      R8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           4      P                  R4      R8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           RR7      \        ^,          \        ^,          ,          8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           RR7      \        \        ^,          ,          8X  g   Q hR# )	r   rW   rX   r*  Nr   r.  r  r  )r   r   r
   r   r   r   r   test_Poly_LMr    sN   1:==?d"""1:==?d"""!Q$
A!!#t+++!Q$1a41$%((/6999!Q$1a41$%((1V;;;a1fqAvad{"%0AqDAI===a1fqAvad{"'2a1f<<<r   c                     \        \        ^,          \        ^,          ,          \        ,          \        ^,          \        ,          \        ^,          ,          ,           \        \        ,          \        ,          ,           ^,           4      p R pV P	                  RR7      R8X  g   Q hV P	                  VR7      R8X  g   Q hR# )r  c                 *    \        \        V 4      4      # r   )tuplereversed)r0  s   &r   r   +test_Poly_LM_custom_order.<locals>.<lambda>  s    E(5/2r   rW   r*  N)r  r   r   r=  )r   r   r   r   r
   )r   rev_lexs     r   test_Poly_LM_custom_orderr    sz    QT!Q$Yq[1a46!Q$;&1Q.23A2G44e4	)))44g4)+++r   c                     \        ^ \        4      P                  4       R8X  g   Q h\        ^\        4      P                  4       R8X  g   Q h\        ^\        ^,          ,          \        ,           \        4      P                  4       R8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           4      P                  R4      R8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           4      P                  R4      R8X  g   Q hR# )r   rW   rX   Nr   r   r  r  )r   r   EMr   r   r   r   test_Poly_EMr    s    1:==?d"""1:==?d"""!Q$
A!!#t+++!Q$1a41$%((/6999!Q$1a41$%((1V;;;r   c                  n   \        ^ \        4      P                  4       R8X  g   Q h\        ^\        4      P                  4       R8X  g   Q h\        ^\        ^,          ,          \        ,           \        4      P                  4       R8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           4      P                  R4      R8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           4      P                  R4      R	8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           RR7      ^\        ^,          ,          \        ^,          ,          8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           RR7      \        \        ^,          ,          8X  g   Q hR# )
r   rW   rX   r*  Nr  r  )r.  r  r  r   )r   r   r   r   r   r   r   test_Poly_LTr    sR   1:==?i'''1:==?i'''!Q$
A!!#y000!Q$1a41$%((/;>>>!Q$1a41$%((1[@@@a1fqAvad{"%0AadF1a4K???a1fqAvad{"'2a1f<<<r   c                     \        ^ \        4      P                  4       R8X  g   Q h\        ^\        4      P                  4       R8X  g   Q h\        ^\        ^,          ,          \        ,           \        4      P                  4       R8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           4      P                  R4      R8X  g   Q h\        \        \        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,           4      P                  R4      R8X  g   Q hR# )	r   rW   rX   Nr  r  )r   r   r   r  )r   r   ETr   r   r   r   test_Poly_ETr    s    1:==?i'''1:==?i'''!Q$
A!!#y000!Q$1a41$%((/;>>>!Q$1a41$%((1[@@@r   c                      \        R\        4      P                  4       ^8X  g   Q h\        ^ \        4      P                  4       ^ 8X  g   Q h\        ^\        4      P                  4       ^8X  g   Q hR# r   Nr   )r   r   max_normr   r   r   test_Poly_max_normr    sY    A;!Q&&&A;!Q&&&A;!Q&&&r   c                      \        R\        4      P                  4       ^8X  g   Q h\        ^ \        4      P                  4       ^ 8X  g   Q h\        ^\        4      P                  4       ^8X  g   Q hR# r  )r   r   l1_normr   r   r   test_Poly_l1_normr    sY    A; A%%%A; A%%%A; A%%%r   c                  N   \        \        ^,           \        4      P                  4       w  rV ^8X  d=   V\        \        ^,           \        RR7      8X  d   VP                  ! 4       \        8X  g   Q h\        \        ^,          ^,           \        4      P                  4       w  rV ^8X  d=   V\        \        ^,           \        RR7      8X  d   VP                  ! 4       \
        8X  g   Q h\        ^\        ^,          ,          ^,           ^R7      P                  4       w  rV ^8X  dP   V\        ^\        ^,          ,          ^,           \        ^R7      8X  d    VP                  ! 4       \        ^4      8X  g   Q h\        \        ^,          ^,           \        4      P                  RR7      w  rV ^8X  d=   V\        \        ^,           \        RR7      8X  d   VP                  ! 4       \        8X  g   Q h\        \        \        ,          ^,           \        4      P                  RR7      w  rV \        8X  dL   V\        \        \        ,           \        RR7      8X  d&   VP                  ! 4       \        \        ,          8X  g   Q h\        \        ^,          \        ^4      ,           \        RR7      P                  4       w  rV ^8X  dM   V\        \        ^\        ^4      ,          ,           \        RR7      8X  d   VP                  ! 4       \        8X  g   Q h\        \        ^,          \        ^4      ,           \        RR7      P                  RR7      w  rV ^8X  dM   V\        \        ^\        ^4      ,          ,           \        RR7      8X  d   VP                  ! 4       \        8X  g   Q hR	# )
r  rO   r   rP   r   T)convertrV  rT   N)
r   r   clear_denomsr@  rO   rP   rN   r   rr   rT   )r1  r   s     r   test_Poly_clear_denomsr    s   q1ua.--/KEA:$$	Aq# #'??#4#:; ; qsQw"//1KEA:$$	Aq# #'??#4#:; ; qAvz1-::<KEA:$$	!Q$
Aq#" "&*oo&72a5&@A A qsQw"///=KEA:$$	Aq# #'??#4#:; ; qsQw"///=KEA:$$	Aq#" "&*oo&72a5&@A A qsT!W}a5BBDKEA:$$	Ad1gIq#' '+/??+<+BC C 	!d1gq''3|D|'A EA:$$	Ad1gIq#' '+/??+<+BC C+Br   c                     \        \        ^,          \        ,          ^,           \        4      p \        \        ^,          \        ,           \        4      pV P                  V4      \        \        ^,          \        ,           \        4      \        \        \        ^,          ,          \        ^,          ,           \        4      38X  g   Q hV P	                  \
        4      p VP	                  \
        4      pV P                  V4      W38X  g   Q hR# rD  )r   r   r   rat_clear_denomsr|  rT   rp  s     r   test_Poly_rat_clear_denomsr  !  s    QT!VaZAQTAXqAa 	adQh	D1a4!Q$234 4 4 	
RA	RAa QF***r   c                     \        R	^\        ^4      ^,          ,          ,          RR^\        R4      ,          ,           \        ^4      ^,          ,          ,          R\        R4      ,          R^\        R4      ,          ,           \        ^4      ^,          ,          ,          ,           ,          R^\        ^4      ^,          ,          ,          ^\        ^4      ^,          ,          ,          R^\        R4      ,          ,           \        ^4      ^,          ,          ,          RR^\        R4      ,          ,           \        ^4      ^,          ,          ,          R\        R4      ,          R^\        R4      ,          ,           \        ^4      ^,          ,          ,          ,           ,          ,
          R^\        ^4      ^,          ,          ,          R^\        R4      ,          ,           \        ^4      ^,          ,          ,          RR^\        R4      ,          ,           \        ^4      ^,          ,          ,          R\        R4      ,          R^\        R4      ,          ,           \        ^4      ^,          ,          ,          ,           ,          ,           R ^\        ^4      ^,          ,          ,          ^\        ^4      ^,          ,          ,          RR^\        R4      ,          ,           \        ^4      ^,          ,          ,          R\        R4      ,          R^\        R4      ,          ,           \        ^4      ^,          ,          ,          ,           ,          ,           \        4      p V \        ^ \        RR7      8X  g   Q hR# )
l   wf8*- l   >< i^  i#  l   4$isDl   R rT   r   Nlwf8*- )r   rl   rr   r   r   s    r   test_issue_20427r  .  s   b1Q46l*OUDJ>A$q&=" -"$1$t*$<eDJ?A$q&>" %"-" #%0QqT!V%<Q1a[%H%
d4j.KaDFJ$ &$%4ec$t*n6L	
1a6 & d+USd^-CqtAv,NN&O&PP
 b1Q46l
"ECT
N$:ad1f#E
ET$Z/1Q46::]T
>CT
N*ad1f5>6 	677 :I	!QJ :AaDF:,ec$t*n.D!Q-OO
T

"ECT
N$:ad1f#E
EF:G	G IJ		KA Q$''''r   c                  	   \        \        ^,           4      P                  4       \        \        ^,          ^,          \        ,           4      8X  g   Q h\        \        ^,           4      P                  \        4      \        \        ^,          ^,          \        ,           4      8X  g   Q h\        \        ^,           4      P                  \        ^34      \        \        ^,          ^,          \        ,           4      8X  g   Q h\        \        \        ,          ^,           4      P                  \        4      \        \        ^,          \        ,          ^,          \        ,           4      8X  g   Q h\        \        \        ,          ^,           4      P                  \        4      \        \        \        ^,          ,          ^,          \        ,           4      8X  g   Q h\        \        \        ,          ^,           4      P                  \        \        4      \        \        ^,          \        ,          ^,          \        ^,          ^,          ,           4      8X  g   Q h\        \        \        ,          ^,           4      P                  \        \        4      \        \        \        ^,          ,          ^,          \        ^,          ^,          ,           4      8X  g   Q h\        \        \        ,          ^,           4      P                  \        ^34      \        \        ^,          \        ,          ^,          \        ^,          ^,          ,           4      8X  g   Q h\        \        \        ,          ^,           4      P                  \        ^34      \        \        \        ^,          ,          ^,          \        ^,          ^,          ,           4      8X  g   Q h\        \        \        ,          ^,           4      P                  \        \        4      \        \        ^,          \        ^,          ,          ^,          \        \        ,          ,           4      8X  g   Q h\        \        \        ,          ^,           4      P                  \        \        4      \        \        ^,          \        ^,          ,          ^,          \        \        ,          ,           4      8X  g   Q hR# r  )r   r   	integrater   r   r   r   test_Poly_integrater  <  s   A;  "d1a46A:&6666A;  #tAqDFQJ'7777A;  !Q(DAa!,<<<<!a=""1%ad1fQhl);;;;!a=""1%a1fQhl);;;;!a=""1a(DAaAqDF1B,CCCC!a=""1a(D1a4AqDF1B,CCCC!a=""Aq6*d1a46!8ad1f3D.EEEE!a=""Aq6*d1QT6!8ad1f3D.EEEE!a=""1a(DAad1qs1B,CCCC!a=""1a(DAad1qs1B,CCCCr   c                  8
   \        \        ^,          \        ,           4      P                  4       \        ^\        ,          ^,           4      8X  g   Q h\        \        ^,          \        ,           4      P                  \        4      \        ^\        ,          ^,           4      8X  g   Q h\        \        ^,          \        ,           4      P                  \        ^34      \        ^\        ,          ^,           4      8X  g   Q h\        \        ^,          \        ^,          ,          \        \        ,          ,           4      P                  \        4      \        ^\        ,          \        ^,          ,          \        ,           4      8X  g   Q h\        \        ^,          \        ^,          ,          \        \        ,          ,           4      P                  \        4      \        ^\        ^,          ,          \        ,          \        ,           4      8X  g   Q h\        \        ^,          \        ^,          ,          \        \        ,          ,           4      P                  \        \        4      \        ^\        ^,          ,          \        \        4      8X  g   Q h\        \        ^,          \        ^,          ,          \        \        ,          ,           4      P                  \        \        4      \        ^\        ^,          ,          \        \        4      8X  g   Q h\        \        ^,          \        ^,          ,          \        \        ,          ,           4      P                  \        ^34      \        ^\        ^,          ,          \        \        4      8X  g   Q h\        \        ^,          \        ^,          ,          \        \        ,          ,           4      P                  \        ^34      \        ^\        ^,          ,          \        \        4      8X  g   Q h\        \        ^,          \        ^,          ,          \        \        ,          ,           4      P                  \        \        4      \        ^\        ,          \        ,          ^,           4      8X  g   Q h\        \        ^,          \        ^,          ,          \        \        ,          ,           4      P                  \        \        4      \        ^\        ,          \        ,          ^,           4      8X  g   Q hR# rD  )r   r   r`   r   r   r   r   test_Poly_diffr  N  s   1q> D1qM1111q>q!T!A#']2221q>1v&$qsQw-7771QT	AaC %%a(D1QTA,>>>>1QT	AaC %%a(D1a4A,>>>>1QT	AaC %%a+tAadFAq/AAAA1QT	AaC %%a+tAadFAq/AAAA1QT	AaC %%q!f-a1fa1CCCC1QT	AaC %%q!f-a1fa1CCCC1QT	AaC %%a+tAaCEAI>>>1QT	AaC %%a+tAaCEAI>>>r   c                  &   \        \        \        ^,          \        ,           4      4      \        ^\        ,          ^,           4      8X  g   Q h\        \        \        ^,          \        ,           4      \        RR7      \        \        \        ^,          \        ,           4      \        4      8X  g   Q h\        \        \        ^,          \        ,           4      \        4      P	                  4       \        ^\        ,          ^,           4      8X  g   Q hR# )r  FevaluateN)r`   r   r   r_   doitr   r   r   test_issue_9585r  `  s    QTAX4!a=000QTAXE241q>1%& & &d1a4!8na(--/4!a=@@@r   c                     \        ^ \        4      P                  ^4      ^ 8X  g   Q h\        ^\        4      P                  ^4      ^8X  g   Q h\        \        \        4      P                  ^4      ^8X  g   Q h\        ^ \        4      P                  ^ ^4      ^ 8X  g   Q h\        ^\        4      P                  ^ ^4      ^8X  g   Q h\        \        \        4      P                  ^ ^4      ^8X  g   Q h\        ^ \        4      P                  \        ^4      ^ 8X  g   Q h\        ^\        4      P                  \        ^4      ^8X  g   Q h\        \        \        4      P                  \        ^4      ^8X  g   Q h\        ^ \        4      P                  R^4      ^ 8X  g   Q h\        ^\        4      P                  R^4      ^8X  g   Q h\        \        \        4      P                  R^4      ^8X  g   Q h\        \        R 4       \        \        R 4       \        \        R 4       \        ^{\        \
        4      P                  ^4      \        ^{\
        4      8X  g   Q h\        ^\
        ,          \        \
        4      P                  ^4      \        ^\
        ,          \
        4      8X  g   Q h\        \        \
        ,          \        \
        4      P                  ^4      \        ^\
        ,          \
        4      8X  g   Q h\        ^{\        \
        4      P                  \        ^4      \        ^{\
        4      8X  g   Q h\        ^\
        ,          \        \
        4      P                  \        ^4      \        ^\
        ,          \
        4      8X  g   Q h\        \        \
        ,          \        \
        4      P                  \        ^4      \        ^\
        ,          \
        4      8X  g   Q h\        ^{\        \
        4      P                  \
        ^4      \        ^{\        4      8X  g   Q h\        ^\
        ,          \        \
        4      P                  \
        ^4      \        ^\        4      8X  g   Q h\        \        \
        ,          \        \
        4      P                  \
        ^4      \        ^\        ,          \        4      8X  g   Q h\        \        \
        ,          \
        ,           \        \
        4      P                  \        ^/4      \        ^\
        ,          \
        4      8X  g   Q h\        \        \
        ,          \
        ,           \        \
        4      P                  \
        ^/4      \        ^\        ,          ^,           \        4      8X  g   Q h\        \        \
        ,          \
        ,           \        \
        4      P                  \        ^\
        ^/4      ^18X  g   Q h\        \        \
        ,          \
        ,           \        \
        4      P                  \        ^\
        ^/4      ^08X  g   Q h\        \        \
        ,          \
        ,           \        \
        4      P                  R4      ^18X  g   Q h\        \        \
        ,          \
        ,           \        \
        4      P                  ^^.4      ^18X  g   Q h\        \        ^,           RR7      P                  \        P                  4      \        ^^4      8X  g   Q h\        \        ^,           RR7      P                  \        ^4      4      \        ^4      ^,           8X  g   Q h\        \        R 4       \        \        R 4       \        R	4      p ^V ,          \        ,          ^V ,          ,
          \        ^,          ,           ^,           \        ^,          ^\        ,          ,
          ^,           ,          p\        \        ^,          V ^,
          \        ,          ,           V ,
          ^,           \        R
R7      pVP                  \        ^,           \        ^,
          ,          4      V8X  g   Q h\        \        ^,          V ^,
          \        ,          ,           V ,
          ^,           \        \
        R
R7      pVP                  \        ^,           \        ^,
          ,          4      \        V\
        RR7      8X  g   Q hR# )r   r   c                  B    \        ^\        4      P                  ^^4      # r   r   r   evalr   r   r   r    test_Poly_eval.<locals>.<lambda>x  s    DAJOOAq$9r   c                  J    \        ^\        4      P                  \        ^4      # r   )r   r   r  r   r   r   r   r   r  y  s    DAJOOAq$9r   c                  B    \        ^\        4      P                  R^4      # )r   r   r  r   r   r   r   r  z  s    DAJOOC$;r   rO   r   c                  ~    \        \        \        ,          \        ,           \        \        4      P                  R4      # )   )r  r      )r   r   r   r  r   r   r   r   r    s     tAaC!GQ277	Br   c                  p    \        \        ^,           RR7      P                  \        P                  RR7      # )r   rO   r   Fauto)r   r   r  rl   Halfr   r   r   r   r    s#    QU4 8 = =aff5 = Qr   alphaz	ZZ[alpha]zZZ(alpha,z)N)r  r   )r   r   r  r{   rF   r   rl   r  rg   rr   r  rH   rm   r   )r  resultr   r   s       r   test_Poly_evalr  g  s   1:??1"""1:??1"""1:??1"""1:??1a A%%%1:??1a A%%%1:??1a A%%%1:??1a A%%%1:??1a A%%%1:??1a A%%%1:??3"a'''1:??3"a'''1:??3"a'''
?9:
?9:
?;<Q?"d3l222!Q?"d1Q3l222!Q?"d1Q3l222Q?1%c1555!Q?1%ac1555!Q?1%ac1555Q?1%c1555!Q?1%b!444!Q?1%ac1555!aA##QF+tAaC|;;;!aA##QF+tAaC!GQ/????!aA##Q1aL1R777!aA##Q1aL1R777!aA##F+r111!aA##QF+r111Ad#((0HQNBBBAd#((a1T!Wq[@@@
:BC
;QR 7OEgai!E'!AqD(1,q!taczA~>FQTUQYM!E)A-qEA661q51q5/"f,,,QTUQYM!E)A-q!KHA661q51q5/"d61]&KKKKr   c                     \        ^\        ,          \        ,          ^\        ,          ,           \        ,           ^\        ,          ,           4      p V ! ^4      \        ^\        ,          ^\        ,          ,           ^,           4      8X  g   Q hV ! ^^4      \        ^\        ,          ^,           4      8X  g   Q hV ! ^^^4      ^-8X  g   Q hR# rD  )r   r   r   r   r   s    r   test_Poly___call__r    s    QqSUQqS[1_qs"#AQ44!ac	A&&&&Q7d1Q38n$$$Q1:r   c            	      Z   \        \        ^,
          \        ^,          ^,
          .\        4      ^ ,          \        \        ^,
          \        4      \        \        ^,          ^,
          \        4      .8X  g   Q h\        \        \        ^,
          \        4      \        ^,          ^,
          .\        4      ^ ,          \        \        ^,
          \        4      \        \        ^,          ^,
          \        4      .8X  g   Q h\        \        ^,
          \        \        ^,          ^,
          \        4      .\        4      ^ ,          \        \        ^,
          \        4      \        \        ^,          ^,
          \        4      .8X  g   Q h\        \        \        ^,
          \        4      \        \        ^,          ^,
          \        4      .\        4      ^ ,          \        \        ^,
          \        4      \        \        ^,          ^,
          \        4      .8X  g   Q h\        \        ^,
          \        ^,          ^,
          .\        \        4      ^ ,          \        \        ^,
          \        \        4      \        \        ^,          ^,
          \        \        4      .8X  g   Q h\        \        \        ^,
          \        4      \        ^,          ^,
          .\        \        4      ^ ,          \        \        ^,
          \        \        4      \        \        ^,          ^,
          \        \        4      .8X  g   Q h\        \        ^,
          \        \        ^,          ^,
          \        4      .\        \        4      ^ ,          \        \        ^,
          \        \        4      \        \        ^,          ^,
          \        \        4      .8X  g   Q h\        \        \        ^,
          \        4      \        \        ^,          ^,
          \        4      .\        \        4      ^ ,          \        \        ^,
          \        \        4      \        \        ^,          ^,
          \        \        4      .8X  g   Q h\        \        ^,
          \        ^,          ^,
          .4      ^ ,          \        \        ^,
          \        4      \        \        ^,          ^,
          \        4      .8X  g   Q h\        \        \        ^,
          \        4      \        ^,          ^,
          .4      ^ ,          \        \        ^,
          \        4      \        \        ^,          ^,
          \        4      .8X  g   Q h\        \        ^,
          \        \        ^,          ^,
          \        4      .4      ^ ,          \        \        ^,
          \        4      \        \        ^,          ^,
          \        4      .8X  g   Q h\        \        \        ^,
          \        4      \        \        ^,          ^,
          \        4      .4      ^ ,          \        \        ^,
          \        4      \        \        ^,          ^,
          \        4      .8X  g   Q h\        ^\        ^,          ^,
          .4      ^ ,          \        ^\        4      \        \        ^,          ^,
          \        4      .8X  g   Q h\        ^\        ^,          ^,
          .4      ^ ,          \        ^\        4      \        \        ^,          ^,
          \        4      .8X  g   Q h\        ^\        \        ^,          ^,
          \        4      .4      ^ ,          \        ^\        4      \        \        ^,          ^,
          \        4      .8X  g   Q h\        ^\        \        ^,          ^,
          \        4      .4      ^ ,          \        ^\        4      \        \        ^,          ^,
          \        4      .8X  g   Q h\        \        ^,          ^,
          ^.4      ^ ,          \        \        ^,          ^,
          \        4      \        ^\        4      .8X  g   Q h\        \        ^,          ^,
          ^.4      ^ ,          \        \        ^,          ^,
          \        4      \        ^\        4      .8X  g   Q h\        \        \        ^,          ^,
          \        4      ^.4      ^ ,          \        \        ^,          ^,
          \        4      \        ^\        4      .8X  g   Q h\        \        \        ^,          ^,
          \        4      ^.4      ^ ,          \        \        ^,          ^,
          \        4      \        ^\        4      .8X  g   Q h\        \        \        \        \        4      \        \        \        \        4      .\        \        RR7      ^ ,          \        \        \        \        RR7      \        \        \        \        RR7      .8X  g   Q h\	        \
        R 4       R# )r   rW   r*  rO   r   c                      \        ^ ^.4      # r   )r   r   r   r   r   .test_parallel_poly_from_expr.<locals>.<lambda>  s    '>1v'Fr   N)r   r   r   r   r{   r@   r   r   r   test_parallel_poly_from_exprr    s   "	
Q1q1!%)!a%^T!Q$(A5F$GH H H"	a!eQA"A''(*.21q5!nd1a4!8Q>O-PQ Q Q"	
QQTAXq!"A''(*.21q5!nd1a4!8Q>O-PQ Q Q"D	Aq%1q!$$&'(**+-15a!eQadQhPQAR0ST T T #	
Q1q1a!!"$(,QUAq(941q!Q;O'PQ Q Q"D	Aq%a4!8$$$%'+/Aq!+<d1a4!8QPQ>R*ST T T"AE4	1q!, $! $(Q1$5tAqD1Ha7K#LM M M"DQND	1q!5 $! $(Q1$5tAqD1Ha7K#LM M M #	
Q1q"&q1ua.$q!tax2C!DE E E"	a!eQA"$$%'+/Aq>41q!;L*MN N N"	
QQTAXq!"$$%'+/Aq>41q!;L*MN N N"	a!eQadQh*+--.048QNDAPQSTDU3VW W W #	
AqD1H"1aj$q!tax*;<= = ="	
AqD1H"1aj$q!tax*;<= = ="	
DA1  !#'+Aqz41q!3D&EF F F"	
DA1  !#'+Aqz41q!3D&EF F F #	
A1"1a4!8Q/a<= = ="	
A1"1a4!8Q/a<= = ="	adQh	A  !#'+AqD1Ha'8$q!*&EF F F"	adQh	A  !#'+AqD1Ha'8$q!*&EF F F #DAqM41a=#A1auUVWX	aAd	#T!Q$%?@A A A FGr   c                  d   \         ^,          \        ^,          ,
          \         \        ,
          r\         \        ,           ^ r2WW#3 Uu. uF  p\        V\         \        4      NK  	  upw  rVrxVP                  V4      Wx38X  g   Q hVP	                  V4      V8X  g   Q hVP                  V4      V8X  g   Q hVP                  V4      V8X  g   Q h\        W4      W#38X  g   Q h\	        W4      V8X  g   Q h\        W4      V8X  g   Q h\        W4      V8X  g   Q h\        W\         \        4      W#38X  g   Q h\	        W\         \        4      V8X  g   Q h\        W\         \        4      V8X  g   Q h\        W\         \        4      V8X  g   Q h\        W\         \        34      W#38X  g   Q h\	        W\         \        34      V8X  g   Q h\        W\         \        34      V8X  g   Q h\        W\         \        34      V8X  g   Q h\        WV4      Wx38X  g   Q h\	        WV4      V8X  g   Q h\        WV4      V8X  g   Q h\        WV4      V8X  g   Q h\        WRR7      Wx38X  g   Q h\	        WRR7      V8X  g   Q h\        WRR7      V8X  g   Q h\        WRR7      V8X  g   Q h\        WVRR7      W#38X  g   Q h\	        WVRR7      V8X  g   Q h\        WVRR7      V8X  g   Q h\        WVRR7      V8X  g   Q h\        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       R# u upi )	r  TpolysFc                      \        ^^4      # r  )r   r   r   r   r   test_pdiv.<locals>.<lambda>  
    d1ajr   c                      \        ^^4      # r  )r   r   r   r   r   r    r  r   c                      \        ^^4      # r  )r   r   r   r   r   r    r  r   c                      \        ^^4      # r  )r   r   r   r   r   r  	  s
    fQlr   N)	r   r   r   r   r   r   r   r{   rA   )	r   r   r   r  r   r`  GQRs	            r   	test_pdivr    s   a4!Q$;Aqq5!q+,,8,Q41a=,8JA!66!966!9>>66!9>>88A;!:!:??:??!<1av%%%aq   aq   !1"""q!f!'''q!f"""q!f"""!A1$$$:!:??:??!<1D!aV+++D!Q&&&D!Q&&&!d#q(((E"qf,,,E"a'''E"a'''!e$)))
01
01
01
23Q 9s   L-c                  X  aa \         ^,          \        ^,          ,
          \         \        ,
          uoo\         \        ,           ^ rSSW3 Uu. uF  p\        V\         \        4      NK  	  upw  r4rVVP                  V4      WV38X  g   Q hVP	                  V4      V8X  g   Q hVP                  V4      V8X  g   Q hVP                  V4      V8X  g   Q h\        SS4      W38X  g   Q h\	        SS4      V8X  g   Q h\        SS4      V 8X  g   Q h\        SS4      V 8X  g   Q h\        SS\         \        4      W38X  g   Q h\	        SS\         \        4      V8X  g   Q h\        SS\         \        4      V 8X  g   Q h\        SS\         \        4      V 8X  g   Q h\        SS\         \        34      W38X  g   Q h\	        SS\         \        34      V8X  g   Q h\        SS\         \        34      V 8X  g   Q h\        SS\         \        34      V 8X  g   Q h\        W44      WV38X  g   Q h\	        W44      V8X  g   Q h\        W44      V8X  g   Q h\        W44      V8X  g   Q h\        SSRR7      WV38X  g   Q h\	        SSRR7      V8X  g   Q h\        SSRR7      V8X  g   Q h\        SSRR7      V8X  g   Q h\        W4RR7      W38X  g   Q h\	        W4RR7      V8X  g   Q h\        W4RR7      V 8X  g   Q h\        W4RR7      V 8X  g   Q h\        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       \         ^,          ^,           ^\         ,          ^,
          uoo^ \         ^,          ^,           r\         ^,          ^,           ^r\        SS4      W38X  g   Q h\        SSRR7      W38X  g   Q h\        SSRR7      Wx38X  g   Q h\        SS\        R	7      Wx38X  g   Q h\        SS\        R	7      W38X  g   Q h\        SS\        RR
7      W38X  g   Q h\        SS\        RR
7      Wx38X  g   Q h\        SS\        RR
7      W38X  g   Q h\        SS\        RR
7      W38X  g   Q h\	        SS4      V
8X  g   Q h\	        SSRR7      V
8X  g   Q h\	        SSRR7      V8X  g   Q h\	        SS\        R	7      V8X  g   Q h\	        SS\        R	7      V
8X  g   Q h\	        SS\        RR
7      V
8X  g   Q h\	        SS\        RR
7      V8X  g   Q h\	        SS\        RR
7      V
8X  g   Q h\	        SS\        RR
7      V
8X  g   Q h\        SS4      V	8X  g   Q h\        SSRR7      V	8X  g   Q h\        SSRR7      V8X  g   Q h\        SS\        R	7      V8X  g   Q h\        SS\        R	7      V	8X  g   Q h\        SS\        RR
7      V	8X  g   Q h\        SS\        RR
7      V8X  g   Q h\        SS\        RR
7      V	8X  g   Q h\        SS\        RR
7      V	8X  g   Q h\         ^,          ^\         ,          \         ^,          uoop \        SS4      V 8X  g   Q h\        SSRR7      V 8X  g   Q h\        \        VV3R l4       \        \        VV3R l4       \        SS\        R	7      V 8X  g   Q h\        SS\        RR
7      V 8X  g   Q h\        \        VV3R l4       \        SS\        RR
7      V 8X  g   Q h\        SS\        RR
7      V 8X  g   Q h\        \         ^,          4      \        \         4      uooSP                  S4      w  rV P                  ! 4       P                  '       d!   VP                  4       P                  '       g   Q hSP	                  S4      pVP                  4       P                  '       g   Q hSP                  S4      p V P                  ! 4       P                  '       g   Q hSP                  S4      p V P                  ! 4       P                  '       g   Q h\        \         \        ,           \         4      \        ^\         ,          \        ,           \         4      uooSP                  S4      w  rV P                  ! 4       P                  '       d!   VP                  4       P                  '       g   Q h\        ^^\        ,          ,           \         \         R	7      p\        ^\        ,
          \         \         R	7      p VP                  ! V RR7      \        ^ \         RR	7      \        ^^\        ,          ,           \         RR	7      38X  g   Q hVP                  ! V RR7      \        \#        ^4      ) ^,          ^\        ,          ^,          ,           \         RR	7      \        ^ \         RR	7      38X  g   Q h^\         ^,          ,          ^
\         ,          ,           ^,           o^\         ,          ^,           o\        SS\        R	7      ^ S38X  g   Q hR# u upi )r  Tr  Fc                      \        ^^4      # r  )r   r   r   r   r   test_div.<locals>.<lambda>5  
    c!Qir   c                      \        ^^4      # r  )r   r   r   r   r   r  6  r  r   c                      \        ^^4      # r  )r   r   r   r   r   r  7  r  r   c                      \        ^^4      # r  r   r   r   r   r   r  8  s
    eAqkr   r  r   r   r  c                      < \        S SR R7      # Fr  r  rp  s   r   r   r  a  s    a(?r   c                  (   < \        S S\        R 7      # r   r   rO   rp  s   r   r   r  b  s    a2(>r   c                  *   < \        S S\        R R7      # )Fr  r  rp  s   r   r   r  e  s    a2E(Jr   rQ   rR   N)r   r   r   r   r   r   r   r{   rA   rO   rP   r?   r@  is_ZZis_Fracre   rQ   rl   )r   r  r   r`  r  r  r  qzrzqqrqr   r   r   s               @@r   test_divr     s   a4!Q$;ADAqq5!q+,a,8,Q41a=,8JA!558v558q==558q==771:??q!9q!9>>q!9>>A;!q!Q?qf$$$q!Q?aq!Q?aAq!!!!q!aV&&&q!aV!!!q!aV!!!A1v!###q9q9>>q9>>;!q!4 QF***q!4 A%%%q!4 A%%%AT"a'''q5!aV+++q5!Q&&&q5!Q&&&U#q(((
/0
/0
/0
12a4!8QqS1WDAq1qqS1Waq!9   q!$B8+++q!% RH,,,q!BB8+++q!BB8+++q!BT*rh666q!BU+x777q!BT*rh666q!BU+x777q!9??q!$2%%%q!% B&&&q!B2%%%q!B2%%%q!BT*b000q!BU+r111q!BT*b000q!BU+r111q!9??q!$2%%%q!% B&&&q!B2%%%q!B2%%%q!BT*b000q!BU+r111q!BT*b000q!BU+r111dAaC1GAq!A;!AD!Q&&&
 ?@
 >?Ab!Q&&&Abt,111
 JKAbt,111Abu-2221:tAwDAq558DA<<>ALLN$8$8$888	aA<<>	aA<<>	
A<<>!Q<ac!eQDAq558DA<<>!!!alln&<&<&<<< 	QqsUAd#AQqS!D!A55	a6	"DQqS!F$CDE E E55	qteAg!Aoq	0$q!F2KLM M M 	
!Q$AA	!aAq!BAq6)))e 9s   h'c                      \        \        R \        ,          4      w  r\        V R,
          4      R8  g   Q hV^ 8X  g   Q hR# )g>,p ?g3!	@g+=N)r   r   r   )r   r  s     r   test_issue_7864r    s:    q"1$%DAq##$u,,,6M6r   c            	      J   ^\         ,          \         ^,          ^,
          r\         ^ ,          \        R^4      ^rCpWW#V3 Uu. uF  p\        V\         RR7      NK  	  upw  rgrp
VP                  V4      W38X  g   Q hVP	                  V4      WV
38X  g   Q hVP                  V4      V8X  g   Q h\        W4      W$38X  g   Q h\	        W4      W#V38X  g   Q h\        W4      V8X  g   Q h\        W\         4      W$38X  g   Q h\	        W\         4      W#V38X  g   Q h\        W\         4      V8X  g   Q h\        W\         34      W$38X  g   Q h\	        W\         34      W#V38X  g   Q h\        W\         34      V8X  g   Q h\        Wg4      W38X  g   Q h\	        Wg4      WV
38X  g   Q h\        Wg4      V8X  g   Q h\        WRR7      W38X  g   Q h\	        WRR7      WV
38X  g   Q h\        WRR7      V8X  g   Q h\        WgRR7      W$38X  g   Q h\	        WgRR7      W#V38X  g   Q h\        WgRR7      V8X  g   Q h\        ^dR4      R8X  g   Q h\	        ^dR4      R8X  g   Q h\        ^^4      ^8X  g   Q h\        \        R 4       \        \        R 4       \        \        R	 4       R
# u upi )r  rP   r   Tr  Fi  c                  X    \        \        ^,           ^\        ,          ^,           RR7      # r   Fr  )r   r   r   r   r   r   test_gcdex.<locals>.<lambda>  s    
1q5!A#' Fr   c                  X    \        \        ^,           ^\        ,          ^,           RR7      # r  )r   r   r   r   r   r   r    s    a!eQqS1W5 Ar   c                  X    \        \        ^,           ^\        ,          ^,           RR7      # r  )r   r   r   r   r   r   r    s    q1uacAgE Br   Nr   )r  )r	  r   r  )r   rg   r   r   r   r   r{   rH   )r   r   sr   r   r   r`  r  rl   THs              r   
test_gcdexr    s   Q31r	qdHR$a!A89aAH!d1a-HMA!<<?qf$$$771:!"""88A;!av%%%;1)###!<1aA1&(((q>aAY&&&!?aaQD!aV+++tq	)))!"""av%%%;1)###!<1a$'A6111T"qQi///!d#q(((a%(QF222U#ay000!e$)))c4 H,,,d{***!Q<1
;FG
;AB
;BCI Is   J c                     \        ^\        ^,          ^,          ,
          \        ^,          ^,          ,           \        ^,          R,          ,
          4      p \        ^=\        ^,          ,          R,          ^\        ^,          ,          ^,          ,           \        ^,          ^,          ,           ^,           4      pV P                  ^4      V8X  g   Q hR# )r   i  N)r   r   revertrp  s     r   test_revertr    s    QAaZ!Q$r'!AqDH,-AR1WS[1QT6"9$q!tAv-12A88A;!r   c                  D   \         ^,          ^\         ,          ,
          ^,           \         ^,          ^,
          ^\         ,          ^,
          r!p \        V 4      \        V4      \        V4      rTpVP                  V4      W4V.8X  g   Q h\        W4      WV.8X  g   Q h\        W\         4      WV.8X  g   Q h\        W\         34      WV.8X  g   Q h\        W44      W4V.8X  g   Q h\        WRR7      W4V.8X  g   Q h\        W4RR7      WV.8X  g   Q h\        \        R 4       R# )r  Tr  Fc                      \        ^^4      # r  )r   r   r   r   r   $test_subresultants.<locals>.<lambda>  s    mAq&9r   N)r   r   r   r{   rA   r   r   r   r`  r  r  s         r   test_subresultantsr    s    dQqSj1nadQh!a!A1gtAwQ!A??1!***1)+++q!aAY...t$q	1111)+++T*qQi777U+ay888
9:r   c                     \         ^,          ^\         ,          ,
          ^,           \         ^,          ^,
          ^ r!p \        V 4      \        V4      rCVP                  V4      V8X  g   Q h\        W4      V8X  g   Q h\        W\         4      V8X  g   Q h\        W\         34      V8X  g   Q h\        W44      V8X  g   Q h\        WRR7      V8X  g   Q h\        W4RR7      V8X  g   Q h\        WRR7      W V^\         ,          ^,
          .38X  g   Q h\         \        ,
          \         \        ,
          \        \        ,
          r!p \        V 4      \        V4      \        V4      rTpVP                  V4      V8X  g   Q h\        W4      V8X  g   Q h\        W\         4      V8X  g   Q h\        W\         34      V8X  g   Q h\        W44      V8X  g   Q h\        WRR7      V8X  g   Q h\        W4RR7      V8X  g   Q h\        \        R 4       R# )r  Tr  F)
includePRSc                      \        ^^4      # r  )r   r   r   r   r    test_resultant.<locals>.<lambda>  s
    i1or   N)r   r   r   r   r   r{   rA   r  s         r   test_resultantr    s   dQqSj1nadQh!A7DGq;;q>QQ?aQ1"""QA4 A%%%Q?aQ&!+++Q'1,,,Qd+q!A#'?/CCCC!eQUAE!A1gtAwQ!A;;q>QQ?aQ1"""QA4 A%%%Q?aQ&!+++Q'1,,,
56r   c                  0   \         ^,          ^\         ^,          ,          ,           ^	\         ,          ,           ^,
          Rr\        V 4      pVP                  4       V8X  g   Q h\        V 4      V8X  g   Q h\        V \         4      V8X  g   Q h\        V \         34      V8X  g   Q h\        V4      V8X  g   Q h\        V RR7      V8X  g   Q h\        VRR7      V8X  g   Q h\        \         ^,          ,          \        \         ,          ,           \
        ,           \        ^,          ^\        ,          \
        ,          ,
          r\        V 4      \        V4      r2VP                  4       V8X  g   Q h\        V 4      V8X  g   Q h\        V \         \        \        \
        4      V8X  g   Q h\        V \         \        \        \
        34      V8X  g   Q h\        V4      V8X  g   Q h\        V RR7      V8X  g   Q h\        VRR7      V8X  g   Q h\        \        R 4       R# )r   Tr  Fc                      \        ^4      # r  )r   r   r   r   r   #test_discriminant.<locals>.<lambda>  s    l1or   Nip)r   r   r   r   r   r   r{   rA   r   r   r`  r  s       r   test_discriminantr    s   a4!AqD&=1Q3#VqQA>>q   ?a1"""A4 A%%%?a&!+++'1,,,QT6AaC<!QTAaCE\q7DGq>>q   ?a1aA&!+++Aq!Q<(A---?a&!+++'1,,,
56r   c                     \        \        ^,           \        ^,           ,          \        4      p \        V P                  4       4      ^ ^.8X  g   Q hV P	                  4       ^8X  g   Q h\        \        ^,          ^\        ^,          ,          ,
          ^,           \        4      p V P                  R4      p\        V P                  V4      4      . RO8X  g   Q hV P	                  V4      ^8X  g   Q hR# )r   Nrb  )r  r   r  )r   r   sorteddispersionset
dispersionshift)fpgps     r   test_dispersionr'    s     
q1uq1uoq	!B"""$%!Q///==?a	adQq!tVma	#B	"B"""2&'9444==!!!r   c                     \         ^,          ^,
          \         ^,          ^,
          \         ^,          ^\         ,          ,
          ^,           .p \        V 4      \         ^,
          8X  g   Q h\        V RR7      \        \         ^,
          4      8X  g   Q h\        . 4      ^ 8X  g   Q h\        ^^.4      ^8X  g   Q h\        . RO4      ^8X  g   Q h\        \         \        ^*,           ,          \         \        ,          ,
          \         ^*,          ,
          .4      ^ 8X  g   Q h\        . \         4      pVP                  '       d   V\
        P                  J g   Q h\        . \         RR7      pVP                  '       d   VP                  '       g   Q h\        ^4      p\        W") .4      \        V) V.4      u;8X  d	   V8X  g   Q h Q h\        \        R 4       R# )r   Tr  c                      \        . R R7      # Tr  )r   r   r   r   r   test_gcd_list.<locals>.<lambda>#      hr&>r   Nr  r  r  )r   r   r   r   	is_Numberrl   r   is_Polyr  rr   r{   rA   )r`  r   r   s      r   test_gcd_listr0    sX   	
A1a4!8QTAaCZ!^,AA;!a%AT"d1q5k111B<1QFq   I!###QBZ!A#%",-.!333
2q/C===SAFF]**
2q
%C;;;3;;;&&QAQG1"a 16Q66666
>?r   c                  ~   \         ^,          ^,
          \         ^,          ^,
          \         ^,          ^\         ,          ,
          ^,           .p \        V 4      \         ^,          \         ^,          ,
          ^\         ^,          ,          ,
          \         ^,          ,
          \         ,           ^,           8X  g   Q h\        V RR7      \        \         ^,          \         ^,          ,
          ^\         ^,          ,          ,
          \         ^,          ,
          \         ,           ^,           4      8X  g   Q h\        . 4      ^8X  g   Q h\        ^^.4      ^8X  g   Q h\        . RO4      ^8X  g   Q h\        \         \        ^*,           ,          \         \        ,          ,
          \         ^*,          ,
          .4      ^ 8X  g   Q h\        . \         4      pVP                  '       d   V\
        P                  J g   Q h\        . \         RR7      pVP                  '       d   VP                  '       g   Q h\        \        R 4       R# )r   Tr  c                      \        . R R7      # r*  )r   r   r   r   r   test_lcm_list.<locals>.<lambda>8  r,  r   Nr-  )r   r   r   r   r.  rl   Oner/  r  r{   rA   )r`  r   s     r   test_lcm_listr5  &  ss   	
A1a4!8QTAaCZ!^,AA;!Q$A+!Q$.A59A====AT"d1a4!Q$;1a4+?!Q$+F+JQ+N&OOOOB<1QFq   I"$$$QBZ!A#%",-.!333
2q/C===SAEE\))
2q
%C;;;3:::%%
>?r   c                     \         ^,          ^,
          \         ^,          ^,
          r\         ^,          \         ,           ^,           \         ^,           r2\         ^,
          \         ^,          \         ^,          ,           \         ,
          ^,
          rTWW#WE3 Uu. uF  p\        V4      NK  	  upw  rxrrVP                  V4      WV
38X  g   Q hVP                  V4      V8X  g   Q hVP	                  V4      V8X  g   Q h\        W4      WBV38X  g   Q h\        W4      V8X  g   Q h\	        W4      V8X  g   Q h\        W\         4      WBV38X  g   Q h\        W\         4      V8X  g   Q h\	        W\         4      V8X  g   Q h\        W\         34      WBV38X  g   Q h\        W\         34      V8X  g   Q h\	        W\         34      V8X  g   Q h\        Wx4      WV
38X  g   Q h\        Wx4      V8X  g   Q h\	        Wx4      V8X  g   Q h\        WRR7      WV
38X  g   Q h\        WRR7      V8X  g   Q h\	        WRR7      V8X  g   Q h\        WxRR7      WBV38X  g   Q h\        WxRR7      V8X  g   Q h\	        WxRR7      V8X  g   Q hR\         ^,          ,          R,
          R\         ,          R,
          rTR\         ,          R,           Rr2p\        W4      WBV38X  g   Q h\        W4      V8X  g   Q h\	        W4      V 8X  g   Q hR\         ^,          ,          R,
          R\         ,          R,
          rTR\         ,          R,           Rr2p\        W4      WBV38X  g   Q h\        W4      V8X  g   Q h\	        W4      V 8X  g   Q h\        ^^4      R8X  g   Q h\        ^^4      ^8X  g   Q h\	        ^^4      ^8X  g   Q h\         ^,          ^\         ,          ,
          ^,
          \         ^,          ^\         ^,          ,          ,
          \         ,           ^,
          r\         ^,          ^\         ^,          ,          ,
          ^\         ^,          ,          ,
          ^\         ,          ,
          ^,
          p\         ^,
          \         ^,           \         ^,          ^,           r2p\        W^R7      WBV38X  g   Q h\        W^R7      V8X  g   Q h\	        W^R7      V8X  g   Q h\         ^,          ^\         ,          ,           ^,           \         ^,          ^\         ^,          ,          ,           \         ,           ^,           r\         ^,          ^\         ^,          ,          ,           ^\         ^,          ,          ,           ^\         ,          ,           ^,           p\         ^,           \         ^,           \         ^,          ^,           r2p\        W^RR7      WBV38X  g   Q h\        W^RR7      V8X  g   Q h\	        W^RR7      V8X  g   Q h\        ^4      \        ^4      ) r\        W4      \        W4      u;8X  d   \        ^4      8X  g   Q h Q h\        R4      \        R4      ) r\        W4      \        W4      u;8X  d   \        ^4      8X  g   Q h Q h\        \        \         ^,
          \         4      \        \        \         ,          \         4      4      \        ^\         \        R7      8X  g   Q h\        \        R 4       \        \        R	 4       \        R\         4      p \        ^\         4      p\	        W4      \        ^\         4      8X  g   Q h\        ^ \         4      p \        ^^.\         4      pW3 FO  p\	        V^ 4      ^ 8X  g   Q h\	        ^ V4      ^ 8X  g   Q h\	        VV 4      ^ 8X  g   Q h\	        V V4      ^ 8X  d   KO  Q h	  ^\         ^,          ,          \         ,           ^,           p \        V \        R7      p\        V \        R7      pVP                  V4      V8X  g   Q hVP	                  V4      V8X  g   Q hVP                  V4      VP                  4       8X  g   Q hVP	                  V4      VP                  4       8X  g   Q h\        W 4      V 8X  g   Q h\	        W 4      V 8X  g   Q h\        W \        R7      \        V 4      8X  g   Q h\	        W \        R7      \        V 4      8X  g   Q hR
# u upi )r   Tr  Fr   r   r:  r   c                       \        \        4      # r   )r   r   r   r   r   r   test_gcd.<locals>.<lambda>      c!fr   c                       \        \        4      # r   )r   r   r   r   r   r   r8    r9  r   N)r  r  r   r  r   )r   r   r   r   r   rr   re   rQ   r{   r  rO   rP   r!   )r   r   r
  r   r   r  r   r`  r  rl   r  r  r  lr   r   ipfzpfqs                      r   test_gcdr?  ;  s   a4!8QTAXqa4!8a<Qqq5!Q$A+/A%q+,q*<>*<Qa*<>A!;;q>aAY&&&558q==558q==Q?qQi'''q9>>q9>>Q1!***qQ<1qQ<1QA4 Q1I---qaT?aqaT?aQ?qQi'''q9>>q9>>Q&1)333q4 A%%%q4 A%%%Q'A!9444q5!Q&&&q5!Q&&&q!t8c>3q53;qQc!AQ?qQi'''q9>>q9>>q!t8c>3q53;qQc!AQ?qQi'''q9>>q9>>Q?i'''q!9>>q!9??a4!A#:>1a4!AqD&=1,q0q	1qAv!Q$1$q(A!eQUAqD1H!AQ2&1)333qR A%%%qR A%%%a4!A#:>1a4!AqD&=1,q0q	1qAv!Q$1$q(A!eQUAqD1H!AQ27A!9DDDqR51Q666qR51Q6667T!WHqq9A	,T!W,,,,,8d2hYqq9A	,T!W,,,,,tAE1~tAaC|,Q$0GGGG
9n%
9n%RAQ
Aq9Q
"""Q
AaVQAV1ayA~~1ayA~~1ayA~~1ayA~~	  	
!Q$
QA
q
C
q
C773<3773<3773<399;&&&773<399;&&&q9>>q9>>qB58+++qB58+++E ?s   cc            	         \        \        ^^	4      \        4      '       g   Q h\        \        ^\        ,          ^	4      \        4      '       g   Q h\        ^^	4      ^8X  g   Q h\        ^\        ,          ^	4      ^8X  g   Q h\        \        \	        ^^4      \	        ^	^4      4      \        4      '       g   Q h\        \        \	        ^^4      \        ,          \	        ^	^4      4      \        4      '       g   Q h\        \	        ^^4      \	        ^	^4      4      \	        ^^4      8X  g   Q h\        \	        ^^4      \        ,          \	        ^	^4      4      ^8X  g   Q h\        \        RR4      \
        4      '       g   Q h\        \        R\        ,          R4      \
        4      '       g   Q h\        RR4      R8X  g   Q h\        R\        ,          R4      R8X  g   Q h\        \        ^^RR7      ^4      ^8X  g   Q hR# )r   r3  g      "@r   Fr  N)r   r   rf   r   rg   rd   rc   r   r   r   test_gcd_numbers_vs_polysrA    s   c!Qi))))c!A#qk7++++q!9>>qsA;!c(1a.(1a.98DDDDc(1a.*HQN;XFFFFx1~x1~.(1a.@@@x1~a!Q0A555c#smU++++c#a%ou----sC=Cs1uc?c!!! s1a%(!,111r   c            
         \        ^4      ^8X  g   Q h\        ^\        4      ^8X  g   Q h\        \        ^,
          4      \        ^,
          8X  g   Q h\        \        ) ^,
          4      \        ) ^,
          8X  g   Q h\        ^\        ,          ^,           4      ^\        ,          ^,           8X  g   Q h\        ^\        ,          ^,           4      \        ^^\        ,          ^,           RR7      8X  g   Q h\        \        ^,          \        ,          \        \        ^,          ,          ,           4      \        \        ,          \        ^,          \        ^,          ,           ,          8X  g   Q h\        ^\        ^,          ,          \        ,          ^\        ,          \        ^,          ,          ,           4      ^\        ,          \        ,          \        ^,          \        ^,          ,           ,          8X  g   Q h\        \        ^,          \        ,          ^,          \        \        ^,          ,          ^,          ,           4      \        \        ,          ^,          \        ^,          \        ^,          ,           ,          8X  g   Q h\        \        ^,          \        ,          ^\        ,          \        ^,          ,          ,           4      \        \        ,          \        ^,          ^\        ^,          ,          ,           ,          8X  g   Q h\        ^\        ^,          ,          \        ,          ^\        ,          \        ^,          ,          ,           4      ^\        ,          \        ,          \        ^,          ^\        ^,          ,          ,           ,          8X  g   Q h\        ^\        ^,          ,          \        ,          ^,          ^\        ,          \        ^,          ,          ^,          ,           4      \        \        ,          \	        ^^4      ,          ^\        ^,          ,          ^\        ^,          ,          ,           ,          8X  g   Q h\        R\        ^,          ,          \        ,          R\        ,          \        ^,          ,          ,           4      \        \        ,          R\        ^,          ,          R\        ^,          ,          ,           ,          8X  g   Q h\        \        R\        ,          ^,           4      R\        ,          ^,           4      '       g   Q h\        ^^\        ,          ,           \        \        \        ,          ,           ,          RR7      ^\        ,          ^,           \        \        ,          \        ,           ,          8X  g   Q h\        ^^\        ,          ,           \        \        \        ^^\        ,          ,           4      ,          ,           ,          RRR7      ^\        ,          \        ^,           ,          \        \        ^\        ^,           RR7      4      ^,           ,          8X  g   Q h\        \        \        \        \        ,          ,           4      RR7      \        \        \        ^,           ,          4      8X  g   Q h\        ^\        ,          ^\        ,          ^\        ,          \        ,          ,           4      p \        V 4      \        ^\        ,          ^\        ,          \        ^,           ,          4      8X  g   Q h\        V RR7      \        ^\        ,          ^\        ,          \        ^,           ,          4      8X  g   Q h\        \        R	 4       R
# )r   Fr  r4  gffffff@ra   T)ra   deeprD  c                  &    \        \        ^8  4      # r.  )r   r   r   r   r   r    test_terms_gcd.<locals>.<lambda>  s    iA.r   N)r   r   rc   r   rg   r\   rt   rk   r   r{   r  r   s    r   test_terms_gcdrI    sN   Q<1Q?aQUq1u$$$aR!VQ&&&QqS1W1q(((QqS1WQ!a%!@@@@QT!Va1f_%1adQTk)::::Qq!tVAX!AqD()QqSUAqD1a4K-@@@@QT!VAX!Q$q()QqSUAqD1a4K-@@@@QT!Vac!Q$h&'1Q31qAv+>>>>Qq!tVAX!AqD()QqSUAqD1QT6M-BBBBQq!tVAXaZ!A#ad(1*,-1Xa_1Da1fqQRTUQUvo1VVVVSAXaZ#a%1*,-1c!Q$hQT6I1JJJJIc!eai(#a%!)4444a!A#gAaC(7	
1q1Q37  a!A#gAc!ac'lN 23EM	!QUSQA67!;<= = =SQqS\-Aq1uI   
AaC1qs1u	BR=BqsAaCQK0000Rd#r!A#qsAE{';;;;
9./r   c                  4   \         ^,          ^\         ^,          ,          ,           ^\         ^,          ,          ,           ^\         ^,          ,          ,           ^\         ,          ,           ^,           \         ^,          \         ^,          ,
          \         ^,          ,           \         ,
          r\        V 4      \        V4      r2VP                  ^4      V8X  g   Q h\        V ^4      V8X  g   Q h\        V ^\         4      V8X  g   Q h\        V ^\         34      V8X  g   Q h\        V^4      V8X  g   Q h\        V ^RR7      V8X  g   Q h\        V^RR7      V8X  g   Q h^\         ^,          ,          ^\         ^,          ,          ,           ^\         ^,          ,          ,           ^\         ^,          ,          ,           ^\         ,          ,           ^,           \         ^,          ) \         ^,          ,           \         ,
          ^,           r\        V 4      \        V4      r2VP                  ^4      V8X  g   Q h\        V ^4      V8X  g   Q h\        V ^\         4      V8X  g   Q h\        V ^\         34      V8X  g   Q h\        V^4      V8X  g   Q h\        V ^RR7      V8X  g   Q h\        V^RR7      V8X  g   Q h\        \         ^,          ^\         ,          ,           ^,           ^R7      p V P                  ^4      \        \         ^,          ^,           ^R7      8X  g   Q hR# )   Tr  Fr   N)r   r   r    r  s       r   
test_truncrL    sG   a4!AqD&=1QT6!AadF*QqS014adQTkAqD6H16Lq7DGq771:??A;!Aq>QAt!!!A;!AT"a'''AU#q(((QT6AadF?Qq!tV#a1f,qs2Q6A1q8H18Lq7DGq771:??A;!Aq>QAt!!!A;!AT"a'''AU#q(((QTAaCZ!^Q'A771:adQh2222r   c                  F   ^\         ,          ^,
          \         \        P                  ,
          r\        V RR7      \        V4      r2VP	                  4       V8X  g   Q h\	        V 4      V8X  g   Q h\	        V \         4      V8X  g   Q h\	        V \         34      V8X  g   Q h\	        V4      V8X  g   Q h\	        V RR7      V8X  g   Q h\	        VRR7      V8X  g   Q h\        \        R 4       \	        ^\         ^,          ,          ^\         ,          ,           ^,           RR7      \         ^,          ^\         ,          ,           ^,           8X  g   Q h\        \        R 4       \	        R	\         ^,          ,          R
\         ,          ,           R,           4      R\         ^,          ,          R\         ,          ,           R	,           8X  g   Q h\	        ^\         ^,          ,          ^\         ,          ,           ^,           ^R7      \         ^,          \         ,
          ^,           8X  g   Q hR# )r  rP   r   Tr  Fc                      \        ^4      # r  )r!   r   r   r   r   test_monic.<locals>.<lambda>	      eAhr   r  c                  d    \        ^\        ,          ^\        ,          ,           ^,           RR7      # )r  Fr  )r!   r   r   r   r   r   rO  
	  s    acAaCi!m%(Hr   r4  g      @g      @r   r3  r   N)r   rl   r  r   r!   r{   rA   r?   r  s       r   
test_monicrR    sx   Q37AJq$aq779>>8q==A;!QD>Q8q==$1$$$% A%%%
./1a4!A#!.!Q$1*q.@@@
 HIQTCE!C'(C1Hs1u,<s,BBBB1a4!A#!1-AA===r   c                  8   ^\         ,          ^,           \        ^\         ,          ^,           4      rVP                  4       ^8X  g   Q h\        V 4      ^8X  g   Q h\        \        R 4       \        ^\         ,          ^R7      p V P                  4       ^8X  g   Q hR# )r  c                      \        ^4      # r  )r"   r   r   r   r   test_content.<locals>.<lambda>	  s    gajr   r   N)r   r   r"   r{   rA   )r   r`  s     r   test_contentrV  	  sq    Q37D1qMq99;!1:??
01QqS!A99;!r   c                     ^\         ,          ^,           ^\         ,          ^,           r\        V 4      \        V4      r2VP                  4       ^V38X  g   Q h\        V 4      ^V38X  g   Q h\        V \         4      ^V38X  g   Q h\        V \         34      ^V38X  g   Q h\        V4      ^V38X  g   Q h\        V RR7      ^V38X  g   Q h\        VRR7      ^V38X  g   Q h\        \        R 4       \        ^\         ,          ^R7      p \        R\         ,          \
        R7      pV P                  4       ^V 38X  g   Q hVP                  4       RV38X  g   Q h\        \        R	4      4      \        R
4      8X  g   Q hR# )r  Tr  Fc                      \        ^4      # r  )r#   r   r   r   r    test_primitive.<locals>.<lambda>)	      ilr   r   r4  r   r   z-3*x/4 + y + 11/8z(1/8, -6*x + 8*y + 11)N)r   r   r#   r{   rA   rS   rl   r  s       r   test_primitiver[  	  sS   Q37AaC!Gq7DGq;;=QF"""Q<Aq6!!!Q?q!f$$$Q!Q'''Q<Aq6!!!Qd#1v---Qe$A...
23QqS!ASU2A;;=QF""";;=S!H$$$Q*+,	
"#$ $ $r   c                  b   \         ^,          ^\         ^
,          ,          ,           ^\         ^,          ,          ,           R\         ^,          ,          ,           R\         ^,          ,          ,           ^\         ^,          ,          ,
          ^
\         ,          ,
          ^	,           p \         ^,          ^\         ,          ,
          ^	,           p\         ^,          ^\         ,          ,           p\        \        WV34      w  r4pVP                  V4      V8X  g   Q h\        W4      V 8X  g   Q h\        W\         4      V 8X  g   Q h\        W\         34      V 8X  g   Q h\        WE4      V8X  g   Q h\        WRR7      V8X  g   Q h\        WERR7      V 8X  g   Q hVP	                  4       WE.8X  g   Q h\	        V 4      W.8X  g   Q h\	        V \         4      W.8X  g   Q h\	        V \         34      W.8X  g   Q h\	        V4      WE.8X  g   Q h\	        V RR7      WE.8X  g   Q h\	        VRR7      W.8X  g   Q h\        \        R 4       \        \        R 4       \        \         ^,          \        ^,          ,
          \         \        ,
          \         \        4      \         ^,          ^\         ,          \        ,          ,
          8X  g   Q h\        \         ^,          \        ^,          ,
          \         \        ,
          \        \         4      \        ^,          ) ^\         ,          \        ,          ,           8X  g   Q hR# )	   i  q  Tr  Fc                      \        ^^4      # r  )r$   r   r   r   r   test_compose.<locals>.<lambda>L	  s
    gamr   c                      \        ^4      # r  )r%   r   r   r   r   r`  M	  rZ  r   N)r   mapr   r$   r%   r{   rA   r   r  s         r   test_composerc  5	  sK   	21b53q!t8#c!Q$h.QT9AadFBRTIAMA	1qs
QA	1qs
A$q	"GA!99Q<11=A1q   1!!###1=A1t$)))1u%***;;=QF"""Q<A6!!!Q?qf$$$Q!'''Q<A6!!!Qd#v---Qe$...
34
231a4!Q$;Aq!,1qs1u<<<1a4!Q$;Aq!,A!A===r   c                      \        \        ^,          ^\        ,          ,
          ^,           \        4      P                  ^4      \        \        ^,          ^\        ,          ,           ^,           \        4      8X  g   Q hR# rD  )r   r   r$  r   r   r   
test_shiftre  S	  sI    1qs
Q"((+tAqD1Q3JNA/FFFFr   c                      \        \        \        ,          \        \        .4      P                  ^^.4      \        \        ^,           \        ^,           ,          \        \        .4      8X  g   Q hR# r  )r   r   r   
shift_listr   r   r   test_shift_listrh  W	  sE    !aU&&!u-qsQqSkAa51IIIIr   c            
      B   \        \        ^,          ^\        ,          ,
          ^,           \        4      P                  \        \        ^,           4      \        \        ^,
          4      4      \        ^\        4      u;8X  d   \        \        ^,
          ^,          \        ^,          ^\        ,          ,
          ^,           P	                  \        \        ^,           \        ^,
          ,          4      ,          4      8X  g   Q h Q h\        \        ^,          \        ^,          ,
          ^,           \        4      P                  \        \        ^,           4      \        \        ^,
          4      4      \        ^\        ^,          ,          ^,          \        ^^4      ,           \        4      u;8X  d   \        \        ^,
          ^,          \        ^,          \        ^,          ,
          ^,           P	                  \        \        ^,           \        ^,
          ,          4      ,          4      8X  g   Q h Q h\        \        ^,          ^\        ,          ,
          ^,           \        4      P                  \        \        \        P                  ,           4      \        \        ^,
          4      4      \        \        ^	^4      \        4      u;8X  d   \        \        ^,
          ^,          \        ^,          ^\        ,          ,
          ^,           P	                  \        \        \        P                  ,           \        ^,
          ,          4      ,          4      8X  g   Q h Q h\        \        ^,          ^\        ,          ,
          ^,           \        4      P                  \        \        ^,           4      \        \        \        P                  ,
          4      4      \        \        ^	^4      \        4      u;8X  d   \        \        \        P                  ,
          ^,          \        ^,          ^\        ,          ,
          ^,           P	                  \        \        ^,           \        \        P                  ,
          ,          4      ,          4      8X  g   Q h Q h\        \        ^,          ^\        ,          ,
          ^,           \        4      P                  \        \        R,           4      \        \        \        P                  ,
          4      4      \        \        ^	^4      \        RR7      u;8X  d   \        \        \        P                  ,
          ^,          \        ^,          ^\        ,          ,
          ^,           P	                  \        \        R,           \        \        P                  ,
          ,          4      ,          4      8X  g   Q h Q h\        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       R	# )
r  r   rS   r   c                      \        \        \        ,          4      P                  \        \        ^,           4      \        \        ^,
          4      4      # r   )r   r   r   	transformr   r   r   r    test_transform.<locals>.<lambda>r	  s)    tAaCy224A;QULr   c                      \        \        4      P                  \        \        ^,           4      \        \        ^,
          4      4      # r   r   r   rk  r   r   r   r   r   rl  s	  %    tAw00a!ed1q5kJr   c                      \        \        4      P                  \        \        ^,           4      \        \        ^,
          4      4      # r   rn  r   r   r   r   rl  t	  ro  r   c                      \        \        4      P                  \        \        \        ,          ^,           4      \        \        ^,
          4      4      # r   rn  r   r   r   r   rl  u	  s)    tAw00acAgQULr   c                      \        \        4      P                  \        \        ^,           4      \        \        \        ,          ^,
          4      4      # r   rn  r   r   r   r   rl  v	  s)    tAw00a!ed1Q37mLr   N)
r   r   rk  r7   r  rg   rl   r  r{   r  r   r   r   test_transformrs  [	  s   1qs
Q",,T!a%[$q1u+FQ
EAz1a4!A#:>//AEAE?CCDE E E E E 1qs
Q",,T!a%[$q1u+FQq!tVAXA&*EAz1a4!A#:>//AEAE?CCDE E E E E 1qs
Q",,T!aff*-=tAE{KXa^QJAz1a4!A#:>//AJQ3GHHIJ J J J J 1qs
Q",,T!a%[$q166z:JKXa^QOAFF
Q1qs
Q44QQQVV8LMMNO O O O O
 1qs
Q",,T!c']DQVV<LMXa^Qt,QAFF
Q1qs
Q44QS1qvv:8NOOPQ Q Q Q Q :LM
:JK
:JK
:LM
:LMr   c                    a \         \        \         R R7      uop ^\        ^\         R R7      r!V P                  4       W.8X  g   Q h\        S4      SV.8X  g   Q h\        S\         4      SV.8X  g   Q h\        S\         34      SV.8X  g   Q h\        V 4      W.8X  g   Q h\        SRR7      W.8X  g   Q h\        V RR7      SV.8X  g   Q h\        \        R 4       \        \
        V3R l4       \        \        R4      R\        ^,          ,          ,          \         ^,          ,          \        R	4      R
\        ^,          ,          ,          \         ^,          ,          ,
          \        ^ 4      R\        ^,          ,          ,          \         ^,          ,          ,           \        ^4      R
\        ^,          ,          ,          \         ^,          ,          ,
          \        ^R4      \         ,          ,           \        ^R
4      ,
          \         RR7      o\        S4      \        \         ^,          ^d\         ^,          ,          ,
          \        ^,          ^@,          \         ,          ,           ^\        ^,          ,          ^,          ,
          \         RR7      \        ^\         ^,          ,          ^\         ,          ,
          \        ^,          ^@,          ,           \         RR7      \        \        R^	4      \        ^,          ^`,          ,
          \         ,          ^\        ^,          ,          ^,          ,           \         RR7      \        R\        ^,          ,          R\        ^,          ,          ,
          ^	\        ^,          ,          ,
          RR\        ^,          ,          ,
          R\        ^,          ,          ,           ,          \         RR7      .8X  g   Q hR# )rP   r   Tr  Fc                      \        ^4      # r  r&   r   r   r   r   test_sturm.<locals>.<lambda>	  rP  r   c                     < \        S R R7      # r  rv  r   s   r   r   rw  	  s    ae 4r   i   i	=  i   r^  i$  zZZ(pi)i N  i ȯ l      ^_i  @  Nl   i)	r   r   r&   r{   rA   rH   rl   ri   rg   )r`  r   r  r   s      @r   
test_sturmrz  y	  s   d1T"DAqd1a%q77981vA;1a&   QD>aV###8v$A6)))% QF***
./
;45QtWeBEk"1a4'tWc"a%i A%&rUE"a%K A%& sVSQY1$% a!	"
 a
  !	3A 8	adSAXoAb
*RAXb[8!H	M	a1fs1unr1uRx'8	<	xq!BE"H,a/"RU(2+=q	R	~b!e#hr1un4qRx?.S\]_ab]bSbBbehikmninenBnoqr  |D  
E	FF F Fr   c                    a  \         ^,          ^\         ^,          ,          ,           \         ^,          ,
          ^\         ^,          ,          ,
          o \        S 4      P                  4       \        \         4      ^3\        \         ^,           4      ^3.8X  g   Q h\        S 4      \         ^3\         ^,           ^3.8X  g   Q h\        \        V 3R l4       \         \         ^,
          ^,          ,          \         ^,
          ^,          ,          \         ^,
          ^,          ,          \         ^,
          ,          o \        S 4      P                  4       \        \         ^,          ^\         ,          ,
          ^,           4      ^3\        \         ^,          ^\         ,          ,
          ^,           4      ^3\        \         4      ^3.8X  g   Q h\        S 4      \         ^,          ^\         ,          ,
          ^,           ^3\         ^,          ^\         ,          ,
          ^,           ^3\         ^3.8X  g   Q h\        \        V 3R l4       R# )rK  c                     < \        S 4      # r   r(   r   s   r   r   test_gff.<locals>.<lambda>	  	    Ar   c                     < \        S 4      # r   r}  r   s   r   r   r~  	  r  r   N)r   r   r'   r{   r=  r   s   @r   test_gffr  	  s   	1qAv1qAv%A747A,a!ea0@!AAAAA;Aq6AE1:....
/	1q51*a!eaZQ
*AE2A7QTAaCZ!^a#!#'1qs
Q#7";d1gq\"K K K KA;AqD1Q3JNA.A!a0CaVLLLL
/r   c                     \        ^4      \        ^4      r\        V \        ,          V\        ,          ,           \        \        W3R7      pVP	                  4       \        ^\        ^,          ,          ^\        ^,          ,          \        ^,          ,          ,
          ^	\        ^,          ,          ,           \        \        RR7      8X  g   Q hR# r  r   rP   r   N)rr   r   r   r   norm)r   r   r   s      r   	test_normr  	  sx    7DGqQqS1Q3Y1/A668tAadFR1WQT\1AadF:AqNNNNr   c            	      r   \        \        ^,          ^,
          \        ^4      R7      ^.\        ^,          ^\        ^4      ,          \        ,          ,
          ^,           \        ^,          ^
\        ^,          ,          ,
          ^,           38X  g   Q h\        \        ^,          ^,
          \        ^4      R7      ^.\        ^,          ^\        ^4      ,          \        ,          ,
          ^,
          \        ^,          ^
\        ^,          ,          ,
          ^,           38X  g   Q h\        \        ^,          ^,
          \        ^4      R7      P                  4       ^.\        \        ^,          ^\        ^4      ,          \        ,          ,
          ^,           \        \        ^4      R7      \        \        ^,          ^
\        ^,          ,          ,
          ^,           \        RR7      38X  g   Q h\        \        ^,          ^,
          \        ^4      R7      P                  4       ^.\        \        ^,          ^\        ^4      ,          \        ,          ,
          ^,
          \        \        ^4      R7      \        \        ^,          ^
\        ^,          ,          ,
          ^,           \        RR7      38X  g   Q hR# r  )r)   r   rr   r   r   r   r   test_sqf_normr  	  s   AqD1HQ0
adQtAwYq[ 1$adR1Wnq&89: : :AqD1HQ0
adQtAwYq[ 1$adR1Wnq&89: : : 1qDG,557
d1a4!DG)A+%)1Q@1a4"QT'>A%q6	88 8 8 1qDG,557
d1a4!DG)A+%)1Q@1a4"QT'>A%q6	88 8 8r   c            	         \         ^,          \         ^,          ,
          \         ^,          ,
          ^,           p \         ^,          ^\         ^,          ,          ,           ^\         ,          ,           ^,           p\         ^,
          p\         ^,          \         ^,          ,           \         ,
          ^,
          p\        \        WW#34      w  rErgVP                  4       V8X  g   Q h\        V 4      V8X  g   Q h\        V \         4      V8X  g   Q h\        V \         34      V8X  g   Q h\        V4      V8X  g   Q h\        V RR7      V8X  g   Q h\        VRR7      V8X  g   Q hVP	                  4       ^V^3V^3.38X  g   Q h\	        V 4      ^V^3V^3.38X  g   Q h\	        V \         4      ^V^3V^3.38X  g   Q h\	        V \         34      ^V^3V^3.38X  g   Q h\	        V4      ^V^3V^3.38X  g   Q h\	        V RR7      ^V^3V^3.38X  g   Q h\	        VRR7      ^V^3V^3.38X  g   Q hVP                  4       V^3V^3.8X  g   Q h\        \        R 4       \        ^4      ^8X  g   Q h\	        ^4      ^. 38X  g   Q h\        ^\         ^,          ,          ^,           ^,          4      ^\         ^,          ^,           ^,          ,          8X  g   Q h\        V 4      W^,          ,          8X  g   Q h\        V \         4      W^,          ,          8X  g   Q h\        V \         34      W^,          ,          8X  g   Q h\         ^,          \        ^,          ,           p\        W,          4      W^,          ,          V,          8X  g   Q h\        W,          \         4      W^,          ,          V,          8X  g   Q h\        W,          \         34      W^,          ,          V,          8X  g   Q h\        \         ^,
          4      \         ^,
          8X  g   Q h\        \         ) ^,
          4      \         ) ^,
          8X  g   Q h\        \         ^,
          4      \         ^,
          8X  g   Q h\        ^\         ,          ^
,
          4      \        ^^\         ,          ^,
          RR7      8X  g   Q h\        ^\         ,          ^
,
          ^\         ,          ^,
          ,          4      \        ^^4      ^\         ,          ^,
          \         ^,
          ,          ,          8X  g   Q h\        \        \         ^,          ^\         ,          ,
          ^,           4      4      \         ^,
          ^,          8X  g   Q h^\         ,           \         ^\         ,           ,          ,
          \         ^,          ,           p \        V 4      ^8X  g   Q h\         ^,          ^\         ,          ,           ^,           R,          p \        V 4      \         ^,           R,          8X  g   Q h\	        V 4      ^\         ^,           R3.38X  g   Q h\        \        \        ^,
          ^,          \        ^,           ,          \         ^,           ,          4      4      \        ^,
          ^,          \        \        ^,           \         ^,           ,          4      ,          8X  g   Q h\        \        \        ^,
          ^,          \        ^,           ,          \        ^,           ,          4      4      \        ^,
          ^,          \        \        ^,           \        ^,           ,          4      ,          8X  g   Q h\        \        \        \        ,
          ^,          \        \        ,           ,          \         ^,           ,          4      4      \        \        ,
          ^,          \        \        \        ,           \         ^,           ,          4      ,          8X  g   Q h\        \        \        \        ,
          ^,          \        \        ,           ,          \        ^,           ,          4      4      \        \        ,
          ^,          \        \        \        ,           \        ^,           ,          4      ,          8X  g   Q h\         ^,
          ^,          \         ^,
          ,          \         \        ,           ^,          ,          \        ^,
          ^,          ,          \        ^,
          ,          p\        V4      P	                  4       ^\        \         \        ,          \         ,
          \        ,
          ^,           4      ^3\        \         ^,          \        ,          ^\         ^,          ,          ,
          \         \        ^,          ,          ,           ^\         ,          \        ,          ,
          ^\         ,          ,           ^\        ^,          ,          ,
          ^\        ,          ,           4      ^3.38X  g   Q hR# )	rK  Tr  Fc                      \        ^4      # r  )r*   r   r   r   r   test_sqf.<locals>.<lambda>	  s    hqkr   r  l    H/P l    _ % N)r   rb  r   r*   r+   sqf_list_includer{   rA   r,   r   rc   rg   ra   r   re   )	r   r   r   r   r`  r  r  Pr   s	            r   test_sqfr  	  s   	1q!tadQA	1qAv!aA	AA	1q!ta!ATA!<(JA!::<1A;!Aq>QAt!!!A;!AT"a'''AU#q(((::<AAA/0000A;11v1v.////Aq>a1a&1a&!12222AtaVaV$4 5555A;11v1v.////AT"qAq6Aq6*:&;;;;AU#QFQF+;'<<<<QFQF#3333
12q6Q;;A;1b'!!!!Q$
Q31q1}#4444q6Q!tVq!9Q$q1$<1T6!!!	1q!tAqs8Q$z!!!qsA;1T61*$$$qsQD>a1faZ'''q1u:QrAv;1"q&   q1u:QqsRx=C1Q37U;;;;!b1Q37#$A1q1q58I(JJJJtAqD1Q3JN#$Q
222	A1q5	AqD Aq6Q;;	
A!a+%Aq6a!ek))))A;1A{345555 vAzQU+q1u578	
Q
VQUq1u-../ / /vAzQU+q1u578	
Q
VQUq1u-../ / /vAzQU+q1u578	
Q
VQUq1u-../ / /vAzQU+q1u578	
Q
VQUq1u-../ / / 
Q
AEAEA:%q1uqj0!a%8A7!	acAgkAo	"	ad1fqAvo!Q$&1Q.14qAv=!C	DaH& "   r   c                  Q  a \         ^,          \         ^,          ,
          \         ^,          ,
          ^,           o\         ^,           p \         ^,
          p\         ^,          \         ,           ^,           p\        \        SWV34      w  r4rVVP                  4       ^V^3V^3V^3.38X  g   Q h\        S4      ^V ^3V^3V^3.38X  g   Q h\        S\         4      ^V ^3V^3V^3.38X  g   Q h\        S\         34      ^V ^3V^3V^3.38X  g   Q h\        V4      ^V^3V^3V^3.38X  g   Q h\        SRR7      ^V^3V^3V^3.38X  g   Q h\        VRR7      ^V ^3V^3V^3.38X  g   Q hVP	                  4       V^3V^3V^3.8X  g   Q h\        ^4      ^. 38X  g   Q h\        ^4      ^. 38X  g   Q h\        \        ^4      \         4      \        ^4      . 38X  g   Q h\        R#\         ,          \         4      ^R#\         3.38X  g   Q h\        ^\         ,          \        ,          \         4      ^^\        3\         \        3.38X  g   Q h\        \        \         \        ,          4      \         4      ^\         \        ,          \        P                  3.38X  g   Q h\        ^4      ^8X  d   \        ^4      P                  '       g   Q h\        ^\         ,          4      ^\         ^3.38X  g   Q h\        ^\         ^,          ,          4      ^\         ^3.38X  g   Q h\        ^\         ,          4      ^\         ,          8X  g   Q h\        ^\         ^,          ,          4      ^\         ^,          ,          8X  g   Q h\        ^\         ^,          ,          ^,           ^,          4      ^\         ^,          ^,           ^,          ,          8X  g   Q h\        S4      W^,          ,          V,          8X  g   Q h\        S\         4      W^,          ,          V,          8X  g   Q h\        S\         34      W^,          ,          V,          8X  g   Q h\         ^,          \        ^,          ,
          \         \        ,
          \         \        ,           \         ^,          ^,           3w  rxr\        SV,          4      W^,          ,          V,          W,          ,          8X  g   Q h\        SV,          \         4      W^,          ,          V,          W,          ,          8X  g   Q h\        SV,          \         34      W^,          ,          V,          W,          ,          8X  g   Q h\        RRR7      p\        RRR7      p\        RRR	7      p
\        \        \         \        ,          4      4      P                  RJ g   Q h\        \        ^\         ^,          ,          ^,
          4      4      \        ^4      \        \         ^,
          \         ^,           ,          4      ,          8X  g   Q h\        \        ^\         ^,          ,          ^,           4      4      \        ^4      \        \         ^,          ^,           4      ,          8X  g   Q h\        \        \         ^,          ,          \        ,
          V,          4      \        V,          \         ^,
          V,          ,          \         ^,           V,          ,          8X  g   Q h\        \        \         ^,          ,          \        ,           V,          4      \        V,          \         ^,          ^,           V,          ,          8X  g   Q h\        \        \         ^,          ,          \        ,
          \        ,          4      \        \         ^,
          ,          \         ^,           ,          \        ,          8X  g   Q h\        \        \         ^,          ,          \        ,           \        ,          4      \        \         ^,          ^,           ,          \        ,          8X  g   Q h\        \        V
^,          ^,           V^,           ,          V^,
          ,          V^,
          ^,          ,          4      4      o\        V^,
          ^,          V^,
          ,          4      \        V^,           4      ,          \        V
^,          ^,           4      ,          p\        S4      V8X  g   Q h\        V4      V8X  g   Q h\         ^,
          ^,          V
^,          ^,           ,          p\        \        V4      4      o\        S4      \        V4      8X  g   Q h\        \        ^4      \         ,          ^,           \         \         R
7      oSP                  4       ^S^3.38X  g   Q h\         ^,          ^,           o\        S4      S8X  g   Q h\        S\"        R7      \         ^,          \"        ,
          \         ^,          \"        ,           ,          8X  g   Q h\        SRR7      \         ^,          \"        ,
          \         ^,          \"        ,           ,          8X  g   Q h\        S\        ^4      R7      \         ^,          \        ^4      \         ,          ,           ^,           \         ^,          \        ^4      \         ,          ,
          ^,           ,          8X  g   Q h\        \         ^,          ^\"        ,          \         ,          ,           ^,
          4      \         ^\"        ,          ,           ^,          8X  g   Q h\         ^,          ^\"        ,          \         ,          ,           ^,
          o\        S4      S8X  g   Q hR\         ^,          ,          \         RR\"        ,          ,           ,          ,           R,
          R\"        ,          ,           o\"        \         ^@^@\"        ,          ,
          ,          R,           R\"        ,          ,           ^,          ,          pR\         \        ^4      ^,          ,           R\"        ,          ^,          ,           ^,          ,          p\        S4      V8X  g   Q h\        S\$        R
7      V8X  g   Q h\        S\&        R
7      V8X  g   Q h\         ^,          ^\        ^4      ,          \         ,          ,           ^,           o\        S\        ^4      R7      \         \        ^4      ,           ^,          8X  g   Q h\        S^,          \        ^4      R7      \         \        ^4      ,           ^,          8X  g   Q h\        \         ^,          ^\        ^,          ,          ,
          \        ^4      R7      \         \        ^4      \        ,          ,           \         \        ^4      \        ,          ,
          ,          8X  g   Q h\        ^\         ^,          ,          ^\        ^,          ,          ,
          \        ^4      R7      ^\         \        ^4      \        ,          ,           \         \        ^4      \        ,          ,
          ,          ,          8X  g   Q h\        \         ^,
          4      \         ^,
          8X  g   Q h\        \         ) ^,
          4      \         ) ^,
          8X  g   Q h\        \         ^,
          4      \         ^,
          8X  g   Q h\        ^\         ,          ^
,
          4      \)        ^^\         ,          ^,
          RR7      8X  g   Q h\        \         ^,          \         ,           ^,           RRR7      \         ^,          \         ,           ^,           \         ^	,          \         ^,          ,
          \         ^,          ,           \         ^,          ,
          \         ^,          ,           \         ^,          ,
          ^,           ,          8X  g   Q h\        \         ^,          \         ,           ^,           RRR7      \         ^,          \         ,           ^,           \         ^	,          R\         ^,          ,          ,           \         ^,          ,           R\         ^,          ,          ,           \         ^,          ,           R\         ^,          ,          ,           ^,           ,          8X  g   Q h\         \*        ,          \         \        \         4      ,          \*        ,          ,           o\        \*        ^,          ^\*        ,          ,           ^,           ,          \        \        \         4      ,          \*        ^,          ^\*        ,          ,           ^,           ,          ,           p\        S4      \         \        \         4      ^,           ,          \*        ,          8X  g   Q h\        V4      \        \        \         4      ^,           ,          \*        ^,           ^,          ,          8X  g   Q h\        \-        \         ^,          ^\         ,          ,           ^,           \         ^,          ^,           4      4      \-        \         ^,           ^,          \         ^,           \         ^,          \         ,
          ^,           ,          4      8X  g   Q h\         ^,          ^,
          \         ^,          ^\         ,          ,           ^,           ,          o\        S4      \         ^,           \         ^,
          ,          \         ^,           ^,          ,          8X  g   Q h\        S\         4      \         ^,           \         ^,
          ,          \         ^,           ^,          ,          8X  g   Q h^\         ,           \         ^\         ,           ,          ,
          \         ^,          ,           o\        S4      ^8X  g   Q h\        S\         4      ^8X  g   Q h\        ^\         ^,          ^\         ,          ,           ^\         ,          ,           ,          ^,
          4      ^\         ,
          ^\         ^,          ,          ,           \         ^,          ,           ^^\         ^,          ,          ,           \         ^,          ,           ,          ) 8X  g   Q h\        SRR7      S8X  g   Q h\/        \0        V3R l4       \/        \2        R 4       \        \         \-        \         ^,          \        ^,          ,
          \5        \         ^,          \6        ^,          ,
          ^\         ,          ^\        ,          ,           4      4      .4      \         \-        \         \        ,
          \         \        ,           ,          \5        \         \6        ,
          \         \6        ,           ,          \         \        ,           \         ,          \        ,          4      4      .8X  g   Q h\9        \        \         ^,          \         ,           ^,           4      P                  4       ^,          ^ ,          ^ ,          \:        4      RJ d   Q h\9        \;        \         ^,          \         ,           ^,           4      P                  4       ^,          ^ ,          ^ ,          \:        4      RJ g   Q h\        \        \         ) 4      4      \        \         ) 4      8X  g   Q hR$\         ,          \         ) ^,           ,          \         ^,
          ,          \         ) \         ) ^,           ,          \         ^,
          ,          \         \         ^,
          ^,          ,          ,
          ,          \         ^,          \         ^,
          ,          \         \         ^,
          ,          ,
          \         ,
          ,          R$\         ^,          ,          \         ^,
          ^,          ,          \         \         ) ^,           ,          \         ) \         ) ^,           ,          \         \         ^,
          ,          ,           ,          ,
          \         ^,          \         ^,
          ^,          ,          \         \         ) \         ) ^,           ,          \         ^,
          ,          \         \         ^,
          ^,          ,          ,
          ,          ,
          ,          ,
          p\        V4      ^ 8X  g   Q h\        \        \         ^,          \         ,           4      \         ,           RR7      \        \         \         ^,           ,          4      \         ,           8X  g   Q h\        \        \         ^,          \         ,           4      \         ,          RR7      \        \         \         ^,           ,          4      \         ,          8X  g   Q h\        \        \         ^,          4      4      \        \         ^,          4      8X  g   Q h\        \        R\         ,          ^,           R\        ,          ^,           ,          4      4      \)        RR\         ,          R,           R\        ,          R,           RR7      8X  g   Q h\        \        R\         ,          R,           ^,          4      4      RR\         ,          R,           ^,          ,          8X  g   Q h\         ^,          \        ^,          ,          ^\         ^,          ,          \        ,          ,           ^\         ^,          ,          ,           ^\         ,          \        ^,          ,          ,           ^M\         ,          \        ,          ,           ^\         ,          ,           ^\        ^,          ,          ,           ^\        ,          ,           R ,           p\        V\         4      \         ^,           \         ^,           ,          \        ^,          ^\        ,          ,           ^,           ,          8X  g   Q h\        V\         RR7      \         ^,           \         ^,           ,          \        ^,          ^\        ,          ,           ^,           ,          8X  g   Q h\        V\        RR7      \        ^,           \        ^,           ,          \         ^,          ^\         ,          ,           ^,           ,          8X  g   Q h^\         ,          ^\=        ^^\         ,          ,
          4      ,          ,           o\        SRR7      \        SRRR!7      8X  g   Q h\        SRRR!7      ^\         ,          ^\=        ^4      ,          \=        R%\         ,          4      ,          ,           8X  g   Q h\        \         ^,          \         \        ^,          ,          ,
          \        V\         4      ^\         ^3\         \        ,
          ^3\         \        ,           ^3.38X  g   Q h\        \         ^,           \         ^,          ^,
          ,          4      ^\         ^,
          ^3\         ^,           ^3\         ^,          \         ,
          ^,           ^3\         ^,          \         ,           ^,           ^3.38X  g   Q h\        ^4      ^\        ^4      ,           ^\        ^4      ,
          ppp^\*        ,           ^\*        ,
          pp\        VV,          4      R#V) ^3V^3.38X  g   Q h\        VV,          4      R#V) ^3V^3.38X  g   Q h\        VV,          4      V) V) ^3.38X  g   Q h\        \*        V,          4      R#V) ^3\*        ^3.38X  g   Q h\        VV,          \         4      VV,          . 38X  g   Q h\        VV,          \         4      VV,          . 38X  g   Q h\        VV,          \         4      VV,          . 38X  g   Q h\        \*        V,          \         4      \*        V,          . 38X  g   Q h\        \         \        ^4      \*        ,          ,
          \         \        ^4      \*        ,          ,           ,          \         4      ^\         \        ^4      \*        ,          ,
          ^3\         \        ^4      \*        ,          ,           ^3.38X  g   Q h\        \"        ,
          ^,          \        \"        ,           ,          \         ^,           ,          p\        \        V4      4      V8X  g   Q h\         \"        ,
          ^,          \         \"        ,           ,          \        ^,           ,          p\        \        V4      4      V8X  g   Q h\        ^,           ^,          \        \        ^4      ,           ^,          ,          \         ^,          \         ,           ^,           ^\        ^4      ,          ,           ^,          ,          p\        \        V4      RR7      V8X  g   Q h\         ^,          ) \        ^,          ,          \        ^,          ^,           ,          ^\"        ,          \         ^,          ,          \        ^,          ,          \        ^,          ^,           ,          ,           ^\"        ,          \         ^,          ,          \        ,          \        ^,          ^,           ,          ,           \         ^,          \        ^,          ^,           ,          ,           ^\         ,          \        ^,          ,          \        ^,          ^,           ,          ,
          ^\"        ,          \         ,          \        ^,          ,          \        ^,          ^,           ,          ,           ^\"        ,          \         ,          \        ,          \        ^,          ^,           ,          ,           ^\         ,          \        ^,          ^,           ,          ,           \        ^,          ,
          \        ^,          \        ^,          ^,           ,          ,
          ^\"        ,          \        ^,          ,          ,           ^\"        ,          \        ^,          ,          \        ^,          ^,           ,          ,           ^\"        ,          \        ,          ,           ^\"        ,          \        ,          \        ^,          ^,           ,          ,           ^,           ^\        ^,          ^,           ,          ,           p\        V4      \        \"        ,
          ^,          ) \        \"        ,           ,          \         ^,          ^\         ,          ,           \        ^,          ,           ^,           ,          \        ^,          ^,           ,          8X  g   Q h\"        \        ,          \         ,          \        ,          ^\"        ,          \        ,          ,
          \"        \         ,          \        ,          \6        ,          ,
          ^\         ,          \        ,          ,
          ^\"        ,          \6        ,          ,           ^,           p\        V4      \"        ) \         \        ,          ^,
          ,          \        ) \6        ,           ^\"        ,          ,
          ,          8X  g   Q h^\         ^,          ,          \6        ^,          ,          ^ \         ^,          ,          \6        ,          \        ,          ,
          ^\         ^,          ,          \        ^,          ,          ,           ^\"        ,          \         ,          \        ,          \6        ^,          ,          ,
          ^\"        ,          \         ,          \        ,          \6        ,          \        ,          ,           ^\"        ,          \         ,          \        ,          \        ^,          ,          ,
          \6        ^,          ,           ^\6        ^,          ,          \        ,          ,
          ^\6        ^,          ,          \        ^,          ,          ,           ^\6        ,          \        ^,          ,          ,
          ^	\        ^,          ,          ,           p\        V4      R&\        ,          \6        ,           \        ) \6        ,           ,          ^\        ^,          ,          ^\        ,          \6        ,          ,
          ^\         ^,          ,          ,           ^\"        ,          \         ,          \        ,          ,
          \6        ^,          ,           ,          8X  g   Q hR"# )'rK  Tr  Fr   positiver<  )integerr  )realr   r   rG  i    iX  i iH i i  iT  iY  r  r9  r:  r;  rC  c                  (   < \        S \        R R7      # )FrC  r.   r   r   s   r   r   test_factor.<locals>.<lambda>
  s    F1a$>r   c                  @    \        \        ^,          ^,
          RR7      # )r  Tr  r  r   r   r   r   r  
  s    fQTAXT:r   rE        ?r         ?ih  )rD  fractionNr   r  irb  )r   rb  r   r-   factor_list_includerr   r   rl   r  r.   
is_Integerrm   is_Powr   ra   rt   rT   re   rQ   rR   rc   ri   rk   r{   rF   rJ   r]   r   r   r   rp   )r   r   r   r`  UVWr   r   r   r  r<  f_zzif_qqier   s2s2ps2npippinr   s                        @r   test_factorr  
  s3   	1q!tadQA	AA	AA	1q1ATAqQ<(JA!==?qAq6Aq6Aq6":;;;;q>a1a&1a&1a&!9::::q!aVaVaV$< ====q1$AAAA'?#@@@@q>a1a&1a&1a&!9::::q%!q!fq!fq!f-E)FFFFq&11v1v1v.F*GGGG  "1v1v1v&>>>>q>aW$$$q>aW$$$tAw"tAwm333Qw"qB7)n444!ax#QFQF+;'<<<<tAaCy!$ac166]O(<<<<!9>fQi22222qsQF8},,,qAv11vh-///!A#;!A#!AqD&>Qq!tV###1QT6A:/"c1a4!8a-&7777!9Q$q   !Q<1T6!8###!aT?a1fQh&&&A1a!eQUAqD1H4JA!!A#;1T6!8ac****!A#q>a1fQh----!A#ta4AC 0000sT"AsD!AsA$qs)##t+++$qAvz"#tAwtQUQUO/D'DDDD$qAvz"#tAwtAqD1H~'====1QT6A:/"adAEA:oq1uqj&@@@@1QT6A:/"adAqD1Hq=&88881QT6A:/"q!a%y!a%'81&<<<<1QT6A:/"q!Q$(|a&7777VQTAXA&A.Az9:;Aa!eaZQ a!e,T!Q$(^;A!9>>!9>>	
Q
AqD1HAVAYA!9QSVAX\1R(A==?qAq6(m+++	1qA!9>>!q!adQhA%::::!d#1q1a4!8'<<<<	T!W"#Q$a"2Q"6AQ	9IA9M!NO O O !Q$1Q,"#AaC!|333	1qs1uqA!9>>QT	Auvax'((61F1H<Aq"r!t)}s"SU*Q..E!afSj.46#:-11E!9!D!U***!D!U***	1qay{QA!tAw'AQK!+;;;;!Q$$q'*q47{Q.>>>>!Q$1a4-473	
T!WQYT!WQY'( ( (!AqD&1QT6/T!W5	AQ	MAQ	M*+, , , !a%=AE!!!1"q&>aR!V###!a%=AE!!!!A#(s1acAg>>>>!R%!)a-$?	
AA1q!tad*QT1AqD81q5@1DEF F F!R%!)a-%@	
AA1uQTz)AqD05A:=	
Aa!e  	!! ! ! 	
"qQx{A	2q51R4<!qQxQ2)9::A!93q6A:r))))!93q6A:Q{2222"	1qs
Q1q" #&(!a%!a!eadQhl5K&LM M M 
AAqD1Q3JN#A!9QQQ
2222!Q<AEAE?AEA:5555	A1q5	AqD A!9>>!Q<1!QTAaCZ!A#%&*+!a%!AqD&.Q$3Qq!tVad*2, 0- - - - !E"a'''
?>?
9:;1bA1eAqD1a4K1qs&CDEF	
BAAq1uq1uoAqy{ CDEF F F QTAX\&&(+A.q18=@DE E EAA**,Q/215xADHI I I $r(tQBx''' 
ArAvA	QBFQU 3aQ
l B	CQT1L F	
AEFF 
ad7AEA:-A26
QBQKq1uI= 1 Aq1uqj1qb1"q&k1q5&9Aq1uqjL&H#IIK
KA !9>> #adQh-!#$/3q!a%y>A3EEEE#adQh-/-QAY1AAAA$q!t*ad+++ &#a%'CE!G,-.#c3q53;A3' ' ' '&#a%)a()T3q53;2B-BBBB	
AadR1WQY	AqD	(1Q3q!t8	3bd1f	<s1u	Dr!Q$w	NQTUVQV	VY\	\B"a=QUQUOQTBqD[2-=>>>>"ad#AA1r!tb8H'IIII"ad#AA1qs
R'HHHH 	
!aA!GnA!$6!$#FFFF!$/1Q33q6#bd)9K3KKKKq!ta1f}aA.	QFQUAJQ
+3- - - -!ad1f~&	QUAJQ
QTAX\1$51q1a7HI+K K K K 7AQKT!WSB2vq2vCs3wB3$S!H(=#>>>>s3wB3$S!H(=#>>>>r#vB33$"4444r#v2#q	B7';"<<<<s3w"s3wm333s3w"s3wm333r#vq!bfb\111r#vq!bfb\111DGBJT!WRZ8!<	Qa^Q!d1gbj.!!45A7 7 7 7 a%!q1u	Q	'A&)!!!
a%!q1u	Q	'A&)!!!	
Q
AQK!##QTAX\Ad1gI%=$AAA&)t,111 
Aad
AqD1H!AqDAq!tax 881Q3q!t8A:q!tax;PP	1adQh	A#ad(AqD1H-	.01!Aad
AqD1H0E	F	!AaA	qS!Q$(^	,./d	356T1a4!8_	EGHs1a4x	P A#ad(AqD1H
	 !"!A	& )*!Aq!tax(8	9 <=	= @A!Q$(|	L  !9!a%!QU+QTAaCZ!Q$->-BCQTAXNNNN 
1Qq1Q3q51Q3q57	"QqSU	*QqSU	2R	7A!9AaC!Gqb1fqsl3333	
1a41r!Q$wqy{	"R1WQT\	1AaCE!GAqDL	@2a46!8A:a<	O	Aa!Q$
A
 !!Q$q
)+-ad71a4<
8:<Q$q!t)
DFG1f
MA!9AQBF+Qq!tVac!e^a1f-Dqs1uQw-NQRTUQU-UVVVVr   c                     \         ^,          ^\         ,          ,           ^,           R,          \         ^,          ^,           ,          \         ^,          ^\         ,          ,           ^,           R,          ,          p \         ^,          ^\         ,          ,           ^,           R,          \        ^,          ,          \         ^,          ^\         ,          ,           ^,           R,          ^,          \        ,          ,           \         ^,          ^\         ,          ,           ^,           R,          ,           p\        V 4      \         ^,           R,          \         ^,          ^,           ,          \         ^,           R,          ,          8X  g   Q h\        V4      \         ^,           R,          \        ^,           ^,          ,          8X  g   Q h\        V 4      ^\         ^,           R3\         ^,           R3\         ^,          ^,           ^3.38X  g   Q h\        V4      ^\        ^,           ^3\         ^,           R3.38X  g   Q h\         ^,          \        ^,          ,
          R,          \         ^,          ^,           ,          p \         ^,          \        ^,          ,           R,          \         ^,          ^,           ,          p\        V 4      \         ^,           \         \        ,
          R,          ,          \         \        ,           R,          ,          \         ^,          \         ^,          ,
          \         ^,          ,           \         ^,          ,
          \         ^,          ,           \         ,
          ^,           ,          8X  g   Q h\        VRR	7      \         ^,           \         \        \        ,          ,
          R,          ,          \         \        \        ,          ,           R,          ,          \         ^,          \         ^,          ,
          \         ^,          ,           \         ^,          ,
          \         ^,          ,           \         ,
          ^,           ,          8X  g   Q h\        V 4      ^\         ^,           ^3\         \        ,
          R3\         \        ,           R3\         ^,          \         ^,          ,
          \         ^,          ,           \         ^,          ,
          \         ^,          ,           \         ,
          ^,           ^3.38X  g   Q h\        VRR	7      ^\         ^,           ^3\         \        \        ,          ,
          R3\         \        \        ,          ,           R3\         ^,          \         ^,          ,
          \         ^,          ,           \         ^,          ,
          \         ^,          ,           \         ,
          ^,           ^3.38X  g   Q hR
# )r  i i i  i -1i% ip  i@ TrG  N)r   r   r.   r-   re   rp  s     r   test_factor_larger  
  s   	
A!a("AqD1H-q!taczA~.GGA
Q$1*q.4	1	$1qs
Q'=a'?'A	A	1qs
QE 
A !9Q)1a4!84a!eg5EEEEE!9Qq1uqj0000	AE7#a!eX%6A1FGH H Hq>a1q5!*q1udm!<====	
A1vq!tax(A	
A1vq!tax(A!9	
QQQ/A1	
A212!t22 "#2$ 	%% % % !d#	
QQqS6!!1qs7V"33QTAqD[	
A616!t66 "#6$ 	%% % % q>	
a!eQZ!a%1q5&/AqD	
A=1=!t=d=#%&=')*=+,-</ 0 	11 1 1 q4(	
a!eQZ!ac'6*Q1Wf,=qD1a4K!Q$A%1,q014a@9 : 	;; ; ;r   c                  v   \        ^\        ,          ^
,
          4      \        ^^\        ,          ^,
          RR7      8X  g   Q h\        ^\        ,          ^
,
          ^\        ,          ^,
          ,          4      \        \        ^^4      ^\        ,          ^,
          ^\        ^,
          ,          4      8X  g   Q hR# )r  Fr  N)r.   r   rc   rg   r   r   r   test_factor_noevalr    su    !A#(s1acAg>>>>1Q38acAg&'3x1~qsQw1q5	+RRRRr   c                     \        ^ 4      . 8X  g   Q h\        ^4      . 8X  g   Q h\        \        RR7      R.8X  g   Q h\        \        4      R .8X  g   Q h\        \        ^,          4      R!.8X  g   Q h\        \        ^,          \        ^,          .4      R^ ^^^/3.8X  g   Q h\        \        \        ^^4      ,          \        ^^4      ,
          ^\        ,          \        ^R4      ,           ,          4      p V P                  RR7      R#R$.8X  g   Q hV P                  4       R%R&.8X  g   Q hV P                  RRR7      R#R$.8X  g   Q hV P                  RR7      R%R&.8X  g   Q hV P                  \        ^^
4      R7      V P                  RR7      u;8X  d1   \        R"R4      ^ 3^3\        ^U^4      \        ^U^4      3^3.8X  g   Q h Q hV P                  \        ^^d4      R7      V P                  R	R7      u;8X  d1   \        R"R4      ^ 3^3\        ^U^4      \        ^U^4      3^3.8X  g   Q h Q hV P                  \        ^R
4      R7      V P                  RR7      u;8X  d1   \        R"R4      ^ 3^3\        ^U^4      \        ^U^4      3^3.8X  g   Q h Q hV P                  \        ^R4      R7      V P                  RR7      u;8X  d;   \        R"R4      \        R"R4      3^3\        ^U^4      \        ^U^4      3^3.8X  g   Q h Q h\        \        ^^4      ,          \        ^^4      ,
          ^\        ,          \        ^R4      ,           ,          p \        V RR7      R#R$.8X  g   Q h\        V 4      R%R&.8X  g   Q h\        V \        ^^
4      R7      \        V RR7      u;8X  d1   \        R"R4      ^ 3^3\        ^U^4      \        ^U^4      3^3.8X  g   Q h Q h\        V \        ^^d4      R7      \        V R	R7      u;8X  d1   \        R"R4      ^ 3^3\        ^U^4      \        ^U^4      3^3.8X  g   Q h Q h\        V \        ^R
4      R7      \        V RR7      u;8X  d1   \        R"R4      ^ 3^3\        ^U^4      \        ^U^4      3^3.8X  g   Q h Q h\        V \        ^R4      R7      \        V RR7      u;8X  d;   \        R"R4      \        R"R4      3^3\        ^U^4      \        ^U^4      3^3.8X  g   Q h Q h\        \        ^,          ^,
          \        ^,          ^,
          ^,          ,          \        ^,           ,          ^\        ,          ^,           ^,          ,          4      p V P                  4       R'\        R(^4      3^3\        R(^4      R"3^3R*R+^\        ^^4      3^3\        ^^4      ^3^3.8X  g   Q h\        \        ^,          ^,
          \        ^,          ^,
          .4      \        ^K^4      \        ^e^#4      3^ ^/3\        R^k4      \        ^^	4      3^^/3.8X  g   Q h\        \        ^,          ^,
          \        ^,          ^,
          .RR7      \        ^K^4      \        ^e^#4      3^ ^/3\        R^k4      \        ^^	4      3^^/3.8X  g   Q h\        \        ^,          ^,
          \        ^,          ^,
          .4      \        R,^4      \        R-^4      3^^/3\        R-^4      R.3^ ^/3^\        ^U^4      3^ ^/3\        ^U^4      \        ^G^4      3^^/3.8X  g   Q h\        \        ^,           \        ^,           \        ^,
          \        ^,           ^\        ^,
          \        ^,
          \        ^,
          ^,          .4      R/^^/3R)^ ^^^/3R0^^^^^^/3R1^^/3.8X  g   Q h\        ^,          ^,
          \        ^,          ^\        ^,          ,          ,
          ^,           \        ^,
          r!p \        V \        ^^4      RR7      . 8X  g   Q h\        V \        ^^4      RR7      \        ^^4      \        ^^4      3.8X  g   Q h\        V \        ^^4      RR7      R2^\        ^^4      3.8X  g   Q h\        V \        ^^4      RR7      R2.8X  g   Q h\        V\        ^^4      R7      . 8X  g   Q h\        V\        ^^4      R7      \        ^^4      \        ^^4      3^3.8X  g   Q h\        V\        ^^4      R7      R3^\        ^^4      3^3.8X  g   Q h\        V\        ^^4      R7      R3.8X  g   Q h\        W.\        ^^4      R7      . 8X  g   Q h\        W.\        ^^4      R7      \        ^^4      \        ^^4      3^ ^/3.8X  g   Q h\        W.\	        ^4      ^,          R7      R2^ ^/3R0^^/3^\        ^^4      3^ ^/3.8X  g   Q h\        W.\        ^^4      R7      R2^ ^/3R0^^/3.8X  g   Q h\        \        ^,           \        ^,          ^,
          .4      R/^ ^/3R2^^/3R4^^/3.8X  g   Q h\        \        ^,           \        ^,          ^,
          .RR7      R/^ ^/3\        R(^4      R"3^^/3R4^^/3.8X  g   Q h^\
        ^,          ,          ^\
        ^,          ,          ,
          ^\
        ^,          ,          ,           ^\
        ,          ,           ^,           p \        V 4      . 8X  g   Q h\        V RRR7      w  r4V. 8X  g   Q h\        ;QJ d/    R \        V\        V 4      4       4       F  '       d   K   RM$	  RM ! R \        V\        V 4      4       4       4      '       g   Q hV\        R5^4      \        ^(,          ^,          ,
          ^ 3\        R5^4      \        ^(,          ^,          3\        \        R5^4      ,          \        ^(^4      3^ \        ^(^4      \        ^(,          ^,          ,           3.8X  g   Q h\        V RR\        ^^
4      R7      w  r4V. 8X  g   Q h\        ;QJ d/    R \        V\        V 4      4       4       F  '       d   K   RM$	  RM ! R \        V\        V 4      4       4       4      '       g   Q h\        \        R 4       \        \        R 4       \        \        R 4       R# )6r   T)r,   i  )fastr,   )r  epsrz  i  {Gz?i  gMbP?i  i'  -C6?i  i5  )infr,   )supr,   r  r  r   )r   r,   c              3      "   T Ft  w  w  rp\        V4      \        V4      u;8  ;'       d    \        V4      8  Mu ;'       d2    \        V4      \        V4      u;8  ;'       d    \        V4      8  Mu x  Kv  	  R # 5ir   ro   rn   r   r   r   r  s   &   r   r   !test_intervals.<locals>.<genexpr>t  m      J,Hyvq !ur!u$$r!u$  	*U* *U* ,H   AA>:A>F)r   r,   r  c              3      "   T Ft  w  w  rp\        V4      \        V4      u;8  ;'       d    \        V4      8  Mu ;'       d2    \        V4      \        V4      u;8  ;'       d    \        V4      8  Mu x  Kv  	  R # 5ir   r  r  s   &   r   r   r    r  r  c                  @    \        \        ^,          ^,
          RR7      # r  r  r   r/   r   r   r   r   r    test_intervals.<locals>.<lambda>  s    yA{Cr   c                  \    \        \        ^,          ^,
          4      P                  RR7      # r  )r   r   r/   r   r   r   r   r    s    tAqD1H~77K7Hr   c                  h    \        \        ^,          ^,
          \        ^,          ^,
          .RR7      # r  r  r   r   r   r   r    s     Iq!taxA&:Lr   Nr   )r   r   )r      r   r   r         )r  r   )r  r   r  rb  r   r   )r  r   )r  r   iii)r  r  r   )r  r  r  r   )r  r  r<  i)r/   r   r   rg   rl   r   r   r   r4   re   r{   r  )r   r   r   	real_partcomplex_parts        r   test_intervalsr    s
   Q<2Q<2QD!fX---Q<K=(((QV///adAqD\"Aq!'=&>>>>aA"a01Q3!S9I3IJKA;;4; Wh$7777;;=\=9999;;Dd;+/BBBB;;D;!lM%BBBB;;8Ar?;+q{{s{/C OBa
 !	$Q"a'I1&MNO O O O O;;8As+;,0E OBa
 !	$Q"a'I1&MNO O O O O;;8At,;-1G PBq
!1	%"a(2q/(JA'NOP P P P P;;8Au-;.!++&+2I aBxD1
2A	6(2q/8TVXY?9[]^8_`a a a a a 
8Aq>	HRO	+acHQ4D.DEAQD!gx%8888Q<L-8888QHQO,	!0E OBa
 !	$Q"a'I1&MNO O O O OQHQ,-1$1G OBa
 !	$Q"a'I1&MNO O O O OQHQ-.)A52I PBq
!1	%"a(2q/(JA'NOP P P P PQHQ./9QF3K aBxD1
2A	6(2q/8TVXY?9[]^8_`a a a a a 	adQhAA%q1u-qsQwl:;A;;=xA
	#xA&;Q%?	hq!n
q	!Xa^Q$7#;	== = =
 adSj!Q$*-.BXc2.
/!Q	8HS#<NPXY[]^P_;`cdfgbh:ijk k k adSj!Q$*-D9BXc2.
/!Q	8HS#<NPXY[]^P_;`cdfgbh:ijk k k adSj!Q$*-.CXc1-
.A	78C;KS:QTUWXSY9ZxA
!Q	(HROXb!_+MPQSTv*V	XX X X a!eQUAE1q5!QUAEAEA:NO
QF	hAq!5
Q1aA 8"QF+	-- - - dQh1qAv)1q5!AQHQN5;;;QHQN58Aq>8TUWX>:Z9[[[[QHQN5(QQRTUDW9XXXXQHQN5(CCCQHQN+r111QHQN+(1a.(1a.1QST0U/VVVVQHQN+HQPQN@SUV?W/XXXXQHQN+>>>aV!Q0B666aV!Q0x1~xPQST~6VYZ\]X^5_4````aV	"" aV$v1v&6!Xa^9LqRSf8UVW W W	
HQN$)1Aq6(:VaV<L'MN N N a!eQTAX&'
QF	hA/&1a&1ABC C Ca!eQTAX&t4
QF	xA3aV<v1v>NOP P P 	
!Q$AqD2ad7"RT)B.AQ<2't>I??3 J,/fQi,HJ333 J,/fQi,HJ J J J J Xc1-"Q6:%c1-qtAv6xQ//"aAQ!B$q& 89; ; ; ;
 (t8Ar?SI??3 J,/fQi,HJ333 J,/fQi,HJ J J J J :CD
:HI
LNr   c            	      H  a  \        \        ^,          ^,
          4      o S P                  ^^^ R7      R8X  g   Q hS P                  RR^ R7      R8X  g   Q hS P                  ^^RR7      ^\        ^^4      38X  g   Q hS P                  RRRR7      \        R^4      R38X  g   Q hS P                  ^^^R7      ^\        ^^4      38X  g   Q hS P                  RR^R7      \        R^4      R38X  g   Q hS P                  ^^^RR7      ^\        ^^4      38X  g   Q hS P                  RR^RR7      \        R^4      R38X  g   Q hS P                  ^^\        ^^d4      R7      \        ^^4      \        ^^4      38X  g   Q hS P                  ^^RR7      \        ^^4      \        ^^4      38X  g   Q h\	        \
        V 3R l4       \	        \        V 3R l4       \	        \        V 3R	 l4       \        ^,          ^,
          o \        S ^^^R7      ^\        ^^4      38X  g   Q h\        S RR^R7      \        R^4      R38X  g   Q h\        S ^^^RR7      ^\        ^^4      38X  g   Q h\        S RR^RR7      \        R^4      R38X  g   Q h\        S ^^\        ^^d4      R7      \        ^^4      \        ^^4      38X  g   Q h\        S ^^RR7      \        ^^4      \        ^^4      38X  g   Q h\	        \
        R
 4       \	        \        V 3R l4       \	        \        V 3R l4       R# )r  )stepsNT)r  r  r  r  c                  :   < S ^,          P                  ^^RR7      # )r  T)	check_sqfr0   r   s   r   r   "test_refine_root.<locals>.<lambda>  s    QT$6$6q!t$6$Lr   c                  6   < S ^,          P                  ^^4      # r.  r  r   s   r   r   r        ad%7%71%=r   c                  6   < S ^,          P                  ^^4      # r.  r  r   s   r   r   r    r  r   c            	      4    \        ^^^\        ^^d4      R7      # )r   r  )r0   rg   r   r   r   r   r    s    K1aXa=M$Nr   c                  >   < \        S 4      P                  ^^RR7      # r   r  r   )r   r0   r   s   r   r   r    s    tAw221a[2Ir   c                  "   < \        S ^^RR7      # r  r  r   s   r   r   r    s    {1aDr   r<  r  r   r  rb  )r   r   r0   rg   r{   rF   rC   r  r   s   @r   test_refine_rootr    s   QTAXA==AQ='6111==Rq=)X555==AT=*q(1a..AAAA==Rt=,"a"0EEEE==AQ='Ax1~+>>>>==Rq=)hr1or-BBBB==AQT=2q(1a.6IIII==Rqt=4"a"8MMMM==A8As#3=4"b9I8TVXZK[8\\\\==A4=(Xb"-=xB?O,PPPP
?LM
=>
=>	1qAq!Qa(QA,????q"b*xA.CCCCq!Qad38Aq>7JJJJq"b5(2q/29NNNNq!QHQ$45(2r:JHUWY[L\9]]]]q!QD)hr2.>R@P-QQQQ
?NO
:IJ
:DEr   c                     \        \        ^,          ^,
          4      ^8X  g   Q h\        \        ^,          ^,
          \        ) R7      ^8X  g   Q h\        \        ^,          ^,
          \        5R7      ^8X  g   Q h\        \        ^,          ^,
          \        ) \        5R7      ^8X  g   Q h\        \        ^,          ^,
          RR7      ^8X  g   Q h\        \        ^,          ^,
          RR7      ^8X  g   Q h\        \        ^,          ^,
          ^R7      ^8X  g   Q h\        \        ^,          ^,
          ^R7      ^8X  g   Q h\        \        ^,          ^,
          R^R7      ^ 8X  g   Q h\        \        ^,          ^,
          R^R7      ^8X  g   Q h\        \        ^,          ^,
          R^R7      ^ 8X  g   Q h\        \        ^,          ^,
          R^R7      ^8X  g   Q h\        \        ^,          ^,           4      ^ 8X  g   Q h\        \        ^,          ^,           R\        ,          R7      ^8X  g   Q h\        \        ^,          ^,           ^\        ,          R7      ^8X  g   Q h\        \        ^,          ^,           R\        ,          ^\        ,          R7      ^8X  g   Q h\        \        ^,          ^,           ^ R7      ^ 8X  g   Q h\        \        ^,          ^,           ^ R7      ^ 8X  g   Q h\        \        ^,          ^,           \        ) R7      ^8X  g   Q h\        \        ^,          ^,           \        5R7      ^8X  g   Q h\        \        ^,          ^,           \        5^,          \        5R7      ^ 8X  g   Q h\        \        ^,          ^,           \        ) \        ) ^,          R7      ^ 8X  g   Q h\	        \
        R 4       R# )r  r  r  r  r  c                      \        ^4      # r   r1   r   r   r   r   "test_count_roots.<locals>.<lambda>  s    KNr   Nr  r   )r1   r   rh   re   r{   rF   r   r   r   test_count_rootsr    s   q!tax A%%%q!taxbS)Q...q!taxbS)Q...q!taxbSrc2a777q!taxR(A---q!taxR(A---q!taxQ'1,,,q!taxQ'1,,,q!taxRQ/1444q!taxRQ/1444q!taxRQ/1444q!taxRQ/1444q!tax A%%%q!taxRT*a///q!taxRT*a///q!taxRTr!t4999q!taxQ'1,,,q!taxQ'1,,,q!taxaR(A---q!taxaR(A---q!taxaRTr2a777q!taxaRaRT2a777
?23r   c                  F   \        \        ^4      \        ^,          ,          ^,
          \        RR7      p V P                  4       ^8X  g   Q hV P                  ^ R7      ^8X  g   Q hV P                  ^ R7      ^8X  g   Q h\        \        ^,          \        ^4      ,           \        RR7      pVP                  4       ^ 8X  g   Q h\        \        ^,          ^\        ^4      ,          \        ,          ,           ^,           \        RR7      pVP                  4       ^8X  g   Q hVP                  R^
R7      ^8X  g   Q hVP                  R^ R7      ^8X  g   Q hVP                  RRR7      ^ 8X  g   Q hVP                  RR	R7      ^8X  g   Q hVP                  R
^ R7      ^8X  g   Q hR# )r  Tr   r  r  r  Nirb  r  r   )r   rr   r   r1   )p1p2p3s      r   test_count_roots_extensionr    s[   	d1gadlQT	2B>>q   >>a> A%%%>>a> A%%%	adT!Wna4	0B>>q   	adQtAwYq[ 1$a4	8B>>q   >>cr>*a///>>cq>)Q...>>cr>*a///>>bb>)Q...>>ba>(A---r   c                  J  a  \        ^\        ^,          ,          ^\        ^,          ,          ,
          ^\        ,          ,           ^,           4      o S P                  ^ 4      \        R^4      8X  g   Q hS P                  ^4      ^8X  g   Q hS P                  ^4      ^8X  g   Q h\	        \
        V 3R l4       \        \        ^,          \        ,           ^,           4      P                  ^ 4      \        \        ^,          \        ^,          ,
          ^,           ^ 4      8X  g   Q hR# )r  c                  &   < S P                  ^4      # r&  )rootr   s   r   r    test_Poly_root.<locals>.<lambda>  s    qvvayr   Nr   )r   r   r  rg   r{   
IndexErrorrw   r   s   @r   test_Poly_rootr    s    Qq!tVa1f_qs"Q&'A66!9Q'''66!9>>66!9>>
:()1q1""1%1q!ta)CCCCr   c                    a \        \        4      ^ .8X  g   Q h\        \        RR7      R	.8X  g   Q h\        \        ^,          4      . R
O8X  g   Q h\        \        ^,          RR7      R.8X  g   Q h\        \        \        ^,          \        ,           ^,           ,          4      \        \        ^,          \        ,           ^,           ^ 4      ^ .8X  g   Q h\        \        \        ^,          \        ,           ^,           ,          RR7      \        \        ^,          \        ,           ^,           ^ 4      ^3R	.8X  g   Q h\        \        ^,          \        ^,          \        ,           ^,           ,          4      \        \        ^,          \        ,           ^,           ^ 4      ^ ^ ^ .8X  g   Q h\        \        ^,          \        ^,          \        ,           ^,           ,          RR7      \        \        ^,          \        ,           ^,           ^ 4      ^3R.8X  g   Q h\        \        ^,          ^,
          RR7      \        \        ^,          ^,
          ^ RR7      \        \        ^,          ^,
          ^RR7      .8X  g   Q h^\        ^,          ,          ^\        ^,          ,          ,
          ^\        ,          ,           ^,           o\        ^,          \        ,           ^,           p \        S4      P                  4       \	        R^4      ^^.8X  g   Q h\        V 4      P                  4       \        V ^ 4      .8X  g   Q h\        ^,          \        ^4      ,
          o^\        ^4      ^,          ,          ) ^\        ^4      ^,          ,          .p\        \        V3R l4       \        \        V3R l4       \        SRR7      V8X  g   Q h\        \        SRR7      4      V8X  g   Q h\        \        S4      RR7      V8X  g   Q hR# )r   Fmultipleradicalsc                     < \        S 4      # r   r3   r   s   r   r   !test_real_roots.<locals>.<lambda>  s	    
1r   c                  6   < \        \        S \        4      4      # r   )r3   r   r   r   s   r   r   r    s    
41:(>r   Tr   Nr   r   r<  )r   r   r   )	r3   r   rw   r   rg   rr   rl   r{   r=  )r   rootsr   s     @r   test_real_rootsr    s   a=QCa%(VH444ady(((adU+x777aAA&'F1a4!8a<,CQ+GGGGaAA&7V	1q1a>=$<& & & & 	1adQhl!'1q1a!8!Q BC C CadAqD1HqL)E:	1q1aA@$?& & & & adQh/1a4!8Q/1a4!8Q/4
 
 
 

 	
!Q$1a4!A#!A	1q1A7HROQ#::::7F1aL>111 	
1tAwA!A$q&k\1qtAv;'E
 56
 >?a4(E111d1-.%777d1g.%777r   c            	      F  a ^\         ^,          ,          ^\         ^,          ,          ,
          ^\         ,          ,           ^,           o\        R	^4      ^^.p \        S4      \        S4      P                  4       u;8X  d	   V 8X  g   Q h Q h\         ^,          \         ,           ^,           p\	        V^ 4      \	        V^4      \	        V^4      .p\        V4      \        V4      P                  4       u;8X  d	   V8X  g   Q h Q h\        \         ^,          ^,
          4      \        ^4      ) \        ^4      .8X  g   Q h\        \         ^,          ^,
          RR7      \        ^4      ) ^3\        ^4      ^3.8X  g   Q h\        \         ^,          ^,
          RR7      \	        \         ^,          ^,
          ^ RR7      \	        \         ^,          ^,
          ^RR7      .8X  g   Q h\         ^,          \         ,
          ^,
          p\        V4      \	        V^ 4      \	        V^4      \	        V^4      \	        V^4      \	        V^4      .8X  g   Q h\         ^,          \        ^4      ,           o^\        ^4      ^,          ,          ) \        ,          ^\        ^4      ^,          ,          \        ,          .p\        \        V3R l4       \        \        V3R l4       \        SRR7      V8X  g   Q h\        \        SRR7      4      V8X  g   Q h\        \        S4      RR7      V8X  g   Q hR# )
r  Fr  r  c                     < \        S 4      # r   )r2   r   s   r   r    test_all_roots.<locals>.<lambda>1  s	    	!r   c                  6   < \        \        S \        4      4      # r   )r2   r   r   r   s   r   r   r  2  s    41:)>r   Tr   Nr   )
r   rg   r2   r   rw   rr   rl   re   r{   r=  )frootsr   grootsr   r  r   s        @r   test_all_rootsr    sa   	!Q$1a4!A#!Ar1oq!$FQ<47,,.8&88888	1q1AQlF1aL&A,7FQ<47,,.8&88888QTAXDG8T!W"5555QTAX.T!WHa=47A,2OOOOQTAX.q!taxU+q!taxU+3   
 	
1q1AQ<q!fQlF1aL&A,q!   
 	
1tAwA!A$q&k\!^Q1a[]+E
 45
 >?Q$'5000T!t,-666T!W-666r   c                     \        ^ \        4      P                  4       . 8X  g   Q h\        ^\        4      P                  4       . 8X  g   Q h\        \        ^,          ^,
          \        4      P                  4       RR.8X  g   Q h\        \        ^,          ^,           \        4      P                  4       R\        ,          R\        ,          .8X  g   Q h\        \        ^,          ^,
          \        4      P                  4       p V RR.8X  g   Q h\        \        ^,          ^,           \        4      P                  4       p V R\        ,          R\        ,          .8X  g   Q h\        \        ^,          ^,          \	        ^^4      ,
          \        4      P                  4       p V RR.8X  g   Q h\        \        ^,          ^,          \	        ^^4      ,           \        4      P                  4       p V R\        ,          R\        ,          .8X  g   Q h\        \        ^,          ^\        ,          ,           \        4      P                  4       RR\        ,          ,           RR\        ,          ,
          .8X  g   Q h\        \        ^,          ^\        ,          ,           \        \        R7      P                  4       RR\        ,          ,           RR\        ,          ,
          .8X  g   Q h\        R\        ,          R,           4      P                  4       R.8X  g   Q h\        \        ^,          \        ,           ^,           ^R7      p \        R4      p\        V ^ ,          4      P                  RV4      \        P                  J g   Q h\        V ^ ,          4      ^ 8X  g   Q h\        V ^,          4      \        R^4      8X  g   Q h\        V ^,          4      P                  RV4      \        P                  J g   Q h\        V ^,          4      \        R^4      8X  g   Q h\        V ^,          4      P                  RV4      \        P                  J g   Q h\        V ^,          4      P                  RV4      \        P                  J g   Q h\        V ^,          4      P                  R V4      \        P                  J g   Q h\        V ^,          4      P                  RV4      \        P                  J g   Q h\        V ^,          4      P                  R	V4      \        P                  J g   Q h\        R
4      p\        V ^ ,          4      P                  RV4      \        P                  J g   Q h\        V ^ ,          4      ^ 8X  g   Q h\        V ^,          4      \        R^4      8X  g   Q h\        V ^,          4      P                  RV4      \        P                  J g   Q h\        V ^,          4      \        R^4      8X  g   Q h\        V ^,          4      P                  RV4      \        P                  J g   Q h\        V ^,          4      P                  RV4      \        P                  J g   Q h\        V ^,          4      P                  R V4      \        P                  J g   Q h\        V ^,          4      P                  RV4      \        P                  J g   Q h\        V ^,          4      P                  R	V4      \        P                  J g   Q h\        \        R 4       \        \        R 4       \        \        ^,          ^,
          4      RR.8X  g   Q h\        \        ^,          ^,
          4      p V RR.8X  g   Q h\        \        \        ,           4      R\        ,          .8X  g   Q h\        \        ^\        ,          ,           4      R!\        ,          .8X  g   Q h\        \        R 4       \        \        ^,          ^,
          4      pVP                  ^4      VP!                  4        Uu. uF  q3P"                  ! ^4      NK  	  up8X  g   Q h\%        \        \        ^,          ^ \        ^,          ,          ,           R\        ^,          ,          ,           R\        ^
,          ,          ,           R\        ^,          ,          ,           R\        ^,          ,          ,           R\        ^,          ,          ,           R\        ^,          ,          ,           R,           4      P                  ^4      4      R8X  g   Q h\%        \        R\        ^,          ,          ^,
          4      P                  4       4      R8X  g   Q h\        R4      p\        \        \        V,          ,           RR7      w  p\'        V\        V,          ,           4      R8  g   Q hR# u upi )"r   r   r   rw  rz  )nz1e-5gJ5o?gP?gg'?z1e-6c                  \    \        \        \        ,           \        4      P                  4       # r   r   r   r   r4   r   r   r   r   test_nroots.<locals>.<lambda>l  s    QUA 5 5 7r   c                  R    \        \        \        ,           4      P                  4       # r   r  r   r   r   r   r  m  s    QU0B0B0Dr   c                      \        ^ 4      # r   r4   r   r   r   r   r  w  s    F1Ir   i  i@  iV  i  i\ i ie z[-1.7 - 1.9*I, -1.7 + 1.9*I, -1.7 - 2.5*I, -1.7 + 2.5*I, -1.0*I, 1.0*I, -1.7*I, 1.7*I, -2.8*I, 2.8*I, -3.4*I, 3.4*I, 1.7 - 1.9*I, 1.7 + 1.9*I, 1.7 - 2.5*I, 1.7 + 2.5*I]gV瞯<z%[-31622776.6016838, 31622776.6016838]z53.000000000000000000000000000000000000000000000000001i,  gYnN      g      ghW!'gJ5ogg'g       )r   r   r4   re   rg   rd   ro   
epsilon_eqrl   truern   falser{   rH   r>   rF   r2   r  strr   )r  r  r   r   r<  r  s         r   test_nrootsr  8  s   1:"$$$1:"$$$1q!##%$4441q!##%$q&#a%888A1$$&ET3KA1$$&ET!VSUO###Aa(1a.(!,335ET3KAa(1a.(!,335ET!VSUO###1qs
A%%'D3q5L#A++FFFF	1qs
A$$*FHAsSU{0KL L L A##%$///1a4!8a<1%E
-CeAh<""8S1QVV;;;eAh<1eAh<5q>)))eAh<""8S1QVV;;;eAh<5q>)))eAh<""8S1QVV;;;eAh<""8S1QVV;;;eAh<""8S1QVV;;;eAh<""8S1QVV;;;eAh<""8S1QVV;;;
-CeAh<""8S1QWW<<<eAh<1eAh<5q>)))eAh<""8S1QWW<<<eAh<5q>)))eAh<""8S1QWW<<<eAh<""8S1QWW<<<eAh<""8S1QWW<<<eAh<""8S1QWW<<<eAh<""8S1QWW<<<
;78
&(DE!Q$(c{***1a4!8ET3K!a%=T!VH$$$!ac'?tAvh&&&
?-. 	QTAXA88A;1;;=9=a33q6=9999tArEBq"uH$s1b5y042:=ad
AqD[!#)!Q$;/18A> q	    tE!Q$JM"))+,1XYYY 	EFA
QqSC
 CQq1Q3w<&    :s   )gc                     \         ^,          ^\         ^,          ,          ,
          ^\         ^,          ,          ,           \         ^,          ,
          p \        V 4      P                  4       \        P                  ^\        P
                  ^/8X  g   Q h\        V 4      \        P                  ^\        P
                  ^/8X  g   Q hR# )r  N)r   r   r5   rl   r4  r   r   s    r   test_ground_rootsr    s|    	1qAv!Q$A%A7!aeeQ%::::?quua3333r   c                    a \         ^,          \         ^,          ,
          ^,           o\         ^,          \         ,
          ^,           ^,          p \         ^,          ^,           ^,          p\         ^,          \         ,           ^,           ^,          p\         ^,
          ^,          p\        S^4      S8X  g   Q h\        \        V3R l4       \        \        V3R l4       \	        \        S^4      4      V 8X  g   Q h\	        \        S^4      4      V8X  g   Q h\	        \        S^4      4      V8X  g   Q h\	        \        S^4      4      V8X  g   Q h\        \
        R 4       R# )r  c                     < \        S ^ 4      # r   r6   r   s   r   r   +test_nth_power_roots_poly.<locals>.<lambda>  s    3Aq9r   c                  $   < \        S \        4      # r   )r6   r   r   s   r   r   r    s    3Aq9r   c                  L    \        \        \        ,           ^\        \        4      # r.  )r6   r   r   r   r   r   r   r    s    0D	Aq!Q1r   N)r   r6   r{   r  r.   r>   )f_2f_3f_4f_12r   s       @r   test_nth_power_roots_polyr    s	   	1q!taAa4!8a<!
Ca4!8a-Ca4!8a<!
CEA:D1%***
:9:
:9:&q!,-444&q!,-444&q!,-444&q"-.$666
& ) r   c                  p   \        \        ^,          ^,
          4      p V P                  ^R.4      ^R.8X  g   Q hV P                  . RO4      ^R.8X  g   Q hV P                  . RO4      ^R.8X  g   Q hV P                  . RO4      R^.8X  g   Q h\        \        ^,          ^,           4      p V P                  ^^
.4      . 8X  g   Q h\        \        ^,
          ^,          4      p V P                  . RO4      ^.8X  g   Q h\        \        ^,          ^,
          4      p V P                  ^ ^.4      ^ ^.8X  g   Q hR# )r  Nr   )r   r   r  r  )r   r   r   r   r  rK  )r  r  r   r   r   )r   r   r   r  )r   r   which_real_rootsr   s    r   test_which_real_rootsr    s   QTAXAq"g&1b'111m,B777232w>>>/0RG;;; 	QTAXAq"g&",,, 	acAXAm,333 	QTAXAq!f%!Q///r   c                  $   \        \        ^,          ^,
          4      p V P                  ^R\        \        ) .4      ^R\        \        ) .8X  g   Q hV P                  \        \        \        ) ^R.4      \        \        ) ^R.8X  g   Q h\        \        ^,          ^,           4      p V P                  \        \        ) \        ^,          .4      \        \        ) .8X  g   Q h\        \        \        ,
          ^,          4      p V P                  \        \        ^R^ .4      \        .8X  g   Q h\        \        ^,          ^,           4      p V P                  \        ^,          \        ) ^,          .4      \        ^,          \        ) ^,          .8X  g   Q hR# )r  Nr   )r   r   which_all_rootsre   r   s    r   test_which_all_rootsr     s-   QTAXAaQ^,BA2>>>aQB2./Ar1b>AAAQTAXAa!QqS\*q1"g555 	acAXAaAr1-.1#555 	QTAXAacA2a4[)acA2a4[888r   c                  F   \        \        ^,          \        ^,          ,           \        ^,          ,           \        ,           ^,           4      p V P                  p\        ^\        ,          \
        ,          ^,          4      p\        V P                  4       4       UUu. uF  w  r4V! WB4      '       g   K  VNK  	  upp^.8X  g   Q h\        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       R# u uppi )r  c                  Z    \        \        ^,           \        R7      P                  ^ ^ 4      # r   r   )r   r   rP   	same_rootr   r   r   r    test_same_root.<locals>.<lambda>  s    4Ab)33Aq9r   c                  r    \        \        ^,          ^,           \        ^4      R7      P                  ^ ^ 4      # r  r   )r   r   rN   r$  r   r   r   r   r%    s$    41qA/99!Q?r   c                  h    \        \        ^,          ^,           \        R7      P                  ^ ^ 4      # r'  )r   r   rQ   r$  r   r   r   r   r%    s     4Q
40::1a@r   c                      \        \        \        ^,          ,          ^,           \        \        ,          R7      P	                  ^ ^ 4      # r'  )r   r   r   rO   r$  r   r   r   r   r%    s(    4AqD1RU3==aCr   c                  p    \        \        \        ,          ^,           \        R7      P	                  ^ ^ 4      # r#  )r   r   r   rO   r$  r   r   r   r   r%    s     4A	"-771=r   N)r   r   r$  rp   re   ri   	enumerater2   r{   rF   rH   r>   )r   r   r0r<  r  s        r   test_same_rootr-    s    QTAqD[1a4!#a'(A	
B	QURZ!^	B#AKKM2@2$!biAA2@QCGGG
?9;
;?A
;@B
;CE
&=? As   D4Dc                     \        \        ^,          ^,
          \        ^,
          ,          P                  \        \        ^\        ^4      ,           ,          /4      4      p \	        V \        4      R\        ) ^\        ^4      ,           ,          ^,          ^,           ^3\        ) ^\        ^4      ,           ,          ^,
          ^3\        ) ^\        ^4      ,           ,          ^,           ^3.38X  g   Q h\        \        ^,          ^,
          \        ^,
          ,          P                  \        \        ^^\        ^^4      ,          ,           ,          /4      4      p \	        V \        4      e   Q hR# )r  Nr  )ra   r   r  rr   r<   rg   r   s    r   test_torational_factor_listr/    s
   Aa!A#$$a1tAw;%89:A"1a(R
Qa[	!	a	#
Qa[	A	q!
Qa[	A	q!2# -$ $ $ $ 	Aa!A#$$a1q(1a./@+@(A%BCDA"1a(000r   c            	      x)   \        ^ 4      ^ 8X  g   Q h\        ^4      ^8X  g   Q h\        \        4      \        8X  g   Q h\        \        4      \        J g   Q h\        \        R 4       \        R4      ;p R8X  g   Q h\        V \        4      '       g   Q h\        R\        4      ;p R8X  g   Q h\        V \        4      '       g   Q h\        R\        4      R8X  g   Q h^\        ^,          ,          ^,
          ^\        ,          ^,
          ^\        ,          ^,           ^3w  rr4WW43 Uu. uF  p\        V\        4      NK  	  upw  rgrVP                  V4      ^W38X  g   Q h\        W34      ^W438X  g   Q h\        W3\        4      ^W438X  g   Q h\        W3\        34      ^W438X  g   Q h\        Wg34      ;p ^W38X  g   Q h\        V \        4      '       g   Q h\        W3RR7      ^W38X  g   Q h\        Wg3RR7      ^W438X  g   Q h\        ^,          ^,
          \        \        ^4      ,           ,          p\        V4      V8X  g   Q h\        VRR7      \        \        ^4      ,
          8X  g   Q h\        ^,          ^,
          \        \        ^4      ,
          ,          p\        V4      V8X  g   Q h\        VRR7      \        \        ^4      ,           8X  g   Q h\        \        ^,          ^,          ^,
          \        ^,          ^,
          34      ^\        ^,           ^38X  g   Q h\        \        ^,          \        ,
          \        \        ,
          ,          4      ^\        \        ,
          ,          \        ^,          \        ,
          ,          8X  g   Q h\        \        ^,          \        ^,          ,
          \        \        ,
          ,          \        4      \        \        ,           8X  g   Q h\        \        ^,          \        ^,          ,
          \        \        ,
          ,          \        4      \        \        ,           8X  g   Q h\        \        ^,          \        ^,          ,
          \        \        ,
          ,          4      \        \        ,           8X  g   Q h\        \        ^,          ^,
          \        ^,          ^,
          ,          4      \        ^,          \        ,           ^,           \        ^,           ,          8X  g   Q h\        \        ^,          ^,          \        P                  ,
          \        ^,          ^,
          ,          4      \        ^,          \        ,           ^,           ^\        ,          ^,           ,          8X  g   Q h\        \        ^\        ,          4      ^\        \        4      ,          ,           ^,           \        \        4      ^,           ,          4      \        \        4      ^,           8X  g   Q h\        \        ^,          \        ^,          ,
          \        4      p\        \        \        ,
          \        4      p\        \        \        ,           \        RR7      p\        ^\        RR7      p\        W34      ^Wg38X  g   Q h\        ^,          \        ^4      ^,
          \        ^,          ,          ,           ^\        ^4      ,          ^,           \        ,          ,
          ^\        ^4      ,          ,
          p\        ^,          ^,
          p\        W3RR7      ^\        ^,          ^\        ,          ,
          ^,
          \        \        ^4      ,
          38X  g   Q h\        R\        ,          ^,           \        4      p\        \        ^	,          ) \        ^,          ,           \        ^,          ,           \        ^,          ,
          ^\        ^,          ,          ,           ^\        ,          ,
          ^,           \        4      p\        W34      ^V) V) 38X  g   Q h\        \        ^,          ^,           \        4      p\        \        ^,          ^,           \        4      pVP                  V4      \        ^4      ^,          \        \        ^,           \        \        R7      \        \        ^,           \        \        R7      38X  g   Q hVP                  VRR	7      \        ^\        ,          ^,           \        \        R7      \        ^\        ,          ^,           \        \        R7      38X  g   Q h^\        ,           ^\        ,           ^^^3^\        ,           ^\        ,
          RR\        ,
          R\        ,           3^\        ,
          ^\        ,           R^\        ,
          ^\        ,           3^\        ,
          ^\        ,
          ^^^3.p
V
 EF  w  rrp\        W34      ^W438X  g   Q h\        V\        4      p\        V\        4      p\        V\        4      p\        V\        4      pVP                  V4      WV,          V38X  g   Q hVP                  P                  VP                  4      VP                  VP                  38X  g   Q hVP                  P                  VP                  RR	7      VP                  VP                  38X  d   EK  Q h	  \        \        \        R
R7      p\        ^\        RR7      pVP                  V4      ^\        \        \        R
R7      \        ^\        R
R7      38X  g   Q hVP                  VRR	7      \        \        \        R
R7      \        ^\        R
R7      38X  g   Q h\        ^\        ,          \        ,          \        ,           \        R
R7      p\        ^\        ^,          ,          \        ,          \        R
R7      pVP                  VRR	7      \        ^\        ,          ^,           \        R
R7      \        ^\        ,          \        ,          \        R
R7      38X  g   Q hR\        ,          ^\        ,          ,
          R\         \        ,
          ^,          ,          ,           ) \         \        ,
          \         ) \        ,           ^,           ,          ,          p\        V4      P"                  R8X  g   Q h\%        \        R,
          4      p\%        \        R,           4      p	RV^,          ,          ^,           V^,          ) ^,           ,          V	^,          ,          ^,          RV^,          ,          ^,           RV	^,          ,          ^,           ,          V,          V	,          ,           RV^,          ,          ^,           V^,          ,          V	^,          ,          ,
          RV	^,          ,          ^,           V	^,          ) ^,           ,          V^,          ,          ^,          ,           RV	^,          ,          ^,           V^,          ,          V	^,          ,          ,
          ^\        V^,          V	^,          ,          R,           4      ,          ,          RV^,          ,          ^,           ) V,          V	^,          ,          ^,          RV	^,          ,          ^,           V^,          ,          V	,          ^,          ,
          RV^,          ,          ^,           V,          V	^,          ,          ^,          RV	^,          ,          ^,           V^,          ,          V	,          ^,          ,           ,          ^V^,          V	^,          ,          R,           \'        ^^4      ,          ,          ,          ,           p\        V4      P"                  R8X  g   Q h\)        RRR7      p\+        V\        ^,          ^,
          ,          \        ^,           ,          \        ^8  3\        ^,           \        ^,          ^\        ,          ,           ,          R34      p\+        V\        ^,
          ,          \        ^8  3^\        ,          R34      p\        V4      V8X  g   Q h\        ^V,          4      ^V,          8X  g   Q h\        ^V,           4      ^V,           8X  g   Q h\        \        ^,          ^,
          \        ^,           ,          V,          4      \        ^,
          V,          8X  g   Q h\        \        ^,          ^,
          \        ^,           ,          V,           4      \        ^,
          V,           8X  g   Q h\+        \        ^,          ^,
          \        ^,           ,          \        ^8  3\        ^,           \        ^,          ^\        ,          ,           ,          R34      p\+        \        ^,
          \        ^8  3^\        ,          R34      p\        V4      V8X  g   Q h\        ^V,          4      ^V,          8X  g   Q h\        ^V,           4      ^V,           8X  g   Q h\        \        ^,          ^,
          \        ^,           ,          V,          4      \        ^,
          V,          8X  g   Q h\        \        ^,          ^,
          \        ^,           ,          V,           4      \        ^,
          V,           8X  g   Q h\        RRR7      p\        VRR7      \        P,                  J g   Q hVP.                  ! \        ^4      \        P,                  J g   Q h\1        V4      \        P,                  J g   Q h\3        R^^4      p\        VR,          ^,           4      VR,          ^,           8X  g   Q h\5        VR,          VR ,          ^,          VR!,          ,          ,           4      ^VR",          ,          \         ,          ,
          p\        V4      \         \5        VR,          VR ,          ^,          VR!,          ,          ,           4      ,          ^VR",          ,          ,
          \         ,          8X  g   Q h\        \        ^,          ^,           \        \6        ,
          ,          4      \        \6        ,           8X  g   Q hR# u upi )#r   c                      \        R4      # )r   r   r  r   )r7   r   r   r   r   test_cancel.<locals>.<lambda>  s	    vi0r   Tr  F)r"  r[  r   r   )includer]  r   g{Gzt?r3  r  ra  )commutativeap	  (2*1*(x - 1/x)/(x*(2*x - (-x + 1/x)/(x**2*(x - 1/x)**2) - 1/(x**2*(x -
        1/x)) - 2/x)) - 2*1*((x - 1/x)/((x*(x - 1/x)**2)) - 1/(x*(x -
        1/x)))*((-x + 1/x)*((x - 1/x)/((x*(x - 1/x)**2)) - 1/(x*(x -
        1/x)))/(2*x - (-x + 1/x)/(x**2*(x - 1/x)**2) - 1/(x**2*(x - 1/x)) -
        2/x) + 1)*((x - 1/x)/((x - 1/x)**2) - ((x - 1/x)/((x*(x - 1/x)**2)) -
        1/(x*(x - 1/x)))**2/(2*x - (-x + 1/x)/(x**2*(x - 1/x)**2) - 1/(x**2*(x
        - 1/x)) - 2/x) - 1/(x - 1/x))*(2*x - (-x + 1/x)/(x**2*(x - 1/x)**2) -
        1/(x**2*(x - 1/x)) - 2/x)/x - 1/x)*(((-x + 1/x)/((x*(x - 1/x)**2)) +
        1/(x*(x - 1/x)))*((-(x - 1/x)/(x*(x - 1/x)) - 1/x)*((x - 1/x)/((x*(x -
        1/x)**2)) - 1/(x*(x - 1/x)))/(2*x - (-x + 1/x)/(x**2*(x - 1/x)**2) -
        1/(x**2*(x - 1/x)) - 2/x) - 1 + (x - 1/x)/(x - 1/x))/((x*((x -
        1/x)/((x - 1/x)**2) - ((x - 1/x)/((x*(x - 1/x)**2)) - 1/(x*(x -
        1/x)))**2/(2*x - (-x + 1/x)/(x**2*(x - 1/x)**2) - 1/(x**2*(x - 1/x)) -
        2/x) - 1/(x - 1/x))*(2*x - (-x + 1/x)/(x**2*(x - 1/x)**2) - 1/(x**2*(x
        - 1/x)) - 2/x))) + ((x - 1/x)/((x*(x - 1/x))) + 1/x)/((x*(2*x - (-x +
        1/x)/(x**2*(x - 1/x)**2) - 1/(x**2*(x - 1/x)) - 2/x))) + 1/x)/(2*x +
        2*((x - 1/x)/((x*(x - 1/x)**2)) - 1/(x*(x - 1/x)))*((-(x - 1/x)/(x*(x
        - 1/x)) - 1/x)*((x - 1/x)/((x*(x - 1/x)**2)) - 1/(x*(x - 1/x)))/(2*x -
        (-x + 1/x)/(x**2*(x - 1/x)**2) - 1/(x**2*(x - 1/x)) - 2/x) - 1 + (x -
        1/x)/(x - 1/x))/((x*((x - 1/x)/((x - 1/x)**2) - ((x - 1/x)/((x*(x -
        1/x)**2)) - 1/(x*(x - 1/x)))**2/(2*x - (-x + 1/x)/(x**2*(x - 1/x)**2)
        - 1/(x**2*(x - 1/x)) - 2/x) - 1/(x - 1/x))*(2*x - (-x + 1/x)/(x**2*(x
        - 1/x)**2) - 1/(x**2*(x - 1/x)) - 2/x))) - 2*((x - 1/x)/((x*(x -
        1/x))) + 1/x)/(x*(2*x - (-x + 1/x)/(x**2*(x - 1/x)**2) - 1/(x**2*(x -
        1/x)) - 2/x)) - 2/x) - ((x - 1/x)/((x*(x - 1/x)**2)) - 1/(x*(x -
        1/x)))*((-x + 1/x)*((x - 1/x)/((x*(x - 1/x)**2)) - 1/(x*(x -
        1/x)))/(2*x - (-x + 1/x)/(x**2*(x - 1/x)**2) - 1/(x**2*(x - 1/x)) -
        2/x) + 1)/(x*((x - 1/x)/((x - 1/x)**2) - ((x - 1/x)/((x*(x - 1/x)**2))
        - 1/(x*(x - 1/x)))**2/(2*x - (-x + 1/x)/(x**2*(x - 1/x)**2) -
        1/(x**2*(x - 1/x)) - 2/x) - 1/(x - 1/x))*(2*x - (-x + 1/x)/(x**2*(x -
        1/x)**2) - 1/(x**2*(x - 1/x)) - 2/x)) + (x - 1/x)/((x*(2*x - (-x +
        1/x)/(x**2*(x - 1/x)**2) - 1/(x**2*(x - 1/x)) - 2/x))) - 1/xr  )	_signsimpMNr  r2  r   r>  r  r?  r  r   r   )r   r  r0  )r  r   r<  )r7   r   rh   r{   r  r   r  r   rr   r   rl   r  rp   r   rP   r   r   is_Mulrq   rg   rm   rs   NaNr  rx   rv   rt   re   )r   r   r   r   r   r   r`  r  r  r  pairsr1  pfpgpppqra  r  r  r  p4r7  exprs                          r   test_cancelrA    sY   !9>>!9>>!9>>":
:01 f~A)+++a fa  AY...a&!	)))1a4!QqS1WacAgq0JA!()a|5|!41:|5JA!88A;1a)###1&>aY&&&1&!A	)))1&1$Aq9,,,qf~A1a)+++a1&%!Q2221&&1a)333	
AAQK A!9>>!E"a$q'k111	
AAQK A!9>>!E"a$q'k1111a46A:qsQw'(QAqM999 1a4!8a!e$%AEAqD1H)====1a4!Q$;Q'+q1u4441a4!Q$;Q'+q1u4441a4!Q$;Q'(AE1111a4!8adQh'(QTAX\AE,BBBB1a46AFF?QTAX./AqD1HqL1Q373KKKK3qs8aAh&*SVaZ89SVaZGGGQTAqD[!AQUAAQUAg&AQ'"A1&>aY&&&	1Q!QT!!QtAwY]A$55$q'	AA	1qA1&D)aA!aT!W-MMMMRTAXqAadUQT\AqD 1a4'!AqD&01Q36:A>A1&>a!aR[(((QqS1WaAQqS1WaA88A;1Q46QUAb!QUAb!# # # # 88At8$QqS2Xq$QqS2Xq$)& & & &
 
QAq!Q	
QAr2a4A&	
QAr1Q3!$	
QAq!Q	E #eqf~!Q***!QZ!QZ!QZ!QZyy}b" 5555vv}}RVV$(8888vv}}RVVT}2rvvrvv6FFFF # 	Q'"AQ'"A88	$q!G,d1a.HIJ J J88At8$Q'"DAg$>)@ @ @ @ 	QqSUQY'*AQq!tVAXq)A88At8$QqS1Wa($qs1ua*H)J J J J Q$1*ua!eaZ'
'(1q5A26A:*>?A!9t###QWAQWA
QT'A+A		"1a4	'	)R1Wq[2ad7Q;,G,I!,K	KrRSUVRVwYZ{\]_`\`N`abdeaeNe	eiklmoplpipstitxy{|x|w|  @A  xA  iB  CD  FG  CG  iG  HI  iI  
I  MO  PQ  ST  PT  MT  WX  MX  Z[  ]^  Z^  L^  _`  bc  _c  Lc  
c  fg  hl  mn  pq  mq  rs  uv  rv  mv  y  m  h@  f@  	Aad7Q;	!Q$	q	 Bq!tGaKA#5a#7#9	9R1Wq[!OAqD<PQR<RVXYZ\]Y]V]`aVacdfgcgUghiUijkUk<klnoqrtuquvwyzvzqz  ~D  rD  GO  PQ  ST  GU  qU  oU  	V	VA!9t### 	s&A	Aq!taxL!a%(!a%0AEAqD1Q3J3G2N	OB	Aq1uIq1u%!T{	3B":!B$<1R4!b&>QV###1a4!8a!e$R'(QUBJ6661a4!8a!e$r)*q1ul:::	QTAXA&A.!a%!Q$1*1Et0L	MB	QUQU#ac4[	1B":!B$<1R4!b&>QV###1a4!8a!e$R'(QUBJ6661a4!8a!e$r)*q1ul::: 	
 H@ A 	AB !u%...66!Q<155   A;!%% 	S!QA!C&1*3!+++qw41qw../!ag+/AD$<Ac!D'AdGaK!D',A"ABBQ4[PTUUUUU1a4!8a!e$%Q...I 6s   )AR7c            	      t   \        \        ^,          ^,
          \        ^,           ,          ^R7      \        ^,           8X  g   Q h\        \        ^,          ^,
          ^R7      P                  \        \        ^,           ^R7      4      ^\        \        ^,           ^R7      \        ^\        ^R7      38X  g   Q hR# )r  r   N)r7   r   r   r   r   r   test_cancel_modulusrC    s    1a4!8a!e$a0AE9991q!$++DQ,BCQUA&Q1(=>? ? ?r   c                  R  a \        \        ^,          ^\        ,          ,           ^,           \        RR7      oSP                  4       w  rV S8X  g   Q hV\        P                  8X  g   Q h\        \        ^,          ^\        ,          ,           ^,           \        RR7      oSP                  4       w  rV SP                  4       8X  g   Q hV\        P                  8X  g   Q h\        \        ^,          ^,          \        ^4      ^,          \        ,          ,           \        ^4      ^,          ,           \        RR7      oSP                  4       w  rV \        \        ^,          ^\        ,          ,           ^,           \        RR7      8X  g   Q hV^8X  g   Q h\        \        ^,          ^,          \        ^4      ^,          \        ,          ,           \        ^4      ^,          ,           \        RR7      oSP                  4       w  rV \        \        ^,          ^\        ,          ,           ^,           \        RR7      8X  g   Q hV^8X  g   Q h\        \        \        ,          \        \        4      o\        \        V3R l4       \        \        RR7      o\        \        V3R l4       R# )r  rO   r   rP   c                  $   < S P                  4       # r   )make_monic_over_integers_by_scaling_rootsr   s   r   r   @test_make_monic_over_integers_by_scaling_roots.<locals>.<lambda>      qJJLr   rS   c                  $   < S P                  4       # r   rF  r   s   r   r   rH    rI  r   N)
r   r   rG  rO   rP  r  rl   r   r{   r  )r   r   r   s     @r   .test_make_monic_over_integers_by_scaling_rootsrK    s   QTAaCZ!^Qt,A668DA6M6;;QTAaCZ!^Qt,A668DA		;;QT!Vad1fqj 1Q46)1T:A668DAQTAaCZ!^Qt44446M6QT!Vad1fqj 1Q46)1T:A668DAQTAaCZ"_a55556M6QqS!QA
:LMQtA
:LMr   c                      \        \        ^,          ^,
          4      p V P                  RR7      w  rV\        P                  8X  g   Q hVRJ g   Q hR# )r  T)by_nameFN)r   r   galois_grouprZ   D4)r   r  alts      r   test_galois_grouprQ    sG    Q!VaZA^^D^)FA%(((((%<<r   c            
        a
a ^\         ^,          ,          \        ^,          ,           \         ^,          ,
          \        ^,          ,           p \         ^,          \         ,
          \        ^,          \        ,
          .p^\         ,          ^.p\         ^,          \        ^,          ,           \        ,           p\        W4      W#38X  g   Q h\        W\         \        4      W#38X  g   Q h\        V4      pVP	                  V 4      W#38X  g   Q h\        ^\         ,          \         \        4      \        ^\         \        4      .p\        \         ^,          \        ^,          ,           \        ,           \         \        4      p\        \        WRR7      W#34      '       g   Q h\        \        W\         \        RR7      W#34      '       g   Q h\        VRR7      p\        VP	                  V 4      W#34      '       g   Q h^\         ^,          ,          \        ^,          ,           ^\        ,          ,           p \        \         ^,          \        ^,          ,           ^,
          \         \        ,          ^,
          .4      p\         ^,          \         \        ^,          ,          ^,          ,
          \         \        ,          ^,          ,           \        ^,          ^,          ,           \        ^,          ^,          ,
          \        ^,          ^,          ,           \        ^,          ) ^,          \        ^,          ^,          ,           \        \        ^^4      ,          ,           .p^ p\        W4      W#38X  g   Q hVP	                  V 4      W#38X  g   Q h\        WRR7      ^,          ^ 8w  g   Q hVP	                  V RR7      ^,          ^ 8w  g   Q hVP                  V 4      RJ g   Q hVP                  V ^,           4      RJ g   Q h\        ^^.\         4      ^.^ 38X  g   Q h\        \        R 4       \        ^\         ^,          ,          \        ^,          ,           ^\        ,          ,           4      p\        \        \         ^,          \        ^,          ,           ^,
          4      \        \         \        ,          ^,
          4      .4      o
\        \         ^,          R\         ,          \        ^,          ,          ,
          R\         ,          \        ,          ,           R\        ^,          ,          ,           R\        ^,          ,          ,
          R\        ^,          ,          ,           \         \        RR7      \        R\        ^,          ,          R\        ^,          ,          ,           R\        ,          ,           \         \        RR7      .p\        ^ \         \        RR7      pS
P	                  V4      Wg38X  g   Q hS
P	                  V 4      w  r#\        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       g   Q h\        V\
        4      '       g   Q h\        ^\         ^,          ,          \        ^,          ,           ^\        ,          ,           \         \        \        4      o\        \        V
V3R	 l4       \        ^ \         \        4      pS
P	                  V4      w  r#\        ;QJ d    R
 V 4       F  '       d   K   RM	  RM! R
 V 4       4      '       g   Q hVP                  '       g   Q h\        ^\         \        4      p	S
P	                  V	4      w  r#\        V\
        4      '       g   Q hVP!                  4       ^8X  g   Q h\        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       g   Q hR# )r  Tr  Fr  c                      \        ^^.4      # r   )r8   r   r   r   r   test_reduced.<locals>.<lambda>  s    ga!or   rP   r   c              3   B   "   T F  p\        V\        4      x  K  	  R # 5ir   )r   r   r   r   s   & r   r   test_reduced.<locals>.<genexpr>  s     .Aqz!T""As   c                  &   < S P                  S4      # r   )reduce)G_polyf_wrong_genss   r   r   rT    s    v}}\:r   c              3   8   "   T F  qP                   x  K  	  R # 5ir   r  rV  s   & r   r   rW         $!Qyy!   c              3   8   "   T F  qP                   x  K  	  R # 5ir   r]  rV  s   & r   r   rW    r^  r_  Nr  r  g      пg      ?)r   r   r8   r9   rY  r   r   rg   containsr{   rA   r   r   r   r  r  r   )r   r  r  r  r  f_polyQ_polyr_poly	zero_poly
const_polyrZ  r[  s             @@r   test_reducedrg    s%   	!Q$A1q!t#A	
A1a4!8A	
1aA	1q!taA1=QF"""1A1&(((A88A;1&   	ac1a$q!Q-(AQTAqD[1_a#Aga$/!8888gaAq5v>>>>$AahhqkA6****	!Q$A!A!Q$A+/1Q37+,A	
A!Q$q1Q3q5	 1a46	)AqDF	2QT!V	;adU1Wq!tAv=MPQRZ[\^_R`P`=`aA	A1=QF"""88A;1&   1e$Q'1,,,88AE8"1%***::a=D   ::a!e%%%1qc11#q)))
56!AqD&1a4-!A#%&FtAqD1a4K!O,d1Q37m<=F1a4#a%1*$s1uQw.QT9C1HDs1a4xOQRTU^bc419s1a4x'#a%/AdCEF!Q$'F== V$4444==DA3.A.333.A.....a!Q$A!+Q15L
::;Q1I==#DA3$!$333$!$$$$$9999aAJ==$DAa99;!3$!$333$!$$$$$r   c                     \        . \        \        \        4      . 8X  g   Q h\        \        ^,          ^,           \        ^,          \        ,          \        ^,          ,           .\        \        RR7      ^\        ^,          ,           R\        ^,          ,           .8X  g   Q h\        \        ^,          ^,           \        ^,          \        ,          \        ^,          ,           \        \        ,          \        ^,          ,          .\        \        \        RR7      R\        ^,          ,           \        ^,          ^\        ^,          ,           .8X  g   Q h\        \        ^,          ^,           \        ^,          \        ,          \        ^,          ,           .\        \        RRR7      \	        ^\        ^,          ,           \        \        4      \	        R\        ^,          ,           \        \        4      .8X  g   Q h\        \        ^,          ^,           \        ^,          \        ,          \        ^,          ,           \        \        ,          \        ^,          ,          .\        \        \        RRR7      \	        R\        ^,          ,           \        \        \        4      \	        \        ^,          \        \        \        4      \	        ^\        ^,          ,           \        \        \        4      .8X  g   Q h\        \        ^,          ^,
          \        ^,          ^,
          .4      \        ^,
          .8X  g   Q h\        \        \        ^,          ^4      \        \        ^,          ^4      .4      \        ^,
          .8X  g   Q h^\        ^,          ,          \        \        ,          ,           ^\        ,          ,
          ^,
          ^\        ,          ^\        ,          \        ,          ,           \        ^,          ,           \        ^\        ,          ,
          \        \        ,          ,           ^\        ^,          ,          ,
          .p \        ^	,          \        ^,          \        ^,          ,          ,
          ^\        ,          \        ^,          ,          \        ,          ,
          ^\        ,          \        ^,          ,          ,           \        ^,          \        ^,          ,          ,           ^,
          p\        V \        \        \        ^RR7      pV^\        ,           \        ,           ^\        ,          ,           ^\        ^,          ,          ,           ^\        ^,          ,          ,           ^\        ^,          ,          ,           \        ^,          ,           ^^\        ,          ,           \        ^,          ,           ^\        ^,          ,          ,           ^\        ^,          ,          ,           ^\        ^,          ,          ,           ^\        ^,          ,          ,           ^\        ^,          ,          ,           ^^\        ,          ,           ^\        ,          ,           \        \        ,          ,           ^\        ^,          ,          ,           \        ^,          ,           \        ^,          ,           ^^\        ,          ,           \        ^,          ,           ^\        ^,          ,          ,           ^\        ^,          ,          ,           ^\        ^,          ,          ,           ^\        ^,          ,          ,           \        ^,          ,           .8X  g   Q h\        W\        \        \        ^RRR7      w  r4\        \        W2P                  4       UUu. uF  w  rVWV,          NK  	  uppV4      \	        V^R	7      8X  g   Q h\        \        ,          ^\        ,          ,
          ^\        ^,          ,          \        ^,          ,
          .p \        V \        \        RR7      \        ^,          ^\        ,          ,
          \        ^,          ^\        ^,          ,          ,
          \        \        ,          ^\        ,          ,
          .8X  g   Q h\        V \        \        RR7      \        ^,          ^\        ^,          ,          ,
          \        ^,          ) ^\        ^,          ,          ,           \        \        ,          ^\        ,          ,
          .8X  g   Q h\        V RRR
7      \        ^,          ^\        ,          ,
          \        ^,          ^\        ^,          ,          ,
          \        \        ,          ^\        ,          ,
          .8X  g   Q h\        ^.\        4      ^.8X  g   Q h\        \        ^,          R\        ,          ,           .\        \        4      R\        ^,          ,          R\        ,          ,           .8X  g   Q h\        \        R 4       \        \        ^,          ^,
          \        ^,          ^,           .RR7      \        ^,           .8X  g   Q h\        \        ^,          ^,
          \        ^,          ^,           .RR7      \        ^,           .8X  g   Q h\        \        R 4       R# u uppi )r  rW   r*  rY   Tr(  r  Fr:  )r   r  r  r   )r(  rM   r4  r   c                      \        ^.4      # r   )r9   r   r   r   r   test_groebner.<locals>.<lambda>=  s
    hsmr   
buchbergermethodf5bc                  0    \        \        \        .R R7      # )unknownrm  )r9   r   r   r   r   r   r   rk  B  s    xAyAr   Nr   )r9   r   r   r   r   rk   r8   sumr   r  r{   rA   r  )r`  r   r  r  r  r   r   s          r   test_groebnerrs    sp   B1a B&&&QTAXq!tAv1}-q!5Aa!Q$hPRUVXYUYPYEZZZZQTAXq!tAv1}ac!Q$h7Aq	RWY\]_`\`W`bcefbfhilmoplphpVqqqqQTAXq!tAv1}-q!5M	a!Q$h1	tBAIq!456 6 6QTAXq!tAv1}ac!Q$h7Aq	Y]^	b1a4iAq	!41aA#6QAXq!Q8OPQ Q Q QTAXq!tax()a!eW444R1a["QT1+./AE7:::	
1a4!A#!	a	1qs1uq!t!3Q1Wqs]Qq!tV5KLA	1q!tAqDy1Q3q!t8A:%1QT	1AqDAI=AAAq!Q%8AQQqS1QT6)AadF2Qq!tV;adBQqS1a4!AqD&(1QT61AadF:Qq!tVCa1fLQqS1Q31$qAv-14q!t;QqS1a4!AqD&(1QT61AadF:Qq!tVCadJL L L L
 1Aq!uDIDAQ1115a9KKKK	
1qsAadFQTM"AAq!9-	
A!QTAadF]AaC!A#I./ / /Aq!9-	
A!Q$A!Q$!ac	23 3 3AYd3	
A!QTAadF]AaC!A#I./ / / QCs"""QTCE\NAq)c!Q$hQ.>-????
34QTAXq!tax(>1q5'IIIQTAXq!tax(7AE7BBB
:AB' 2s   j?
c            	      6   \         \        ,           \        ,           \        ,           \         \        ,          \         \        ,          ,           \        \        ,          ,           \        \        ,          ,           \         \        ,          \        ,          \         \        ,          \        ,          ,           \         \        ,          \        ,          ,           \        \        ,          \        ,          ,           \         \        ,          \        ,          \        ,          ^,
          .p \	        V \         \        \        \        \
        R7      p^\         ,          ^\        ^	,          ,          ,           ^\        ^,          ,          ,
          ^\        ,          ,
          ^\        ,          ^\        ,          ,           ^\        ^	,          ,          ,
          ^\        ^,          ,          ,           ^\        ,          ,           ^\        ^,          ,          ^\        ^
,          ,          ,           ^\        ^,          ,          ,
          ^\        ^,          ,          ,
          ^\        ,          \        ^,          ,          ^\        ,          ,           \        ^	,          ,
          ^\        ^,          ,          ,           ^\        ,          ,           \        ^,          \        ^,          ,
          \        ^,          ,
          ^,           .p\	        V \         \        \        \        \        R7      V8X  g   Q hVP                  \        4      V8X  g   Q h^	\        ^,          ,          ^$\        ^,          ,          ,           ^ \        ^,          ,          ,
          ^\        ^,          ,          ,
          ^N\        ^,          ,          ,
          R\        ^,          ,          ,           R\        ^,          ,          ,           ^l\        ,          ,
          ^	,           R\        ,          \        ^,          ,          ^\        ,          \        ^,          ,          ,
          ^\        ,          \        ^,          ,          ,           R\        ,          \        ^,          ,          ,           R\        ,          \        ^,          ,          ,           R\        ,          \        ^,          ,          ,
          R\        ,          \        ,          ,
          ^l\        ,          ,           ^H\        ^,          ,          ,
          R\        ^,          ,          ,
          ^\        ^,          ,          ,           R	\        ^,          ,          ,           R\        ^,          ,          ,           R\        ,          ,
          ^`,           .p \	        V \        \        \
        R7      pR
\        ,          R\        ^,          ,          ,           R\        ^,          ,          ,
          R\        ^,          ,          ,
          R\        ^,          ,          ,           R\        ^,          ,          ,           R\        ^,          ,          ,           R\        ,          ,
          R,           ^	\        ^,          ,          ^$\        ^,          ,          ,           ^ \        ^,          ,          ,
          ^\        ^,          ,          ,
          ^N\        ^,          ,          ,
          R\        ^,          ,          ,           R\        ^,          ,          ,           ^l\        ,          ,
          ^	,           .p\	        V \        \        \        R7      V8X  g   Q hVP                  \        4      V8X  g   Q h\        ^,          \        ,
          ^\        ,          ,
          ^,           R\        ,          \        ^,          ,           \        ,           ^,
          .p \	        V \        \        \        R7      p\        ^,          \        ,
          ^\        ,          ,
          ^,           \        ^,          ^\        ,          ,
          \        ,           ^,
          .p\	        V \        \        \
        R7      V8X  g   Q hVP                  \
        4      V8X  g   Q hR# )r   r*  i  i   i  i8  i  ry     i   l   ;7>rI l   *El   2t5TJl   "3CR7	 l   }wSo8 l   Hg51n? l   3&[T l   e t{ l   *JwiC1 Nir  )r   r   r   r   r9   rX   rW   fglmr   r   r   )r`  r  rb  s      r   	test_fglmrw  E  s   	
QQ!ac	AaC!A#-qs1uqs1u}qs1u/Dqs1u/LaPQcRSeTUgXYkZAAq!Qe,A 	
!a1fqAv!#	!ac	AadFQq!tV#ac)	!Q$1b51QT6!AadF*	!AqD1Q3A!Q$&1,	21q!ta	A Aq!Q-22266#;!	
1a4"QT'	Bq!tG	#c!Q$h	.AqD	83q!t8	Cc!Q$h	NQTUVQV	VYZ	ZAad
SU1a4Z#a%1*,tAvad{:SU1a4ZG#a%PQSTPT*TWZ[\W\]^W^^A	1a4	ad(	#%(AX	.04QT		:<?1H	EGJ1u	MOQ	R	SA 	Aq&A 	a"4QT"99<NqRSt<SSQT!	"$71$<	=?STUWXTX?X	YQT!	"$9!$;	<>S	T 	
!Q$AqD2ad7"SAX-1a47#ad(BSAXMPSTUPUUXYY		A Aq!3'1,,,66#;!	
AAaC!	RTAqD[1_q01AAq$A 	
1q1Q3	1qs
Q	A
 Aq!5)Q...66%=Ar   c                     \        \        \        .\        \        4      R J g   Q h\        \        ^,          \        ^,          ,           .\        \        4      RJ g   Q h\        \        \        \        .\        \        \        4      R J g   Q h\        \        \        \        .\        \        \        \        4      RJ g   Q h\        \        ,          \        ,
          \        \        ,          \        ,
          \        \        ,          \        ,
          .p \        V \        \        \        4      R J g   Q h\        ^,          ^\        ,          \        ,          ,
          ^,           \        \        ^,          ,          \        \        ^,          ,          ,           ^\        ^,          ,          ^\        ^,          ,          ,
          .p \        V \        \        \        4      R J g   Q hR# r  )r;   r   r   r   r   )r`  s    r   test_is_zero_dimensionalry  o  s!   1vq!,4441q!t}a3u<<<1ay!Q2d:::1ay!Q15>>>	
1q!A#'1Q37#Aq!Q*d222	
A!A	1QT6AadF?AadFQq!tVO<Aq!Q*d222r   c                  F	   \         \        ,          ^\        ,          ,
          ^\        ^,          ,          \         ^,          ,
          .p \        V \         \        RR7      p\        ^,          ^\        ,          ,
          \         ^,          ^\        ^,          ,          ,
          \         \        ,          ^\        ,          ,
          .pV Uu. uF  p\        V\         \        4      NK  	  pp\        V ^ .,           \         \        RR7      V8X  g   Q h\	        V\
        4      RJ g   Q h\        V4      ^8X  g   Q hV^ ,          V^ ,          8X  d   V^ ,          P                  '       d   Q hV^,          V^,          8X  d   V^,          P                  '       d   Q hV^,          V^,          8X  d   V^,          P                  '       d   Q hVR,          VR,          8X  dI   \        ;QJ d#    R VR,           4       F  '       g   K   RM	  RM! R VR,           4       4      '       d   Q hVR,          VR,          8X  dI   \        ;QJ d#    R VR,           4       F  '       g   K   RM	  RM! R VR,           4       4      '       d   Q hVP                  V8X  g   Q hVP                  V8X  g   Q hVP                  \         \        38X  g   Q hVP                  \        8X  g   Q hVP                  \        8X  g   Q hW8X  g   Q hV\!        V4      8X  g   Q hW8X  g   Q hV\!        V4      8X  g   Q hV. 8w  g   Q h\        V \         \        RRR	7      pV^ ,          V^ ,          8X  d   V^ ,          P                  '       g   Q hV^,          V^,          8X  d   V^,          P                  '       g   Q hV^,          V^,          8X  d   V^,          P                  '       g   Q hVR,          VR,          8X  dI   \"        ;QJ d#    R
 VR,           4       F  '       d   K   RM	  RM! R
 VR,           4       4      '       g   Q hVR,          VR,          8X  dI   \"        ;QJ d#    R VR,           4       F  '       d   K   RM	  RM! R VR,           4       4      '       g   Q hR# u upi )r  rY   r*  T:r   NNc              3   8   "   T F  qP                   x  K  	  R # 5ir   r/  r   r   s   & r   r   %test_GroebnerBasis.<locals>.<genexpr>       %?Aiir_  F:Nr  Nc              3   8   "   T F  qP                   x  K  	  R # 5ir   r|  r}  s   & r   r   r~    r  r_  ri  c              3   8   "   T F  qP                   x  K  	  R # 5ir   r|  r}  s   & r   r   r~         !;U))Ur_  c              3   8   "   T F  qP                   x  K  	  R # 5ir   r|  r}  s   & r   r   r~    r  r_  N)r   r   r9   r   r   r:   r   r/  anyexprsr  r   r   rO   r(  rY   r  r   )r`  r  r  r   r  s        r   test_GroebnerBasisr  }  s6   	
1qsAadFQTM"AAq	*A	
A!QTAadF]AaC!A#I.A!"$A$q!Q-A$AGQ3q888a'4///q6Q;;Q41Q4<!,,Q41Q4<!,,Q41Q4<!,,R5AbE>##%?2%?###%?2%?"?"???R5AbE>##%?2%?###%?2%?"?"???77a<<77a<<66aV88r>>77g6M6a==6M6a==7N7Aq	6AQ41Q4<AaDLLL((Q41Q4<AaDLLL((Q41Q4<AaDLLL((R5AbE>cc!;QrU!;ccc!;QrU!;;;;;R5AbE>cc!;QrU!;ccc!;QrU!;;;;;;E 	%s   Rc                  L   \        \        4      \        \        \        4      8X  g   Q h\        \        4      \        \        \        4      8X  g   Q h\        \        \        ,           4      \        \        \        ,           \        \        4      8X  g   Q h\        \        \	        \        4      ,           4      \        \        \	        \        4      ,           \        \	        \        4      4      8X  g   Q h\        \        \        ,           \        R 7      \        \        \        ,           \        \        4      8X  g   Q h\        \        \	        \        4      ,           \	        \        4      R 7      \        \        \	        \        4      ,           \	        \        4      \        4      8X  g   Q h\        \        \        ,          ^\        ,          \
        ^,          ,          ,           ^,           4      \        \        \        ,          ^\        ,          \
        ^,          ,          ,           ^,           \        \        \
        4      8X  g   Q h\        ^\        \
        ,           ^,          ,          ^,
          4      \        ^\        ^,          ,          ^\        ,          \
        ,          ,           ^\
        ^,          ,          ,           ^,
          \        \
        4      8X  g   Q h\        \        \        \
        ,           ^,          ,          ^,
          4      \        \        \        ^,          ,          ^\        ,          \        ,          \
        ,          ,           \        \
        ^,          ,          ,           ^,
          \        \        \
        4      8X  g   Q h\        ^\        ,          \        \
        ,           ^,          ,          ^,
          4      \        ^\        ,          \        ^,          ,          ^\        ,          \        ,          \
        ,          ,           ^\        ,          \
        ^,          ,          ,           ^,
          \        \        \
        4      8X  g   Q h\        ^\        \
        ,           ^,          ,          \        ,
          ^,
          4      \        ^\        ^,          ,          ^\        ,          \
        ,          ,           ^\
        ^,          ,          ,           \        ,
          ^,
          \        \        \
        4      8X  g   Q h\        \        \        \
        ,           ^,          ,          \        ,
          ^,
          4      \        \        \        ^,          ,          ^\        ,          \        ,          \
        ,          ,           \        \
        ^,          ,          ,           \        ,
          ^,
          \        \        \
        4      8X  g   Q h\        ^\        ,          \        \
        ,           ^,          ,          \        ,
          ^,
          4      \        ^\        ,          \        ^,          ,          ^\        ,          \        ,          \
        ,          ,           ^\        ,          \
        ^,          ,          ,           \        ,
          ^,
          \        \        \
        4      8X  g   Q h\        \        \        ,          \        \        ,           ^,          ,           \        \
        ,           ^,          ,           4      \        ^\        ,          \
        ,          ^\        ,          \        ,          ,           \        ^,          ,           \
        ^,          ,           ^\        ^,          ,          ,           \        \        \
        4      8X  g   Q h\        \        \        ,          \        \        ,           ,          \        \
        ,           ^,          ,          4      \        \        ^,          \        ^,          ,          \        \        ^,          ,          \
        ^,          ,          ,           \        \        ^,          ,          \
        ^,          ,          ,           ^\
        ,          \        ^,          ,          \        ^,          ,          ,           ^\        ,          \
        ,          \        ^,          ,          ,           \        \        ^,          ,          ,           \        \        \
        4      8X  g   Q h\        \        \        \        ,           \
        ,           \        \        \
        4      4      \        \        \        ,           \
        ,           \        \        \
        4      8X  g   Q h\        \        \        ,           ^,          \        4      \        \        ^,          ^\        ,          \        ,          ,           \        ^,          ,           \        \        \        ,          R7      8X  g   Q h\        \        \        ,           ^,          \        4      \        \        ^,          ^\        ,          \        ,          ,           \        ^,          ,           \        \        \        ,          R7      8X  g   Q h\        ^\        4      \        ^\        4      8X  g   Q h\        \        R 4       \        \        \        ,           \        \        4      \        \        \        ,           \        \        4      8X  g   Q h\        \        \        ,           \        \        4      \        \        \        ,           \        \        4      8X  g   Q h\        ^\        ,          ^,           ^,          ^,          ,           \        ^4      ^,          ,           p \        V 4      P                  4       V P                  4       8X  g   Q h\        \        ^,           ,          \        ^4      ^,          ,           p\        V4      P                  4       VP                  4       8X  g   Q hR# )rI  r   c                      \        ^4      # r   )r   r   r   r   r   test_poly.<locals>.<lambda>  r2  r   N)r   r   r   r   rt   r   rO   r{   rD   rl   r   ra   )expr1expr2s     r   	test_polyr    s   7d1aj   7d1aj   A;$q1ua++++CF
tAAJ3q6::::A1a!eQ!2222CF
A'4CF
CFA+FFFF!ac!Q$h#$QqS1Q3q!t8^b-@!Q(JJJJ1q51*q !T!AqD&1Q3q5.1QT6*AA*Eq!%LLLL	1q51*q!!AqD&1Q3q57"2Qq!tV";a"?AqIJ J J!	A  qs1a4x!A#a%'1AaC1H<q@!QJK K K 	A  "1QT6AaCE>AadF#:Q#>#BAq!LM M M	A  "1QT6AaCE!G#3a1f#<q#@1#DaANO O O!QUQJ"Q&'4!AqD1Q3q570BQFQ$F 111 !1a,) ) ) ) !q1uqj AEA:-.QqSUQqSU]QT!AqD(1QT611a;< < <!QUQUQJ&'QT!Q$Y1a41$qAvad{2QqSAXT6 aCE!Q$J!"1a4()*Aq	22 2 2 QUQY1a()T!a%!)Q1-EEEEQ
A$q!tac!e|ad':Abe"LLLLQ
A$q!tac!e|ad':Abe"LLLL1:a###
_- Aq!QUAq 1111Aq!QUAq 1111 1q1Q1a'E; ELLN222qsGad1fE; ELLN222r   c            
         \        ^\        ^,           RR7      p \        \        P                  \        4      \        8X  g   Q h\        \        P
                  \        4      \        ) 8X  g   Q h\        \        R4      \        4      R\        ,          8X  g   Q h\        \        R4      \        4      R\        ,          8X  g   Q h\        \        P                  ^\        ,          4      ^\        ,          8X  g   Q h\        \        ^4      \        ^,          4      \        8X  g   Q h\        \        ^4      \        \        4      4      ^\        \        4      ,          8X  g   Q h\        \        ^4      \        ^,           4      V 8X  g   Q h\        \        ^\        ,          4      ^8X  g   Q h\        \        ^,           \        ^4      4      V 8X  g   Q h\        \        P                  \        P                  4      \        P                  8X  g   Q h\        ^^RR7      p\        \        R4      V4      \        RVRR7      8X  g   Q h\        ^VRR7      p\        \        P                  VRR7      \        \        P                  VRR7      8X  g   Q h\        \        P                  VRR7      \        ^\        \        P                  VRR7      RR7      8X  g   Q hR# )	r  Fr  r   T)clearNr  r   )
rc   r   rb   rl   r4  NegativeOnert   r  rj   r[   )r   r   r   s      r   test_keep_coeffr    s   Aq1uu%Aquua A%%%q}}a(QB...qvq!SU***qw"d1f,,,quuac"ac)))qtQqS!Q&&&qtSV$#a&000qtQU#q(((q!A#!###q1uad#q(((qvvquu%///Aq5!Aqua CA$>>>>Aq5!Aqvvq 
U+, , ,qvvq 
CE2UCD D Dr   c                     \         \        \        \        4      ,          \        \         \        ,          \        4      8X  g   Q h\        \        \        4      \         ,          \        \         \        ,          \        4      8X  g   Q hR # r   )re   r   r   r   r   r   test_poly_matching_consistencyr    sH     tAqz>T!A#q\)))1:>T!A#q\)))r   c            
         \        \        \        \        \        \        ,          ,
          \
        \        \        ,          ,
          ,          4      \        .R 7      4      \        ) \        ,          \        ,          \        \        ,          ,
          \        \
        ,          ,           \        \        ,          \
        ,          ,
          8X  g   Q hR# )r   N)ra   r.   r   re   r   r   r   r   r   r   test_issue_5786r    sr    &	
QqS1qs7)*- .23Aa!A#!1Cac!e1KL L Lr   c                  ~    ! R  R\         4      p \        \        \        \        ,          ,           ,          p^^\        ,           ,          p\        V ! V4      4      V ! V4      8X  g   Q h\        W! V4      ,           4      W ! V4      ,           8X  g   Q h\        W! V4      ,          4      W ! V4      ,          8X  g   Q hR# )c                       ] tR tRtRtRtR# ) test_noncommutative.<locals>.fooi  Fr   N)__name__
__module____qualname____firstlineno__is_commutative__static_attributes__r   r   r   foor    s    r   r  N)r^   r   r   r7   )r  r  r   s      r   test_noncommutativer    s    d 	1qs7A	AE
A#a&>SV###!c!f*SV+++!CF(qQx'''r   c            	      $   \        \        \        ^,          \        \        ^,          ,          ,           \	        \        4      ,           \        RR7      4       e   Q h\        \        \        ^,          \	        ^4      \        ^,          ,          \        \        4      ,          ,           ^,           \        4      4       e   Q h\        \        \        \        4      4      e   Q h\        \        \	        ^4      \        ,          4      4      e   Q hR# )r   rT   r   N)r=   r   r   r   rr   rt   r   r   r   test_to_rational_coeffsr    s    QTAadF]T!W$a57:>? ? ? QTDGAqDLQ''!+Q/1489 9 9 d1aj)111d4719o.666r   c                  8   \        \        \        \        ,           ,          4      ^\        ^3\        \        ,           ^3.38X  g   Q h\        \        \        \        ,           ,          4      ^\        ^,          \        \        ,          ,           ^3.38X  g   Q hR# r  )r-   r   r   r+   r   r   r   test_factor_termsr    sf    q!a%y!a1a&1q5!*)=%>>>>Aq1uI11qs
A&7"8888r   c                     \        \        ^,          ^,           \        RR7      P                  4       . RO8X  g   Q h\        \        ^,          \        ,           ^,           \        \        RR7      P                  4       ^.. ^^..8X  g   Q h\        \        ^,          \        ,           ^,           \        \        \        RR7      P                  4       ^... .^.^...8X  g   Q hR# )r   rO   r   N)r   r   r   r  )r   r   as_listr   r   r   r   r   test_as_listr    s    1q!D)113|CCC1q1a4088:sBA>OOOO1q1aAd3;;=78cURDA3*4MN N Nr   c                  &   \        \        ^4      \        ,          4      \        ^4      \        ^3.38X  g   Q h\        \        ^4      \        \        4      ,          \        \        4      4      \        ^4      \        \        4      ^3.38X  g   Q hR# rD  )r-   rr   r   rt   r   r   r   test_issue_11198r    sd    tAwqy!d1gAx%8888tAws1v~s1v.47c!fa[M2JJJJr   c                      \        \        P                  ! ^d4      \        ,          4      p V P                  ! 4       \        P                  ! ^d4      \        ,          8X  g   Q hR# )d   N)r   ri   evalfr   r   r   s    r   test_Poly_precisionr  #  s8    RXXc]1_A99;"((3-/)))r   c                      \        ^^\        ^4      ,           ,          \        4      \        ^^\        ^4      ,           ,          \        RR7      8X  g   Q hR# )r   rT   r   N)r   rr   r   r   r   r   r   test_issue_12400r  )  s?    1T!W9q!Ad1gI$/0 0 0r   c                  
   \        \        ^4      ^\        ^4      ,           ,          ^,          \        ^4      ^\        ^4      ,           ,          ^
,          4      \        ^^
4      ^\        ^4      ,           ,          8X  g   Q h\        \        ^4      \        ^^4      ,          \        ^4      \        ^^4      ,          4      \        ^4      \        ^^4      ,          8X  g   Q h\	        \        ^^4      \        ^4      ,          \        ^^4      \        ^4      ,          4      \        ^
4      \        ^4      ,          ^,          8X  g   Q h\	        ^\        ^4      ,          ^\        ^4      ,          4      ^\        ^4      ,          8X  g   Q h\	        \        ^4      ^^\        ^^4      ,          ,           ,          ^,          \        ^4      ^^\        ^^4      ,          ,           ,          ^,          4      \        ^^4      ^^\        ^^4      ,          ,           ,          8X  g   Q h\        \        ^^4      \        ^4      ,          \        ^^4      \        ^4      ,          4      \        ^4      ^,          8X  g   Q h\        \        ^4      \        ^4      ,          ^,          \        ^4      \        ^4      ,          ^,          4      \        ^4      ^,          8X  g   Q h\        \        ^4      \        ^/4      ,          ^,          \        ^4      \        ^/4      ,          ^,          \        ^4      \        ^/4      ,          ^,          .4      \        ^/4      \        ^^#4      ,          8X  g   Q h\        \        ^4      ^\        ^4      ,           ,          ^,          \        ^4      ^\        ^4      ,           ,          ^,          \        ^4      ^\        ^4      ,           ,          ^,          .4      ^\        ^4      ,           \        ^R4      ,          8X  g   Q h\	        \        ^^4      \        ^4      ,          \        ^^4      \        ^4      ,          \        ^^4      \        ^4      ,          34      \        ^#^4      \        ^4      ,          8X  g   Q h\	        \        ^4      ^^\        ^^4      ,          ,           ,          ^,          \        ^4      ^^\        ^^4      ,          ,           ,          ^,          \        ^4      ^^\        ^^4      ,          ,           ,          ^,          .4      \        R^4      ^^\        ^^4      ,          ,           ,          8X  g   Q hR# )r  i  N)r   rl   rr   rg   r   r   r   r   test_issue_14364r  .  s   qtQa[!!#QqT1tAw;%7%:;x2RSVZ[\V]R]?^^^^tAwx1~%tAwx1~'=>$q'(STVX/BYYYYx1~d1g%x1~d1g'=>!B%Q-PQ/QQQqay!DG)$47
222qtQHQN**+A-qtQHQN9J5J/KA/MNRZ[]_`RaefijltuvxylzizezR{{{{x1~d1g%x1~d1g'=>$q'"*LLLqtDH}Q!T"Xb 01T"Xb[@@@ !T"Xa1d2hq!A$tBx-/BCtBxPXYZ\^P_G____!a$q'k"1$adAQK&8&:AaD!d1g+<Nr<QRSYZ]abc]dYdfnoprufvXvvvvAtBx'!QR)@(1a.QUVXQYBYZ[_ghjlm_nostvow_wwww!a!Xa^++,Q.!a!Xa^:K6K0LQ0NPQRTPUWX[\^fghjk^l[lWlPmnoPopqu}  B  DE  vF  JK  NO  QY  Z[  ]^  Q_  N_  J_  v`  `  `  `r   c                  h   \        R RR7      p ^V ^,          ,          V ^,          ) \        ^V ^,          ,          V ^,          ^,
          ^,          ,           4      ,           ^,           ^,          ,          ^^\        ^^4      ,          ,          V ,          V ^,          ) \        ^V ^,          ,          V ^,          ^,
          ^,          ,           4      ,           ^,           \        ^^4      ,          ,          ,
          ^
V ,          ,           p\        VRR7      W ^,          ^,           ,          8X  g   Q hR# )r   Tr  rE  N)rm   rr   rg   r.   )r   r@  s     r   test_issue_15669r  @  s    sT"Aq!tGadUT!AqD&AqD1Hq="899A=AA	!Xa^
A1utAadFadQh],B'CCaG(STVW.XXY[]^_[_`D$T"aAl222r   c            
         \        R 4      p \        V ^,
          4      p\        4       ;_uu_ 4        \        \        V ^,           4      \        V ^,           4      ..4      pRRR4       \	        \
        RR7      ;_uu_ 4        VX,          W!,          u;8X  dC   \        \        V ^,          ^,
          4      \        V ^,          ^,
          4      ..4      8X  g   Q h Q h RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r   NF)test_stacklevel)rm   r   r|   ru   r}   rz   )r   r   r7  s      r   test_issue_17988r  G  s    sAQUA		!	!T!a%[$q1u+./0 
"	&	>	>1uK$q!tax.$q!tax.)I(J!KKKKKK 
?	> 
"	!	>	>	>s   /C' AC:'C7	:D	c                      \        ^\        ,           ^\        ,
          ,          4      ^\        ,           8X  g   Q h\        ^\        ,           ^\        ,
          ,          4      ^8X  g   Q hR# rD  )r7   re   r   r   r   test_issue_18205r  P  sD    1q51q5/"a!e+++1q51q5/"a'''r   c                     \         ^,          ^,           \         ^,
          ^,          ,          \         ^,
          ^,          ,          \         ^,
          ^,          ,          p ^\         ^,          ^,           ^3\         ^,
          ^3\         ^,          ^\         ,          ,
          ^,           ^3.3p\        V 4      V8X  g   Q hR# rD  )r   r+   )r   r  s     r   test_issue_8695r  U  s    	
Aa!eaZ1q51*,Az9A1a4!8Q-!a%adQqSj1na-@ABFA;&   r   c                  Z  a  \        \        4      ^,          \        \        4      ,
          ^,           o \        \        V 3R l4       \        \        V 3R l4       \        \        V 3R l4       \        \        V 3R l4       \        \        V 3R l4       \        \        V 3R l4       R# )r   c                      < \        S ^^R4      # )r   r  r  rH  s   r   r   "test_issue_19113.<locals>.<lambda>]  s    KAq$$?r   c                     < \        S R^4      # r  r  rH  s   r   r   r  ^  s    KB$:r   c                     < \        S 4      # r   r  rH  s   r   r   r  _  s	    JrNr   c                     < \        S 4      # r   r  rH  s   r   r   r  `  s	    F2Jr   c                     < \        S 4      # r   )r5   rH  s   r   r   r  a  s
    L$4r   c                     < \        S ^4      # r.  r  rH  s   r   r   r  b  s    $8Q$?r   N)rt   r   r{   rF   rH  s   @r   test_issue_19113r  [  s`    	QSV	a	B
??@
?:;
?23
?./
?45
??@r   c                     ^\         ^,          ,          ^\        ^4      ,          \         ,          \        ,          ,
          \        ^,          ,           p \        V \        ^4      R7      ^\         \        ^4      \        ,          ^,          ,
          ^,          ,          8X  g   Q h\        ) \
        ,          \         ,          \
        \        ,          ,
          \         \        ,          ,           \        \        ,          \        ,          ,
          p \        V \        R7      \         \        \        ,          ,
          \        ) \
        ,          \        ,           ,          8X  g   Q hR# )r  r   N)r   rr   r   r.   re   r   r   r   s    r   test_issue_19360r  e  s    	!Q$471QA%A!tAw'1a4719Q;.?!-C+CCCC	
1Q1qsQqSU"A!q!a!A#g1q%9999r   c                      \        \        \        ,           \        \        \        4      p V P                  ! 4       pW8X  g   Q R 4       hV P
                  VP
                  8X  g   Q R4       hR# )z(Copied polynomial not equal to original.z9Copied polynomial has different generators than original.N)r   r   r   r   copyr   )r   r  s     r   test_poly_copy_equals_originalr  m  sW    Aq!QD99;D< 424<99		! ECE!r   c                  
   \        \        \        ,           \        \        \        4      p \        P
                  ! \        P                  ! V 4      4      pW8X  g   Q R 4       hV P                  VP                  8X  g   Q R4       hR# )z.Deserialized polynomial not equal to original.z?Deserialized polynomial has different generators than original.N)r   r   r   r   pickleloadsdumpsr   )r   deserializeds     r   &test_deserialized_poly_equals_originalr  v  sg    Aq!QD<<T 23L :8:99))) KIK)r   c                      \        \        \        ^,           ,          \        ^,          ,
          \        ,
          \        4      p V \        ) 8X  g   Q hR# r  )r   r   rh   )r  s    r   test_issue_20389r    s2    AQK!q&(1,a0FbS==r   c                      ^ RI Hp  V ! R4      w  r\        R\        V,          V,          ,           V^V,          4      pVP                  ! 4       \        ^4      8X  g   Q hR# )r   )symbolszw Rr   N)sympy.core.symbolr  r   re   r   rl   )r  r   r  r   s       r   test_issue_20985r    sF    )5>DAac!eQ!$D;;=AaD   r   (Y  __doc__r  sympy.polys.polytoolsr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   sympy.polys.polyerrorsr>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   sympy.polys.polyclassesrK   sympy.polys.fieldsrM   sympy.polys.domainsrN   rO   rP   rQ   rR   rS   rT   sympy.polys.domains.realfieldrU    sympy.polys.domains.complexfieldrV   sympy.polys.orderingsrW   rX   rY   sympy.combinatorics.galoisrZ   sympy.core.addr[   sympy.core.basicr\   sympy.core.containersr]   sympy.core.exprr^   sympy.core.functionr_   r`   ra   sympy.core.mulrb   rc   sympy.core.numbersrd   re   rf   rg   rh   ri   sympy.core.powerrj   sympy.core.relationalrk   sympy.core.singletonrl   r  rm   $sympy.functions.elementary.complexesrn   ro   &sympy.functions.elementary.exponentialrp   %sympy.functions.elementary.hyperbolicrq   (sympy.functions.elementary.miscellaneousrr   $sympy.functions.elementary.piecewisers   (sympy.functions.elementary.trigonometricrt   sympy.matrices.denseru   "sympy.matrices.expressions.matexprrv   sympy.polys.rootoftoolsrw   sympy.simplify.simplifyrx   sympy.utilities.iterablesry   sympy.utilities.exceptionsrz   sympy.testing.pytestr{   r|   r}   r~   r   	sympy.abcr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  rB  rF  rK  rN  rQ  rc  rg  rj  rn  rq  rs  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	  r  r  r  r"  r$  r(  r+  r7  r:  rA  rE  rI  rK  rP  rT  r\  r_  ri  ry  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r'  r0  r5  r?  rA  rI  rL  rR  rV  r[  rc  re  rh  rs  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r-  r/  rA  rC  rK  rQ  rg  rs  rw  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   <module>r     s   H                :    ( $ > > > 3 9 5 5 <  % '   : : + D D   $ " $ 9 6 6 9 : 8 ' ; * , . >  6 5 5 5
*%ZS$YNxS>A 	P 	P A A7K2UKp0JD3
2
T-n6JB (F>
;G B
A4466
G
KG,","* 7:
6%.*:)
(NVF+B2
ACPD=04'(
@
JKET	@!"/,74F
8	SIE(4F&57n6&I8
K	8)7B:;$	=,<	=A'&C>
+(D$?$A8Lt1Hh,4^v*r(DV;7674
"@0@*g,T2. 0F38>*
$0><GJN<F:0"O8M`eWP;<S
nNb%FP!4H.&D#8L7@Q!h4*0*9"?$	1w/t?N8C%L-C`'T3'<T/3dD,*L
(79NK
*0
`$3L(
!A:EK
!r   