a
    <b                     @   s*  d Z ddlmZm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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD ddlEmFZF ddlGmHZH ddlImJZJmKZKmLZL ddlMmNZN dd	 eH D \ZOZPZQZRZSZTZUeeeOd
eLeLddd
eLZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd  Z`d!d" Zad#d$ Zbd%d& Zcd'd( Zdd)d* Zed+d, Zfd-d. Zgd/d0 Zhd1d2 Zid3d4 Zjd5d6 Zkd7d8 Zld9d: Zmd;d< Znd=d> Zod?d@ ZpdAdB ZqdCdD ZrdEdF ZsdGdH ZtdIdJ ZudKdL ZvdMdN ZwdOdP ZxdQdR ZydSdT ZzdUdV Z{dWdX Z|dYdZ Z}d[d\ Z~d]d^ Zd_d` Zdadb Zdcdd Zdedf Zdgdh Zdidj Zdkdl Zdmdn Zdodp Zdqdr ZdsS )tz4Tests for dense recursive polynomials' arithmetics.     )
dup_normal
dmp_normal)@dup_add_termdmp_add_termdup_sub_termdmp_sub_termdup_mul_termdmp_mul_termdup_add_grounddmp_add_grounddup_sub_grounddmp_sub_grounddup_mul_grounddmp_mul_grounddup_quo_grounddmp_quo_grounddup_exquo_grounddmp_exquo_ground
dup_lshift
dup_rshiftdup_absdmp_absdup_negdmp_negdup_adddmp_adddup_subdmp_subdup_muldmp_muldup_sqrdmp_sqrdup_powdmp_powdup_add_muldmp_add_muldup_sub_muldmp_sub_muldup_pdivdup_premdup_pquo
dup_pexquodmp_pdivdmp_premdmp_pquo
dmp_pexquo
dup_rr_div
dmp_rr_div
dup_ff_div
dmp_ff_divdup_divdup_remdup_quo	dup_exquodmp_divdmp_remdmp_quo	dmp_exquodup_max_normdmp_max_normdup_l1_normdmp_l1_normdup_l2_norm_squareddmp_l2_norm_squared
dup_expand
dmp_expand)ExactQuotientFailed)f_polys)FFZZQQ)raisesc                 C   s   g | ]}|  qS  )Zto_dense).0frJ   rJ   q/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/sympy/polys/tests/test_densearith.py
<listcomp>/       rN            c                  C   s  t g t} t| tddtt g tks*J t| tddtt dgtksLJ t| tddtt ddgtkspJ t| tddtt g dtksJ t g dt} t| tddtt g dtksJ t| tddtt g dtksJ t| tddtt g dtksJ t| tdd	tt g d
tks6J t| tddtt g dtks\J t| tddtt g dtksJ t| tddtt g dtksJ t| tddtt ddgtksJ d S )Nr   rQ   rP   rQ   r   r   rQ   rQ   rQ   )rQ   rQ   rP   )rQ   rP   rQ   )rP   rQ   rQ      )rQ   rQ   rQ   rQ      )rQ   r   rQ   rQ   rQ      )rQ   r   r   rQ   rQ   rQ      )rQ   r   r   r   rQ   rQ   rQ   )r   rG   r   rL   rJ   rJ   rM   test_dup_add_term2   s$    
 "$$$$&&&&
r[   c                   C   s   t tdtdtdgtdddtttdtdtdgtddtksNJ t tg gddttkshJ t tg gddttksJ d S NrQ   rP   r   rU   )r   rG   r   f_0F_0rH   rJ   rJ   rJ   rM   test_dmp_add_termJ   s
    $"r_   c                  C   s  t g t} t| tddtt g tks*J t| tddtt dgtksLJ t| tddtt ddgtkspJ t| tddtt g dtksJ t g dt} t| tddtt g dtksJ t| tddtt g dtksJ t| tddtt g d	tksJ t| tdd
tt g dtks6J t| tddtt g dtks\J t| tddtt g dtksJ t| tddtt g dtksJ t| tddtt ddgtksJ d S )Nr   rQ   rY   rP   )rY   r   r   rT   )rQ   rQ   rY   )rQ   rY   rQ   )rY   rQ   rQ   rU   )rY   rQ   rQ   rQ   rV   )rY   r   rQ   rQ   rQ   rW   )rY   r   r   rQ   rQ   rQ   rX   )rY   r   r   r   rQ   rQ   rQ   )r   rG   r   rZ   rJ   rJ   rM   test_dup_sub_termQ   s$    
 "$$$$&&&&
r`   c                   C   s   t tdtdtdgtdddtttdtdtdgtddtksNJ t tg gddttkshJ t tg gddttksJ d S r\   )r   rG   r   r]   r^   rH   rJ   rJ   rJ   rM   test_dmp_sub_termi   s
    $"ra   c                  C   s   t g t} t| tddtt g tks*J t ddgt} t| tddtt g tksXJ t g dt} t| tddtt g dtksJ t| tddtt g dtksJ t| tddtt g dtksJ t| tddtt g d	tksJ d S )
NrP   rU   rQ   r   rQ   rP   rU   rP   rV   rX   )rP   rV   rX   r   )rP   rV   rX   r   r   )rP   rV   rX   r   r   r   )r   rG   r   rZ   rJ   rJ   rM   test_dup_mul_termp   s    
  $$$rd   c                   C   s  t tdtdtdgtdddtttdtdtdgtddtksNJ t g gtdgddtg gkspJ t tdggg ddtg gksJ t tdtdgtdggtdgddttdtdgtdgg g gksJ t g gtddgddtg gksJ t tddggg ddtg gks,J t tddtddgtddggtddgddttddtddgtddgg g gksJ d S )	NrQ   rP   rU   r   rV   rX   rW      )r	   rG   r   rH   rJ   rJ   rJ   rM   test_dmp_mul_term   s    $"""*&&2"rf   c                  C   s8   t g d} t g d}t| t dt |ks4J d S )NrQ   rP   rU   rV   )rQ   rP   rU      rV   )rG   mapr
   rL   grJ   rJ   rM   test_dup_add_ground   s    rl   c                  C   sR   t dgdgdgdgg} t dgdgdgdgg}t| t ddt |ksNJ d S )NrQ   rP   rU   rV   rh   )rG   ri   r   rj   rJ   rJ   rM   test_dmp_add_ground   s    rm   c                  C   s8   t g d} t g d}t| t dt |ks4J d S )Nrg   )rQ   rP   rU   r   rV   )rG   ri   r   rj   rJ   rJ   rM   test_dup_sub_ground   s    rn   c                  C   sP   t dgdgdgdgg} t dgdgdgg g}t| t ddt |ksLJ d S )NrQ   rP   rU   rV   )rG   ri   r   rj   rJ   rJ   rM   test_dmp_sub_ground   s    ro   c                  C   sz   t g t} t| tdtt g tks(J t g dt} t| tdtt g tksTJ t| tdtt g dtksvJ d S )NrP   rb   r   rc   )r   rG   r   rZ   rJ   rJ   rM   test_dup_mul_ground   s
    
rp   c                	   C   s  t ttddttdtdtdgtdggtdggtdtdtdgtdtdtdgtdgggkstJ t ttdddttddtddtd	dgtddggtd	dggtddtd
dtddgtddtddtddgtddgggksJ d S )NrP   rV   rX   rh   
      rQ      rU   rW   )r   r]   rG   r^   rH   rJ   rJ   rJ   rM   test_dmp_mul_ground   s    
2
&*
rt   c                  C   s&  t tdd  tg t} t| tdttg tks6J tg dt} t| tdt| ks\J t| tdttg dtks~J t| tdttg dtksJ tg dt} t| tdt| ksJ t| tdttdtdtd	gksJ t| td
ttdd
tdd
tdd
gks"J d S )Nc                   S   s   t tg dttdtS Nrb   r   )r   r   rG   rJ   rJ   rJ   rM   <lambda>   s   
z%test_dup_quo_ground.<locals>.<lambda>rU   rX   rP   rh   rQ   rP   rU   rQ   rV   )rP   r   rP   rV   rR   rX   rh   )rI   ZeroDivisionErrorr   rG   r   rH   rZ   rJ   rJ   rM   test_dup_quo_ground   s    
""*rz   c                  C   s  t tdd  t tdd  tg t} t| tdttg tksDJ tg dt} t| tdt| ksjJ t| tdttg dtksJ tg dt} t| tdt| ksJ t| tdttdtdtd	gksJ t| td
ttdd
tdd
tdd
gksJ d S )Nc                   S   s   t tg dttdtS ru   r   r   rG   rJ   rJ   rJ   rM   rv      s   
z'test_dup_exquo_ground.<locals>.<lambda>c                   S   s   t tg dttdtS )Nrb   rU   r{   rJ   rJ   rJ   rM   rv      s   
rU   rw   rQ   rP   rx   rV   rR   rX   rh   )rI   ry   rD   r   rG   r   rH   rZ   rJ   rJ   rM   test_dup_exquo_ground   s    
"*r|   c                  C   s   t dgdgdggdt} t| tddt| ks2J t| tddtt dgdgdggdtks`J t t| tddtdtt dgg dggdtksJ d S NrX   rP   rh   rQ   rU   rV   )r   rG   r   rZ   rJ   rJ   rM   test_dmp_quo_ground   s    r~   c                  C   sd   t dgdgdggdt} t| tddt| ks2J t| tddtt dgdgdggdtks`J d S r}   )r   rG   r   rZ   rJ   rJ   rM   test_dmp_exquo_ground   s    r   c                   C   s2   t g dtg ksJ t dgdtg dks.J d S )NrU   rQ   rQ   r   r   r   )r   rG   rJ   rJ   rJ   rM   test_dup_lshift  s    r   c                   C   s2   t g dtg ksJ t g ddtdgks.J d S )NrU   r   rQ   )r   rG   rJ   rJ   rJ   rM   test_dup_rshift  s    r   c                   C   s"  t g tg ksJ t tdgttdgks0J t tdgttdgksNJ t tdtdtdgttdtdtdgksJ t g tg ksJ t tddgttddgksJ t tddgttddgksJ t tddtddtddgttddtddtddgksJ d S )NrQ   rR   rY   rP   rU   )r   rG   rH   rJ   rJ   rJ   rM   test_dup_abs  s    6""r   c                   C   s*  t tdgdttdgks J t tddgdttddgksDJ t g ggdtg ggks`J t tdgggdttdgggksJ t tdgggdttdgggksJ t g ggdtg ggksJ t tddgggdttddgggksJ t tddgggdttddgggks&J d S NrY   r   rQ   rP   r   rR   	   )r   rG   rH   rJ   rJ   rJ   rM   test_dmp_abs  s     $((,r   c                   C   s"  t g tg ksJ t tdgttdgks0J t tdgttdgksNJ t tdtdtdgttdtdtdgksJ t g tg ksJ t tddgttddgksJ t tdd	gttdd	gksJ t tddtddtddgttddtddtddgksJ d S )
NrQ   rY   r   rR   rP   rU   r   )r   rG   rH   rJ   rJ   rJ   rM   test_dup_neg+  s     6""r   c                   C   s*  t tdgdttdgks J t tddgdttddgksDJ t g ggdtg ggks`J t tdgggdttdgggksJ t tdgggdttdgggksJ t g ggdtg ggksJ t tddgggdttddgggksJ t tddgggdttddgggks&J d S r   )r   rG   rH   rJ   rJ   rJ   rM   test_dmp_neg8  s     $((,r   c                   C   s  t g g tg ksJ t tdgg ttdgks4J t g tdgttdgksTJ t tdgtdgttdgkszJ t tdgtdgttdgksJ t tdtdgtdgttdtdgksJ t tdgtdtdgttdtdgksJ t tdtdtdgtdtdtdgttdtdtdgksRJ t g g tg kshJ t tddgg ttddgksJ t g tddgttddgksJ t tdd	gtdd	gttddgksJ t tdd	gtddgttdd	gksJ t tddtddgtdgttddtd
dgksLJ t tdgtddtddgttddtd
dgksJ t tddtddtddgtddtddtddgttddtddtddgksJ d S )NrQ   rP   rU   rh   r   rq         rV   rW   rR   )r   rG   rH   rJ   rJ   rJ   rM   test_dup_addE  s@      &&24

&&..<<r   c                   C   s  t tdtdgtdgdtttdtdgtdgtksBJ t tddtddgtdgdtttddtddgtdgtksJ t g ggg ggdtg ggksJ t tdgggg ggdttdgggksJ t g ggtdgggdttdgggksJ t tdgggtdgggdttdgggksBJ t tdgggtdgggdttdgggksxJ t g ggg ggdtg ggksJ t tddgggg ggdttddgggksJ t g ggtddgggdttddgggksJ t tddgggtddgggdttddgggks@J t tddgggtddgggdttddgggks|J d S )NrQ   rP   r   rU   rR   )r   rG   r   rH   rJ   rJ   rJ   rM   test_dmp_add_  s     " ".066$44<r   c                   C   s  t g g tg ksJ t tdgg ttdgks4J t g tdgttdgksTJ t tdgtdgtg kstJ t tdgtdgttdgksJ t tdtdgtdgttdtdgksJ t tdgtdtdgttdtdgksJ t tdtdtdgtdtdtdgttdtd	td
gksJJ t g g tg ks`J t tddgg ttddgksJ t g tddgttddgksJ t tddgtddgtg ksJ t tddgtddgttddgks J t tddtddgtdgttddtddgks<J t tdgtddtddgttddtddgksxJ t tddtddtddgtddtddtddgttddtd	dtd
dgksJ d S )NrQ   rY   rP   rU   rh   r   rq   r   rR   rW   )r   rG   rH   rJ   rJ   rJ   rM   test_dup_subr  s@       &22

&&&.<<r   c                   C   s  t tdtdgtdgdtttdtdgtdgtksBJ t tddtddgtdgdtttddtddgtdgtksJ t g ggg ggdtg ggksJ t tdgggg ggdttdgggksJ t g ggtdgggdttdgggksJ t tdgggtdgggdttdgggksBJ t tdgggtdgggdttdgggksxJ t g ggg ggdtg ggksJ t tddgggg ggdttddgggksJ t g ggtddgggdttddgggksJ t tddgggtddgggdttddgggks@J t tddgggtddgggdttddgggks|J d S )NrQ   rP   r   rU   rY   rR   )r   rG   r   rH   rJ   rJ   rJ   rM   test_dmp_sub  s     " ".066$44<r   c                   C   s   t tdtdtdgtdtdtdgtdtdgttdtdtdtdgks^J ttdtdgtdggtdgtdtdggtdgtdggdttdgtdtdgtdtdggksJ d S )NrQ   rP   rU   r   rR   rW   rV   )r$   rG   r%   rJ   rJ   rJ   rM   test_dup_add_mul  s    *2&r   c                   C   s   t tdtdtdgtdtdtdgtdtdgttdtdtdtdgks^J ttdtdgtdggtdgtdtdggtdgtdggdttdgtdtdgtdtdggksJ d S )	NrQ   rP   rU   r   r   rY   r   )r&   rG   r'   rJ   rJ   rJ   rM   test_dup_sub_mul  s    *2&r   c                  C   s  t g g tg ksJ t g tdgtg ks.J t tdgg tg ksHJ t tdgtdgttdgksnJ t tdgtdgttdgksJ t g g tg ksJ t g tddgtg ksJ t tddgg tg ksJ t tddgtddgttddgksJ t tddgtddgttdd	gks<J tg d
t} tg dt}tg dt}t | |t|ks|J t || t|ksJ tg dt} tg dt}t | | t|ksJ td}t |d|dg|d|dg||d|dgksJ tg dt}tg dt}tg dt}t ||t|ksFJ tg dt}tg dt}tg dt}t ||t|ksJ d S )NrQ   rW   rR   #   rP   rV   rU   re   1   )rU   r   r   rX   rQ   rP   )rV   r   rQ   r   )	rr   r   rU      rV   rs   rQ   rP   r   rP   r   r   rQ   rR   	rV   r   r   rV      r   rQ   rs   r   rX   )O   rY   N   r       r   rP      I   *   U   M   S   r   _   %   r   r   C      L   rP   F   r   A   9   r   r   a   Y   !   r   Q   r   <   +      ,      r   r   r   rU   5      r   B   rQ   r   b   r   rX   rh   r   rr      r      r   7   r   D   r   T   ^   -   r   \   r   r   r   rh   K   r   [   r   "   rs   r   r   r   r   rX   r      r   :   r      r   r   rR   r   r   r   r   r   r   r   rW   3   r   r   r   r   r   r   R   r   r   r   r   r   r   r   r   r  ?   r   r   rX   r   r   rU   rU   .   r   >   X   r   r  rY   r   H   rs   r   r  r   r   r   r   r   r   r   r   r   d   r   r   r   r   r  4   V   r   r   r   r   r   r   r   r   r  (\  r   r   rQ   Z   r   r   r      r   r   2   r   r      rQ   r   r   r   J   P   r   r   r   )   r      r  r   r   E   r   r   r   rs   r   r   r   r   r   r   r   r	  r   r  r   r   r   r   r  r   r  r   r   r  r   r   r   r  rW   r  r   r   r  r  r   r   r   r   0   r   r   r   r   rq   r   r   r   =   r   r  r   r"  r   r   r   rP   rX   r   r   r   r*  r   r   r,  rY   r&  `   r   r   r   8   r   r  r  r0  r  r  r   r   r   r   r   r   r   r   r"  (   r   r   r   r  r   r   r  '   r   r   rs   W   @   r   r   r   re   r  r   r   r   r   6   r1  r   rX   r  r  r,  r   r7  r   r   r   r   r   r   r   r   r&  r   $   r   rW   r  r  r"  r  r  r   ir   r   r   r   rV   r3  r8  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   r3  r   &   r   r<  r  r   r   r7  r  r  r      r   r   r   r   r  r   r   rr   rr   r   r  r:  r)  r  r  r  r  r  r   r  r:  r   r   r   r   r   r   r   r   rQ   r   r   rh   rh   r/  r   r   r   r)  r   r   r  r   r   r!  r!  rW   r   r   r  r4  r   rW   r   r8  r   r   r   r:  r   r   r%  r   r   r  r   r   r   r	  r6  r   r   r   r  r  r   r   r  r   r  r   r   r   r>  r   r   r	  r   r   r   r   r=  r   rr   r   r   r  r   r   r   r  rh   r  r   r   r   (C  i  ii`  ii  i-  iA  iigiiY  ii_  iOi.  iin%  i0$  io  i[  i	J  i5'  i\ii*  ii?i  i*  iizi?  iDz  i`  i|  i  i  ii  i=  is  i  i|  i  ivki}i%  r@  iQi  i`iHii4  iw  i%  i3Uii,  ii  ii  iY  i}i|idi"li޷iiti\ioiiiNb  iiM  i2  iMiiKl  i#iiiiwN  i$iZi  iQ  i9i%}  5ig  ivF  i;if|  ii4ii0  ib  i&Mi^  i'iHi>iiTiߟir$  iuii'  ixiciL  iilg  iiU  i  ip  iXi  i  i0  i5i,  i iCi7  i  ibi/ i_  iYir  i  iM6  iiS  ii|d i  iY ii ii  iPi#i<  iii  i+  ii  i  iiii9i0|iiibiE  itiy  ii:  id  i ii iii  iwi% iW i  iiiiHxii*Fi[iiuUi+iieiy;  izi+  ii<i  i  i/8  iiihihsi  ii, iPi  i#  ibcii3  i*  iI6i&  i6/  iij ioiiѶiI  i?  i)  iii)  iii  iN  ii i߷  i  iϱ  ii<D  i!i1 iiwiix  isw i!  i]  ii}  i[  i  iiyai  io  i1zi'aidaimiVi  iiԔ i iiiIviJ
  i/  i iVK  ixii&i$c  iy`i"i4i  iOij  ii  i}i3  i4i\i i i  iri^ialiH
ii  ii i]  i.  iv  i  i  ii  i!ii  i^N iii
igi!  ivrA  iZ  i'  i  iZiini2 i~  i  iRiorili  iiia  i  iii71  i\ih  i  iiƺ  ii0  ii(ioifi  ii+i i3i" i+G  i8 ii_ iD  i%}ii  imi i9  i=Ri0*  ii2i  iYV  it  ii5  i  i  i.!  i$  ii>{  ii  i1iiK  iO  i'ii{i}i  i_ii	i;  i  iiI  ig  iI  iifiDii  i2  i!陏iE  iiiiii`  is  i* i  iJiiWii.i]  iiܧ  i  i(q  iizi"_  i\ih  i  iiSiiOQii/iii{  iY  iiii4  i"  iw iI  i  i i  i.  iM\iO  ii  (iDie  i  iat  iz  iIio  iF  iO  i$  iS  iƔiOii^iYii*  iiSif  i9  iy  ini&  iii3.  i*iiw i_  iiwii	OiA#  [ioui]+  iv-  iq  i  i\i$  io5  i  i6  ii?  i   iWisiziAi&  iw  io  i7O  iiiyiii^  iC  ie  i'ii9i<i$X  ii  i-  in  iiiiix}  iiK,  i{ii  i i%iWrD  iU  ild  i   i  ii  iQ  iN  iX  i-  i3  i	  ii7iEii8i  iiiirii  i	  i  ii|)r   r%  r   r&  rr   r   r   r   r   r   r4  r  r   r   r   r   r   rV   r   rX   r   r   r   r   i/   r  r   r  r   r   r   r  r"  r&  r5  r   r   r   r  rY   r2  r   r   r   r   r   r  r"  r   r   r   r   r$  r	  rr   r   r   ir   r   r.  r%  r  rQ   G   rV   rr   r)  rV   r   r  r   rW   r)  r  r  r   r   r   r   r   r)  r%  r   rF  r   r   r4  r   r   r   r   r   r   r  r>  r   r  r  r  r0  r   r   r2  r/  r  r(  r   r   r   r   r  r>  r   r   r   r  r   r   rU   r:  r)  r   r&  r   r   r   r   r   r$  r  r  rs   r(  r   r  r   r  r6  r  r   r   r  r   r   r   rr   r   ;   r   c   r   r   r   r  r   r   rQ   r   r   r  r   r  r   r   r   r5  r  r   r   rq   r   r1  r;  r#  r4  r   r   r	  r   r   r   r   r   r.  r6  rH  r  r   r   r%  r   r   r   r%  rV   r   r   r/  r	  r   r   r   r   r   rs   r  r   r   r(  r   r   r   r  r  r   r0  r   rU   r1  r   r   r  r   r   r   r   r3  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  r=  r   r   r   r   r   r   r  r   r   r  r   r  r   r   rV   rF  r   r   r   rH  r  r  rI  r   r$  r5  r   r  r   r5  rH  r   r(  r   r   r3  r   rV   r   r  r   r   r.  r   rU      r0  r9  r   r   r   rX   r   r   r2  r   r  r8  r   rH  r   r   r7  r   r:  r!  r   r  r   r   r   r   r   r   r   r   rG  r   r  r-  r0  r   rh   rY   r0  r   r   r   r   r:  rG  r   r   r   r  rI  r  r;  rW   r7  r   r(  r*  r   r   r  r   r   r  r4  r   r   rQ   r   r?  r  r   r   rU   rr   r  r   r  r'  r   r   r   r   r   r   rW   r   r   ]   r   r   r  r  r   rM  rI  r  r   r  r   r   r   r/  r   r   r   rM  r   r   r   rK  r   r   r
  r   r   r<  r!  r   r  r   r  r   r   rF  r   r  r   r  r   r  r   r   r   r   r   rX   r   r   r   re   r   rM  r   r   r  r  r  r   r  rH  r5  r   r   rK  r   r   r'  r+  r,  r  r   rW   r   rJ  r   r   r	  r   r   r   r   r   r  r=  r   r  r  r  rQ   r   r   r  r   r)  r  r  r   r   r9  r=  r   r/  r   r   r  r   r  r   r   r   r   r,  r   rU   r   r   rP   r*  r   r   r   r   r   r   r   r  r   rV   r  r   r  r  r   r>  r   r  rH  r   rI  r  r   rL  r'  r   r   r   r:  r?  r   r   (  i  i$  i4iiiil  iii6  iA  i?,  idiiC  i+R  iii>  i  iis"  iD  i'  i  ii!  ii  ic  i5&  i/     i=I  iiik  i;ii1  i  ii/L  ii  ivi  i$\  iƐiu  i  ii[.i?iir  i  iV  iii8  iwii<  i  iS;  i:iiibi  i\  iViiA  ibI  i/  i^`  iy  i  ikii  ivii)Q  iL  iP  iڃ  iiUi}  i  iяi0ii5  i|-  iD  i(i\  ii  iQ  i  ii  iix`i`M  iHiZ  i  iqb  iG$  il  ii%  i6i3  i<  i  i_N  i  i-  ij  ivimi6  iʀ  i2ik  ios  iv igiXli(i   i  iˎi(i  iPiSi  iŒ  iii{iiU|igiizD  i  i
  iU$ib  iiiMiC ii\Ri i9  iia(  iN  iuiS)i  i  i8H  ir  i%  iid  i0 iii  i	  i5iiA iei  i  i  i0iʷ  i	f  i![i4 ii	  iipq  i]iHix[  ii?Si@YiiM  i  iw=  i,  i ifiJ  i9  i  ii@  ih i  i  i i  i iiiFiwi'  in i"  iG  iJ  iBr  iR!  i  ii<iiiT  i   izsi5 iii{  iiii**  iia  i  i6i wiy it  iM  i+ioiWiDid ihijisii.  iv  iS\i/]iNz  iNm  iH  i@  iJ  i(iۂ  iu  ii]  iz  ii\  i=i&iieiirE  i%i9iyw  i!  iJ  iiY iH   i-ci_i i
2  ii ii  i\i i^  i: i4  i&  i  i@i  iiiS i.i  iJo  i= iT  i i
  ivi  ip  ibi=  i6  i/  iPi9  iw  i;@iiGq  i  i  iiii)  imGi,  i*  iiiW  ii&  isiaiiu  i  i  i;  i iT  i
iS3 iUi5  i,  i6i.i-ii  iXi~iii  i1i8  ikin  iWdi{rC  i|D i:iǙifIi1  i  isiqiu  i2i  iX  iӉi3iVii  i9ig7  ii-i  i7i  ii i.  i  i`  i  i  i  iR  iii§i{  im i^  iiiiH  iYF  ii1  iiisO  i  ii.iiG  i=  i  i;  iLb  iHip(  iqi  iT  ii)i i}iiˁ  i  iR  i,i^h  iݯi)  i  r  i^  iuiii  i  iABicC  i>in  iii  iim  iib  iii  ii[n  iitiiѝiI  iiyi5iC  iio~ip  iiiDB  i	i[i"7  i7ii  ii-i  iD  iPrB  iL&  iiu
  io  iii\  ii  i0  i4"  itiwii  iR  iiO  iii	  i{.  i  i
iX  iQ   is+  i\i  iniv/  iti  is  iJi	  i)r   rG   rH   r   rF   )rL   rk   hKp1p2resrJ   rJ   rM   test_dup_mul  sP    &&..:=?8:rU  c                  C   s  t tdgtdgdtttdgtdgtks6J t tddgtddgdtttddgtddgtkstJ t g ggg ggdtg ggksJ t tdgggg ggdtg ggksJ t g ggtdgggdtg ggksJ t tdgggtdgggdttdgggksJ t tdgggtdgggdttdgggksRJ t g ggg ggdtg ggksvJ t tddgggg ggdtg ggksJ t g ggtddgggdtg ggksJ t tddgggtddgggdttddgggks
J t tddgggtddgggdttddgggksFJ td} t | dg| dgg| dg| d	ggd| | dg| d	ggksJ d S )
NrW   rR   r   rU   rP   rQ   r   rX   rV   )r   rG   r   rH   rF   rQ  rJ   rJ   rM   test_dmp_mul  s,    "((66$,,<<(rW  c                  C   s0  t g tg ksJ t tdgttdgks0J t tdtdgttdtdtdgks`J t g tg ksrJ t tddgttddgksJ t tddtddgttddtddtddgksJ tg dt} t | ttg dtksJ td}t |d|dg||d|d	gks,J d S )
NrP   rV   rQ   rU   r   r   r   rX   rR   )r    rG   rH   r   rF   )rL   rQ  rJ   rJ   rM   test_dup_sqr  s    0":rX  c                  C   s   t tdtdgdtttdtdgtks2J t g ggdtg ggksNJ t tdgggdttdgggksvJ t g ggdtg ggksJ t tddgggdttddgggksJ td} t | dg| dggd| | dg| dggksJ d S )	NrQ   rP   r   rV   rU   r   rX   rR   )r!   rG   r    rH   rF   rV  rJ   rJ   rM   test_dmp_sqr  s    (,rY  c                  C   s  t g dttdgksJ t g dttdgks4J t g dtg ksHJ t g dtg ks\J t tdgdttdgks|J t tdgdttdgksJ t tdgdttdgksJ t tdgdttdgksJ t tdgdttdgksJ t tdgdttdgksJ t tddgdttddgksDJ t tddgdttddgksjJ t tddgdttddgksJ t tddgdttddgksJ t tddgdttddgksJ t tddgdttddgksJ tg dt} t | dttdgtks.J t | dttg dtksNJ t | dttg d	tksnJ t | dttg d
tksJ d S )Nr   rQ   rR   rU      r   rP   r   )rh   r   r   rr   r   r   rX   r   i&  rQ   r      iW  )r"   rG   rH   r   rZ   rJ   rJ   rM   test_dup_pow  s.         "&&&&&&  r]  c                  C   s  t g gddttdggks J t g gddttdggks@J t g gddtg gksZJ t g gddtg gkstJ t tdggddttdggksJ t tdggddttdggksJ t tdggddttdggksJ t tddggddttddggksJ t tddggddttddggks>J t tddggddttddggksjJ tg dt} t | ddtt| dtksJ d S )	Nr   rQ   rR   rU   rZ  r[  r   rP   )r#   rG   rH   r   r"   rZ   rJ   rJ   rM   test_dmp_pow  s      &&&,,,r^  c                     s  t g dt t g dtt ddgt} t ddgt}t t| |fksPJ t t| ksdJ t t|ksxJ tt fdd t g dt t g dtt ddgt} t ddgt}t t| |fksJ t t| ksJ t t|ksJ tt fd	d d S )
NrU   rQ   rQ   rW   rW   r   rQ   re   rs   r  o   c                      s   t  tS N)r+   rG   rJ   rj   rJ   rM   rv     rO   ztest_dup_pdiv.<locals>.<lambda>c                      s   t  tS rb  )r+   rH   rJ   rj   rJ   rM   rv     rO   )r   rG   r(   r*   r)   rI   rD   rH   qrrJ   rj   rM   test_dup_pdiv  s     rf  c                     sj  t dgg g dgdt t dgddggdtt dgddggdt} t g dgdt}t dt| |fkspJ t dt| ksJ t dt|ksJ tt fdd t dgg g dgdt t dgd	dggdtt dgddggdt} t g d
gdt}t dt| |fks"J t dt| ks:J t dt|ksRJ tt fdd d S )NrQ   rS   rY   r   rP   r   r   c                      s   t  dtS NrQ   r/   rG   rJ   rj   rJ   rM   rv   "  rO   ztest_dmp_pdiv.<locals>.<lambda>rP   r   )rh   r   r   c                      s   t  dtS rh  ri  rJ   rj   rJ   rM   rv   .  rO   )r   rG   r,   r.   r-   rI   rD   rc  rJ   rj   rM   test_dmp_pdiv  s     rj  c                  C   sP   t tdd  tg dt} tg dt}g |  }}t| |t||fksLJ d S )Nc                   S   s   t g dg tS Nrb   )r0   rG   rJ   rJ   rJ   rM   rv   2  rO   z!test_dup_rr_div.<locals>.<lambda>r_  r`  )rI   ry   r   rG   r0   rL   rk   rd  re  rJ   rJ   rM   test_dup_rr_div1  s
    
rm  c                  C   sH  t tdd  tdgg g dgdt} tdgddggdt}tdgddggdt}tg dgdt}t| |dt||fks~J tdgg g dgdt} tdgddggdt}tdgddggdt}tg dgdt}t| |dt||fksJ tdgg g dgdt} tdgd	dggdt}g g|  }}t| |dt||fksDJ d S )
Nc                   S   s   t ddgdggg gdtS NrQ   rP   rU   )r1   rG   rJ   rJ   rJ   rM   rv   =  rO   z!test_dmp_rr_div.<locals>.<lambda>rQ   rS   rY   r   rg  rP   r   )rI   ry   r   rG   r1   rl  rJ   rJ   rM   test_dmp_rr_div<  s    ro  c                  C   sn   t tdd  tg dt} tg dt}tddtddg}td	dtd
dg}t| |t||fksjJ d S )Nc                   S   s   t g dg tS rk  )r2   rH   rJ   rJ   rJ   rM   rv   X  rO   z!test_dup_ff_div.<locals>.<lambda>r_  r`  rU   rW   rs   r  r  ra  )rI   ry   r   rH   r2   rl  rJ   rJ   rM   test_dup_ff_divW  s    rp  c                  C   s  zddl m}  W n ty$   Y d S 0 ddlm} | }| dd| ddg}| ddg}t||d|| dd| ddgg fksJ | dd| dd| dd| dd	g}| d
d| dd| d
dg}t||d|| d
d| ddg| dd| ddgfk sJ d S )Nr   )mpq)GMPYRationalFieldrQ   rU   rP   rX   rV   rW   rY   r   rR   rr   r   r   )Zgmpy2rq  ImportErrorsympy.polys.domainsrr  r3   )rq  rr  rQ  rL   rk   rJ   rJ   rM   test_dup_ff_div_gmpy2b  s    *$ru  c                  C   s  t tdd  tdgg g dgdt} tdgddggdt}tddgtddtddgg}tddtddtddgg}t| |dt||fksJ tdgg g dgdt} tdgddggdt}tddgtddtddgg}tddtddtddgg}t| |dt||fksJ tdgg g dgdt} tdgddggdt}tddgtddtddgg}tddtddtddgg}t| |dt||fksJ d S )	Nc                   S   s   t ddgdggg gdtS rn  )r3   rH   rJ   rJ   rJ   rM   rv   t  rO   z!test_dmp_ff_div.<locals>.<lambda>rQ   rS   rY   r   rP   r   )rI   ry   r   rH   r3   rl  rJ   rJ   rM   test_dmp_ff_divs  s        rv  c                     s   g dg dg dddgf\ } }t  t| |fks<J t t| ksPJ t t|ksdJ tt fdd g dg d	d
dgg df\ } }t  t| |fksJ t t| ksJ t t|ksJ tt fdd d S )NrW   rV   rU   rP   rQ   rb   rW   r   r   r   rQ   c                      s   t  tS rb  r7   rG   rJ   rj   rJ   rM   rv     rO   ztest_dup_div.<locals>.<lambda>)rW   rV   rU   rP   rQ   r   )rQ   rP   r   r   r   rW   r   )re   rP   r   r9  c                      s   t  tS rb  ry  rJ   rj   rJ   rM   rv     rO   )r4   rG   r6   r5   rI   rD   rc  rJ   rj   rM   test_dup_div  s    $$rz  c                     s
  g dg dg dddgf\ } }t  dt| |fks>J t dt| ksTJ t dt|ksjJ tt fdd dgggd	ggdggg ggdgggf\ } }t  d	t| |fksJ t d	t| ksJ t d	t|ksJ tt fd
d d S )Nrw  rb   rx  r   rQ   r   c                      s   t  dtS )Nr   r;   rG   rJ   rj   rJ   rM   rv     rO   ztest_dmp_div.<locals>.<lambda>rP   c                      s   t  dtS )NrP   r{  rJ   rj   rJ   rM   rv     rO   )r8   rG   r:   r9   rI   rD   rc  rJ   rj   rM   test_dmp_div  s    $.r|  c                   C   s@   t g tdksJ t dgtdks&J t g dtdks<J d S )Nr   rQ   rQ   rV   rP   rU   rV   )r<   rG   rJ   rJ   rJ   rM   test_dup_max_norm  s    r~  c                   C   sJ   t g ggdtdksJ t dgggdtdks2J t tdtdksFJ d S )NrP   r   rQ   rX   )r=   rG   r]   rJ   rJ   rJ   rM   test_dmp_max_norm  s    r  c                   C   s@   t g tdksJ t dgtdks&J t g dtdks<J d S )Nr   rQ   r}  rq   )r>   rG   rJ   rJ   rJ   rM   test_dup_l1_norm  s    r  c                   C   sJ   t g ggdtdksJ t dgggdtdks2J t tdtdksFJ d S )NrP   r   rQ   r  )r?   rG   r]   rJ   rJ   rJ   rM   test_dmp_l1_norm  s    r  c                   C   s@   t g tdksJ t dgtdks&J t g dtdks<J d S )Nr   rQ   r}  r   )r@   rG   rJ   rJ   rJ   rM   test_dup_l2_norm_squared  s    r  c                   C   sJ   t g ggdtdksJ t dgggdtdks2J t tdtdksFJ d S )NrP   r   rQ   ra  )rA   rG   r]   rJ   rJ   rJ   rM   test_dmp_l2_norm_squared  s    r  c                   C   sX   t dtdgksJ t g dddgg dfttg dtddgg dttksTJ d S )NrJ   rQ   rb   rP   )rR   rW   rV   rU   )rB   rG   r   rJ   rJ   rJ   rM   test_dup_expand  s    r  c                	   C   s   t ddtdggksJ t dgdgdggdgdggdgdgdgdggfdttdgdgdggtdgdggdgdgdgdggdtdtksJ d S )NrJ   rQ   rP   rU   rR   rW   rV   )rC   rG   r   rJ   rJ   rJ   rM   test_dmp_expand  s    4$r  N)__doc__Zsympy.polys.densebasicr   r   Zsympy.polys.densearithr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   Zsympy.polys.polyerrorsrD   Zsympy.polys.specialpolysrE   rt  rF   rG   rH   Zsympy.testing.pytestrI   r]   Zf_1Zf_2Zf_3Zf_4Zf_5Zf_6r^   r[   r_   r`   ra   rd   rf   rl   rm   rn   ro   rp   rt   rz   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   rU  rW  rX  rY  r]  r^  rf  rj  rm  ro  rp  ru  rv  rz  r|  r~  r  r  r  r  r  r  r  rJ   rJ   rJ   rM   <module>   sz    	 d 