a
    kh~e                  9   @   s  d dl mZmZmZmZmZmZmZmZ d dl	m
Z
mZ d dlmZmZ d dlmZ d dlmZmZmZ d dlZed\ZZZZe
g dg d	g d
g dg dg dg dg dg dg dg dgeZedd ede  Zde
g dgee
g dgeedfdeg deeg deedfde
ddgddggee
dd gd dggeedfde
dd gddggee
dd gd dggeedfd e
d dgddggee
dd gd dggeedfd!e
g dg d"g d#gee
g d$g d%g d&geedfd'e
g d&g d&g d(gee
g d(g d&g d&geedfd)e
g d&g d&g d&gee
g d&g d&g d&geedfd*e
g d+g d,g d&gee
g d+g d-g d&geedfd.e
g d/g d,g d&gee
g d+g d-g d&geedfd0e
g d/g d1g d,gee
g d(g d2g d-geedfd3e
g dg d"g d#g d4gee
g d$g d%g d&g d&geedfd5e
g dg d"g d#g d6gee
g d(g d2g d-g d&geedfd7e
g d8g d9g d:gee
g d;g d<g d=geedfd>e
g d8g d9g d?gee
g d;g d@g dAgeedfdBe
g dCg dDgee
g dEg dFgeedfdGe
g dHg dIgee
g d(g dJgeedfdKe
g dLg dMg dNg dOg dPgee
g dQg dRg dSg dTg dUgeedfdVe
g dWg d"gee
g dXg dYgeedfdZe
g dUg dUg d[gee
g d\g dUg dUgeedfd]e
g d^g d_g d`g dag dbgee
g d_g d`g dag dbg d^geedfdce
g ddg deg dfg deg dQgee
g dQg dRg dgg dTg dUgeedfdhe
g dig djg dkg dlg dmg dng dog dpg dqg drg dsg dtg dug dvg dwg dxg dyg dzg d{g d|gee
g d}g d~g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dgeedfde
g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dgee
g d}g d~g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dgeedfde
g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d¢g dâg dĢgeeedŃd eg dǢgeddŃeddgg  edƃfde
dd gd dggee
dd gd dggeedfde
d dgddggee
dd gd dggeedfde
g d̢g d͢gee
g d$g dJgeedfde
g d͢g d̢gee
g d$g dJgeedfde
dd gddgd dggee
dd gd dgd d ggeedfde
g dѢg dҢgee
g d(g d-geedfdeede edfdeede edfde
d dgd dgdd ggee
dd gd dgd d ggeedfde
g dעg dHgee
g d(g dJgeedfde
eedgeedggee
ee ee  d e e gd ee ee  ee ggeeee ee  fg$Zddڄ Zdd܄ Z ddބ Z!dd Z"ej#$dedd Z%ej#$dedd Z&ej#$dedd Z'ej#$dedd Z(ej#$dedd Z)ej#$dedd Z*ej#$dedd Z+ej#$dedd Z,ej#$dedd Z-ej#$dedd Z.ej#$dedd Z/ej#$dedd Z0ej#$dedd Z1ej#$dedd Z2ej#$dedd Z3ej#$ded d Z4dS (      )ZZQQZZ_IEXMatrixeyezerossymbols)DMDomainMatrix)ddm_irref_den	ddm_irref)DDM)SDM	sdm_irrefsdm_rref_denNz
a, b, c, d)      )r      )r      )r      )r      )r      )r      )r      )r      )r      )r      ))r   %   )r   )   )r   +   )r   /   )r   5   )r   ;   )r   =   )r   C   )r   G   )r   I   )r   O   ))r   S   )r   Y   )r   a   )r   e   )r   g   )r   k   )r   m   )r   q   )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   i  ))r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i%  )r   i3  )r   i7  )r   i9  )r   i=  ))r   iK  )r   iQ  )r   i[  )r   i]  )r   ia  )r   ig  )r   io  )r   iu  )r   i{  )r   i  )r   i  ))r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  ))r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i	  )r   i  ))r   i  )r   i#  )r   i-  )r   i3  )r   i9  )r   i;  )r   iA  )r   iK  )r   iQ  )r   iW  )r   iY  ))r   i_  )r   ie  )r   ii  )r   ik  )r   iw  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  
   d   r   Zzz_1)r   r   r   r   Zzz_2)r   r   Zzz_3r   r      Zzz_4Zzz_5Zzz_6)rL   r      )r      	   )r   r   )r   r   r   )r   r   r   Zzz_7)r   r   r   Zzz_8Zzz_9)r   r   r   )r   r   r   )r   r   r   Zzz_10)r   r   r   Zzz_11)r   r   r   )r   r   r   Zzz_12)rJ   r      Zzz_13)rJ   r   r   Zzz_14)r   r   rL   r   )rL   r   rJ   rM   )r   rN      rO   )r   r   r   rP   )r   r   r   r   )r   r   r   r   Zzz_15)r   rN   r   rO   )r   r   r   r   )r   r   r   r   Zzz_16)r   r   r   r   )r   r   rO   r   )r   r      rP   )r   r   ir   Zzz_17)r   r   r   )r   r   r   )r   r   r   Zzz_18)^      r      r   )r)   r   r   r   r   )U   rR   r'   Q   r   )r   r   H   M   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   Zzz_19)r   r   rL   )r   r   i)r   r   rJ   Zzz_20)r   r   r   r   rL   )r   r   r   r   r   Zzz_21)
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   Zzz_22)r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   Z
zz_large_1)r   r   r   rX   r   r   K   r   r   r   r   r   r   rV   r   r   r   r   r   r   )r   r   r   r   r   V   r   \   r)   6   r   r   r   r   r   r   r)   r   r   r   )r+   r`   rX   r   r      r   r   r   r   r   r   3   r   rT   r   r   rZ   r   r   )r   r   r   `   r   r   r   r   r   r   r   r   0   r   r   r   r   r       r   )r   F   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   rh   r   r   r   r   r      r   r   )E   r   r   r   r   r   rT   r   r   r   r   r   r   r   r   r   r   r   r   7   )r   r   rS   1   rm   X   r   r   #   r`   r   r   rb   r   r   r   r   r   r   W   )r   r   r   r   r   r   (   r   r   r   r   r   r   2   r   r   r   r   rn   r   )r   r   r   r   r   r   r   r   b   r   r   r      r#   r   r_   r   r   r   r   )r   r   r   _   r   r   r   $   r   r   r   r   r   rY   r   r   r   r   r(   r   )r   A      rc   r   r   r   r   r   r   r   r   r   Z   r   r   r   r\   r   r   )r   r   r   rR   '   ,   r   r   r   r   r   r   r   r   r   r   r   rb   r   r   )r   r   r   r   r   c   T   r   rr   r}   r   r   r   r   ru   r   r!   !   ra   r   )r)   r   r   4   r|   rQ   rk   r   rs   r   D   r   r   r   r   r   r   r   r   r   )r   r   r   R   r   r{   r   r   r   r,   r   r   r   r   r   rJ   r   r   r   r   )r   r   r[   r   r&   r   r   r   r   r   rL   r   rr   r   r   r   r~   r   r   r   )r   r   r   r   rO   *   r   r   r   r   r   r   r   r   r   r   r   r   r   rN   )r   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   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   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   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   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   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   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   )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   r   r   r   r   r   r   r   r   r   Z
zz_large_2)r   r   r   r   rr   r   rM   rX   r   r   r^   r   r   rs   r   rT   rL   r   r   r   )r   r{   r!   r   >   r   r   r   rg   r   r   r   r   r'   rO   r   9   r    r   r   )r   r      r   J   r+   r   r   r   r   rM   r   r   r   r{   r   r   r   rZ   r   )r   r[   r   r      rn   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   rY   rJ   rg   re   r   r$   r   rU   )r   r   r   r   r   r   r   rT   r   r*   ra   r   r   rO   r   r   rm   rj   :   r   )r   rw   8   r   r   r   r   r   r   r   r   r   rW   r   r   r   r   rb   r   r   )r   ro   r   r   r   rk   r   r   r   r   r   r   r   rf   r   r   ry   r   r]   L   )rk   r   r   ry   r   r   r}   r   r"   rk   r   ra   r   r   r   re   r'   ro   r   r   )rz   r   ry   r   r   rL   rW   r   r   rl   r   r   r   ro   r&   rq   r   rq   r   rZ   )rs   ?   r   r'   r   rr   r   r   r%   r   rh   r   r   r   r   r]   r   rq   r~   r   )r   r(   r   r   r   rh   r   ro   r%   r   r   r   r   r   r   rb   r   r   r   r\   )r   r   r   r   r\   r   r   -   rx   r   rg   rR   r   r`   r|   r   r   r   r   r   )r   r   rx   r   r   r   rT   r   r   ry   r   r   r   r   r   r   r   rN   ry   r#   )r^   r   rT   r   rm   rJ   rg   r   rq   rS   r   r   r   r   rg   rU   r   r   r   r   )r#   r   r   r,   r   r   r   r   r   rz   r{   r"   r   r   r   rQ   rr   r   r   r   )rL   r   r_   rJ   r   r   r   r+   r   r   rS   r`   r   rz   r   r   r   rd   r   r_   )r   r   ry   rZ   ru   r~   r   r   rm      rz   r   r   r   r   r   r   rq   r   r   )rc   r   r   r   r   rh   r^   r   r   r   r   r   r   r   r*   rn   ru   rw   rY   r   )rX   rw   r   rL   rg   r   r   r   r   r   r   r   r+   r   r&   r   r   r   rl   r~   Z
zz_large_3)r   ro   r+   r   r   r"   r   r   r   rY   r   r   P   rj   r   r[   rJ   ro   rU   r   rc   re   r   rr   r_   r   r   rT   r   B   )ra   r"   rc   r\   rJ   rs   r   rM   r   r   r   r_   r%   rT   rh   r    re   rO   r   rT   r   r   rV   r    rY   rW   r%   r   rq   .   )rk   rj   ro   r      r   rT   r   rh   rw   rX   rJ   r   rt   r   rL   r   r|   rW   r   r   rb   rg   rg   rj   rZ   rW   r   rp   r   )r|   r   rk   rt   r   rQ   rS   r   rV   r   rQ   r`   r[   r_   rh   ru   r~   r*   r   r   r{   rN   r   r}   r_   rQ   r   r   r   r   )r   r   rl   rd   ro   rp   rU   rq   r   ro   r   re   r   r   r   rW   rL   r)   rj   r   r   r]   r   rc   r   r   r   r   r|   r]   )   rW   rj   rb      r;   rZ   N   rW   r.   {   r   ri      rh   ri   r   rv   r   rX   f   r   r]   r$   r      p   rw   rZ      )rt   r$   r%   r   rQ   r*   r\   rN   rT   r'   r   r   ri   r[   rd   rk   rj   rQ   r   rh   r,   rp   rh   rt   rb   r~   r   r!   r   r+   )r   r   r#   rz   rk   ry   r    r   re   r   rq   r*   rp   rp   r%   rh   rQ   r   rU   rm   r   ry   r   r~   r   r   r   r   r   rg   )r   r   r   r   r   r   rz   rm   r_   r   r   rh   r   r   r~   rW   r   r%   rx   r   r   ri   r,   r\   r,   r#   r_   r   r~   r!   )r*   r)   r    rR   ru   ro   r#   r   rj   rL   r'   r   r%   rk   rk   rY   rp   r_   r$   rY   r`   r   r   r*   rN   r   rZ   rl   r   r   )rm   r\   r   r   rY   rZ   r   rf   r   r    r   rM   r   r   ro   rM   r]   r~   r   r   r   rx   rj   r   rO   ru   r+   r   rQ   ry   )r   r   rm   r   rb   re   rZ   r    rh   rr   rR   r   rp   rX   r   rn   r   ri   r*   r   rh   r&   r   r   rg   r}   r   rg   r   r   )r)   rb   r   ra   r+   rc   r   rN   rz   r   r^   r   rm   rX   r   rW   r^   r   r%   rU   rY   r   rm   r   rN   rl   r   r   rw   r#   )rc   r^   r(   ra   r    ra   r   rS   rJ   r%   rW   rU   rq   r*   rk   r    rL   r_   r   r|   r   r~   rS   rv   re   r   rg   rs   rz   rU   )re   r   r"   r   rb   r   r   r   rO   r   rw   r]   r]   rn   r|   r_   r   r#   r#   r^   rh   rb   r    rx   ro   rS   rz   r   rj   re   )rz   r[   rN   rR   r~   rM   ro   rW   r]   r   r!   r\   rS   r   r'   r   re   rS   rQ   r   rX   r#   r   r|   r   r   r   r|   ro   r~   )r   ru   r+   r   r]   rT   r_   r   r}   r   r\   r   rr   r   r)   rs   r   r   rw   rX   rb   ry   r   ru   r~   r'   r   r%   rx   r   )r#   r_   rN   rm   r&   r}   r[   r)   rm   ru   r   rd   rv   rx   r   r,   rj   r   r   r   r*   rd   r   r+   r&   rY   ri   r\   r   r+   )r   r   r|   r_   rq   rN   r   rR   rt   rd   ro   rY   ri   r   rX   rx   r^   rg   rb   r   r~   rQ   r#   r   rd   r[   r   r+   rt   r)   )rX   r!   r~   rm   rM   rm   rv   re   r   r   rp   ri   r   r   r   r   r&   r   rq   rh   rk   rN   r   rd   r$   r   r   r,   r   r   )rs   rd   rZ   rR   r   rd   r   rh   r   r$   r)   ro   rR   r'   rg   r^   r'   r    rx   r   r   r,   rZ   rk   rL   r   r   rl   rj   r(   )r   r"   r   r{   r   rd   r"   r   r   r   r   r[   r   rU   r   r   r#   r   r,   r   r   r`   rQ   rJ   rZ   r   rg   r]   re   r[   )r^   r   r   r   r'   rh   r^   r   rS   rt   ri   rw   rZ   rw   rO   r_   rr   r   r   r   r|   r   r|   rV   rJ   r|   r_   rO   rp   r}   )r   rV   rY   r   r   rt   rY   r]   rz   r   rx   r'   rt   r   rJ   r   rm   r`   r   r   r"   ra   r   r   r,   r"   rU   r   rR   rc   )r   r   r*   rg   rm   r   rO   r#   r]   rp   rq   r   rQ   r   r   rQ   r   ru   r   r   rl   r   r+   r   rb   r   r   rc   r   r   )ro   rO   r,   r   r^   rz   r   rd   r    r   r   rh   r   rO   ro   rY   rn   r   r    rg   rJ   r   r'   r   r   r   r   r   rM   r   )rf   r%   r   rr   rY   rg   rZ   r   r    rT   r   r   r   r   r|   r"   rV   rS   r|   r   rR   rd   rj   rO   rn   rZ   rJ   rT   r   r_   )rl   r   r   r   rY   r   rX   r   r)   r   r   rq   r[   r   rV   rg   r   r   r,   r   rW   rs   rk   rg   r   r{   r   r   r   r(   )r(   r   r!   r   r+   r,   r   r   r   rx   rl   rg   ru   r   r   rW   rn   r   r   r   rh   r   r   rb   r   r   rr   r)   r   rS   )rY   r   r    rz   rU   r   r   r)   r{   r   rs   r]   r   rM   rW   rg   ra   r   rZ   r'   ry   rb   rh   r   r   rt   r~   rJ   r   rN   r   l   }#"
<Tvl;(CVW+)l   )'K	
)!08c9mJ"~(
l   [OvNeM"by;qyX-s/n l   r9O/]/GWm49lxil   0"M'Y#h	v)Bl   mRC.NR%y?^j<l   Go+5;#)%PFK.a l8`w!ZYg"TWMcW_CX#l   6I5A QF~t,U;'9fl   1x ?Q?fNBzL	lyJT{n'WQ8
%(9*v
l]|FlqUlz>jV% )tl   u, bvC*\lc]\.l(WlnGO~rZ^
l   ~Q71Gty4=GrrY l   	LR'"[ph]dQUS|l   x`w'hY|h/XSOl]: [Z68:?{oLhc	lS/dblR6	w(MBT:`TlthBB^{|69>(l-SEk{L?]6*u#5[(l   /3N?2	GKtsl   I4[,JtQ&9/Qrd^lTjeD0nv
AO@;uM6F~Ol%df8xh6wOiVl"B'[A(2g4,Un!FQl   vg,VvJENjiflD_zR#s%0[eRK*olT^ZH<UF*d7,jqCLlelGz;VGCm"2Y#?5,`+z	Zqq_1r   Zqq_2Zqq_3)r   r   r   )r   rL   r   Zqq_4Zqq_5Zqq_6)r   r   r   )r   r   r   
qq_large_1
qq_large_2Zqq_7Zzz_i_1))r   r   r   r   ZEX_1c                 C   s   t | tr|  S t | tr,| |j S t| dr@t| dsP|j|j }}n| j| j }}t | tt	frtt	| || S t | t
tfrtt| || S dsJ dS )z#Convert the answer to DomainMatrix.shapedomainFN)
isinstancer   to_denser   to_DMr   hasattrr   r   listr   dict)AZansr   r    r   R/var/www/auris/lib/python3.9/site-packages/sympy/polys/matrices/tests/test_rref.py_to_DME  s    

r   c                 C   s   t ttt|   S )z%Return the pivots from the rref of A.)tuplesortedmapminto_sdmvalues)A_rrefr   r   r   _pivotsY  s    r   c                 C   sx   | \}}}t |ttttfr4t|tu s,J t|}t||}||\}}||ksXJ ||ksdJ |t	|kstJ dS )zCheck the cancelled result.N)
r   r   r   r   r   typer   r   Zcancel_denomr   )resultrref_ansden_ansrrefdenpivotsZrref2Zden2r   r   r   _check_cancel^  s    

r   c                 C   sh   | \}}t |ttttfr2t|tu s*J t|}| | }t||}||ksTJ t	||ksdJ dS )zCheck the divided result.N)
r   r   r   r   r   r   r   to_fieldr   r   )r   r   r   r   r   r   r   r   _check_dividek  s    
r   zname, A, A_rref, denc                 C   s<   |j }| }| \}}|jr(| }t||f|| d S N)r   Z	to_Matrixr   Zis_EXexpandr   )namer   r   r   KZA_rref_foundr   r   r   r   test_Matrix_rrefw  s    r   c                 C   s   |  }t| || d S r   )r   r   r   r   r   r   r   r   r   r   test_dm_dense_rref  s    r   c                 C   s   t | || d S r   )r   rref_denr   r   r   r   test_dm_dense_rref_den  s    r   c                 C   s    |   }t| || d S r   )r   	to_sparser   r   r   r   r   r   test_dm_sparse_rref  s    r   c                 C   s   |  }t| || d S r   )r   r   r   r   r   r   r   test_dm_sparse_rref_den  s    r   c                 C   s:   |  }|jdd\}}}| | }t||f|| d S )NF)keep_domainr   r   r   r   r   r   r   r   ZA_rref_fZden_fZpivots_fr   r   r   #test_dm_sparse_rref_den_keep_domain  s    r   c                 C   s<   |  }|jddd\}}}| | }t||f|| d S )NFZCDr   methodr   r   r   r   r   &test_dm_sparse_rref_den_keep_domain_CD  s    r   c                 C   s<   |  }|jddd\}}}| | }t||f|| d S )NFZGJr   r   r   r   r   r   &test_dm_sparse_rref_den_keep_domain_GJ  s    r   c                 C   s   |  }t| || d S r   )to_ddmr   r   r   r   r   r   test_ddm_rref_den  s    r   c                 C   s   |  }t| || d S r   )r   r   r   r   r   r   r   test_sdm_rref_den  s    r   c                 C   s    |   }t| || d S r   )r   r   r   r   r   r   r   r   test_ddm_rref  s    r   c                 C   s    |   }t| || d S r   )r   r   r   r   r   r   r   r   test_sdm_rref  s    r   c                 C   s,   |    }t|}t||f|| d S r   )r   r   copyr   r   )r   r   r   r   pivots_foundr   r   r   test_ddm_irref  s    r   c                 C   s6   |   }t||j\}}|||f}t||| d S r   )r   r   r   r   r   )r   r   r   r   Z	den_foundr   r   r   r   r   test_ddm_irref_den  s    
r   c                 C   s(   |   }tt|d d || d S )Nr   )r   r   r   r   r   r   r   r   test_sparse_sdm_rref  s    r   c                 C   s(   |   }|j}tt|||| d S r   )r   r   r   r   r   )r   r   r   r   r   r   r   r   test_sparse_sdm_rref_den  s    r   )5Zsympyr   r   r   r   r   r   r   r	   Zsympy.polys.matricesr
   r   Zsympy.polys.matrices.denser   r   Zsympy.polys.matrices.ddmr   Zsympy.polys.matrices.sdmr   r   r   Zpytestabcdr   r   r   r   ZRREF_EXAMPLESr   r   r   r   markZparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s  (





02 

"I	        
	













