o
    oh                    @   s	  d Z ddlZddlmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> ddl?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZL ddlMmNZN ddlOmPZP ddlQmRZRmSZSmTZTmUZUmVZVmWZWmXZX ddlYmZZZ dd	l[m\Z\ dd
l]m^Z^m_Z_m`Z` ddlambZb ddlcmdZd ddlemfZf ddlgmhZh ddlimjZj ddlkmlZlmmZmmnZn ddlompZpmqZq ddlrmsZsmtZtmuZumvZvmwZwmxZx ddlymzZz ddl{m|Z| ddl}m~Z~ ddlmZ ddlmZmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd lmZ dd!lmZ dd"lmZ dd#lmZmZmZ dd$lmZmZmZmZmZmZmZmZmZmZmZ d%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zd=d> Zd?d@ ZdAdB ZdCdD ZdEdF ZdGdH ZdIdJ ZdKdL ZdMdN ZdOdP ZdQdR ZdSdT ZdUdV ZdWdX ZdYdZ Zd[d\ Zd]d^ Zd_d` Zdadb Zdcdd Zdedf Zdgdh Zdidj Zdkdl Zdmdn Zdodp Zdqdr Zdsdt Zdudv Zdwdx Zdydz Zd{d| Zd}d~ Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZddĄ ZddƄ ZddȄ Zddʄ Zdd̄ Zdd΄ ZddЄ Zdd҄ Z ddԄ Zddք Zdd؄ Zddڄ Zdd܄ Zddބ Zdd Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Zdd Zdd Z dd Z!dd Z"dd Z#dd Z$dd Z%dd Z&dd  Z'd!d" Z(d#d$ Z)d%d& Z*d'd( Z+d)d* Z,d+d, Z-d-d. Z.d/d0 Z/d1d2 Z0d3d4 Z1d5d6 Z2d7d8 Z3d9d: Z4d;d< Z5d=d> Z6d?d@ Z7dAdB Z8dCdD Z9dEdF Z:dGdH Z;dIdJ Z<dKdL Z=dMdN Z>dOdP Z?dQdR Z@dSdT ZAdUdV ZBdWdX ZCdYdZ ZDd[d\ ZEd]d^ ZFd_d` ZGdadb ZHdcdd ZIdedf ZJdgdh ZKdidj ZLdkdl ZMdS (m  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)abcdpqtwxyzc                 C   s.   t | |D ]\}}t|| dkr dS qdS )Ng|=FT)zipabs)r~   r   uv r   t/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/sympy/polys/tests/test_polytools.py_epsilon_eqW   s
   r   c                 C   s`   t | t |kr.t| r"t| t|kr tdd t| |D S dS t| to-| j|ddS dS )Nc                 s   s    | ]
\}}t ||V  qd S N)
_strict_eq).0r   r   r   r   r   	<genexpr>b   s    z_strict_eq.<locals>.<genexpr>FTstrict)typery   lenallr   
isinstancer   eq)r~   r   r   r   r   r   ^   s   r   c                  C   s   t tt} t  | tt  W d    n1 sw   Y  t  | tt  W d    n1 s2w   Y  t  | tt  W d    d S 1 sLw   Y  d S r   )r   r   r|   rp   r   r   r   r   test_Poly_mixed_operationsk   s   
"r   c                  C   sl  t d} tjdddt| djt| d| dg| ksJ tjdddt| djt| d| dg| ks6J tjdddt| djt| d| dg| ksOJ tjdddt| djt| d| dg| kshJ tjdddttf| djt| d| d	g| dgg| ksJ tjdddtd
jttdtdgtksJ tjdddtddjttdtdgtksJ tjdddttdjttdtdgtksJ tjdddttdjttdtdgtksJ tjdddtd
jttdtdgtksJ tjdddtddjttdtdgtksJ tjdddttdjttdtdgtks8J tjdddttdjttdtdgtksRJ tjdt	titddtt	tt tddkslJ tjdtitddttt tddksJ tjddittfddttt ttddksJ tjdtitt
fddttt tt
ddksJ d S )N         r   r   gensdomain   )r   r   )r   r   r   r   r   r   Tr   rM   r   F)r   	compositerT   r   r   rO   r   r   )rN   r   	from_dictr   reprK   r   rO   rP   rt   r   Kr   r   r   test_Poly_from_dictu   s    0







r   c                  C   s  t d} tjddgt| djt| d| dg| ksJ tjddgt| djt| d| dg| ks4J tjddgtdjttdtdgtksKJ tjddgtddjttdtdgtkscJ tjddgttdjttdtdgtks{J tjddgttdjttdtdgtksJ tjd	d
gtdjttd
gtksJ tjd
d	gtdjttd
tdgtksJ t	t
dd  d S )Nr   r   r   r   r   r   Tr   r         ?        c                   S   s   t jg gttfdS )Nr   )r   	from_listr   r   r   r   r   r   <lambda>       z%test_Poly_from_list.<locals>.<lambda>)rN   r   r   r   r   rK   rO   rP   rS   r{   r>   r   r   r   r   test_Poly_from_list   s   00.000(.r   c                      s  t td ttdt td tddt tt tttdtd t ks)J t j djt d dg ks>J t jtdjttdtdgtksSJ t jtdjttdtdgtkshJ t jtdkssJ t jt djt d dg ksJ t jttdjttdtdgtksJ t jttdjttdtdgtksJ t jtdt td td	dksJ t	t
 fd
d t	t
fdd t	t
fdd t jttfdt td ttddksJ t jttftdt td ttddksJ t jttftdt td ttddks&J t jttfddt td ttddks=J td t ksKJ t jtdjttdtdgtksaJ t	t
fdd t j djt d dg ksJ t jtdksJ t jttdjttdtdgtksJ t	t
fdd t jt djt d dg ksJ td t ksJ t jtdjttdgtdtdggtksJ t jtdjttdgtdtdggtksJ t j djt dg d dgg ks"J t jtdt tt ttt dks7J t	t
fdd t jttt dt tt ttt dksXJ t	t
fdd t jttt dt tt ttt dksyJ t	t
fdd t jtdt tt ttt dksJ t	t
fdd t jttt dt tt ttt dksJ t	t
fdd t jttt dt tt ttt dksJ t	t
fdd t jttfdksJ t jttftdjttdgtdtdggtksJ t jttftdjttdgtdtdggtks,J t jttf djt dg d dgg ksJJ t jttfdjttdgtdtdggtksgJ t jttftdjttdgtdtdggtksJ t jttftdjttdgtdtdggtksJ t jttf djt dg d dgg ksJ t jttfddjttdgtdtdggtksJ t jttfddjttdgtdtdggtksJ d S )N   r   r   r   modulusr   r   r   ZZ[x]c                      s   t jt dS Nr   r   	from_polyr   r   )r   fr   r   r          z%test_Poly_from_poly.<locals>.<lambda>c                         t j ttdS r   r   r   r   rO   r   r   r   r   r      r   c                      r   r   r   r   r   rP   r   r   r   r   r      r   rO   rP   r   r   zFF(3)c                      s   t j tdS Nr   )r   r   rP   r   gr   r   r          r   c                      r   r   r   r   r   rP   r   r   r   r   r      r   c                      r   r   )r   r   r   rO   r   hr   r   r      r   c                      r   r   r   r   r   r   r   r      r   c                         t j tddS Nr   r   )r   r   r   r   r   r   r   r      r   c                      r   r   r   r   r   r   r   r      r   c                      r   r   r   r   r   r   r   r      r   c                      r   r   r   r   r   r   r   r      r   Tr   )r   r   rO   r   rN   r   r   rK   rP   r{   rG   r   r   )r   r   r   r   r   test_Poly_from_poly   s   ***,,,$*





,,.. 
 
6*



*




 

 

 
 

 

 

 

 

 r   c                  C   s8  t tdd  t tdd  td} tjtd | djt| d| dg| ks)J tjtd | djt| d| dg| ks@J tjtd t| djt| d| dg| ksXJ tjtd t| djt| d| dg| kspJ tjtt | djt| dg| d| d	gg| ksJ tjtt tt| djt| dg| d| d	gg| ksJ ttd jtt	dt	dgt	ksJ ttd jtt	dt	dgt	ksJ ttd tjtt	dt	dgt	ksJ ttd tjtt	dt	dgt	ksJ tjtd t	djtt	dt	dgt	ksJ tjtd t	djtt	dt	dgt	ks1J tjtd tt	djtt	dt	dgt	ksJJ tjtd tt	djtt	dt	dgt	kscJ tjtd ttt	djtt	dgt	dggt	ksJ tjtd ttt	djtt	dt	dggt	ksJ d S )
Nc                   S   s   t tjS r   )r   	from_exprrl   Zeror   r   r   r   r         z%test_Poly_from_expr.<locals>.<lambda>c                   S   s   t tdS Nr   )r   r   rl   r   r   r   r   r     r   r   r   r   r   r   r   )
r{   rD   rN   r   r   r   r   rK   r   rO   )F3r   r   r   test_Poly_from_expr  s&   ..008<**,.00228:r   c                  C   sF  t t } t| td t| djt| td g| ksJ |  } t| td t| djt| td g| ks8J tt } t| td t| djt| td g| ksTJ |  } t| td t| djt| td g| kspJ t t} t| t dt dgt| djt| t dt dgg| ksJ |  } t| t dt dgt| djt| t dt dgg| ksJ tt} t| tdtdgt| djt| tdtdgg| ksJ |  } t| tdtdgt| djt| tdtdgg| ksJ t	t
} t| ddgt| djt| ddgg| ks!J d S )Nr   r   )rO   r   r   r   r   rK   	get_fieldrP   old_poly_ringalgebraic_fieldre   )domr   r   r   test_poly_from_domain_element/  s$   0000
@@
@B
6r   c                  C   s  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t td	d  t td
d  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  tdtdtksJ ttd  tt  t	 } tttt	dt| ksJ tt
ttt	gt| ksJ tttt	gt| ksJ tttt	ft| ksJ ti ttt} | jtttfkr|  dksJ tttt tt  tttttt tt  tksJ tdtd  dt  d dd g dks*J tdtd  dt  d d d g dksCJ tdtd  dt  d d!d g d"ks\J t td#d  tdtd  d$ ttdd$  d d d tdd$tdd$dgksJ ttdtd  d$ ttdd$  d d!d g d%sJ td&td  d't  d dd g dksJ td&td  d't  d d d g dksJ td&td  d't  d d!d g d"ksJ t td(d  td)td  d*t  d d d td+d,td-d,dgksJ td)td  d*t  d d!d g d.ks2J tdddd/ttttd t dt td   dt t  ttksWJ ttd d td0 ttkskJ dtd$  td1  td  td  d2 } t| td3d4d5tdtd$  td1  td  td  d td3d4d5ksJ t| td3d6d5tdtd$  d7td1   td  d7td   d td3d6d5ksJ tttd t d8  tsJ tttd t t d8  tsJ d S )9Nc                   S   s   t td ttS Nr   r   r   r   r   r   r   r   I  r   z"test_Poly__new__.<locals>.<lambda>c                   S   s   t tt tttt dS r   r   r   r   rO   r   r   r   r   r   K      c                   S   s   t tt tttt dS r   r   r   r   r   r   r   L  r   c                   S   s   t ttddS )NT)	symmetricr   r   r   r   r   r   N  r   c                   S   s   t td tdtdS )Nr   r   )r   r   r   r   rP   r   r   r   r   r   O  r   c                   S      t td ttddS )Nr   T)r   gaussianr   r   rO   r   r   r   r   r   Q  r   c                   S      t td tdddS )Nr   r   T)r   r   r   r   r   r   r   r   R  r   c                   S   s   t td tttdgdS )Nr   r   r   	extension)r   r   rO   rr   r   r   r   r   r   T      c                   S   s   t td tdtdgdS )Nr   r   r   r   )r   r   rr   r   r   r   r   r   U  r   c                   S   r   )Nr   Tr   r   r   r   r   r   r   W  r   c                   S   r   )Nr   r   Tr   r   r   r   r   r   r   X  r   c                   S   r   )Nr   Tr   greedyr   r   r   r   r   r   Z  r   c                   S   r   )Nr   Tr   rM   r   r   r   r   r   r   [  r   c                   S   r   )Nr   Fr   r   r   r   r   r   r   ]  r   c                   S   r   )Nr   Fr   r   r   r   r   r   r   ^  r   c                   S   r   )Nr   r   rX   )r   orderr   r   r   r   r   r   `  r   c                   S   s   t td tddS )Nr   rX   r   r   r   r   r   r   r   a      c                   S   s   t dddS )Nr   r   r   r   r   r   r   r   r   c  r   c                   S      t ddgS Nr   r   r   r   r   r   r   r   d  r   c                   S      t dS )Nr   r   r   r   r   r   r   r   e      c                   S   r   r   r   r   r   r   r   r   g  r   zx-xr   r   )r   r   r   r   r   rO   r   )r   r   r   rP   rS   )      @       @r   c                   S   s*   t dtd  d ttdd  d ddS )Nr   r   r   r   rO   r   )r   r   rg   r   r   r   r   r   |  s   * r   )g333333?g?r   r   r   c                   S   s    t dtd  dt  d ddS )N@r    @r   rO   r   r   r   r   r   r   r          r   r      
      )r   r   r   )r   r   r   r   r      i    Tr   r   F   r   )r{   rE   rI   NotImplementedErrorrD   r   r   r~   r   r   iterr   r   r   as_expr
all_coeffsrG   rg   r   re   
get_domainrP   r   r   rU   rV   r   r   r   r   test_Poly__new__H  s    :222"
2
22

@2.
((,
2
$,r
  c                   C   s*   t td d jtd d tfksJ d S r   )r   r   argsr   r   r   r   test_Poly__args     *r  c                   C   s  t tt tt  tjtfksJ t tt tt  tjtfks"J t tt tt  tjtfks3J t tt tt  ttjttfksFJ t tt tt  ttjttfksYJ t tt tt  tttjtttfksnJ t tt tt  tttjtttfksJ t tt tt  tttjtttfksJ t tt tt  jtttfksJ t tt tt  ddjtttfksJ t tt tt  ddjtttfksJ t tt tt  ddjtttfksJ t tt tt  tttddjtttfksJ t tt tt  ddjtttfksJ t tt tt  ddjtttfks'J t tt tt  ddjtttfks<J t tt tt  tdjtttfksQJ t tt tt  tdjtttfksfJ t tt tt  tdjtttfks{J t tt tt  tttddjtttfksJ t tt tt  dd	d
jtttfksJ t tt tt  ddd
jtttfksJ d S )Nz	x > p > q)sortz	p > x > qz	p > q > xr   wrtr   r   zq > x)r  r  zp > x)r   r   r   r   r   r   r   r   r   test_Poly__gens  s,   """&&***$(((.******0,0r  c                   C   @   t tjt dttdksJ t td jt dttdksJ d S )Nr   r   r   )r   r   zerorO   rP   r   r   r   r   test_Poly_zero     $r  c                   C   r  )Nr   r   r   )r   r   onerO   rP   r   r   r   r   test_Poly_one  r  r  c                  C   s  t tdd  td} tttddtttdddd  t| dgg g| t| d| dgg| fks6J t tdd  t td	d  t td
d  ttd tttd tdd  ttdtdgtttdtdgtfksvJ ttd tddttd tdd  tt	dt	dgt	tt	dt	dgt	fksJ ttd tttd tdddd  tt	dt	dgt	tt	dt	dgt	fksJ ttd tttd ttdd  ttdgtdggtttdgtdggtfksJ ttd tddttd ttdd  tt	dgt	dggt	tt	dgt	dggt	fks4J ttd tttd ttdddd  tt	dgt	dggt	tt	dgt	dggt	fksgJ ttd ttttd tdd  ttdgtdggtttdgtdggtfksJ ttd ttddttd tdd  tt	dgt	dggt	tt	dgt	dggt	fksJ ttd ttttd tdddd  tt	dgt	dggt	tt	dgt	dggt	fksJ ttd ttttd ttdd  ttdgtdggtttdgtdggtfks0J ttd ttddttd ttdd  tt	dgt	dggt	tt	dgt	dggt	fksdJ ttd ttttd ttdddd  tt	dgt	dggt	tt	dgt	dggt	fksJ ttd tttd ttdd  ttdtdggtttdtdggtfksJ ttd tddttd ttdd  tt	dt	dggt	tt	dt	dggt	fksJ ttd tttd ttdddd  tt	dt	dggt	tt	dt	dggt	fks)J ttd ttttd tdd  ttdtdggtttdtdggtfksXJ ttd ttddttd tdd  tt	dt	dggt	tt	dt	dggt	fksJ ttd ttttd tdddd  tt	dt	dggt	tt	dt	dggt	fksJ ttd ttttd ttdd  ttdgtdggtttdgtdggtfksJ ttd ttddttd ttdd  tt	dgt	dggt	tt	dgt	dggt	fks J ttd ttttd ttdddd  tt	dgt	dggt	tt	dgt	dggt	fksTJ ttd ttttd ttdd  ttdtdggtttdtdggtfksJ ttd ttddttd ttdd  tt	dt	dggt	tt	dt	dggt	fksJ ttd ttttd ttdddd  tt	dt	dggt	tt	dt	dggt	fksJ ttd t
 ttdttd td tddttd t
 tddttd td tddfksJ tdt\}}}ttt tddttt t tdddd  t||dg| t|| |dg| fksXJ ttt tddttt t tdddd  t||dg| t|| |dg| fksJ t tdd  ttd td  t tdd}ttd td  t tdd}||dd  |j|jfksJ d S )Nc                   S   s   t ttS r   r   r   _unifyr   r   r   r   r   r     r   z"test_Poly__unify.<locals>.<lambda>r   r   r   r   r   c                   S   s   t ttddt ttddS )Nr   r   r   r  r   r   r   r   r         c                   S   s   t tttt ttddS Nr   r   )r   r   r   r  r   r   r   r   r         c                   S   s   t ttddt tttS r  r  r   r   r   r   r     r  rP   r   Tr   zQQ<sqrt(2) + I>za,bZZ[a]zZZ(a,b)zZZ(a)c                   S   s&   t t td td t  tddddS )Nr   TrL   ZZ(x)r   )r   r   r   r   r   r   r   r   r     s   & zQQ(x)zQQ[x])r{   rB   rN   r   r   r  r   rK   rO   rP   re   rQ   unifyrr   rM   r~   r   	to_domainrG   r   r   )r   FABr   r   r   r   r   test_Poly__unify  s   $(
$*(*(*&2
*2
*2
&2
*2
*2
(2
,2
,2
&.
*.
*.
&.
*.
*.
(2
,2
,2
(.
,.
,.
0.
0.
0.
(r$  c                   C   s0  t td d jthksJ t td tt  jttthks J t td tt  tjttthks3J t td ttt  jttthksGJ t td ttt  tjttthks\J t td ttt  ttdjttthkssJ t dt td  tttjthksJ t ttt tjtthksJ d S Nr   r   r   )r   r   free_symbolsr   r   rt   rT   r   r   r   r   test_Poly_free_symbols$  s   $&(*.&$r'  c                   C   s   t td d jt ksJ t td tt  jt ksJ t td tt  tjtthks0J t td ttt  jt ksBJ t td ttt  tjtthksVJ t td ttt  ttdjtthkslJ d S r%  )r   r   r&  setr   r   rt   rT   r   r   r   r   test_PurePoly_free_symbols/  s    $$(0r)  c                  C   s@  t ttt ttkdu sJ t tttdt ttkdu sJ t ttt tttdkdu s.J t tttt dt ttkdu s@J t ttt tttt dkdu sRJ t tt ttt ttkdu scJ t tttt ttkdu srJ t ttt tttkdu sJ t td d tt td d tkdu sJ t td d tt td d tkdu sJ t tttd} t tttd}| |du sJ | |du sJ | j|dddu sJ | j|dddu sJ td}t |d td  t	d  td t	  t	dd} t |d td  t	d  td t	  t	d	d}| |kdu sJ d S )
NTr   Fr   r   r   t0zQQ[x,t0]zZZ(x,t0))
r   r   rP   rO   r~   r   r   nerm   r   )r   r   r*  r   r   r   test_Poly__eq__8  s(     $$",,..r,  c                  C   s<  t ttt ttkdu sJ t tttdt ttkdu sJ t ttt tttdkdu s.J t tttt dt ttkdu s@J t ttt tttt dkdu sRJ t tt ttt ttkdu scJ t tttt ttkdu srJ t ttt tttkdu sJ t td d tt td d tkdu sJ t td d tt td d tkdu sJ t tttd} t tttd}| |du sJ | |du sJ | j|dddu sJ | j|dddu sJ t tttd} t tttd}| |du sJ | |du sJ | j|dddu sJ | j|dddu sJ d S )NTr   Fr   r   r   )r   r   rP   rO   r~   r   r   r+  r   r   r   r   r   test_PurePoly__eq__X  s,     $$",,r.  c                   C   sH   t tttd d tdu sJ t tttd d tdu s"J d S )Nr   r   T)r   r   r   r   r   r   r   r   test_PurePoly_Poly{  s   "&r/  c                   C   s   t dt  tksJ t dt dd tksJ t dt dd tks(J t td  tks4J ttdd  t td dd tksIJ tt dt  tsVJ d S )Nr   rO   r   rP   c                   S   s   t td ddS )Nr   rO   r   r   r   r   r   r   r     r   z&test_Poly_get_domain.<locals>.<lambda>皙?)	r   r   r	  rO   rP   r{   rG   r   rU   r   r   r   r   test_Poly_get_domain  s   r1  c                   C   sJ  t dt d tt dt d ksJ t dt d dt dt d ks*J t dt d tt dt d ddksAJ t dt d dt dt d ddksXJ t tddt tdd dt dt d	 kssJ t dt d	 dt tddt tdd ksJ ttd
d  ttdd  ttdd  d S )Nr   r   rO   rP   r   r   rS   r0  皙?c                   S   s   t td d tS r   )r   r   
set_domainrO   r   r   r   r   r         z&test_Poly_set_domain.<locals>.<lambda>c                   S   s   t td ddtS )Nr   r   r   )r   r   r3  rP   r   r   r   r   r     r4  c                   S   s   t tt tttt S r   )r   r   r   r3  rO   r   r   r   r   r     r   )	r   r   r3  rO   rP   rg   r{   rG   rE   r   r   r   r   test_Poly_set_domain  s   **..66r5  c                   C   s2   t td d dd dksJ ttdd  d S )Nr   r   r   c                   S   s   t td d  S r   )r   r   get_modulusr   r   r   r   r     r   z'test_Poly_get_modulus.<locals>.<lambda>)r   r   r6  r{   rF   r   r   r   r   test_Poly_get_modulus  s    r7  c                   C   s   t td d dddt td d ddksJ t td d dddt td d ddks2J t td d dt td d ddksIJ ttdd  d S )Nr   r   r   r   r   c                   S   s   t td d dS r   )r   r   set_modulusr   r   r   r   r     r4  z'test_Poly_set_modulus.<locals>.<lambda>)r   r   r8  r{   rG   r   r   r   r   test_Poly_set_modulus  s   .r9  c                   C   s&   t td dt td ksJ d S )Nr   r   r   )r   r   
add_groundr   r   r   r   test_Poly_add_ground     &r;  c                   C   s&   t td dt td ksJ d S Nr   r   )r   r   
sub_groundr   r   r   r   test_Poly_sub_ground  r<  r?  c                   C   s*   t td dt dt d ksJ d S r=  )r   r   
mul_groundr   r   r   r   test_Poly_mul_ground  r  rA  c                   C   sP   t dt d dt td ksJ t dt d dt td ks&J d S )Nr   r  r   r   )r   r   
quo_groundr   r   r   r   test_Poly_quo_ground  s   &*rC  c                   C   s8   t dt d dt td ksJ ttdd  d S )Nr   r  c                   S   s   t dt d dS Nr   r   )r   r   exquo_groundr   r   r   r   r     r4  z(test_Poly_exquo_ground.<locals>.<lambda>)r   r   rE  r{   r?   r   r   r   r   test_Poly_exquo_ground  s   &rF  c                   C   sJ   t t d t tt t d t  kr t td tks#J  J d S r   )r   r   r   r   r   r   r   test_Poly_abs  s   JrG  c                   C   sH   t t d t t t d t   krt td tks"J  J d S r   )r   r   negr   r   r   r   test_Poly_neg  s   HrI  c                   C   s|  t dtt dtt dtksJ t dtt dt t dtks#J t dtt dtt dtks5J t dttt dt t dttksHJ t dtt dttt dttks\J t dttt dtt t dttkspJ t dtt t td tksJ t  t dttt  W d    n1 sw   Y  t ttd t td tksJ dt tt t td tksJ d S Nr   r   )r   r   addr   r|   rt   r   r   r   r   test_Poly_add     $"$&((  $rL  c                   C   s|  t dtt dtt dtksJ t dtt dt t dtks#J t dtt dtt dtks5J t dttt dt t dttksHJ t dtt dttt dttks\J t dttt dtt t dttkspJ t dtt t dt tksJ t  t dttt  W d    n1 sw   Y  t ttd t td tksJ dt tt t dt tksJ d S )Nr   r   r   )r   r   subr   r|   rt   r   r   r   r   test_Poly_sub  rM  rO  c                   C   sx  t dtt dtt dtksJ t dtt dt t dtks#J t dtt dtt dtks5J t dttt dt t dttksHJ t dtt dttt dttks\J t dttt dtt t dttkspJ t dtt t ttks~J t  t dttt  W d    n1 sw   Y  t ttd t dt tksJ dt tt t dt tksJ d S )Nr   r   r     r   )r   r   mulr   r|   rt   r   r   r   r   test_Poly_mul  s   $"$&(( $rR  c                   C   s   t tt t td tddksJ tt t t td tddks"J dt t t dt tddks3J tdt t t dt tddksFJ t ttd t dt tddksYJ d S )Nr   rO   r   )r   r   rl   r   r   r   r   test_issue_13079  s
   """&*rT  c                   C   s4   t tt tt t td td  ttksJ d S Nr   )r   r   r   sqrr   r   r   r   test_Poly_sqr  s   4rW  c                   C   s   t ttdt td tksJ t tttdt td tks$J t dt ttdt dtd  ttks;J t dt tttdt dtd  ttksTJ t dt t ttd t dtd  td  ttkspJ ttdd	  ttd
d	  d S )Nr   r   r     r   r   iW  c                   S   s   t tt d ttd S )Nr   r   r   r   r   r   r   r   r   r     r   ztest_Poly_pow.<locals>.<lambda>c                   S   s   t tt d ttt S r   rY  r   r   r   r   r     r   )r   r   powrf   r   r{   	TypeErrorr   r   r   r   test_Poly_pow	  s   "&.28r\  c                  C   s6  t td t t} }|t dt}}t| |||fksJ | | |ks&J | | |ks.J t| t||fks9J | t |ksAJ | t |ksIJ t dtt dt}}td|||fks_J d| |ksgJ d| |ksoJ t tt t dks{J t td t t tksJ t tt td  dt ksJ d S )Nr   r   r   )r   r   divmod)r   r   r   rr   r   r   test_Poly_divmod  s   $r_  c                   C   s  t tt ttt tt ttkdu sJ t tt tt tt ttkdu s'J t tt ttt tt tkdu s:J t tt tt tt tkdu sLJ t tt tt tt tkdu s^J t tt tttt kdu snJ t tt ttt kdu s}J t tt tttt kdu sJ t tt ttt kdu sJ t tt ttt kdu sJ t tt ttt tt ttkdu sJ t tt tt tt ttkdu sJ t tt ttt tt tkdu sJ t tt tt tt tkdu sJ t tt tt tt tkdu s
J t tt tttt kdu sJ t tt ttt kdu s+J t tt tttt kdu s<J t tt ttt kdu sLJ t tt ttt kdu s\J t ttttkdu sjJ t ttttkdu sxJ d S )NTF)r   r   r   rt   r   r   r   r   test_Poly_eq_ne-  s,   (&&$$  (&&$&" "   r`  c                   C   s0   t tdtdusJ t tdtdusJ d S )Nr   Tr   F)boolr   r   r   r   r   r   test_Poly_nonzeroJ  s   rb  c                   C   s  t dtjdu s
J t dtjdu sJ t dtjdu sJ t dtjdu s(J t td tjdu s4J t td d tjdu sBJ t td tjdu sNJ t dt d tjdu s\J t dt d tjdu sjJ t dt d tjdu sxJ t dtjdu sJ t ttjdu sJ t tt t	 d j
du sJ t tt t	 d j
du sJ t tt t	 d jdu sJ t tt t	 d jdu sJ t tt jdu sJ t tt d jdu sJ t td tt  jdu sJ t td tt  jdu sJ t tjdu sJ t tt jdu sJ t tt jdu s J t tjdu s*J t td td	  td
  td  td  td  d jdu sLJ t td td	  td
  td  td  td  d jdu snJ d S )Nr   Tr   Fr   r   r  rX     r   rP     )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   r   test_Poly_propertiesO  sD   2
2rr  c                   C   s   t td t d jdu sJ t td dt  d jdu s J t dt d ddjdu s/J t dtd  dt  d ddjdu sDJ d S )	Nr   r   TFr   r      r   )r   r   is_irreducibler   r   r   r   test_Poly_is_irreduciblez  s   ".ru  c                   C   s   t td tddksJ t td ttt td ks J t td ttt td ks2J t tt ttttd ksCJ t tt ttttd ksTJ d S )Nr   r   r   )r   r   subsr   r   r   r   r   test_Poly_subs  s
   $$"&rw  c                   C   s  t td tt td ksJ t td tt td ks"J ttdd  t td ttt td ks;J t td ttt td ksMJ t tt ttt tt ks_J t tt ttt tt ttkssJ t tt ttt tt ksJ t tt ttt tt ttksJ t tt ttt tt ksJ ttdd  t tt tttt tt tksJ t tt tttt tt tksJ ttdd  ttdd  d S )Nr   c                   S   s   t tt tS r   )r   r   r   replacer   r   r   r   r   r     r   z#test_Poly_replace.<locals>.<lambda>c                   S   s   t tt ttS r   r   r   r   rx  r   r   r   r   r     r   c                   S   s   t tt tttS r   ry  r   r   r   r   r     r4  c                   S   s   t tt tttS r   ry  r   r   r   r   r     r4  )r   r   rx  r   r{   rF   r   r   r   r   r   r   test_Poly_replace  s   ""$$$($($((rz  c                   C   s  t tdd  ttt ttttttt ttksJ ttt ttttttt ttks3J ttt ttttttt ttksIJ ttt ttttttt ttks_J ttt ttjtdttt ttksuJ ttt ttjtdttt ttksJ d S )Nc                   S   s   t tt ttS r   )r   r   r   reorderr   r   r   r   r   r     r   z#test_Poly_reorder.<locals>.<lambda>r  )r{   rF   r   r   r   r{  r   r   r   r   test_Poly_reorder  s   ,,,,,0r|  c                  C   s   t td ttd   tttt} |  td ttd   kr'| jttfks)J t tt t tttdt tt t ttksCJ ttdd  ttdd  d S )Nr   r   c                   S   s"   t ttd  td  tttS rU  r   r   r   ltrimr   r   r   r   r        " z!test_Poly_ltrim.<locals>.<lambda>c                   S   s   t tt t ttdS )Nr   r}  r   r   r   r   r     r   )	r   r   r   r   r~  r  r   r{   rF   r   r   r   r   test_Poly_ltrim  s
   $.4r  c                   C   s^   t tt d tttttdu sJ t tt t tttttdu s&J ttdd  d S )Nr   TFc                   S   s"   t ttd  td  tttS rU  )r   r   r   has_only_gensr   r   r   r   r   r     r  z)test_Poly_has_only_gens.<locals>.<lambda>)r   r   r   r   r  r{   rE   r   r   r   r   test_Poly_has_only_gens  s   &&r  c                   C   s   t dt d dd t dt d ddksJ t dt d dd t dt d ddks0J ttdd  ttdd  d S )	Nr   r   rO   r   rP   c                   S   s   t td d  S r   r   r   to_ringr   r   r   r   r     r   z#test_Poly_to_ring.<locals>.<lambda>c                   S   s   t dt d dd S )Nr   r   r   r   r  r   r   r   r   r     r   )r   r   r  r{   rG   rH   r   r   r   r   test_Poly_to_ring  s   00r  c                   C   s   t dt d dd t dt d ddksJ t dt d dd t dt d ddks0J t td d dd t td d ddksHJ t dt d dd t dt d ddks`J t dt d	  t dt d	 kstJ d S )
Nr   r   rO   r   rP   r   r   r   r   )r   r   to_fieldr   r   r   r   test_Poly_to_field  s
   0000,r  c                   C   sd   t dt  t dt ksJ t td  t td ks J t dt  t td ks0J d S )Nr   r2  r   )r   r   to_exactr   r   r   r   test_Poly_to_exact  s     $r  c                  C   s   t td d ttt d} |  t td d tddksJ | jddt td d tddks1J t dtt t dttksAJ d S )	Nr   r   r   rO   TrL   rP   r   )r   r   rP   r   retractr   r   r   r   test_Poly_retract  s   "&$r  c                  C   s  t td dtd   dt  d } | ddt dtksJ | ddt dtks,J | ddt dt d tks=J | ddt dtd  dt  d tksTJ | ddt td dtd   dt  d tksoJ | tddt dtks}J | tddt dtksJ | tddt dt d tksJ | tddt dtd  dt  d tksJ | tddt td dtd   dt  d tksJ t td d }|ddt dtksJ d S )Nr   r   r  r   r   )r   r   slicer-  r   r   r   test_Poly_slice  s   $".6$08r  c                   C   s  t dt dgksJ t dt dgksJ t dt d t ddgks)J t dtd  dt  d t g dks@J t dtd  dt  d t g dksWJ t ttd  dtd  td   dddgksrJ t ttd  dtd  td   d	ddgksJ d S )
Nr   r   r   r   r   r   r   r  r   rW   rX   )r   r   coeffsr   r   r   r   r   test_Poly_coeffs     "..6:r  c                   C   s  t dt dgksJ t dt dgksJ t dt d t ddgks)J t dtd  dt  d t g dks@J t dtd  dt  d t g d	ksWJ t ttd  dtd  td
   dddgksrJ t ttd  dtd  td
   dddgksJ d S )Nr   r   r   r   r   r   r   r   r   r  )r  r   r   r   rW   r   r   r   r   rX   )r   r   monomsr   r   r   r   r   test_Poly_monoms  r  r  c                   C   s  t dt dgksJ t dt dgksJ t dt d t ddgks)J t dtd  dt  d t g dks@J t dtd	  dt  d t g d
ksWJ t ttd  dtd  td   dddgksrJ t ttd  dtd  td   dddgksJ d S )Nr   r   r   r   r   r   r   r   r   r   )r  r   r  r  r  )r  r   r  r  r   rW   r  r   r  r   rX   )r   r   termsr   r   r   r   r   test_Poly_terms  s   "..r  c                   C   s   t dt dgksJ t dt dgksJ t dt d t ddgks)J t dtd  dt  d t g dks@J t dtd  dt  d t g dksWJ d S )Nr   r   r   r   r  r  )r   r   r   r   r   )r   r   r  r   r   r   r   test_Poly_all_coeffs   
   ".2r  c                   C   s   t dt dgksJ t dt dgksJ t dt d t ddgks)J t dtd  dt  d t g dks@J t dtd  dt  d t g d	ksWJ d S )
Nr   r   r   r   r   r   r  r  )r  r   r  r   r   )r   r   
all_monomsr   r   r   r   test_Poly_all_monoms*  r  r  c                   C   s   t dt dgksJ t dt dgksJ t dt d t ddgks)J t dtd  dt  d t g dks@J t dtd	  dt  d t g d
ksWJ d S )Nr   r  r   r  r   r  r   r  r  )r  )r  r   )r  r   r  r  )r   r   	all_termsr   r   r   r   test_Poly_all_terms4  s   "  r  c                  C   sh   t td dt  d } t td dt  d }dd }| ||ks%J dd }| ||ks2J d S )Nr      i  r  c                 S   s   | \}|dd|   S Nr   r   r   monomcoeffkr   r   r   funcD  s   z test_Poly_termwise.<locals>.funcc                 S   s   | \}|f|dd|   fS r  r   r  r   r   r   r  J  s   )r   r   termwise)r   r   r  r   r   r   test_Poly_termwise@  s   r  c                   C   s   t dt dksJ t dt dksJ t tt dks!J t td t dks.J t td d t dks=J t td t d t dksNJ d S )Nr   r   r   r   )r   r   lengthr   r   r   r   test_Poly_lengthQ  s   &r  c                   C   s   t dt i ksJ t dttt i ksJ t dt ddiks%J t dttt ddiks4J t td d t dddksFJ t td d ttt dddksZJ t dtd  t td  d	t t  d
t t   dd	d
dks~J d S )Nr   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   as_dictr   r   r   r   r   r   test_Poly_as_dict[  s   $(8r  c                      s  t dt dksJ t dttt dksJ t dt dks#J t dttt dks0J t td d t td d ksCJ t td d ttt td d ksXJ t dtd  t td  dt t  dt t   dtd  t td  dt t  dt t  ksJ t td dt td   t tt   t td  dt td   ksJ  tdidt dtd   ksJ  td	id
dt  td  ksJ  tdtd	idksJ  dd	dksJ tt fdd d S )Nr   r   r   r   r  r      r   rd  iH   i{  c                      s     tdiS r   )r  r   r   r   r   r   r     r   z#test_Poly_as_expr.<locals>.<lambda>)r   r   r  r   r   r{   rE   r   r   r   r   test_Poly_as_expri  s$   &*.2$*&&r  c                   C   sp   t td tt  dt  tdd t td dtd   dtd	   td  dtd   d
 tddks6J d S )Nr     Tr   rX  r   r   iB  rP  iAF rP   r   )r   r   re   liftr   r   r   r   test_Poly_lift  s
   $8r  c                   C   s   t dt dt dtfksJ t dt dt dtfks J t tt dt ttfks0J t td t dt ttfksBJ t td t dt ttfksTJ t td t td  td	 td    d
t tt t td t  fks|J d S )Nr   r   r   r   r  r  )r  rs  r  )r   r   rs  )r   r   deflater   r   r   r   r   r   test_Poly_deflate  s      $$""r  c                  C   s   t td t ttd   tt  d t} |  t td t ttd   tt  d ttks1J | jddt td t ttd   tt  d ttksOJ d S )Nr   r   r   T)front)r   r   r   injectr   r   r   r   test_Poly_inject  s   *8@r  c               	   C   s  t td t ttd   tt  d tt} | tt ttd  td t t  d tddks2J | tt ttd  td t t  d tddksNJ tt t t t }t |ttttt}|tt |ttttddksrJ |ttt |tttddksJ |tttt |ttddksJ |tt |ttttd	dksJ |ttt |tttd
dksJ |tttt |ttddksJ ttdd  tt	dd  d S )Nr   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                   S   s   t tt tttt dtS r   )r   r   r   rO   r   ejectr   r   r   r   r     r  z!test_Poly_eject.<locals>.<lambda>c                   S   s   t tt ttttS r   )r   r   r   r   r  r   r   r   r   r     r   )
r   r   r   r  r   r   r   r{   rH   r  )r   exr   r   r   r   test_Poly_eject  s   ,88""""""r  c                   C   sj   t ttt t ttksJ t tt tt t tt ttks#J t dtt t dttks3J d S r   )r   r   r   excluder   r   r   r   test_Poly_exclude  s   ($r  c                   C   s  t dttddksJ t dttddksJ t dttddks'J t dttddks4J ttdd  ttdd  t dtttdksOJ t dtttdks\J t dttddksiJ t dttd	dksvJ ttd
d  ttdd  d S )Nr   rS  r   r   c                   S      t dttdS )Nr   r   r   r   _gen_to_levelr   r   r   r   r     r   z)test_Poly__gen_to_level.<locals>.<lambda>c                   S   r  r=  r  r   r   r   r   r     r   r   r   c                   S   s   t dtttS r   )r   r   r   r  r   r   r   r   r   r     r   c                   S   r  )Nr   r   r  r   r   r   r   r     r   )r   r   r   r  r{   rF   r   r   r   r   test_Poly__gen_to_level  s   r  c                   C   s$  t dt t u sJ t dt dksJ t tt dks"J t dtjddt u s0J t dtjdddks=J t ttjdddksJJ t dtjtdt u sXJ t dtjtddkseJ t ttjtddksrJ t dtjddt u sJ t dtjdddksJ t ttjdddksJ ttdd  ttdd  ttdd  t dtt dksJ t d	t tt dksJ t tt tt dksJ t dttjtddksJ t d	t ttjtddksJ t tt ttjtddksJ t dttjtddksJ t d	t ttjtddks&J t tt ttjtddks7J tdtt u sBJ tdtdksLJ tttdksVJ tttd	  tdksdJ tttd	  td	ksrJ tttd	  tdksJ ttdksJ tt	d
d  tt	dd  ttdd  ttdd  tt dttt u sJ tt dttdksJ tt td	 td  tdksJ tt td	 td  ttddksJ tt td	 td  ttdksJ tt td	 td  td  ttdksJ d S )Nr   r   genr   c                   S   s   t dtjddS Nr   r  r   r   r   r   r   r   r   r     r   z"test_Poly_degree.<locals>.<lambda>c                   S   s   t dtjtdS r  )r   r   r   r   r   r   r   r   r     r   c                   S   s   t dtjddS )Nr   r   r  r  r   r   r   r   r     r   r   c                   S   s   t td td  S rD  r   r   r   r   r   r   r   r     r   c                   S   s   t td td  dS Nr   r   r   r  r   r   r   r   r     r4  c                   S   s
   t tdS )Ng?r   r   r   r   r   r   r        
 c                   S   s   t td td d  tS r  r  r   r   r   r   r     r   r   r  )
r   r   r   rh   r{   rF   r   r   ri   r[  r   r   r   r   test_Poly_degree  sR    """$(&2r  c                   C   s&  t dt t fksJ t dtt t t fksJ t dttt t t t fks0J t dt dks;J t dtt dksGJ t dttt dksTJ t td t td td   d  dkslJ tdtdksuJ tttd	ks~J tttd  d
ksJ ttdd  d S )Nr   r   r   r   r  r   r   )r   r   r   r   r   c                   S   r   r   )r   r   r   r   r   r     r   z'test_Poly_degree_list.<locals>.<lambda>)r   r   r   rh   r   r   r{   rA   r   r   r   r   test_Poly_degree_list   s    &0r  c                   C   s  t td t td td   d  dksJ t td td   dks(J t tt t td   dks:J t td t d  dksJJ ttt td  dksXJ ttt td  ttdkshJ tddkspJ tt td td  td  dksJ tt td td  td  tdksJ tt td td  td  ttdksJ tt td tt t  td td   td  ttdksJ d S )	Nr   r   r   r   r  r   	   r   )r   r   r   r   r   r   r   r   r   test_Poly_total_degree  s   0 $  (*,Dr  c                   C   s   t td t tt td tt  ksJ t tt tt tt tttks+J t ttd  tt tt td  ksBJ d S rU  )r   r   r   
homogenizer   r   r   r   r   test_Poly_homogenize!  s   .(2r  c                   C   s  t dtt t u sJ t dtt dksJ t ttt dks%J t tt tt dks3J t td tt d u sAJ t tt t tt d u sQJ t td dtd  td   dt td    dksoJ t td dtd  td   dt td    d u sJ d S )Nr   r   r   r   r   r  r  )r   r   r   homogeneous_orderrh   r   r   r   r   test_Poly_homogeneous_order'  s    <@r  c                   C   s  t dt dksJ t dt dksJ t dtd  t t dks'J t ttd  dtd  td   ddks@J t ttd  dtd  td   ddksYJ tttd  dtd  td   dddksqJ tttd  dtd  td   dddksJ d S )	Nr   r   r   r   r   rW   rX   r   )r   r   r	   r   r   r   r   r   test_Poly_LC4  s   "2204r  c                   C   sR   t dt dksJ t dt dksJ t dtd  t t dks'J d S )Nr   r   r   )r   r   TCr   r   r   r   test_Poly_TC@  s   &r  c                   C   s   t dt dksJ t dt dksJ t dtd  t t dks'J t ttd  dtd  td   ddks@J t ttd  dtd  td   ddksYJ d S )Nr   r   r   r   r   rW   rX   )r   r   ECr   r   r   r   r   test_Poly_ECF  
   "26r  c                      s  t dtddksJ t dttdksJ t dtddks$J t dttdks0J t td tddks>J t td ttd dksNJ t td ttd dks^J t td ttd dksnJ t dt td  d ttddksJ t dt td  d ttttd  dksJ t dt t td d	t  tt  td	ksJ  tdksJ  tt dtd ksJ   tdt td d	 ksJ tt fd
d tt	dd  tt	dd  tt	dd  d S )Nr   r   rP  r   r  r   r         c                      s
     tS r   )r  r   r   r   r   r   r   e  r  z!test_Poly_coeff.<locals>.<lambda>c                   S   s   t td dS )Nr   r   r   r   coeff_monomialr   r   r   r   r   g  r   c                   S   s   t td dt S Nr   r   r  r   r   r   r   r   h  r4  c                   S   s   t td dt t S r  )r   r   r  r   r   r   r   r   r   i  r   )
r   r   r  r   rp   r  r  r{   r  
ValueErrorr   r   r   r   test_Poly_coeffO  s&      *2$&r  c                   C   s:  t dtddksJ t dtddksJ t dtddks$J t dtddks0J t td tddks>J t td tddksLJ t td tddksZJ t td tddkshJ t dt td  d ttdddks~J t dt td  d ttdddksJ ttdd	  d S )
Nr   r   rP  r   r  r   r   c                   S   s   t tt d ttdS r   )r   r   r   nthr   r   r   r   r   {  r   ztest_Poly_nth.<locals>.<lambda>)r   r   r  r   r{   r  r   r   r   r   test_Poly_nthl  s   ,,r  c                   C   s*  t dt dksJ t dt dksJ t dtd  t t dks'J t ttd  dtd  td   dd	ks@J t ttd  dtd  td   d
dksYJ tttd  dtd  td   ddtd td  kswJ tttd  dtd  td   d
dttd  ksJ d S )Nr   r   r   r   r  r   r   rW   r  rX   r  r   )r   r   r
   r   r   r   r   r   test_Poly_LM~  s   "22<<r  c                  C   sp   t td td  t td t td   tt t  d } dd }| jdddks,J | j|dd	ks6J d S )
Nr   r   r   c                 S   s   t t| S r   )tuplereversed)r  r   r   r   r     r   z+test_Poly_LM_custom_order.<locals>.<lambda>rW   r   )r   r   r   r  )r   r   r   r   r
   )r   rev_lexr   r   r   test_Poly_LM_custom_order  s   <r  c                   C   s   t dt dksJ t dt dksJ t dtd  t t dks'J t ttd  dtd  td   dd	ks@J t ttd  dtd  td   d
dksYJ d S )Nr   r   r   r   r   r   r   rW   r  rX   r  )r   r   EMr   r   r   r   r   test_Poly_EM  r  r  c                   C   s.  t dt dksJ t dt dksJ t dtd  t t dks'J t ttd  dtd  td   d	d
ks@J t ttd  dtd  td   ddksYJ tttd  dtd  td   d	ddtd  td  ksyJ tttd  dtd  td   ddttd  ksJ d S )Nr   r  r   r  r   )r  r   r   r   rW   r  rX   r  r   )r   r   r   r   r   r   r   r   test_Poly_LT  s   "22@<r  c                   C   s   t dt dksJ t dt dksJ t dtd  t t dks'J t ttd  dtd  td   d	d
ks@J t ttd  dtd  td   ddksYJ d S )Nr   r  r   r  r   )r   r   r   r   rW   r  rX   r  )r   r   ETr   r   r   r   r   test_Poly_ET  r  r  c                   C   F   t dt dksJ t dt dksJ t dt dks!J d S Nr   r   r   )r   r   max_normr   r   r   r   test_Poly_max_norm     r  c                   C   r  r  )r   r   l1_normr   r   r   r   test_Poly_l1_norm  r  r   c                  C   s  t td t \} }| dkr |t td tddkr | tks"J t td d t \} }| dkrD|t td tddkrD| tksFJ t td d tjdd\} }| dkrj|t td tddkrj| tkslJ t tt d tjdd\} }| tkr|t tt tddkr| tt ksJ t td	 td td
d \} }| d	kr|t td	td  td
dkr| tksJ t td	 td td
djdd\} }| d	kr|t td	td  td
dkr| tksJ d S )Nr   r   rO   r   rP   T)convertr  r   rT   )	r   r   clear_denomsr	  rO   rP   r   rr   rT   )r  r   r   r   r   test_Poly_clear_denoms  sD   



"
r  c                  C   s   t td t d t} t td t t}| |t td t tt ttd  td  tfks1J | t} |t}| || |fksFJ d S )Nr   r   r   )r   r   r   rat_clear_denomsr3  rT   r-  r   r   r   test_Poly_rat_clear_denoms  s   *

r  c               	   C   s  t ddtdd   dddtd  tdd   d	td ddtd  tdd     d
dtdd   dtdd   ddtd  tdd   dddtd  tdd   d	td ddtd  tdd      d
dtdd   ddtd  tdd   dddtd  tdd   d	td ddtd  tdd      ddtdd   dtdd   dddtd  tdd   d	td ddtd  tdd      t} | t dtddksJ d S )Nlwf8*-    r   r   l   >< i^     i#  l   4$isDl   R r      l   wf8*- r   rT   r   )r   rl   rr   r   r   r   r   r   test_issue_20427  sX   



$


&. 
&	
r	  c                   C   sX  t td  t td d t ksJ t td tt td d t ks)J t td tdft td d t ks@J t tt d tt td t d t ksYJ t tt d tt ttd  d t ksrJ t tt d ttt td t d td d  ksJ t tt d ttt ttd  d td d  ksJ t tt d tdft td t d td d  ksJ t tt d tdft ttd  d td d  ksJ t tt d ttt td td  d tt  ksJ t tt d ttt td td  d tt  ks*J d S )Nr   r   r   rd  r  )r   r   	integrater   r   r   r   r   test_Poly_integrate  s   (*.22<<>>>Br  c                   C   sp  t td t  t dt d ksJ t td t tt dt d ks)J t td t tdft dt d ks@J t td td  tt  tt dt td  t ks_J t td td  tt  tt dtd  t t ks~J t td td  tt  ttt dtd  ttksJ t td td  tt  ttt dtd  ttksJ t td td  tt  tdft dtd  ttksJ t td td  tt  tdft dtd  ttksJ t td td  tt  ttt dt t d ksJ t td td  tt  ttt dt t d ks6J d S )Nr   r   r  )r   r   r`   r   r   r   r   r   test_Poly_diff  s   (*.>><<>>>Br  c                   C   s   t ttd t tdt d ksJ t ttd t tddtttd t tks.J tttd t t tdt d ksEJ d S )Nr   r   Fevaluate)r`   r   r   r_   doitr   r   r   r   test_issue_9585  s
   (2r  c                  C   s  t dtddksJ t dtddksJ t ttddks$J t dtdddks1J t dtdddks>J t ttdddksKJ t dttddksXJ t dttddkseJ t tttddksrJ t dtdddksJ t dtdddksJ t ttdddksJ ttdd  ttdd  ttdd  t d	ttdt d	tksJ t d
t ttdt d
t tksJ t tt ttdt dt tksJ t d	tttdt d	tksJ t d
t tttdt d
t tksJ t tt tttdt dt tks#J t d	tttdt d	tks5J t d
t tttdt dtksIJ t tt tttdt dt tks_J t tt t tttdit dt tksxJ t tt t tttdit dt d tksJ t tt t tttdtdidksJ t tt t tttdtdidksJ t tt t ttddksJ t tt t ttddgdksJ t td ddtjtdd
ksJ t td ddt	d
t	d
d ksJ tt
dd  ttdd  td} d
|  t d
|   td
  d td
 d
t  d  }t td
 | d t  |  d tdd}|td td  |ks^J t td
 | d t  |  d ttdd}|td td  t |tddksJ d S )Nr   r   r   r   c                   S   s   t dtddS Nr   r   r   r   evalr   r   r   r   r   .  r   z test_Poly_eval.<locals>.<lambda>c                   S   s   t dttdS r  )r   r   r  r   r   r   r   r   r   /  r   c                   S   s   t dtddS )Nr   r   r   r  r   r   r   r   r   0  r   {   r   rc  rP  rd  1   0   )rd  r   rO   r   r   c                   S   s   t tt t ttdS )N)rd  r   rP  )r   r   r   r  r   r   r   r   r   J  r   c                   S   s   t td ddjtjddS )Nr   rO   r   Fauto)r   r   r  rl   Halfr   r   r   r   r   K  r  alphaz	ZZ[alpha]zZZ(alpha,z))r   r   r  r{   rF   r   rl   r  rg   rr   r  rH   rm   r   )r  resultr   r   r   r   r   test_Poly_eval  sP    ((",,$(,26,,$((,4& (.r  c                  C   s~   t dt t dt  t dt  } | dt dt dt  d ks$J | ddt dt d ks3J | ddddks=J d S )Nr   r   r   rd  r   r   -   )r   r   r   r   r   r   r   r   test_Poly___call__W  s   $$r  c                   C   s  t td td d gtd ttd tttd d tgks!J t ttd ttd d gtd ttd tttd d tgksEJ t td ttd d tgtd ttd tttd d tgksiJ t ttd tttd d tgtd ttd tttd d tgksJ t td td d gttd ttd ttttd d ttgksJ t ttd ttd d gttd ttd ttttd d ttgksJ t td ttd d tgttd ttd ttttd d ttgksJ t ttd tttd d tgttd ttd ttttd d ttgks.J t td td d gd ttd tttd d tgksOJ t ttd ttd d gd ttd tttd d tgkssJ t td ttd d tgd ttd tttd d tgksJ t ttd tttd d tgd ttd tttd d tgksJ t dtd d gd tdtttd d tgksJ t dtd d gd tdtttd d tgksJ t dttd d tgd tdtttd d tgksJ t dttd d tgd tdtttd d tgks8J t td d dgd ttd d ttdtgksUJ t td d dgd ttd d ttdtgksrJ t ttd d tdgd ttd d ttdtgksJ t ttd d tdgd ttd d ttdtgksJ t ttttttttgttddd ttttddttttddgksJ ttdd	  d S )
Nr   r   r   rW   r   rO   r   c                   S   r   rJ  )r   r   r   r   r   r     r   z.test_parallel_poly_from_expr.<locals>.<lambda>)r   r   r   r   r{   r@   r   r   r   r   test_parallel_poly_from_expr_  s8  "
"
"
"












&
r  c                  C   s  t d td  t t } }t t d}}dd | |||fD \}}}}||||fks.J |||ks7J |||ks@J |||ksIJ t| |||fksTJ t| ||ks]J t| ||ksfJ t| ||ksoJ t| |t t||fks|J t| |t t|ksJ t| |t t|ksJ t| |t t|ksJ t| |t tf||fksJ t| |t tf|ksJ t| |t tf|ksJ t| |t tf|ksJ t||||fksJ t|||ksJ t|||ksJ t|||ksJ t| |dd||fksJ t| |dd|ksJ t| |dd|ksJ t| |dd|ks'J t||dd||fks5J t||dd|ksAJ t||dd|ksMJ t||dd|ksYJ ttdd	  ttd
d	  ttdd	  ttdd	  d S )Nr   r   c                 S      g | ]}t |ttqS r   rY  r   r   r   r   r   
<listcomp>  r   ztest_pdiv.<locals>.<listcomp>TpolysFc                   S   
   t ddS Nr  r   )r   r   r   r   r   r     r  ztest_pdiv.<locals>.<lambda>c                   S   r%  r&  )r   r   r   r   r   r     r  c                   S   r%  r&  )r   r   r   r   r   r     r  c                   S   r%  r&  )r   r   r   r   r   r     r  )r   r   r   r   r   r   r{   rA   )r   r   r   r^  r!  GQRr   r   r   	test_pdiv  sF   r*  c                     s  t d td  t t  t t d} }dd  | |fD \}}}}||||fks.J |||ks7J |||ks@J |||ksIJ t | |fksTJ t |ks]J t | ksfJ t | ksoJ t t t| |fks|J t t t|ksJ t t t| ksJ t t t| ksJ t t tf| |fksJ t t tf|ksJ t t tf| ksJ t t tf| ksJ t||||fksJ t|||ksJ t|||ksJ t|||ksJ t dd||fksJ t dd|ksJ t dd|ksJ t dd|ks'J t||dd| |fks5J t||dd|ksAJ t||dd| ksMJ t||dd| ksYJ ttdd	  ttd
d	  ttdd	  ttdd	  t d d dt  d  dt d d }}t d d d}}	t ||	fksJ t dd||	fksJ t dd||fksJ t td||fksJ t t	d||	fksJ t tdd||	fksJ t tdd||fksJ t t	dd||	fksJ t t	dd||	fksJ t |	ksJ t dd|	ks*J t dd|ks6J t td|ksBJ t t	d|	ksNJ t tdd|	ks[J t tdd|kshJ t t	dd|	ksuJ t t	dd|	ksJ t |ksJ t dd|ksJ t dd|ksJ t td|ksJ t t	d|ksJ t tdd|ksJ t tdd|ksJ t t	dd|ksJ t t	dd|ksJ t d dt  t d  } t | ksJ t dd| ksJ tt
 fdd	 tt
 fdd	 t t	d| ks4J t tdd| ksAJ tt
 fdd	 t t	dd| ksXJ t t	dd| kseJ tt d tt   \} }|  jr| jsJ  }| jsJ  } |  jsJ  } |  jsJ tt t t tdt  t t   \} }|  jr| jsJ tddt  t td}
tdt t td} |
j| ddtdt ddtddt  t ddfksJ |
j| ddttd d dt d  t ddtdt ddfks%J dt d  dt   d  dt  d t tdd fksEJ d S )Nr   r   c                 S   r   r   rY  r!  r   r   r   r"    r   ztest_div.<locals>.<listcomp>Tr#  Fc                   S   r%  r&  )r   r   r   r   r   r     r  ztest_div.<locals>.<lambda>c                   S   r%  r&  )r   r   r   r   r   r     r  c                   S   r%  r&  )r   r   r   r   r   r     r  c                   S   r%  r&  r   r   r   r   r   r     r  r   r  r   r  r   r   r  c                      s   t  ddS NFr  r+  r   r-  r   r   r     r   c                      s   t  tdS r   r   rO   r   r-  r   r   r     r   c                      s   t  tddS )NFr,  r.  r   r-  r   r   r     r   r   rQ   rR   r   )r   r   r   r   r   r   r{   rA   rO   rP   r?   r   r	  is_ZZis_Fracre   rQ   rl   )r   r^  r!  r'  r(  r)  qzrzqqrqr   r   r-  r   test_div  s   


""
0
 r5  c                  C   s6   t tdt \} }t| d dk sJ |dksJ d S )Ng>,p ?g3!	@g+=r   )r   r~   r   )r   r^  r   r   r   test_issue_7864;  s   r6  c            
      C   s  dt  t d d } }t d tddd}}}dd | ||||fD \}}}}}	||||	fks4J |||||	fks@J |||ksIJ t| |||fksTJ t| ||||fks`J t| ||ksiJ t| |t ||fksuJ t| |t |||fksJ t| |t |ksJ t| |t f||fksJ t| |t f|||fksJ t| |t f|ksJ t||||	fksJ t|||||	fksJ t|||ksJ t| |dd	||	fksJ t| |dd	|||	fksJ t| |dd	|ksJ t||d
d	||fksJ t||d
d	|||fksJ t||d
d	|ks!J tdddks+J tdddks5J tdddks?J ttdd  ttdd  ttdd  d S )Nr   rX      r   r   c                 S   s   g | ]	}t |td dqS )rP   r   r   r   r   r   r   r   r"  E  r   ztest_gcdex.<locals>.<listcomp>Tr#  Fd   i  )r  )r:  r   r  r   r   r   c                   S      t td dt d ddS Nr   r   Fr  )r   r   r   r   r   r   r   g  r   ztest_gcdex.<locals>.<lambda>c                   S   r;  r<  )r   r   r   r   r   r   r   h  r   c                   S   r;  r<  )r   r   r   r   r   r   r   i  r   )r   rg   r   r   r   r{   rH   )
r   r   sr   r   r!  r'  rl   THr   r   r   
test_gcdexA  s<   "r@  c                  C   sv   t dtd d  td d  td d  } t dtd  d dtd  d  td d  d }| d	|ks9J d S )
Nr   r   r  r  rd  i  =   r   rP  )r   r   revertr-  r   r   r   test_revertl  s   ,4rC  c                  C   s  t d dt   d t d d dt  d } }}t| t|t|}}}|||||gks2J t| || ||gks>J t| |t | ||gksKJ t| |t f| ||gksYJ t|||||gkseJ t| |dd|||gkssJ t||dd| ||gksJ ttdd  d S )Nr   r   Tr#  Fc                   S   r%  r&  )r   r   r   r   r   r     r  z$test_subresultants.<locals>.<lambda>)r   r   r   r{   rA   r   r   r   r!  r'  r?  r   r   r   test_subresultantss  s   0rE  c                  C   s  t d dt   d t d d d} }}t| t|}}|||ks&J t| ||ks/J t| |t |ks9J t| |t f|ksDJ t|||ksMJ t| |dd|ksXJ t||dd|kscJ t| |dd|| |dt  d gfkswJ t t t t tt } }}t| t|t|}}}|||ksJ t| ||ksJ t| |t |ksJ t| |t f|ksJ t|||ksJ t| |dd|ksJ t||dd|ksJ ttdd	  d S )
Nr   r   r   Tr#  F)
includePRSc                   S   r%  r&  )r   r   r   r   r   r     r  z test_resultant.<locals>.<lambda>)r   r   r   r~   r   r{   rA   rD  r   r   r   test_resultant  s(   ((rG  c                  C   s  t d dt d   dt   d d} }t| }| |ksJ t| |ks'J t| t |ks0J t| t f|ks:J t||ksBJ t| dd|ksLJ t|dd|ksVJ tt d  tt   t td d	t t  } }t| t|}}| |ks~J t| |ksJ t| t ttt|ksJ t| t tttf|ksJ t||ksJ t| dd|ksJ t|dd|ksJ ttd
d  d S )Nr   r   r     ipTr#  Fr  c                   S   r   Nr  )r   r   r   r   r   r     r   z#test_discriminant.<locals>.<lambda>)r   r   r   r~   r   r   r{   rA   r   r   r!  r'  r   r   r   test_discriminant  s&   &.rK  c                  C   s   t td td  t} t|  ddgksJ |  dksJ t td dtd   d t} | d}t| |g dks@J | |dksIJ d S )Nr   r   r   r  r   r  )r   r   r  )r   r   sorteddispersionset
dispersionshift)fpgpr   r   r   test_dispersion  s   
rR  c                  C   sB  t d d t d d t d dt   d g} t| t d ksJ t| ddtt d ks-J tg dks5J tddgdks?J tg ddksIJ tt td  t t  t d  gdks^J tg t }|jrk|tju smJ tg t dd}|jrz|js|J t	d}t|| gt| |g  kr|ksJ  J t
td	d
  d S )Nr   r   r   Tr#  r   r  rd  rP  *   c                   S      t g ddS NTr#  )r   r   r   r   r   r     r   ztest_gcd_list.<locals>.<lambda>)r   r   r   r   	is_Numberrl   r   is_Polyre  rr   r{   rA   )r!  r   r~   r   r   r   test_gcd_list  s   **
0rY  c                  C   sR  t d d t d d t d dt   d g} t| t d t d  dt d   t d  t  d ks1J t| ddtt d t d  dt d   t d  t  d ksQJ tg dksYJ tddgdkscJ tg dd	ksmJ tt td
  t t  t d
  gdksJ tg t }|jr|tju sJ tg t dd}|jr|jsJ t	t
dd  d S )Nr   r   r   r   r  Tr#  rS  r  rT  r   c                   S   rU  rV  )r   r   r   r   r   r     r   ztest_lcm_list.<locals>.<lambda>)r   r   r   r   rW  rl   OnerX  rf  r{   rA   )r!  r   r   r   r   test_lcm_list  s   *8@*
r[  c                  C   s  t d d t d d } }t d t  d t d }}t d t d t d  t  d }}dd | |||||fD \}}}}	}
}|||
||	fksJJ |||
ksSJ |||ks\J t| ||||fkshJ t| ||ksqJ t| ||kszJ t| |t |||fksJ t| |t |ksJ t| |t |ksJ t| |t f|||fksJ t| |t f|ksJ t| |t f|ksJ t|||
||	fksJ t|||
ksJ t|||ksJ t| |dd|
||	fksJ t| |dd|
ksJ t| |dd|ksJ t||d	d|||fksJ t||d	d|ksJ t||d	d|ks)J d
t d  d
 d
t  d
 } }|d
t  d
 d
}}}t| ||||fksQJ t| ||ks[J t| || kseJ d
t d  d
 d
t  d
 } }|d
t  d
 d
}}}t| ||||fksJ t| ||ksJ t| || ksJ tdddksJ tdddksJ tdddksJ t d dt   d t d dt d   t  d } }t d dt d   dt d   dt   d }t d t d t d d }}}t| |dd|||fksJ t| |dd|ksJ t| |dd|ks%J t d dt   d t d dt d   t  d } }t d dt d   dt d   dt   d }t d t d t d d }}}t| |dd	d|||fkstJ t| |dd	d|ksJ t| |dd	d|ksJ tdtd }}t||t||  krtdksJ  J tdtd }}t||t||  krtdksJ  J ttt d t ttt  t tdt tdksJ tt	dd  tt	dd  tdt } tdt }t| |tdt ksJ tdt } tddgt }| |fD ]+}t|ddks,J td|dks6J t|| dks@J t| |dksJJ q dt d  t  d } t| t
d}t| td}|||kslJ |||ksvJ ||| ksJ ||| ksJ t| | | ksJ t| | | ksJ t| | tdt| ksJ t| | tdt| ksJ d S )Nr   r   r   r  c                 S   s   g | ]}t |qS r   r   r8  r   r   r   r"    r   ztest_gcd.<locals>.<listcomp>Tr#  Fr   rP  rd  )r   r  r   r  rs  r   r   r  rS  r   c                   S      t tS r   )r   r   r   r   r   r   r   >  r   ztest_gcd.<locals>.<lambda>c                   S   r\  r   )r   r   r   r   r   r   r   ?  r   r   r   )r   r   r   r   rr   r   re   rQ   r{   r[  rO   rP   r!   )r   r   r=  r   r   r^  r!  r'  rl   r>  r?  r)  lr~   r   ipfzpfqr   r   r   test_gcd  s   "&2, 2,  002


 ra  c                   C   sR  t tddts
J t tdt dtsJ tdddksJ tdt ddks*J t ttddtddts:J t ttddt tddtsLJ ttddtddtddks^J ttddt tdddksoJ t tddtsyJ t tdt dtsJ tdddksJ tdt ddksJ ttddd	d
ddksJ d S )Nr   r  r   r  r   r   g      "@r   Fr  )r   r   rf   r   rg   rd   rc   r   r   r   r   test_gcd_numbers_vs_polys[  s    $$" rb  c                  C   s   t ddksJ t dtdksJ t td td ksJ t t d t d ks+J t dt d dt d ks;J t dt d tddt d ddksPJ t td t ttd   tt td td   kslJ t dtd  t dt td   dt t td td   ksJ t td t d ttd  d  tt d td td   ksJ t td t dt td   tt td dtd    ksJ t dtd  t dt td   dt t td dtd    ksJ t dtd  t d dt td  d  tt tdd	 dtd  dtd    ks"J t d
td  t dt td   tt d
td  dtd    ksGJ tt d
t d d
t d sYJ t ddt  ttt   dddt d tt t  ksxJ t ddt  tttddt     ddddt td  ttdtd ddd  ksJ t tttt  ddtttd  ksJ tdt dt dt t  } t | tdt dt td  ksJ t | ddtdt dt td  ksJ t	t
dd  d S )Nr   r   r   rd  r  Fr  r      r   gffffff@ra   T)ra   deepre  c                   S   s   t tdk S rU  )r   r   r   r   r   r   r     r   z test_terms_gcd.<locals>.<lambda>)r   r   rc   r   rg   r\   rt   rk   r   r{   r[  r   r   r   r   test_terms_gcdr  s6    *8DD@H\J$
,(

(,rh  c                  C   s.  t d dt d   dt d   dt d   dt   d t d t d  t d  t  } }t| t|}}|d|ks=J t| d|ksFJ t| dt |ksPJ t| dt f|ks[J t|d|ksdJ t| ddd|ksoJ t|ddd|kszJ dt d  dt d   dt d   dt d   dt   d	 t d  t d  t  d	 } }t| t|}}|d|ksJ t| d|ksJ t| dt |ksJ t| dt f|ksJ t|d|ksJ t| ddd|ksJ t|ddd|ksJ tt d dt   d dd
} | dtt d d	 dd
ksJ d S )Nr   r   r  r   rd  Tr#  Fr   r   )r   r   r    rJ  r   r   r   
test_trunc  s(   VX(ri  c                  C   sp  dt  d t tj } }t| ddt|}}| |ksJ t| |ks'J t| t |ks0J t| t f|ks:J t||ksBJ t| dd|ksLJ t|dd|ksVJ ttdd	  tdt d  d
t   d ddt d dt   d ksyJ ttdd	  tdt d  dt   d dt d  dt   d ksJ tdt d  dt   d ddt d t  d ksJ d S )Nr   r   rP   r   Tr#  Fc                   S   r   rI  )r!   r   r   r   r   r     r   ztest_monic.<locals>.<lambda>rd  r  r  r   c                   S   s   t dt dt  d ddS )Nr   rd  r   Fr  )r!   r   r   r   r   r   r     r  r   g      @g      @r   r   r   r   )r   rl   r  r   r!   r{   rA   r?   rJ  r   r   r   
test_monic  s   888rj  c                  C   sp   dt  d tdt  d } }| dksJ t| dksJ ttdd  tdt  dd} |  dks6J d S )Nr  r   c                   S   r   rI  )r"   r   r   r   r   r     r   ztest_content.<locals>.<lambda>r   r   r   )r   r   r"   r{   rA   )r   r!  r   r   r   test_content  s   rk  c                  C   s8  dt  d dt  d } }t| t|}}| d|fks J t| d|fks*J t| t d|fks5J t| t fd|fksAJ t|d|fksKJ t| ddd|fksWJ t|ddd|fkscJ ttdd  tdt  d	d
} tdt  td}|  d| fksJ | d|fksJ ttdtdksJ d S )Nr  r   r   Tr#  Fc                   S   r   rI  )r#   r   r   r   r   r     r   z test_primitive.<locals>.<lambda>r   r   r   r   r   z-3*x/4 + y + 11/8z(1/8, -6*x + 8*y + 11))r   r   r#   r{   rA   rS   rl   rJ  r   r   r   test_primitive  s"   
rl  c                  C   sB  t d dt d   dt d   dt d   dt d	   d
t d   dt   d } t d	 d
t   d }t d dt   }tt| ||f\}}}|||ksNJ t||| ksWJ t||t | ksaJ t||t f| kslJ t|||ksuJ t||dd|ksJ t||dd| ksJ | ||gksJ t| ||gksJ t| t ||gksJ t| t f||gksJ t|||gksJ t| dd||gksJ t|dd||gksJ ttdd  ttdd  tt d
 td
  t t t tt d
 d
t  t  ksJ tt d
 td
  t t tt td
  d
t  t  ksJ d S )Nr  r  r      rP  i  rd  q  r  r   r   r  r   Tr#  Fc                   S   r%  r&  )r$   r   r   r   r   r   	  r  ztest_compose.<locals>.<lambda>c                   S   r   rI  )r%   r   r   r   r   r   	  r   )r   mapr   r$   r%   r{   rA   r   rD  r   r   r   test_compose  s,   P8>rp  c                   C   sB   t td dt  d tdt td dt  d tksJ d S r   )r   r   rO  r   r   r   r   
test_shift		  s   Brq  c                   C   s>   t tt ttgddgt td td  ttgksJ d S r=  )r   r   r   
shift_listr   r   r   r   test_shift_list	  s   >rs  c                	   C   s"  t td dt  d tt td t td t dt  kr?ttd d td dt  d ttd td   ksBJ  J t td td  d tt td t td t dtd  d tdd t  krttd d td td  d ttd td   ksJ  J t td dt  d tt ttj t td t tddt  krttd d td dt  d tttj td   ksJ  J t td dt  d tt td t ttj t tddt  krtttj d td dt  d ttd ttj   ks J  J t td dt  d tt td t ttj t tddtdd	  kritttj d td dt  d ttd ttj   kslJ  J tt	d
d  tt	dd  tt	dd  tt	dd  tt	dd  d S )Nr   r   r  r   r   r  r   rS   r   c                   S   s$   t tt t td t td S r   )r   r   r   	transformr   r   r   r   r   (	     $ z test_transform.<locals>.<lambda>c                   S   s    t tt td t td S r   r   r   rt  r   r   r   r   r   r   )	  r   c                   S   s    t tt td t td S r   rv  r   r   r   r   r   *	  r   c                   S   s$   t tt tt d t td S r   rv  r   r   r   r   r   +	  ru  c                   S   s$   t tt td t tt d S r   rv  r   r   r   r   r   ,	  ru  )
r   r   rt  r7   rv  rg   rl   r  r{   r  r   r   r   r   test_transform	  s<   0606282
:2
:rw  c               
      sf  t tt dd } dtdt dd}}|  | |gksJ t  |gks'J t t  |gks2J t t f |gks>J t| | |gksHJ t dd| |gksTJ t| dd |gks`J ttdd  tt fd	d ttd
dtd   t d  tddtd   t d   tddtd   t d   tddtd   t d   tddt   tdd t dd t tt d dt d   td d t   dtd  d  t ddtdt d  dt   td d  t ddttddtd d  t  dtd  d  t ddtd td  d!td   dtd"   d#d$td   d%td    t ddgks1J d S )&NrP   r   r   Tr#  Fc                   S   r   rI  r&   r   r   r   r   r   ;	  r   ztest_sturm.<locals>.<lambda>c                      s   t  ddS r-  rx  r   r   r   r   r   <	  r   i   i	=  rP  r   i   rn  r  r7  r      r   i$  zZZ(pi)r9  @   r  rX     i N  r  `   r  l   ii ȯ r  l      ^_i  @  )	r   r   r&   r{   rA   rH   rl   ri   rg   )r!  r   r'  r   r   r   
test_sturm/	  s>   <(2Hr~  c                      s`  t d dt d   t d  dt d    t  tt dftt d dfgks*J t t dft d dfgks:J tt fdd t t d d  t d d  t d d  t d   t  tt d dt   d dftt d dt   d dftt dfgksJ t t d dt   d dft d dt   d dft dfgksJ tt fdd d S )	Nr   r   r  r   r   c                         t  S r   r(   r   r   r   r   r   R	  r   ztest_gff.<locals>.<lambda>c                      r  r   r  r   r   r   r   r   Z	  r   )r   r   r'   r{   r  r   r   r   r   test_gffL	  s   (, 0
$
Br  c                  C   sz   t dt d} }t| t |t  tt| |fd}| tdtd  dtd  td   dtd   ttddks;J d S )	Nr   r   r   r  r  r  rP   r   )rr   r   r   r   norm)r~   r   r   r   r   r   	test_norm]	  s    Hr  c                   C   s  t td d tdddgtd dtd t  d td dtd   d fks*J t td d tdddgtd dtd t  d td dtd   d fksTJ ttd d tdd  dgttd dtd t  d ttddttd dtd   d tddfksJ ttd d tdd  dgttd dtd t  d ttddttd dtd   d tddfksJ d S )	Nr   r   r   r   r  r   rP   r   )r)   r   rr   r   r   r   r   r   test_sqf_normc	  s    66, , r  c            	      C   s  t d t d  t d  d } t d dt d   dt   d }t d }t d t d  t  d }tt| |||f\}}}}| |ksCJ t| |ksKJ t| t |ksTJ t| t f|ks^J t||ksfJ t| dd|kspJ t|dd|kszJ | d|df|dfgfksJ t| d|df|dfgfksJ t| t d|df|dfgfksJ t| t fd|df|dfgfksJ t|d|df|dfgfksJ t| ddd|df|dfgfksJ t|ddd|df|dfgfksJ | |df|dfgksJ ttd	d
  tddksJ tddg fksJ tdt d  d d dt d d d  ks3J t| ||d  ks@J t| t ||d  ksNJ t| t f||d  ks]J t d t	d  }t| | ||d  | ksvJ t| | t ||d  | ksJ t| | t f||d  | ksJ tt d t d ksJ tt  d t  d ksJ tt d t d ksJ tdt  d t
ddt  d ddksJ tdt  d dt  d  tdddt  d t d   ksJ ttt d dt   d t d d ksJ dt  t dt    t d  } t| dks(J t d dt   d d } t| t d d ksAJ t| dt d dfgfksQJ ttt	d d t	d  t d  t	d d tt	d t d   ksvJ ttt	d d t	d  td  t	d d tt	d td   ksJ ttt	t d t	t  t d  t	t d tt	t t d   ksJ ttt	t d t	t  td  t	t d tt	t td   ksJ t d d t d  t t	 d  t	d d  t	d  }t| dtt t	 t  t	 d dftt d t	 dt d   t t	d   dt  t	  dt   dt	d   dt	  dfgfksBJ d S )Nr   r   r   r   r  Tr#  Fc                   S   r   rI  )r*   r   r   r   r   r   	  r   ztest_sqf.<locals>.<lambda>r   ry  rd  r   r  l    H/P l    _ % )r   ro  r   r*   r+   sqf_list_includer{   rA   r,   r   rc   rg   ra   r   re   )	r   r   r   r   r!  r'  r?  Pr   r   r   r   test_sqfr	  sv      "$ $$2"$&,@. "
"
"
"
4Rr  c               	      s  t d t d  t d  d  t d } t d }t d t  d }tt | ||f\}}}}| d|df|df|dfgfks>J t d| df|df|dfgfksQJ t t d| df|df|dfgfkseJ t t fd| df|df|dfgfkszJ t|d|df|df|dfgfksJ t ddd|df|df|dfgfksJ t|ddd| df|df|dfgfksJ | |df|df|dfgksJ tddg fksJ tddg fksJ ttdt tdg fksJ td	t  t dd	t fgfksJ tdt  t t ddtft tfgfksJ ttt t t dt t tjfgfks'J t	ddkr4t	dj
s6J tdt  dt dfgfksFJ tdt d  dt dfgfksXJ t	dt  dt  kseJ t	dt d  dt d  ksvJ t	dt d  d d
 dt d d d
  ksJ t	 | |d  | ksJ t	 t | |d  | ksJ t	 t f| |d  | ksJ t d td  t t t t t d d f\}}}	}
t	 | | |d  | ||	  ksJ t	 | t | |d  | ||	  ksJ t	 | t f| |d  | ||	  ksJ tddd}tddd}tddd}
t	tt t jdu s9J t	tdt d  d tdtt d t d   ksVJ t	tdt d  d tdtt d d  ksqJ t	tt d  t | t| t d |  t d |  ksJ t	tt d  t | t| t d d |  ksJ t	tt d  t t tt d  t d  t ksJ t	tt d  t t tt d d  t ksJ tt|
d d |d  |d  |d d   t|d d |d  t|d  t|
d d  }t	 |ksJ t	||ks#J t d d |
d d  }tt| t	 t|ks@J ttdt  d t td   d dfgfks[J t d d  t	  ksjJ t	 tdt d t t d t  ksJ t	 ddt d t t d t  ksJ t	 tddt d tdt   d t d tdt   d  ksJ t	t d dt t   d t dt  d ksJ t d dt t   d  t	  ksJ dt d  t ddt    d dt   tt ddt   d dt  d  }dt tdd  dt d  d  }t	 |ks&J t	 td|ks1J t	 td|ks<J t d dtd t   d  t	 tddt td d ks]J t	 d tddt td d ksrJ t	t d dtd   tddt tdt  t tdt   ksJ t	dt d  dtd   tdddt tdt  t tdt    ksJ t	t d t d ksJ t	t  d t  d ksJ t	t d t d ksJ t	dt  d  tddt  d dd!ksJ t	t d" t  d d#dd$t d t  d t d% t d&  t d  t d  t d  t d  d  ks-J t	t d" t  d d#dd$t d t  d t d% d't d&   t d  d't d   t d  d't d   d  kseJ t t t tt  t   ttd dt  d  ttt  td dt  d   }t	 t tt d  t ksJ t	|ttt d  td d  ksJ t	tt d dt   d t d d tt d d t d t d t  d  ksJ t d d t d dt   d   t	 t d t d  t d d  ksJ t	 t t d t d  t d d  ksJ dt  t dt    t d   t	 dks.J t	 t dks8J t	dt d dt   dt    d dt  dt d   t d  ddt d   t d    kshJ t	 dd( kssJ tt fd)d* ttd+d*  t	t tt d td  tt d td  dt  dt  gt tt t t t  tt t t t  t t t  t gksJ ttt d t  d  d d, d, tdusJ ttt d t  d  d d, d, tdu sJ t	tt  tt  ksJ d-t  t  d  t d  t  t  d  t d  t t d d    t d t d  t t d   t   d-t d  t d d  t t  d  t  t  d  t t d     t d t d d  t t  t  d  t d  t t d d       }t	|d,ks~J t	tt d t  t  dd.tt t d  t  ksJ t	tt d t  t  dd.tt t d  t  ksJ t	tt d tt d ksJ t	td/t  d d/t d  td0d/t  d0 d/t d0 dd!ksJ t	td/t  d/ d d1d0t  d0 d  ksJ t d td  d"t d  t  d2t d   d
t  td   d3t  t  d4t   d5td   d6t  d7 }t	|t t d t d  td d"t  d2  ksOJ t	|t dd.t d t d  td d"t  d2  kskJ t	|tdd.td td  t d d
t   d5  ksJ dt  dtdd
t      t	 dd.t	 ddd8ksJ t	 ddd8dt  dtd td9t    ksJ tt d t td   t|t dt dft t dft t dfgfksJ tddtd dtd }}}dt dt }}t|| d	| df|dfgfk	sJ t|| d	| df|dfgfk	s%J t|| | | dfgfk	s7J tt| d	| dftdfgfk	sKJ t|| t || g fk	s[J t|| t || g fk	skJ t|| t || g fk	s{J tt| t t| g fk	sJ tt tdt  t tdt   t dt tdt  dft tdt  dfgfk	sJ tt d tt  t d  }t	t||k	sJ t t d t t  td  }t	t||k	sJ td d ttd d  t d t  d dtd  d  }t	t|dd|k
sJ t d  td  td d  dt t d  td  td d   dt t d  t td d   t d td d   dt  td  td d   dt t  td  td d   dt t  t td d   dt  td d   td  td td d   dt td   dt td  td d   dt t  dt t td d   d dtd d   }t	|tt d  tt  t d dt   td  d  td d  k
sJ d S ):Nr   r   r   r   Tr#  Frd  r   r   ry  r   positiver^  )integerr^  )realr   r  r   r  i    iX  i iH i rz  i  iT     iY  r   r  rs  r  r  r  rP  r  rd  c                      s   t  tddS )NFrd  r.   r   r   r   r   r   r   R
  r   ztest_factor.<locals>.<lambda>c                   S   s   t td d ddS )Nr   r   Tr#  r  r   r   r   r   r   T
  r   r   rS  rf  g      ?r   g      ?   M      r     ih  )re  fractioni)r   ro  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   r   r   test_factor	  s  &&(*&**" ,, $"2 "0*,.:6>66204**.
2($$&*
""
,B
4

8"*$
 *,4:6
$
$
H
0
>66",2h488 4$(($(    $(<`
Pr  c                  C   s(  t d dt   d d t d d  t d dt   d d  } t d dt   d d td  t d dt   d d d t  t d dt   d d  }t| t d d t d d  t d d  ksbJ t|t d d	 td d  kstJ t| dt d dft d dft d d dfgfksJ t|dtd dft d d	fgfksJ t d td  d
 t d d  } t d td  d
 t d d  }t| t d t t d
  t t d
  t d t d  t d  t d  t d  t  d  ksJ t|ddt d t tt  d
  t tt  d
  t d t d  t d  t d  t d  t  d  ks&J t| dt d dft t d
ft t d
ft d t d  t d  t d  t d  t  d dfgfksYJ t|dddt d dft tt  d
ft tt  d
ft d t d  t d  t d  t d  t  d dfgfksJ d S )Nr   r  i r   i i  i -1i% ip  i@ r   rd  r   r   Tr  )r   r   r.   r-   re   r-  r   r   r   test_factor_large
  s|   <>0$((  ,
4
&

(0r  c                   C   sp   t dt d tddt d ddksJ t dt d dt d  ttdddt d dtd  ks6J d S )	Nrd  r   r   r   r   Fr  r   )r.   r   rc   rg   r   r   r   r   test_factor_noeval
  s   *Fr  c               
   C   s
  t dg ksJ t dg ksJ t tdddgksJ t tdgks$J t td dgks/J t td	 td
 gdd	d
dfgksCJ tttd	d tdd d
t tdd  } | j ddddgksfJ |   ddgkspJ | j dddddgks}J | j ddddgksJ | j tddd| j dd  krtdddfdftddtddfdfgksJ  J | j tddd| j dd  krtdddfdftddtddfdfgksJ  J | j tddd| j d d  krtdd!dfdftddtddfdfgksJ  J | j tdd"d| j d#d  kr=tdd$tdd$fdftddtddfdfgks@J  J ttd	d tdd d
t tdd  } t | ddddgksbJ t | ddgksmJ t | tdddt | dd  krtdddfdftddtddfdfgksJ  J t | tdddt | dd  krtdddfdftddtddfdfgksJ  J t | tdddt | d d  krtdd!dfdftddtddfdfgksJ  J t | tdd"dt | d#d  kr%tdd$tdd$fdftddtddfdfgks(J  J ttd	 d	 td	 d d%  td  d%t d d  } |   d&td'd	fd%ftd'd	dfdfd(d)dtdd	fdftdd	d	fd%fgksoJ t td d* td d+ gtd,d-td.d/fddiftd0d1td-d2fddifgksJ t td d* td d+ gddtd,d-td.d/fddiftd0d1td-d2fddifgksJ t td	 d* td	 d+ gtd3dtd4dfddiftd4dd5fddifd6tddfddiftddtd7dfddifgksJ t td td	 td td dtd td td	 d	 gd8ddifd9ddd:fd;dddd<fd=d%d	ifgksDJ td	 d	 td
 d
td	   d
 td } }}t | td%d
dd>g kskJ t | td%ddd>td%dtdd	fgksJ t | td%d
dd?d@dtdd	fgksJ t | td%ddd?d@gksJ t |td%d
dAg ksJ t |td%ddAtd%dtdd	fd	fgksJ t |td%d
dBdCdtdd	fd	fgksJ t |td%ddBdCgksJ t ||gtd%d
dAg ksJ t ||gtd%ddAtd%dtdd	fdd	ifgks#J t ||gtd%d
 dBd@dd	ifd;ddifdtdd	fdd	ifgksHJ t ||gtd%ddBd@dd	ifd;ddifgksbJ t td	 td	 d	 gd8ddifd@ddifdDddifgksJ t td	 td	 d	 gddEd8ddiftd'd	dfddifdDddifgksJ d%td
  dFtd   dGtd	   dt  dG } t | g ksJ t | dddH\}}|g ksJ tdIdJ t|t| D sJ |tdKd%t	dL d%  dftdKd%t	dL d% ft	tdKd% tdLd%fdtdLd%t	dL d%  fgksJ t | ddtdddM\}}|g ks3J tdNdJ t|t| D sDJ t
tdOdP  t
tdQdP  t
tdRdP  d S )SNr   r   T)r,   r   )r   r   ry  )r   ry  r   r  r   r   r  r   i  r   r   rc  rc  )r  r   )r  r   )fastr,   )r  r   epsr2  r   i  U   rd  r9  {Gz?i  gMbP?i  i'  -C6?i  r   rS  r  )r   r   r   )r  r   r{     K      e   #   i5  k   r  iiirc  G   )rS  rS  r  r   r   r   )r   r   rd  )r   r   )infr,   )supr,   rS  r   r  r  )r  r   r   r      r  )r   r,   c                 s   `    | ]+\\}}}t |t |  k ot |k n  o+t|t|  k o)t|k n  V  qd S r   ro   rn   r   r~   r   r^  r   r   r   r          
&z!test_intervals.<locals>.<genexpr>i(   )r   r,   r  c                 s   r  r   r  r  r   r   r   r   +  r  c                   S   s   t td d ddS Nr   r   r  r/   r   r   r   r   r   r   .  r   z test_intervals.<locals>.<lambda>c                   S   s   t td d jddS r  )r   r   r/   r   r   r   r   r   /  r   c                   S   s    t td d td d gddS )Nr   r   r   r  r  r   r   r   r   r   1  r   )r/   r   r   rg   rl   r   r   r   r4   re   r{   r  )r   r   r   	real_partcomplex_partr   r   r   test_intervals
  s   (."("($($.*$($($($.8  
6
6
..
6

00, 2. :
*

 
*
0r  c                      s  t td d   jdddddksJ  jdddddks J  jddd ddtd	dfks1J  jddd dtd
ddfksBJ  jdddddtd	dfksSJ  jddddtd
ddfksdJ  jddddddtd	dfksvJ  jdddddtd
ddfksJ  jddtdddtddtddfksJ  jddddtddtddfksJ tt fdd tt fdd tt fdd td d  t dddddtd	dfksJ t ddddtd
ddfksJ t ddddddtd	dfks	J t dddddtd
ddfksJ t ddtdddtddtddfks4J t ddddtddtddfksIJ ttdd  tt fdd tt fdd d S )Nr   r   r   )stepsr   rS  r   r  r   r  T)r  r  r9  r  r  r  r  r  c                      s    d j ddddS )Nr   r   T)	check_sqfr0   r   r   r   r   r   F  r   z"test_refine_root.<locals>.<lambda>c                      s    d  ddS r   r  r   r   r   r   r   H  r   c                      s    d  ddS rD  r  r   r   r   r   r   I  r   c                   S   s   t dddtdddS )Nr   r   rP  r9  r  )r0   rg   r   r   r   r   r   V  r4  c                      s   t  jddddS Nr   r   r   r  )r   r0   r   r   r   r   r   X  r   c                      s   t  ddddS r  r  r   r   r   r   r   Y  r   )r   r   r0   rg   r{   rF   rC   r  r   r   r   r   test_refine_root4  s0   """"$$.(""&&0*r  c                   C   s  t td d dksJ t td d t ddksJ t td d t
 ddks*J t td d t t
 ddks;J t td d dddksIJ t td d dddksWJ t td d dddkseJ t td d dddkssJ t td d ddddksJ t td d ddddksJ t td d ddddksJ t td d ddddksJ t td d dksJ t td d dt ddksJ t td d dt ddksJ t td d dt dt ddksJ t td d dddksJ t td d dddksJ t td d t ddksJ t td d t
 ddks+J t td d t
 d t
 ddks?J t td d t t d ddksSJ ttd	d
  d S )Nr   r  r  )r  r  rS  r   r   r   c                   S   r   r   r1   r   r   r   r   r   }  r   z"test_count_roots.<locals>.<lambda>)r1   r   rh   re   r{   rF   r   r   r   r   test_count_roots\  s.   "  &  ((r  c                      s   t dtd  dtd   dt  d   dtddks J  ddks)J  ddks2J tt fdd	 t td
 t d dttd td  d dksWJ d S )Nr   r   r   r  r   r   r   c                      s
     dS )Nr   )rootr   r   r   r   r     r  z test_Poly_root.<locals>.<lambda>r   )r   r   r  rg   r{   
IndexErrorrw   r   r   r   r   test_Poly_root  s   (<r  c                  C   s  t tdgks	J t tdddgksJ t td g dks J t td dddgks-J t ttd t d  ttd t d ddgksHJ t ttd t d  ddttd t d ddfdgksgJ t td td t d  ttd t d ddddgksJ t td td t d  ddttd t d ddfdgksJ t td	 d	 dd
ttd	 d	 ddd
ttd	 d	 ddd
gksJ d	td  dtd	   dt  d } td t d }t|   tdd	d	d	gksJ t|  t|dgksJ d S )Nr   Fmultipler   r   r  r  r   r   radicalsr   r  r   )r3   r   rw   r   rg   r-  r   r   r   test_real_roots  s@   6
 

$ "r  c                  C   s  dt d  dt d   dt   d } tddddg}t| t|    kr+|ks.J  J t d t  d }t|dt|dt|dg}t|t|   krU|ksXJ  J tt d d td tdgkskJ tt d d dd	td dftddfgksJ tt d d dd
tt d d ddd
tt d d ddd
gksJ t d t  d }t|t|dt|dt|dt|dt|dgksJ d S )Nr   r   r   r  r   r   r   Fr  r  r   )r   rg   r2   r   rw   rr   )r   frootsr   grootsr   r   r   r   test_all_roots  s    $((&2
(r  c                  C   s  t dt g ksJ t dt g ksJ t td d t ddgks'J t td d t dt dt gks<J t td d t } | ddgksOJ t td d t } | dt dt gksfJ t td d tdd t } | ddgks~J t td d tdd t } | dt dt gksJ t td dt  t ddt  ddt  gksJ t td dt  ttd ddt  ddt  gksJ t dt d	  d
gksJ ttd t d dd} td}t| d d|tj	u sJ t
| d dksJ t| d td
dksJ t
| d d|tj	u s*J t| d td
dks8J t
| d d|tj	u sHJ t| d d|tj	u sXJ t
| d d|tj	u shJ t| d d|tj	u sxJ t
| d d|tj	u sJ td}t| d d|tju sJ t
| d dksJ t| d td
dksJ t
| d d|tju sJ t| d td
dksJ t
| d d|tju sJ t| d d|tju sJ t
| d d|tju sJ t| d d|tju sJ t
| d d|tju s#J ttdd  ttdd  ttd d ddgks@J ttd d } | ddgksQJ ttt dt gks_J ttdt  dt gksoJ ttdd  t td d }|ddd | D ksJ tt td dtd   d td!   d"td#   d$td%   d&td'   d(td   d)td   d* dd+ksJ tt d,td  d  d-ksJ d S ).Nr   r   r         r   r   r   r0  r2  g      r   nz1e-5ghW!'gJ5ogJ5o?gP?gg'r  gg'?z1e-6c                   S   s   t tt t S r   r   r   r   r4   r   r   r   r   r     r   ztest_nroots.<locals>.<lambda>c                   S   s   t tt  S r   r  r   r   r   r   r     r   g       c                   S   r   Nr   r4   r   r   r   r   r     r   c                 S   s   g | ]}| d qS r  r  )r   r   r   r   r   r"    r4  ztest_nroots.<locals>.<listcomp>rX  r7  rc  i  r  i@  r   iV  rP  i  rd  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])r   r   r4   re   rg   rd   ro   
epsilon_eqrl   truern   falser{   rH   r>   rF   r2   str)rootsr  r   r   r   r   test_nroots  s   "*  6               ".




*r  c                  C   sh   t d dt d   dt d   t d  } t|  tjdtjdiks$J t| tjdtjdiks2J d S )Nrd  r  r   r   )r   r   r5   rl   rZ  r   r   r   r   r   test_ground_roots  s   (  r  c                     s   t d t d  d  t d t  d d } t d d d }t d t  d d }t d d }t d ks5J tt fdd tt fdd tt d| ksRJ tt d|ks]J tt d|kshJ tt d|kssJ ttd	d  d S )
Nr  r   r   c                      
   t  dS r  r6   r   r   r   r   r     r  z+test_nth_power_roots_poly.<locals>.<lambda>c                      s
   t  tS r   )r6   r   r   r   r   r   r     r  r   r  c                   S   s   t tt dttS rU  )r6   r   r   r   r   r   r   r   &  s    )r   r6   r{   r  r.   r>   )f_2f_3f_4f_12r   r   r   test_nth_power_roots_poly  s   r  c                     s   t td td  td  t d } | j tdt t d  fddt|  D dgks2J tt	dd	  tt
d
d	  tt
dd	  tt
dd	  ttdd	  d S )Nr  r   r   r   r   c                    s   g | ]\}} |r|qS r   r   )r   r^  r^  r   r0r   r   r"  .  r  z"test_same_root.<locals>.<listcomp>c                   S   s   t td tdddS Nr   r   r   )r   r   rP   	same_rootr   r   r   r   r   1  r   z test_same_root.<locals>.<lambda>c                   S   s    t td d tddddS )Nr   r   r   r   r   )r   r   rN   r  r   r   r   r   r   3  r   c                   S   s   t td d tdddS Nr   r   r   r   )r   r   rQ   r  r   r   r   r   r   5  r  c                   S   s$   t ttd  d tt dddS r  )r   r   r   rO   r  r   r   r   r   r   7  ru  c                   S   s   t tt d tdddS r  )r   r   r   rO   r  r   r   r   r   r   9  r  )r   r   r  rp   re   ri   	enumerater2   r{   rF   rH   r>   r   r   r  r   test_same_root*  s&   $&r  c               
   C   s   t td d td  ttdtd  i} t| tdt dtd  d d dft dtd  d dft dtd  d dfgfksHJ t td d td  ttddtdd   i} t| td u skJ d S )Nr   r   rS  r  )ra   r   rv  rr   r<   rg   r   r   r   r   test_torational_factor_list<  s   .
4r  c                  C   s  t ddksJ t ddksJ t ttksJ t ttu s J t ddks(J t dtdks1J t dtdks:J d	td
  d	 d
t d
 d
t d
 df\} }}}dd | |||fD \}}}}| |d||fksmJ t | |fd||fkszJ t | |ftd||fksJ t | |ftfd||fksJ t ||fd||fksJ t | |fddd||fksJ t ||fddd||fksJ td
 d
 ttd
  } t | | ksJ t | ddttd
 ksJ td
 d
 ttd
  } t | | ksJ t | ddttd
 ksJ t td
 d	 d td
 d fdtd
 d
fks!J t td
 t tt  dtt  td
 t  ks<J t td
 td
  tt  ttt ksRJ t td
 td
  tt  ttt kshJ t td
 td
  tt  tt ks}J t td d td
 d  td
 t d td  ksJ t td d
 tj td
 d  td
 t d d
t d
  ksJ t td
t d
tt  d ttd  ttd ksJ ttd
 t	d
  t} ttt	 t}ttt	 tdd}tdtdd}t | |fd||fksJ td td
d
 td
   d
td
 d t  dtd
  } td
 d
 }t | |fdddtd
 d
t  d ttd
 fksKJ tdt d t} ttd  td  td  td  d
td
   dt  d t}t | |fd|  | fksJ ttd d t} ttd d t}|  |tdd ttd tt
dttd tt
dfksJ | j |ddtdt d tt
dtdt d tt
dfksJ dt dt dddfdt dt ddt dt fdt dt ddt dt fdt dt dddfg}|D ][\} }}	}}t | |fd||fksJ t| t}
t|t}t|t}t|t}|
 ||	|	| |fksAJ |
j |j|j|jfksQJ |
jj |jdd|j|jfkscJ q	tttdd} tdtdd}|  |dtttddtdtddfksJ | j |ddtttddtdtddfksJ tdt t t tdd} td
td
  t tdd}| j |ddtdt d tddtd
t t tddfksJ dt d	t  d tt d
    tt t t d
   } t | jdksJ ttd! }ttd! }d|d
  d
 |d
  d  |d
  d
 d|d
  d
 d|d
  d
  | |  d|d
  d
 |d
  |d
   d|d
  d
 |d
  d  |d
  d
  d|d
  d
 |d
  |d
   d
t|d
 |d
  d"   d|d
  d
  | |d
  d
 d|d
  d
 |d
  | d
  d|d
  d
 | |d
  d
 d|d
  d
 |d
  | d
   d
|d
 |d
  d" tdd
    } t | jdksJ td#dd$}t|td
 d  td  tdkftd
 td
 d
t   df}t|td  tdkfdt df}t ||ksJ t d
| d
| ks"J t d| d| ks/J t td
 d td  | td | ksFJ t td
 d td  | td | ks]J ttd
 d td  tdkftd
 td
 d
t   df}ttd tdkfdt df}t ||ksJ t d
| d
| ksJ t d| d| ksJ t td
 d td  | td | ksJ t td
 d td  | td | ksJ td%dd&}t |dd'tju sJ |td
tju sJ t|tju sJ td(dd}t |d) d |d) d ksJ t|d* |d+ d |d,   d|d-  t  }t |tt|d* |d+ d |d,    d|d-   t ksRJ t td
 d tt  tt kseJ d S ).Nr   r   r  )r   r   r   r   r  r   r  r  r   r   c                 S   s   g | ]}t |tqS r   r   r8  r   r   r   r"  U  r4  ztest_cancel.<locals>.<listcomp>Tr#  F)r   r   r  r   r   rS  r  rP  rd  r   )includer   r   r  r   g{Gzt?r   r  r"  )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Mr   )r   r  r   )r  r   r   )r7   r   rh   rr   r   rl   r  rp   r   r~   rP   r   r   is_Mulrq   rg   rm   rs   NaNrv  rx   rv   rt   re   )r   r   r   r   r!  r'  r  r(  pairsr  pfpgpppqr"  p1p2p3p4r  exprr   r   r   test_cancelH  s   046,,*:D><8@ 



 (
(8>"..:.. !"0B*r  c                     s  t td dt  d tdd   \} }|  ksJ |tjks"J t td dt  d tdd   \} }|   ks?J |tjksFJ t td d tdd t  tdd  tdd   \} }| t td dt  d tddksxJ |dks~J t td d tdd t  tdd  tdd   \} }| t td dt  d	 tddksJ |dksJ t tt tt tt	 fd
d t tdd tt	 fdd d S )Nr   r   r  rO   r   rP   r   rP  rX  c                            S r   )make_monic_over_integers_by_scaling_rootsr   r   r   r   r     r   z@test_make_monic_over_integers_by_scaling_roots.<locals>.<lambda>rS   c                      r  r   r  r   r   r   r   r     r   )
r   r   r  rO   r  r  rl   r   r{   r  )r   r   r   r   r   .test_make_monic_over_integers_by_scaling_roots  s(   2&2&r  c                  C   s>   t td d } | jdd\}}|tjksJ |du sJ d S )Nr  r   T)by_nameF)r   r   galois_grouprZ   D4)r   r'  altr   r   r   test_galois_group  s   r  c                  C   s  dt d  td  t d  td  } t d t  td t g}dt  dg}t d td  t }t| |||fks9J t| |t t||fksFJ t|}|| ||fksUJ tdt  t ttdt tg}tt d td  t t t}tt| |dd||fsJ tt| |t tdd||fsJ t|dd}t|| ||fsJ dt d  td  dt  } tt d td  d t t d g}t d t td  d  t t d  td d  td d  td d  td  d td d  ttdd  g}d	}t| |||fksJ || ||fksJ t| |d
dd d	ks!J |j| d
dd d	ks/J || du s9J || d d
u sEJ tddgt dgd	fksTJ t	t
dd  d S )Nr   r  r   r   Tr#  rd  r   r   Fr  c                   S   s   t ddgS r   )r8   r   r   r   r   r   E  r   ztest_reduced.<locals>.<lambda>)r   r   r8   r9   reducer   r   rg   containsr{   rA   )r   r'  r(  r^  r?  r   r   r   test_reduced  s4   $ $pr  c               
   C   s  t g tttg ksJ t td d td t td  gttdddtd  dtd  gks/J t td d td t td  tt td  gtttdddtd  td dtd  gks^J t td d td t td  gttdd	d
tdtd  tttdtd  ttgksJ t td d td t td  tt td  gtttdd	d
tdtd  tttttd ttttdtd  tttgksJ t td d td d gtd gksJ t ttd dttd dgtd gksJ dtd  tt  dt  d dt dt t  td  tdt  tt  dtd   g} td td td   dt td  t  dt td   td td   d }t | tttddd}|dt t dt  dtd   dtd   dtd   td  ddt  td  dtd   dtd   dtd   dtd   dtd   ddt  dt  tt  dtd   td  td  ddt  td  dtd   dtd   dtd   dtd   td  gksJ t||tttddd	d\}}tdd t||j	D |t|ddksJ tt dt  dtd  td  g} t | ttddtd dt  td dtd   tt dt  gks=J t | ttddtd dtd   td  dtd   tt dt  gksdJ t | dd	dtd dt  td dtd   tt dt  gksJ t dgtdgksJ t td dt  gttdtd  dt  gksJ t
tdd  t td d td d gddtd gksJ t td d td d gddtd gksJ t
tdd  d S )Nr   r   r  r   rW   r   r   rY   Tr   r$  r   r  rs  r   Fr  rd  )r   r   r$  c                 S   s   g | ]\}}|| qS r   r   )r   r   r   r   r   r   r"  b  r   z!test_groebner.<locals>.<listcomp>r   )r   rM   r   r   c                   S   s
   t dgS r   )r9   r   r   r   r   r   p  r  ztest_groebner.<locals>.<lambda>
buchbergermethodf5bc                   S   s   t ttgddS )Nunknownr  )r9   r   r   r   r   r   r   r   u  r   )r9   r   r   r   r   rk   r8   sumr   r$  r{   rA   r  )r!  r   r'  r(  r^  r   r   r   test_groebnerH  sJ   H^,&<:*.ZP@N6J.$0
6
0
600r  c                  C   s<  t t t t t t t t  tt  tt  t t t t t t  t t t  tt t  t t t t d g} t| t ttttd}dt  dtd   dtd   dt  dt dt  dtd   dtd   dt  dtd  dtd	   dtd
   dtd   dt td  dt  td  dtd   dt  td td  td  d g}t| t ttttd|ksJ |t|ksJ dtd  dtd   dtd
   dtd   dtd   dtd   dtd   dt  d dt	 td  dt	 td
   dt	 td   dt	 td   dt	 td   dt	 td   dt	 t  dt	  dtd   dtd
   dtd   dtd   dtd   dt  d g} t| t	ttd}dt	 dtd   d td
   d!td   d"td   d#td   d$td   d%t  d& dtd  dtd   dtd
   dtd   dtd   dtd   dtd   dt  d g}t| t	ttd|ksJ |t|ksJ td t dt
  d d't t
d  t
 d g} t| tt
td}td t dt
  d t
d dt  t
 d g}t| tt
td|ksJ |t|ksJ d S )(Nr   r   r  r   r  r   r   r   r   rd  r  rP  $   r7     N   i  i   l   i   i  i8  i  r}  r     i   r|  l   ;7>rI l   *El   2t5TJl   "3CR7	 l   }wSo8 l   Hg51n? l   3&[T l   e t{ l   *JwiC1 rS  )r~   r   r   r   r9   rX   rW   fglmr   r   r   )r!  r'  r#  r   r   r   	test_fglmx  sl   p&..2^j








^0r  c                  C   s  t ttgttdu sJ t td td  gttdu sJ t tttgtttdu s+J t tttgttttdu s:J tt t tt t tt t g} t | tttdu sVJ td dt t  d ttd  ttd   dtd  dtd   g} t | tttdu sJ d S )NTr   r   Fr   rP  )r;   r   r   r   r   )r!  r   r   r   test_is_zero_dimensional  s   ""Fr   c                  C   s  t t dt  dtd  t d  g} t| t tdd}td dt  t d dtd   t t dt  g}dd |D }t| dg t tdd|ksIJ t|tdu sRJ t|dksZJ |d |d krg|d jriJ |d	 |d	 krv|d	 jrxJ |d |d kr|d jrJ |d	d  |d	d  krtd
d |d	d  D rJ |d d |d d krtdd |d	d  D rJ |j|ksJ |j	|ksJ |j
t tfksJ |jtksJ |jtksJ ||ksJ |t|ksJ ||ksJ |t|ksJ |g ksJ t| t tddd}|d |d kr|d jsJ |d	 |d	 kr.|d	 js0J |d |d kr?|d jsAJ |d	d  |d	d  kr\tdd |d	d  D s^J |d d |d d krytdd |d	d  D s{J d S )Nr   rY   r   r   c                 S   r   r   rY  r!  r   r   r   r"    r   z&test_GroebnerBasis.<locals>.<listcomp>r   Tr   c                 s       | ]}|j V  qd S r   rX  r   r   r   r   r   r         z%test_GroebnerBasis.<locals>.<genexpr>c                 s   r!  r   r"  r#  r   r   r   r     r$  r  c                 s   r!  r   r"  r#  r   r   r   r     r$  c                 s   r!  r   r"  r#  r   r   r   r     r$  )r   r   r9   r   r:   r   rX  anyexprsr$  r   r   rO   r   rY   r  r   )r!  r'  r?  r  r   r   r   test_GroebnerBasis  s8   $266""":>r'  c                  C   s  t ttttksJ t ttttksJ t tt ttt ttks&J t ttt tttt tttks<J t tt tdttt ttksNJ t ttt ttdtttt tttkshJ t tt dt td   d ttt dt td   d tttksJ t dtt d  d tdtd  dt t  dtd   d ttksJ t ttt d  d tttd  dt t t  ttd   d tttksJ t dt tt d  d tdt td  dt t t  dt td   d tttksJ t dtt d  t d tdtd  dt t  dtd   t d tttks8J t ttt d  t d tttd  dt t t  ttd   t d tttksfJ t dt tt d  t d tdt td  dt t t  dt td   t d tttksJ t tt tt d  tt d  tdt t dt t  td  td  dtd   tttksJ t tt tt  tt d  ttd td  ttd  td   ttd  td   dt td  td   dt t td   ttd   tttksJ t ttt t tttttt t tttks9J t tt d tttd dt t  td  ttt dksZJ t tt d tttd dt t  td  ttt dks{J t dttdtksJ ttdd	  t tt ttttt ttksJ t tt ttttt ttksJ tdt d d d
  t	dd
  } t | 
 |  ksJ ttd  t	dd  }t |
 | ksJ d S )Nr  r   r  r   r  r   r   c                   S   r   r   )r   r   r   r   r   r     r   ztest_poly.<locals>.<lambda>r   rd  )r   r   r   r   rt   r   rO   r{   rD   rl   r  ra   )expr1expr2r   r   r   	test_poly  s    ,$4JL4<
4
8
@"<
F

6BB&&$r*  c                  C   s  t dtd dd} ttjttksJ ttjtt ksJ ttdtdt ks+J ttdtdt ks8J ttjdt dt ksFJ ttdtd tksSJ ttdttdtt ksdJ ttdtd | ksqJ ttdt dks|J ttd td| ksJ ttjtjtjksJ tdddd}ttd|t d|ddksJ t	d|dd}ttj|d	d
t tj|ddksJ ttj|dd
t	dt tj|ddddksJ d S )Nr   r   Fr  r   r  r   r   T)clear)
rc   r   rb   rl   rZ  NegativeOnert   r  rj   r[   )r   r   r~   r   r   r   test_keep_coeff  s*   " r-  c                   C   sD   t ttt tt t tksJ tttt  tt t tks J d S r   )re   r   r   r   r   r   r   test_poly_matching_consistency"  s    $r.  c                   C   s\   t tt ttt  ttt   tgdt t t tt  tt  tt t  ks,J d S )Nr   )ra   r.   r   re   r   r   r   r   r   r   r   test_issue_5786)  s   (r/  c                  C   s   G dd dt } tttt   }ddt  }t| || |ks"J t|| | || | ks2J t|| | || | ksBJ d S )Nc                   @   s   e Zd ZdZdS )z test_noncommutative.<locals>.fooFN)__name__
__module____qualname__is_commutativer   r   r   r   foo/  s    r4  r   )r^   r   r   r7   )r4  r  r   r   r   r   test_noncommutative.  s    $r5  c                   C   s   t ttd ttd   tt tddd u sJ t ttd tdtd  tt  d td u s4J t tttd u s?J t ttdt d u sMJ d S )Nr   r   rT   r   r   )r=   r   r   r   rr   rt   r   r   r   r   test_to_rational_coeffs8  s   $( r6  c                   C   s^   t ttt  dtdftt dfgfksJ tttt  dtd tt  dfgfks-J d S r=  )r-   r   r   r+   r   r   r   r   test_factor_termsC  s   ,2r7  c                   C   s   t td d tdd g dksJ t td t d ttdd dgg ddggks-J t td t d tttdd dggg gdgdgggksLJ d S )Nr   r   rO   r   )r   r   r   r   r   )r   r   as_listr   r   r   r   r   r   test_as_listI  s
   &4 r9  c                   C   s^   t tdt tdtdfgfksJ t tdtt tttdttdfgfks-J d S r   )r-   rr   r   rt   r   r   r   r   test_issue_11198Q  s   &8r:  c                  C   s0   t tdt } |  tdt ksJ d S )Nr9  )r   ri   evalfr   r  r   r   r   r   test_Poly_precisionV  s   r<  c                   C   s8   t ddtd  ttddtd  tddksJ d S )Nr   r   rT   r   )r   rr   r   r   r   r   r   r   test_issue_12400\  s   r=  c                	   C   sL  t tddtd  d tddtd  d tdddtd  ks&J t tdtdd tdtdd tdtdd	 ksDJ ttddtd tddtd tdtd d kscJ tdtd dtd d
td ksxJ ttdddtdd   d tdddtdd   d tddddtdd   ksJ t tddtd tddtd tdd ksJ t tdtd d tdtd d tdd ksJ t tdtd d tdtd d tdtd d gtdtdd ks
J t tddtd  d tddtd  d tddtd  d gdtd tdd ks=J ttddtd tddtd tddtd ftddtd kseJ ttdddtdd   d tdddtdd   d tdddtdd   d gtddddtdd   ksJ d S )Nrd  r   r   r   r   r  r   r   r   r  rP  rc  r  rH  rc  /   r  i  )r   rl   rr   rg   r   r   r   r   r   test_issue_14364a  s   L<>*^6:VfPr?  c                  C   s   t ddd} d| d  | d  td| d  | d d d   d d  ddtdd	  |  | d  td| d  | d d d   d tdd	   d
|   }t|dd| | d d  ks`J d S )Nr   Tr  rX  r   r   rP  r  r   r   rf  )rm   rr   rg   r.   )r   r  r   r   r   test_issue_15669s  s   <L$r@  c                  C   s   t d} t| d }t  tt| d t| d gg}W d    n1 s'w   Y  ttdd, || ||   krStt| d d t| d d ggksVJ  J W d    d S 1 saw   Y  d S )Nr   r   F)test_stacklevelr   )rm   r   r|   ru   r}   rz   )r   r   r  r   r   r   test_issue_17988z  s    H"rB  c                   C   s@   t dt dt  dt ksJ t dt dt  dksJ d S )Nr   r   r   r   )r7   re   r   r   r   r   test_issue_18205  s     rC  c                  C   sz   t d d t d d  t d d  t d d  } dt d d dft d dft d dt   d dfgf}t| |ks;J d S )Nr   r   r   r   rd  )r   r+   )r   r  r   r   r   test_issue_8695  s   06rD  c                      s   t td t t d  tt fdd tt fdd tt fdd tt fdd tt fdd tt fd	d d S )
Nr   r   c                      s   t  dddS )Nr   r   r  r  r   rg  r   r   r     r   z"test_issue_19113.<locals>.<lambda>c                      s   t  ddS )Nr   r   r  r   rg  r   r   r     r   c                      r  r   )r3   r   rg  r   r   r     r   c                      r  r   r  r   rg  r   r   r     r   c                      r  r   )r5   r   rg  r   r   r     r   c                      r  rU  r  r   rg  r   r   r     r  )rt   r   r{   rF   r   r   rg  r   test_issue_19113  s   rE  c                  C   s   dt d  dtd t  t  td  } t| tdddt tdt d  d  ks,J t t t  tt  t t  tt t  } t| tdt tt  t t t  ksVJ d S )Nr   r   )r   rr   r   r.   re   r   r   r   r   r   r   test_issue_19360  s   (0*.rF  c                  C   sB   t tt ttt} |  }| |ksJ d| j|jksJ dd S )Nz(Copied polynomial not equal to original.z9Copied polynomial has different generators than original.)r   r   r   r   copyr   )r   rG  r   r   r   test_poly_copy_equals_original  s   
rH  c                  C   sJ   t tt ttt} tt| }| |ksJ d| j|jks#J dd S )Nz.Deserialized polynomial not equal to original.z?Deserialized polynomial has different generators than original.)r   r   r   r   pickleloadsdumpsr   )r   deserializedr   r   r   &test_deserialized_poly_equals_original  s   
rM  c                  C   s0   t ttd  td  t t} | t ksJ d S r=  )r   r   rh   )r  r   r   r   test_issue_20389  s   rN  c                  C   sL   ddl m}  | d\}}tdt| |  |d| }| tdks$J d S )Nr   )symbolszw Rr   r   )sympy.core.symbolrO  r   re   r   rl   )rO  r   r)  r   r   r   r   test_issue_20985  s   rQ  (N  __doc__rI  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   rP  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}   	sympy.abcr~   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/  r1  r5  r7  r9  r;  r?  rA  rC  rF  rG  rI  rL  rO  rR  rT  rW  r\  r_  r`  rb  rr  ru  rw  rz  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r	  r  r  r  r  r  r  r*  r5  r6  r@  rC  rE  rG  rK  rR  rY  r[  ra  rb  rh  ri  rj  rk  rl  rp  rq  rs  rw  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/  r5  r6  r7  r9  r:  r<  r=  r?  r@  rB  rC  rD  rE  rF  rH  rM  rN  rQ  r   r   r   r   <module>   s   <$ 4
-\U"W	 #+

	


7			





:

4
/
y

+







j

#
P _q($N 3+0**2
	
		