U
    L?h                     @   s6  d Z ddlmZ ddlmZmZ ddlmZmZm	Z	m
Z
mZ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@mAZAmBZBmCZCmDZDmEZEmFZF ddlGmHZH ddlImJZJ ddlKmLZLmMZMmNZN ddlOmPZP d	d
 eJ D \ZQZRZSZTZUZVZWeeeQdeNeNdddeN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,d- Zhd.d/ Zid0d1 Zjd2d3 Zkd4d5 Zld6d7 Zmd8d9 Znd:d; Zod<d= Zpd>d? Zqd@dA ZrdBdC ZsdDdE ZtdFdG ZudHdI ZvdJdK ZwdLdM ZxdNdO ZydPdQ ZzdRdS Z{dTdU Z|dVdW Z}dXdY Z~dZd[ Zd\d] Zd^d_ Zd`da Zdbdc Zddde Zdfdg Zdhdi Zdjdk Zdldm Zdndo Zdpdq Zdrds ZdtS )uz4Tests for dense recursive polynomials' arithmetics.     )GROUND_TYPES)
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frK   rK   S/var/www/html/venv/lib/python3.8/site-packages/sympy/polys/tests/test_densearith.py
<listcomp>1   s     rO            c               	   C   s  t g t} t| tddtt g tks*tt| tddtt dgtksLtt| tddtt ddgtksptt| tddtt dddgtkstt dddgt} t| tddtt dddgtkstt| tddtt dddgtkstt| tddtt dddgtkstt| tddtt ddddgtksDtt| tddtt dddddgtksptt| tddtt ddddddgtkstt| tddtt dddddddgtkstt| tddtt ddgtkstd S )	Nr   rQ   rP               )r   rH   r   AssertionErrorrM   rK   rK   rN   test_dup_add_term4   s*    
 "$&&&(*,.   
rZ   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sNtt tg gddttkshtt tg gddttkstd S NrQ   rP   r   rS   )r   rH   r   rX   f_0F_0rI   rK   rK   rK   rN   test_dmp_add_termL   s
    $"r^   c               	   C   s  t g t} t| tddtt g tks*tt| tddtt dgtksLtt| tddtt ddgtksptt| tddtt dddgtkstt dddgt} t| tddtt dddgtkstt| tddtt dddgtkstt| tddtt dddgtkstt| tddtt ddddgtksDtt| tddtt dddddgtksptt| tddtt ddddddgtkstt| tddtt dddddddgtkstt| tddtt ddgtkstd S )	Nr   rQ   rW   rP   rS   rT   rU   rV   )r   rH   r   rX   rY   rK   rK   rN   test_dup_sub_termS   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sNtt tg gddttkshtt tg gddttkstd S r[   )r   rH   r   rX   r\   r]   rI   rK   rK   rK   rN   test_dmp_sub_termk   s
    $"r`   c                  C   s  t g t} t| tddtt g tks*tt ddgt} t| tddtt g tksXtt dddgt} t| tddtt dddgtkstt| tddtt ddddgtkstt| tddtt dddddgtkstt| tddtt ddddddgtkstd S )NrP   rS   rQ   r   rT   rV   )r   rH   r	   rX   rY   rK   rK   rN   test_dup_mul_termr   s    
  &(*ra   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sNtt g gtdgddtg gksptt tdggg ddtg gkst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stt g gtddgddtg gkstt tddggg ddtg gks,t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std S )	NrQ   rP   rS   r   rT   rV   rU      )r
   rH   r	   rX   rI   rK   rK   rK   rN   test_dmp_mul_term   s    $"""*&&2"rc   c                  C   s@   t ddddg} t ddddg}t| t dt |ks<td S NrQ   rP   rS   rT      )rH   mapr   rX   rM   grK   rK   rN   test_dup_add_ground   s    ri   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sNtd S rd   )rH   rf   r   rX   rg   rK   rK   rN   test_dmp_add_ground   s    rj   c                  C   s@   t ddddg} t ddddg}t| t dt |ks<td S )NrQ   rP   rS   rT   r   )rH   rf   r   rX   rg   rK   rK   rN   test_dup_sub_ground   s    rk   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sLtd S )NrQ   rP   rS   rT   )rH   rf   r   rX   rg   rK   rK   rN   test_dmp_sub_ground   s    rl   c                  C   s~   t g t} t| tdtt g tks(tt dddgt} t| tdtt g tksVtt| tdtt dddgtksztd S )NrP   rQ   rS   r   rT   rV   )r   rH   r   rX   rY   rK   rK   rN   test_dup_mul_ground   s
    
rm   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stt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td S )NrP   rT   rV   re   
      rQ      rS   rU   )r   r\   rH   rX   r]   rI   rK   rK   rK   rN   test_dmp_mul_ground   s    
2
&*
rq   c                  C   s.  t tdd  tg t} t| tdttg tks6ttdddgt} t| tdt| ks^tt| tdttdddgtkstt| tdttdd	dgtksttdddgt} t| tdt| kstt| tdttdtdtdgkstt| td
ttdd
tdd
tdd
gks*td S )Nc                   S   s   t tdddgttdtS NrQ   rP   rS   r   )r   r   rH   rK   rK   rK   rN   <lambda>   s    z%test_dup_quo_ground.<locals>.<lambda>rS   rV   rP   re   rQ   rT   r   rR   )rJ   ZeroDivisionErrorr   rH   r   rX   rI   rY   rK   rK   rN   test_dup_quo_ground   s    
$$*ru   c                  C   s  t tdd  t tdd  tg t} t| tdttg tksDttdddgt} t| tdt| ksltt| tdttddd	gtksttdddgt} t| tdt| kstt| tdttdtdtd	gkstt| td
ttdd
tdd
tdd
gkstd S )Nc                   S   s   t tdddgttdtS rr   r   r   rH   rK   rK   rK   rN   rs      s     z'test_dup_exquo_ground.<locals>.<lambda>c                   S   s   t tdddgttdtS NrQ   rP   rS   rv   rK   rK   rK   rN   rs      s     rS   rV   rP   re   rQ   rT   rR   )rJ   rt   rE   r   rH   r   rX   rI   rY   rK   rK   rN   test_dup_exquo_ground   s    
$*rx   c                  C   s   t dgdgdggdt} t| tddt| ks2tt| tddtt dgdgdggdtks`tt t| tddtdtt dgg dggdtkstd S NrV   rP   re   rQ   rS   rT   )r   rH   r   rX   rY   rK   rK   rN   test_dmp_quo_ground   s*           rz   c                  C   sd   t dgdgdggdt} t| tddt| ks2tt| tddtt dgdgdggdtks`td S ry   )r   rH   r   rX   rY   rK   rK   rN   test_dmp_exquo_ground  s       r{   c                   C   s6   t g dtg kstt dgdtddddgks2td S NrS   rQ   r   )r   rH   rX   rK   rK   rK   rN   test_dup_lshift	  s    r}   c                   C   s6   t g dtg kstt ddddgdtdgks2td S r|   )r   rH   rX   rK   rK   rK   rN   test_dup_rshift  s    r~   c                   C   s"  t g tg kstt tdgttdgks0tt tdgttdgksNtt tdtdtdgttdtdtdgkstt g tg kstt tddgttddgkstt tddgttddgkstt tddtddtddgttddtddtddgkstd S )NrQ   rR   rW   rP   rS   )r   rH   rX   rI   rK   rK   rK   rN   test_dup_abs  s    6"" r   c                   C   s*  t tdgdttdgks tt tddgdttddgksDtt g ggdtg ggks`tt tdgggdttdgggkstt tdgggdttdgggkstt g ggdtg ggkstt tddgggdttddgggkstt tddgggdttddgggks&td S NrW   r   rQ   rP   r   rR   	   )r   rH   rX   rI   rK   rK   rK   rN   test_dmp_abs   s     $((,r   c                   C   s"  t g tg kstt tdgttdgks0tt tdgttdgksNtt tdtdtdgttdtdtdgkstt g tg kstt tddgttddgkstt tdd	gttdd	gkstt tddtddtddgttddtddtddgkstd S )
NrQ   rW   r   rR   rP   rS   r   )r   rH   rX   rI   rK   rK   rK   rN   test_dup_neg-  s$    6""  r   c                   C   s*  t tdgdttdgks tt tddgdttddgksDtt g ggdtg ggks`tt tdgggdttdgggkstt tdgggdttdgggkstt g ggdtg ggkstt tddgggdttddgggkstt tddgggdttddgggks&td S r   )r   rH   rX   rI   rK   rK   rK   rN   test_dmp_neg:  s     $((,r   c                   C   s  t g g tg kstt tdgg ttdgks4tt g tdgttdgksTtt tdgtdgttdgksztt tdgtdgttdgkstt tdtdgtdgttdtdgkstt tdgtdtdgttdtdgkstt tdtdtdgtdtdtdgttdtdtdgksRtt g g tg kshtt tddgg ttddgkstt g tddgttddgkstt tdd	gtdd	gttddgkstt tdd	gtddgttdd	gkstt tddtddgtdgttddtd
dgksLtt tdgtddtddgttddtd
dgkst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std S )NrQ   rP   rS   re   r   rn         rT   rU   rR   )r   rH   rX   rI   rK   rK   rK   rN   test_dup_addG  sF      &&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sBt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stt g ggg ggdtg ggkstt tdgggg ggdttdgggkstt g ggtdgggdttdgggkstt tdgggtdgggdttdgggksBtt tdgggtdgggdttdgggksxtt g ggg ggdtg ggkstt tddgggg ggdttddgggkstt g ggtddgggdttddgggkstt tddgggtddgggdttddgggks@tt tddgggtddgggdttddgggks|td S )NrQ   rP   r   rS   rR   )r   rH   r   rX   rI   rK   rK   rK   rN   test_dmp_adda  s     " ".066$44<r   c                   C   s  t g g tg kstt tdgg ttdgks4tt g tdgttdgksTtt tdgtdgtg ksttt tdgtdgttdgkstt tdtdgtdgttdtdgkstt tdgtdtdgttdtdgkstt tdtdtdgtdtdtdgttdtd	td
gksJtt g g tg ks`tt tddgg ttddgkstt g tddgttddgkstt tddgtddgtg kstt tddgtddgttddgks tt tddtddgtdgttddtddgks<tt tdgtddtddgttddtddgksxt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std S )NrQ   rW   rP   rS   re   r   rn   r   rR   rU   )r   rH   rX   rI   rK   rK   rK   rN   test_dup_subt  sF       &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sBt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stt g ggg ggdtg ggkstt tdgggg ggdttdgggkstt g ggtdgggdttdgggkstt tdgggtdgggdttdgggksBtt tdgggtdgggdttdgggksxtt g ggg ggdtg ggkstt tddgggg ggdttddgggkstt g ggtddgggdttddgggkstt tddgggtddgggdttddgggks@tt tddgggtddgggdttddgggks|td S )NrQ   rP   r   rS   rW   rR   )r   rH   r   rX   rI   rK   rK   rK   rN   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^t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std S )NrQ   rP   rS   r   rR   rU   rT   )r%   rH   rX   r&   rK   rK   rK   rN   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^t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std S )	NrQ   rP   rS   r   r   rW   r   )r'   rH   rX   r(   rK   rK   rK   rN   test_dup_sub_mul  s    * 2  &r   c               D  C   s  t g g tg kstt g tdgtg ks.tt tdgg tg ksHtt tdgtdgttdgksntt tdgtdgttdgkstt g g tg kstt g tddgtg kstt tddgg tg kstt tddgtddgttddgkstt tddgtddgttdd	gks<ttdd
d
dddgt} tdd
dd
gt}tdd
ddddddd
g	t}t | |t|kstt || t|ksttdd
d
ddgt} tdd
d
ddd
ddd	g	t}t | | t|ksttd}t |d|dg|d|dg||d|dgks4t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+d,d-d.d/d0dd1d-d2d3d4d5d6d7d8d9d:d*d)d;d<d=d>d?d@dAd@dBdCd,dDdEdFdGdHdIdJdKdd*dAddLdMdNdOdPdQdBdRdSddTdUd/dVdWdMdXddYddZd[d\dd]d^d_d`d8dadbdcddded&dfdgdhdDdidddTdjddYdkddld9dmddnd%d3ddoddpdqd<drdsdtdJdudvd$dddwd.dmd-dxd@dyddFdzdd{d|d+d}dyd'd~dndFd8ddd!dddVd`dd|dZd[d~dd:d0dddSdd0dddddkddddd>d~ddddddddtddKddXdEdqdSd6dWd1ddpdNdddddd3ddxd#dNdxdFd!ddd}gt}td3dddddCd+d ddTdvdddd6ddd1dbddddd3dJddRdddddEddddmd]ddCd9dTdd;ddSdddfddpdBddddd(ddbd~ddddtdCd8dddded'd~ddfdIdadUddd,dd)dBdPdd-drdsddd0dd6dddd)dddd/dzddddRdjdddddd@d)dddwdddddd,dGddddld5ddNddd7dddIdddpdHddd|ddddddJdodsdddTdOd\d9ddd;ddddddd.dedfdKd!d	dTddd[ddRddd~dddd$dd9d]dGdodddddEdJdGdd6dXddddddwdddJddgdKdMdd{ddddddqd_d$ddzd|ddKdddSdd.dddd:ddddddd<dNd^dWdddiddd1ddddddddd7dddxddcdDdd1dad
ddGd]dYddYdd&dBdFdddcd~dId:dddd.d>ddddd=dddd{ddsdOddgd7ddWddddddXdzdEddd)dHddRdd%dBdsdd@dddqdsdWd]ddUddud^d}dd/dddYdd'dZd$g\t}tdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd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d d!d"d#d$d%d&d'd(d)d*d+d,dd-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydz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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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ڐ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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ddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydz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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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ڐ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ddddgCt}t ||t|kszttdddcdddFd\d_ddaddd"dUd7dddOddhdd+ddd3ddddrddCd'dEddddd?d8dkdddd+dEd]ddd1dddd\d'dedddddd dBdqddddddddddmddTdddddQdWddrdddd[dd3ddd*dzdMdxddRddd$dddddwd
ddd}dddUdwdd}ddIdd#dd:d1dddd0dd6dQdWddddddddgdd+dddd]d3dd	dwdbdddbdddd!d-dVddGddHdd{drdd.dddd_dddJdPddfdddddd1ddMdyd[ddVdddddddd8d5dVdddd#dddLd)d^dgdhdddadfddWdDdQdddddd(dddJd'dd;dRddddyd>d;dddd.dbdd;dd_dedgt}tddd0dRdvddd.dZddDddd8dd)d]ddadd8dbdd'ddadzddd8d2d-dddddzdddddbdddDddWd>ddrddgddddSdd!dddddHdcd-dd9d$dd@ddddd8d9dd4ddd>dddXddFddd9dddddddydYdddFdhdgd5ddd?dOdddddddd(ddd0doddldxddd\d7dd"dddFdpddddOddd5dMd`d.d7d)ddAdNdddjddd'ddddcdd.ddjdd[dGdZddKd!dNddd'ddZd"ddd=ddgdd!dddmddddGddwdmdGdRdddidPd@ddCdd>d{d~dddDdddd-dPdd9d^ddddd0dd!ddSdddgdbdLdUd`ddd@dddddfdOd}d0ddddIdddd_ddSd=dddded0d4d|dd{dd$dhdddsd d8drdUd2dLddddd;ddd{ddnddd_dddXdddGdNdJddd/d)g+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(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydz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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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ڐ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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dddddd d!d"d#d$d%d&d'd(dd)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddV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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dÐdĐdŐdƐdǐdȐdɐdʐdːd̐dd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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dddddddddddddddddddd d!d"d#gt}t ||t|kstd S ($  NrQ   rU   rR   #   rP   rT   rS   rb   1   r   rV   ro      rp      O   rW   N   iir       i   I   *   U   M   S   iir   _   i%   iiiiiiiiC   i   L   F   iA   iiii9   iiiia   iY   !   iQ   <   i+      i,      i5   iiii   B   iiiib   ire   iiii   r      7   r   iD   iT   ^   -   \   iK   [   "   r   iii   r   :      r   iii3   iiiR   ii?   ii.   i>   iiX   iH   iid   4   V   r   iiiZ      i2      J   P   )      iiE   iiii0   iirn   i=   ii`   8   (   ii'   iW   @   6   $   ii&   i   ii  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|  ii  ivki}i%  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%}  i5ig  ivF  i;if|  ii4ii0  ib  i&Mi^  i'iHi>iiTiߟiiuii'  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}  ii[  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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!iiE  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  i(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#  i[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%iWiU  ild  i   i  ii  iQ  iN  iX  i-  i3  i	  ii7iEii8i  iiiirii  i	  i  ii|i/   iG   r   i;   c   i   ]   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&iieiii%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{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  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  iPiL&  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   rH   rX   rI   r   rG   )rM   rh   hKp1Zp2resrK   rK   rN   test_dup_mul  s\   &&..:                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   =?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               8:r   c                  C   s  t tdgtdgdtttdgtdgtks6tt tddgtddgdtttddgtddgtksttt g ggg ggdtg ggkstt tdgggg ggdtg ggkstt g ggtdgggdtg ggkstt tdgggtdgggdttdgggkstt tdgggtdgggdttdgggksRtt g ggg ggdtg ggksvtt tddgggg ggdtg ggkstt g ggtddgggdtg ggkstt tddgggtddgggdttddgggks
tt tddgggtddgggdttddgggksFttd} t | dg| dgg| dg| d	ggd| | dg| d	ggkstd S )
NrU   rR   r   rS   rP   rQ   r   rV   rT   )r    rH   r   rX   rI   rG   r   rK   rK   rN   test_dmp_mul  s2    "((66$,,<<   r   c                  C   sF  t g tg kstt tdgttdgks0tt tdtdgttdtdtdgks`tt g tg ksrtt tddgttddgkstt tddtddgttddtddtddgksttdddddgt} t | ttdddddddd	d
g	tksttd}t |d|dg||d|dgksBtd S )NrP   rT   rQ   rS   r   r   rR   r   rp   r   rV   )r!   rH   rX   rI   r   rG   )rM   r   rK   rK   rN   test_dup_sqr  s    0":,r   c                  C   s   t tdtdgdtttdtdgtks2tt g ggdtg ggksNtt tdgggdttdgggksvtt g ggdtg ggkstt tddgggdttddgggksttd} t | dg| dggd| | dg| dggkstd S )	NrQ   rP   r   rT   rS   r   rV   rR   )r"   rH   r!   rX   rI   rG   r   rK   rK   rN   test_dmp_sqr  s    (,r   c                  C   s  t g dttdgkstt g dttdgks4tt g dtg ksHtt g dtg ks\tt tdgdttdgks|tt tdgdttdgkstt tdgdttdgkstt tdgdttdgkstt tdgdttdgkstt tdgdttdgkstt tddgdttddgksDtt tddgdttddgksjtt tddgdttddgkstt tddgdttddgkstt tddgdttddgkstt tddgdttddgksttdddddgt} t | dttdgtks4tt | dttdddddgtksZtt | dttddddd	ddd
dg	tkstt | dttdddddddddddddgtkstd S )Nr   rQ   rR   rS      rP   rT   r   rp   r   re   ro   r   rV   i&  r      iW  )r#   rH   rX   rI   r   rY   rK   rK   rN   test_dup_pow  s0         "&&&&&&&. r   c                  C   s  t g gddttdggks tt g gddttdggks@tt g gddtg gksZtt g gddtg gksttt tdggddttdggkstt tdggddttdggkstt tdggddttdggkstt tddggddttddggkstt tddggddttddggks>tt tddggddttddggksjttdddddgt} t | ddtt| dtkstd S )Nr   rQ   rR   rS   r   r   rP   )r$   rH   rX   rI   r   r#   rY   rK   rK   rN   test_dmp_pow  s      &&&,,,r   c                     s*  t ddddgt t dddgtt ddgt} t ddgt}t t| |fksVtt t| ksjtt t|ks~ttt fd	d
 t ddddgt t dddgtt ddgt} t ddgt}t t| |fkstt t| kstt t|ksttt fdd
 d S )NrS   rQ   rU   r   rb   rp   r   o   c                      s   t  tS N)r,   rH   rK   rg   rK   rN   rs   
      ztest_dup_pdiv.<locals>.<lambda>c                      s   t  tS r   )r,   rI   rK   rg   rK   rN   rs     r   )	r   rH   r)   rX   r+   r*   rJ   rE   rI   qrrK   rg   rN   test_dup_pdiv  s     r  c                     sr  t dgg dddggdt t dgddggdtt dgddggdt} t dddggdt}t dt| |fksttt dt| kstt dt|ksttt fdd t dgg dddggdt t dgddggdtt dgddggdt} t dddggdt}t dt| |fks*tt dt| ksBtt dt|ksZttt fd	d d S )
NrQ   r   rW   rP   c                      s   t  dtS NrQ   r0   rH   rK   rg   rK   rN   rs   $  r   ztest_dmp_pdiv.<locals>.<lambda>r   re   c                      s   t  dtS r  r  rK   rg   rK   rN   rs   0  r   )r   rH   r-   rX   r/   r.   rJ   rE   r   rK   rg   rN   test_dmp_pdiv  s     r  c                  C   sV   t tdd  tddddgt} tdddgt}g |  }}t| |t||fksRtd S )Nc                   S   s   t dddgg tS rw   )r1   rH   rK   rK   rK   rN   rs   4  r   z!test_dup_rr_div.<locals>.<lambda>rS   rQ   rU   r   )rJ   rt   r   rH   r1   rX   rM   rh   r   r   rK   rK   rN   test_dup_rr_div3  s
    
r  c                  C   sR  t tdd  tdgg dddggdt} tdgddggdt}tdgddggdt}tdddggdt}t| |dt||fksttdgg dddggdt} tdgddggdt}tdgddggdt}tdddggdt}t| |dt||fksttdgg dddggdt} tdgddggdt}g g|  }}t| |dt||fksNtd S )Nc                   S   s   t ddgdggg gdtS rw   )r2   rH   rK   rK   rK   rN   rs   ?  r   z!test_dmp_rr_div.<locals>.<lambda>rQ   r   rW   rP   r   )rJ   rt   r   rH   r2   rX   r  rK   rK   rN   test_dmp_rr_div>  s    r  c                  C   st   t tdd  tddddgt} tdddgt}tddtddg}td	dtd
dg}t| |t||fksptd S )Nc                   S   s   t dddgg tS rw   )r3   rI   rK   rK   rK   rN   rs   Z  r   z!test_dup_ff_div.<locals>.<lambda>rS   rQ   rU   r   rp   r   r   r   )rJ   rt   r   rI   r3   rX   r  rK   rK   rN   test_dup_ff_divY  s    r  c                  C   s   t dkrd S ddlm}  ddlm} | }| dd| ddg}| ddg}t||d|| dd| dd	gg fkstt| 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std S )Ngmpy2r   )mpq)GMPYRationalFieldrQ   rS   rP   rV   rT   rU   rW   r   rR   ro   r   r   )r   r	  r
  sympy.polys.domainsr  r4   rX   )r
  r  r   rM   rh   rK   rK   rN   test_dup_ff_div_gmpy2d  s    *$r  c                  C   s  t tdd  tdgg dddg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sttdgg dddg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 ttdgg dddg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std S )Nc                   S   s   t ddgdggg gdtS rw   )r4   rI   rK   rK   rK   rN   rs   u  r   z!test_dmp_ff_div.<locals>.<lambda>rQ   r   rW   rP   r   )rJ   rt   r   rI   r4   rX   r  rK   rK   rN   test_dmp_ff_divt  s        r  c                     s  dddddgdddgdddgddgf\ } }t  t| |fksFtt t| ksZtt t|ksnttt fd	d
 ddddddgdddddgddgddddgf\ } }t  t| |fkstt t| kstt t|ksttt fdd
 d S )NrU   rT   rS   rP   rQ   r   r   r   c                      s   t  tS r   r8   rH   rK   rg   rK   rN   rs     r   ztest_dup_div.<locals>.<lambda>r   rb   r   r   c                      s   t  tS r   r  rK   rg   rK   rN   rs     r   )r5   rH   rX   r7   r6   rJ   rE   r   rK   rg   rN   test_dup_div  s    .6r  c                     s  dddddgdddgdddgddgf\ } }t  dt| |fksHtt dt| ks^tt dt|kstt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stt dt| kstt dt|ksttt fdd
 d S )NrU   rT   rS   rP   rQ   r   r   r   c                      s   t  dtS )Nr   r<   rH   rK   rg   rK   rN   rs     r   ztest_dmp_div.<locals>.<lambda>c                      s   t  dtS )NrP   r  rK   rg   rK   rN   rs     r   )r9   rH   rX   r;   r:   rJ   rE   r   rK   rg   rN   test_dmp_div  s    ..r  c                   C   sD   t g tdkstt dgtdks&tt ddddgtdks@td S )Nr   rQ   rT   rP   rS   )r=   rH   rX   rK   rK   rK   rN   test_dup_max_norm  s    r  c                   C   sJ   t g ggdtdkstt dgggdtdks2tt tdtdksFtd S )NrP   r   rQ   rV   )r>   rH   rX   r\   rK   rK   rK   rN   test_dmp_max_norm  s    r  c                   C   sD   t g tdkstt dgtdks&tt ddddgtdks@td S )Nr   rQ   rT   rP   rS   rn   )r?   rH   rX   rK   rK   rK   rN   test_dup_l1_norm  s    r  c                   C   sJ   t g ggdtdkstt dgggdtdks2tt tdtdksFtd S )NrP   r   rQ   r   )r@   rH   rX   r\   rK   rK   rK   rN   test_dmp_l1_norm  s    r  c                   C   sD   t g tdkstt dgtdks&tt ddddgtdks@td S )Nr   rQ   rT   rP   rS   r   )rA   rH   rX   rK   rK   rK   rN   test_dup_l2_norm_squared  s    r  c                   C   sJ   t g ggdtdkstt dgggdtdks2tt tdtdksFtd S )NrP   r   rQ   r   )rB   rH   rX   r\   rK   rK   rK   rN   test_dmp_l2_norm_squared  s    r  c                	   C   sd   t dtdgkstt dddgddgddddgfttdddgtddgddddgttks`td S NrK   rQ   rP   rS   rR   rU   rT   )rC   rH   rX   r   rK   rK   rK   rN   test_dup_expand  s     $r  c                	   C   s   t ddtdggkst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std S r  )rD   rH   rX   r    rK   rK   rK   rN   test_dmp_expand  s    4$  r  N)__doc__Zsympy.external.gmpyr   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/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   Zsympy.polys.polyerrorsrE   Zsympy.polys.specialpolysrF   r  rG   rH   rI   Zsympy.testing.pytestrJ   r\   Zf_1Zf_2Zf_3Zf_4Zf_5Zf_6r]   rZ   r^   r_   r`   ra   rc   ri   rj   rk   rl   rm   rq   ru   rx   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  rK   rK   rK   rN   <module>   s|    	 d 