o
    g~e                  "   @   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g 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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   zz_1)r   r   r   r   zz_2)r   r   zz_3r   r      zz_4zz_5zz_6)rO   r      )r      	   )r   r   )r   r   r   )r   r   r   zz_7)r   r   r   zz_8zz_9)r   r   r   )r   r   r   )r   r   r   zz_10)r   r   r   zz_11)r   r   r   )r   r   r   zz_12)rJ   r      zz_13)rJ   r   r   zz_14)r   r   rO   r   )rO   r   rJ   rS   )r   rT      rU   )r   r   r   rV   )r   r   r   r   )r   r   r   r   zz_15)r   rT   r   rU   )r   r   r   r   )r   r   r   r   zz_16)r   r   r   r   )r   r   rU   r   )r   r      rV   )r   r   ir   zz_17)r   r   r   )r   r   r   )r   r   r   zz_18)^      r      r   )r)   r   r   r   r   )U   r`   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   zz_19)r   r   rO   )r   r   i)r   r   rJ   zz_20)r   r   r   r   rO   )r   r   r   r   r   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   zz_22)r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   
zz_large_1)r   r   r   rj   r   r   K   r   r   r   r   r   r   rh   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+   rw   rj   r   r      r   r   r   r   r   r   3   r   rf   r   r   rl   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   r   r   r   r   r   r      r   r   )E   r   r   r   r   r   rf   r   r   r   r   r   r   r   r   r   r   r   r   7   )r   r   rc   1   r   X   r   r   #   rw   r   r   ry   r   r   r   r   r   r   W   )r   r   r   r   r   r   (   r   r   r   r   r   r   2   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   b   r   r   r      r#   r   rv   r   r   r   r   )r   r   r   _   r   r   r   $   r   r   r   r   r   rk   r   r   r   r   r(   r   )r   A      rz   r   r   r   r   r   r   r   r   r   Z   r   r   r   rn   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   c   T   r   r   r   r   r   r   r   r   r   r!   !   rx   r   )r)   r   r   4   r   r]   r   r   r   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   rm   r   r&   r   r   r   r   r   rO   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   r   rT   )r   rl   r   r   r   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   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
zz_large_2)r   r   r   r   r   r   rS   rj   r   r   ru   r   r   r   r   rf   rO   r   r   r   )r   r   r!   r   >   r   r   r   r~   r   r   r   r   r'   rU   r   9   r    r   r   )r   r      r   J   r+   r   r   r   r   rS   r   r   r   r   r   r   r   rl   r   )r   rm   r   r      r   r   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   rJ   r~   r|   r   r$   r   rg   )r   r   r   r   r   r   r   rf   r   r*   rx   r   r   rU   r   r   r   r   :   r   )r   r   8   r   r   r   r   r   r   r   r   r   ri   r   r   r   r   ry   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r}   r   r   r   r   rt   L   )r   r   r   r   r   r   r   r   r"   r   r   rx   r   r   r   r|   r'   r   r   r   )r   r   r   r   r   rO   ri   r   r   r   r   r   r   r   r&   r   r   r   r   rl   )r   ?   r   r'   r   r   r   r   r%   r   r   r   r   r   r   rt   r   r   r   r   )r   r(   r   r   r   r   r   r   r%   r   r   r   r   r   r   ry   r   r   r   rn   )r   r   r   r   rn   r   r   -   r   r   r~   r`   r   rw   r   r   r   r   r   r   )r   r   r   r   r   r   rf   r   r   r   r   r   r   r   r   r   r   rT   r   r#   )ru   r   rf   r   r   rJ   r~   r   r   rc   r   r   r   r   r~   rg   r   r   r   r   )r#   r   r   r,   r   r   r   r   r   r   r   r"   r   r   r   r]   r   r   r   r   )rO   r   rv   rJ   r   r   r   r+   r   r   rc   rw   r   r   r   r   r   r{   r   rv   )r   r   r   rl   r   r   r   r   r      r   r   r   r   r   r   r   r   r   r   )rz   r   r   r   r   r   ru   r   r   r   r   r   r   r   r*   r   r   r   rk   r   )rj   r   r   rO   r~   r   r   r   r   r   r   r   r+   r   r&   r   r   r   r   r   
zz_large_3)r   r   r+   r   r   r"   r   r   r   rk   r   r   P   r   r   rm   rJ   r   rg   r   rz   r|   r   r   rv   r   r   rf   r   B   )rx   r"   rz   rn   rJ   r   r   rS   r   r   r   rv   r%   rf   r   r    r|   rU   r   rf   r   r   rh   r    rk   ri   r%   r   r   .   )r   r   r   r      r   rf   r   r   r   rj   rJ   r   r   r   rO   r   r   ri   r   r   ry   r~   r~   r   rl   ri   r   r   r   )r   r   r   r   r   r]   rc   r   rh   r   r]   rw   rm   rv   r   r   r   r*   r   r   r   rT   r   r   rv   r]   r   r   r   r   )r   r   r   r{   r   r   rg   r   r   r   r   r|   r   r   r   ri   rO   r)   r   r   r   rt   r   rz   r   r   r   r   r   rt   )   ri   r   ry      r;   rl   N   ri   r.   {   r   r      r   r   r   r   r   rj   f   r   rt   r$   r      p   r   rl      )r   r$   r%   r   r]   r*   rn   rT   rf   r'   r   r   r   rm   r{   r   r   r]   r   r   r,   r   r   r   ry   r   r   r!   r   r+   )r   r   r#   r   r   r   r    r   r|   r   r   r*   r   r   r%   r   r]   r   rg   r   r   r   r   r   r   r   r   r   r   r~   )r   r   r   r   r   r   r   r   rv   r   r   r   r   r   r   ri   r   r%   r   r   r   r   r,   rn   r,   r#   rv   r   r   r!   )r*   r)   r    r`   r   r   r#   r   r   rO   r'   r   r%   r   r   rk   r   rv   r$   rk   rw   r   r   r*   rT   r   rl   r   r   r   )r   rn   r   r   rk   rl   r   r}   r   r    r   rS   r   r   r   rS   rt   r   r   r   r   r   r   r   rU   r   r+   r   r]   r   )r   r   r   r   ry   r|   rl   r    r   r   r`   r   r   rj   r   r   r   r   r*   r   r   r&   r   r   r~   r   r   r~   r   r   )r)   ry   r   rx   r+   rz   r   rT   r   r   ru   r   r   rj   r   ri   ru   r   r%   rg   rk   r   r   r   rT   r   r   r   r   r#   )rz   ru   r(   rx   r    rx   r   rc   rJ   r%   ri   rg   r   r*   r   r    rO   rv   r   r   r   r   rc   r   r|   r   r~   r   r   rg   )r|   r   r"   r   ry   r   r   r   rU   r   r   rt   rt   r   r   rv   r   r#   r#   ru   r   ry   r    r   r   rc   r   r   r   r|   )r   rm   rT   r`   r   rS   r   ri   rt   r   r!   rn   rc   r   r'   r   r|   rc   r]   r   rj   r#   r   r   r   r   r   r   r   r   )r   r   r+   r   rt   rf   rv   r   r   r   rn   r   r   r   r)   r   r   r   r   rj   ry   r   r   r   r   r'   r   r%   r   r   )r#   rv   rT   r   r&   r   rm   r)   r   r   r   r{   r   r   r   r,   r   r   r   r   r*   r{   r   r+   r&   rk   r   rn   r   r+   )r   r   r   rv   r   rT   r   r`   r   r{   r   rk   r   r   rj   r   ru   r~   ry   r   r   r]   r#   r   r{   rm   r   r+   r   r)   )rj   r!   r   r   rS   r   r   r|   r   r   r   r   r   r   r   r   r&   r   r   r   r   rT   r   r{   r$   r   r   r,   r   r   )r   r{   rl   r`   r   r{   r   r   r   r$   r)   r   r`   r'   r~   ru   r'   r    r   r   r   r,   rl   r   rO   r   r   r   r   r(   )r   r"   r   r   r   r{   r"   r   r   r   r   rm   r   rg   r   r   r#   r   r,   r   r   rw   r]   rJ   rl   r   r~   rt   r|   rm   )ru   r   r   r   r'   r   ru   r   rc   r   r   r   rl   r   rU   rv   r   r   r   r   r   r   r   rh   rJ   r   rv   rU   r   r   )r   rh   rk   r   r   r   rk   rt   r   r   r   r'   r   r   rJ   r   r   rw   r   r   r"   rx   r   r   r,   r"   rg   r   r`   rz   )r   r   r*   r~   r   r   rU   r#   rt   r   r   r   r]   r   r   r]   r   r   r   r   r   r   r+   r   ry   r   r   rz   r   r   )r   rU   r,   r   ru   r   r   r{   r    r   r   r   r   rU   r   rk   r   r   r    r~   rJ   r   r'   r   r   r   r   r   rS   r   )r}   r%   r   r   rk   r~   rl   r   r    rf   r   r   r   r   r   r"   rh   rc   r   r   r`   r{   r   rU   r   rl   rJ   rf   r   rv   )r   r   r   r   rk   r   rj   r   r)   r   r   r   rm   r   rh   r~   r   r   r,   r   ri   r   r   r~   r   r   r   r   r   r(   )r(   r   r!   r   r+   r,   r   r   r   r   r   r~   r   r   r   ri   r   r   r   r   r   r   r   ry   r   r   r   r)   r   rc   )rk   r   r    r   rg   r   r   r)   r   r   r   rt   r   rS   ri   r~   rx   r   rl   r'   r   ry   r   r   r   r   r   rJ   r   rT   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	qq_1r   qq_2qq_3)r   r   r   )r   rO   r   qq_4qq_5qq_6)r   r   r   )r   r   r   
qq_large_1
qq_large_2qq_7zz_i_1))r   r   r   r   EX_1c                 C   s   t | tr	|  S t | tr| |j S t| dr t| ds(|j|j}}n| j| j}}t | tt	fr@tt	| || S t | t
tfrQtt| || S J )z#Convert the answer to DomainMatrix.shapedomain)
isinstancer   to_denser   to_DMr   hasattrr   r   listr   dict)Aansr   r    r   [/var/www/visachat/venv/lib/python3.10/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rt|tu sJ t|}t||}||\}}||ks,J ||ks2J |t	|ks:J dS )zCheck the cancelled result.N)
r   r   r   r   r   typer   r   cancel_denomr   )resultrref_ansden_ansrrefdenpivotsrref2den2r   r   r   _check_cancel^  s   

r   c                 C   sh   | \}}t |ttttfrt|tu sJ t|}| | }t||}||ks*J t	||ks2J 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   	to_Matrixr   is_EXexpandr   )namer   r   r   KA_rref_foundr   r   r   r   test_Matrix_rrefw  s   r   c                 C      |  }t| || d S r   )r   r   r   r   r   r   r   r   r   r   test_dm_dense_rref     r   c                 C   s   t | || d S r   )r   rref_denr   r   r   r   test_dm_dense_rref_den  s   r   c                 C       |   }t| || d S r   )r   	to_sparser   r   r   r   r   r   test_dm_sparse_rref     r   c                 C   r   r   )r   r   r   r   r   r   r   test_dm_sparse_rref_den  r   r   c                 C   s:   |  }|jdd\}}}| | }t||f|| d S )NF)keep_domainr   r   r   r   r   r   r   r   A_rref_fden_fpivots_fr   r   r   #test_dm_sparse_rref_den_keep_domain  s   r   c                 C   <   |  }|jddd\}}}| | }t||f|| d S )NFCDr   methodr   r   r   r   r   &test_dm_sparse_rref_den_keep_domain_CD     r  c                 C   r   )NFGJr   r   r   r   r   r   &test_dm_sparse_rref_den_keep_domain_GJ  r  r  c                 C   r   r   )to_ddmr   r   r   r   r   r   test_ddm_rref_den  r   r  c                 C   r   r   )r   r   r   r   r   r   r   test_sdm_rref_den  r   r  c                 C   r   r   )r   r  r   r   r   r   r   r   test_ddm_rref  r   r  c                 C   r   r   )r   r   r   r   r   r   r   r   test_sdm_rref  r   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   	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  )5sympyr   r   r   r   r   r   r   r	   sympy.polys.matricesr
   r   sympy.polys.matrices.denser   r   sympy.polys.matrices.ddmr   sympy.polys.matrices.sdmr   r   r   pytestabcdr   r   r   r   RREF_EXAMPLESr   r   r   r   markparametrizer   r   r   r   r   r   r  r  r  r  r  r	  r  r  r  r  r   r   r   r   <module>   s  ( 	

"+6ALWbmz       '  2  B  K  V  e  t   $    U 

!           &      0      :      D      P      [      d      |       	                
	













