
    g~e              #       <   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z   ej        de          z  z   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d0 e
g d/g d1g d,ge           e
g d(g d2g d-ge           ed          fd3 e
g dg d"g d#g d4ge           e
g d$g d%g d&g d&ge           ed          fd5 e
g dg d"g d#g d6ge           e
g d(g d2g d-g d&ge           ed          fd7 e
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dB e
g dCg dDge           e
g dEg dFge           ed          fdG e
g dHg dIge           e
g d(g dJge           ed          fdK e
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dV e
g dWg d"ge           e
g dXg dYge           ed          fdZ e
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dc e
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dh e
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d 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
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d 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 dg dg dg dg dg dg dg d¢g dâg dĢge           e edŦ          dz   eg dǢ          g eddŦ           edd          gg                                                                           edƦ          fd e
dd 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e           e
g d$g dJge           ed          fd e
g d͢g d̢ge           e
g d$g dJge           ed          fd e
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d e
g dѢg dҢge           e
g d(g d-ge           ed          fde ej        de                                           ed          fde ej        de                                           ed          fd e
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d e
g dעg dHge           e
g d(g dJge           ed          fd e
eedgeedgge           e
eez  eez  z
  d e ez   gd eez  eez  z
  eez
  gge           eeez  eez  z
            fZdل Zdڄ Z dۄ Z!d܄ Z"ej#        $                    de          dބ             Z%ej#        $                    de          d߄             Z&ej#        $                    de          d             Z'ej#        $                    de          d             Z(ej#        $                    de          d             Z)ej#        $                    de          d             Z*ej#        $                    de          d             Z+ej#        $                    de          d             Z,ej#        $                    de          d             Z-ej#        $                    de          d             Z.ej#        $                    de          d             Z/ej#        $                    de          d             Z0ej#        $                    de          d             Z1ej#        $                    de          d             Z2ej#        $                    de          d             Z3ej#        $                    de          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)rP   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)rK   r      zz_13)rK   r   r   zz_14)r   r   rP   r   )rP   r   rK   rT   )r   rU      rV   )r   r   r   rW   )r   r   r   r   )r   r   r   r   zz_15)r   rU   r   rV   )r   r   r   r   )r   r   r   r   zz_16)r   r   r   r   )r   r   rV   r   )r   r      rW   )r   r   ir   zz_17)r   r   r   )r   r   r   )r   r   r   zz_18)^      r      r   )r*   r   r   r   r   )U   ra   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   rP   )r   r   i)r   r   rK   zz_20)r   r   r   r   rP   )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   rk   r   r   K   r   r   r   r   r   r   ri   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,   rx   rk   r   r      r   r   r   r   r   r   3   r   rg   r   r   rm   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   rg   r   r   r   r   r   r   r   r   r   r   r   r   7   )r   r   rd   1   r   X   r   r   #   rx   r   r   rz   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   rw   r   r   r   r   )r   r   r   _   r   r   r   $   r   r   r   r   r   rl   r   r   r   r   r)   r   )r   A      r{   r   r   r   r   r   r   r   r   r   Z   r   r   r   ro   r   r   )r   r   r   ra   '   ,   r   r   r   r   r   r   r   r   r   r   r   rz   r   r   )r   r   r   r   r   c   T   r   r   r   r   r   r   r   r   r   r"   !   ry   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   rK   r   r   r   r   )r   r   rn   r   r'   r   r   r   r   r   rP   r   r   r   r   r   r   r   r   r   )r   r   r   r   rV   *   r   r   r   r   r   r   r   r   r   r   r   r   r   rU   )r   rm   r   r   r   r   r   r   r   r   ro   ]   r   r   r   r   r#   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   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   rT   rk   r   r   rv   r   r   r   r   rg   rP   r   r   r   )r   r   r"   r   >   r   r   r   r   r   r   r   r   r(   rV   r   9   r!   r   r   )r   r      r   J   r,   r   r   r   r   rT   r   r   r   r   r   r   r   rm   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   rl   rK   r   r}   r   r%   r   rh   )r   r   r   r   r   r   r   rg   r   r+   ry   r   r   rV   r   r   r   r   :   r   )r   r   8   r   r   r   r   r   r   r   r   r   rj   r   r   r   r   rz   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r~   r   r   r   r   ru   L   )r   r   r   r   r   r   r   r   r#   r   r   ry   r   r   r   r}   r(   r   r   r   )r   r   r   r   r   rP   rj   r   r   r   r   r   r   r   r'   r   r   r   r   rm   )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   r&   r   r   r   r   r   r   rz   r   r   r   ro   )r   r   r   r   ro   r   r   -   r   r   r   ra   r   rx   r   r   r   r   r   r   )r   r    r   r   r   r   rg   r   r   r   r   r   r   r   r   r   r   rU   r   r$   )rv   r   rg   r   r   rK   r   r   r   rd   r   r   r   r   r   rh   r   r   r   r   )r$   r   r   r-   r   r   r   r   r   r   r   r#   r   r   r   r^   r   r   r   r   )rP   r   rw   rK   r   r   r   r,   r   r   rd   rx   r   r   r   r   r   r|   r   rw   )r   r   r   rm   r   r   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   r   r+   r   r   r   rl   r   )rk   r   r   rP   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   rl   r   r   P   r   r   rn   rK   r   rh   r   r{   r}   r   r   rw   r    r   rg   r   B   )ry   r#   r{   ro   rK   r   r   rT   r   r   r   rw   r&   rg   r   r!   r}   rV   r   rg   r   r   ri   r!   rl   rj   r&   r   r   .   )r   r   r   r      r   rg   r   r   r   rk   rK   r   r   r   rP   r   r   rj   r   r   rz   r   r   r   rm   rj   r   r   r   )r   r   r   r   r   r^   rd   r   ri   r   r^   rx   rn   rw   r   r   r   r+   r   r   r   rU   r   r   rw   r^   r   r   r   r   )r   r   r   r|   r   r   rh   r   r   r   r   r}   r   r   r   rj   rP   r*   r   r   r   ru   r   r{   r   r   r   r   r   ru   )   rj   r   rz      r<   rm   N   rj   r/   {   r   r      r   r   r   r   r   rk   f   r   ru   r%   r      p   r   rm      )r   r%   r&   r   r^   r+   ro   rU   rg   r(   r   r   r   rn   r|   r   r   r^   r   r   r-   r   r   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   rh   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   rj   r   r&   r   r   r   r   r-   ro   r-   r$   rw   r   r   r"   )r+   r*   r!   ra   r   r   r$   r   r   rP   r(   r   r&   r   r   rl   r   rw   r%   rl   rx   r   r   r+   rU   r   rm   r   r   r   )r   ro   r   r   rl   rm   r   r~   r   r!   r    rT   r   r   r   rT   ru   r   r   r   r   r   r   r   rV   r   r,   r   r^   r   )r   r   r   r   rz   r}   rm   r!   r   r   ra   r   r   rk   r   r   r   r   r+   r   r   r'   r   r   r   r   r   r   r   r   )r*   rz   r   ry   r,   r{   r   rU   r   r   rv   r   r   rk   r   rj   rv   r   r&   rh   rl   r   r   r   rU   r   r   r   r   r$   )r{   rv   r)   ry   r!   ry   r    rd   rK   r&   rj   rh   r   r+   r   r!   rP   rw   r   r   r   r   rd   r   r}   r   r   r   r   rh   )r}   r   r#   r   rz   r   r   r   rV   r   r   ru   ru   r   r   rw   r   r$   r$   rv   r   rz   r!   r   r   rd   r   r   r   r}   )r   rn   rU   ra   r   rT   r   rj   ru   r   r"   ro   rd   r   r(   r   r}   rd   r^   r   rk   r$   r   r   r   r   r   r   r   r   )r   r   r,   r   ru   rg   rw   r   r   r   ro   r   r   r   r*   r   r   r   r   rk   rz   r   r   r   r   r(   r   r&   r   r   )r$   rw   rU   r   r'   r   rn   r*   r   r   r   r|   r   r   r   r-   r   r   r   r   r+   r|   r   r,   r'   rl   r   ro   r   r,   )r   r   r   rw   r   rU   r   ra   r   r|   r   rl   r   r   rk   r   rv   r   rz   r   r   r^   r$   r   r|   rn   r   r,   r   r*   )rk   r"   r   r   rT   r   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|   rm   ra   r   r|   r   r   r   r%   r*   r   ra   r(   r   rv   r(   r!   r   r   r   r-   rm   r   rP   r   r   r   r   r)   )r   r#   r   r   r   r|   r#   r   r   r   r   rn   r   rh   r   r   r$   r   r-   r   r   rx   r^   rK   rm   r   r   ru   r}   rn   )rv   r   r   r   r(   r   rv   r   rd   r   r   r   rm   r   rV   rw   r   r   r   r   r   r   r   ri   rK   r   rw   rV   r   r   )r   ri   rl   r   r   r   rl   ru   r   r   r   r(   r   r   rK   r   r   rx   r   r   r#   ry   r   r   r-   r#   rh   r   ra   r{   )r   r   r+   r   r   r   rV   r$   ru   r   r   r   r^   r   r   r^   r   r   r   r   r   r   r,   r   rz   r   r   r{   r   r   )r   rV   r-   r   rv   r   r   r|   r!   r   r   r   r   rV   r   rl   r   r   r!   r   rK   r   r(   r   r   r   r   r   rT   r   )r~   r&   r   r   rl   r   rm   r   r!   rg   r   r   r   r   r   r#   ri   rd   r   r   ra   r|   r   rV   r   rm   rK   rg   r   rw   )r   r   r   r   rl   r   rk   r   r*   r    r   r   rn   r   ri   r   r    r   r-   r   rj   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   rz   r   r   r   r*   r   rd   )rl   r   r!   r   rh   r   r   r*   r   r   r   ru   r   rT   rj   r   ry   r   rm   r(   r   rz   r   r   r   r   r   rK   r   rU   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   rP   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                    t          | t                    r|                                 S t          | t                    r,|                     |j                                                  S t          | d          rt          | d          s|j        |j        }}n| j        | j        }}t          | t          t          f          r0t          t          |           ||                                          S t          | t          t          f          r0t          t          |           ||                                          S J )z#Convert the answer to DomainMatrix.shapedomain)
isinstancer   to_denser   to_DMr   hasattrr   r   listr   dict)Aansr   r   s       `/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/polys/matrices/tests/test_rref.py_to_DMr   E  s   !\"" .zz||	Av		 .wwsz""++---Aw *GAx$8$8 *	3:vv!c4[!! DGGUF33<<>>>	AT{	#	# DGGUF33<<>>>    c           	          t          t          t          t          |                                                                                               S )z%Return the pivots from the rref of A.)tuplesortedmapminto_sdmvalues)A_rrefs    r   _pivotsr   Y  s6    C!7!7!9!9::;;<<<r   c                 J   | \  }}}t          |t          t          t          t          f          r't          |          t          u sJ t          |          }t          ||          }|                    |          \  }}||k    sJ ||k    sJ |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den2s           r   _check_cancelr   ^  s    D#v$c4.// F||t####v$!!D##C((KE4H7????WT]]""""""r   c                 6   | \  }}t          |t          t          t          t          f          r't          |          t          u sJ t          |          }|                                |z  }t          ||          }||k    sJ t          |          |k    sJ dS )zCheck the divided result.N)
r   r   r   r   r   r   r   to_fieldr   r   )r   r   r   r   r   s        r   _check_divider   k  s    LD&$c4.// F||t####v  ""W,H$!!D84==F""""""r   zname, A, A_rref, denc                     |j         }|                                }|                                \  }}|j        r|                                }t          ||f||           d S N)r   	to_Matrixr   is_EXexpandr   )namer   r   r   KA_rref_foundr   s          r   test_Matrix_rrefr   w  s`    	A	A6688L&w -#**,,<(&#66666r   c                 t    |                                 }t          |                                ||           d S r   )r   r   r   r   r   r   r   s       r   test_dm_dense_rrefr     s/    	

A!&&((FC(((((r   c                 L    t          |                                ||           d S r   )r   rref_denr   s       r   test_dm_dense_rref_denr     s"    !**,,,,,,,r   c                     |                                                                 }t          |                                ||           d S r   )r   	to_sparser   r   r   s       r   test_dm_sparse_rrefr     s;    	

  A!&&((FC(((((r   c                 t    |                                 }t          |                                ||           d S r   )r   r   r   r   s       r   test_dm_sparse_rref_denr     s/    	A!**,,,,,,,r   c                     |                                 }|                    d          \  }}}|                                |z  }t          ||f||           d S )NF)keep_domainr   r   r   r   r   r   r   r   A_rref_fden_fpivots_fs          r   #test_dm_sparse_rref_den_keep_domainr    s\    	A !

u
 = =HeX  ""U*H8X&44444r   c                     |                                 }|                    dd          \  }}}|                                |z  }t          ||f||           d S )NFCDr   methodr   r   s          r   &test_dm_sparse_rref_den_keep_domain_CDr    ^    	A !

uT
 J JHeX  ""U*H8X&44444r   c                     |                                 }|                    dd          \  }}}|                                |z  }t          ||f||           d S )NFGJr  r   r   s          r   &test_dm_sparse_rref_den_keep_domain_GJr    r	  r   c                 t    |                                 }t          |                                ||           d S r   )to_ddmr   r   r   s       r   test_ddm_rref_denr    /    	

A!**,,,,,,,r   c                 t    |                                 }t          |                                ||           d S r   )r   r   r   r   s       r   test_sdm_rref_denr    r  r   c                     |                                                                 }t          |                                ||           d S r   )r   r  r   r   r   s       r   test_ddm_rrefr    ;    	

A!&&((FC(((((r   c                     |                                                                 }t          |                                ||           d S r   )r   r   r   r   r   s       r   test_sdm_rrefr    r  r   c                     |                                                                                                 }t          |          }t	          ||f||           d S r   )r   r  copyr   r   )r   r   r   r   pivots_founds        r   test_ddm_irrefr    sO    	

""$$AQ<<L1l#VS11111r   c                     |                                                                 }t          ||j                  \  }}|||f}t	          |||           d S r   )r  r  r   r   r   )r   r   r   r   	den_foundr  r   s          r   test_ddm_irref_denr    sS    	

A -a : :YL)F&&#&&&&&r   c                     |                                                                 }t          t          |          d d         ||           d S )Nr   )r   r   r   r   r   s       r   test_sparse_sdm_rrefr     sB    	

A)A,,rr"FC00000r   c                     |                                                                 }|j        }t          t	          ||          ||           d S r   )r   r  r   r   r   )r   r   r   r   r   s        r   test_sparse_sdm_rref_denr"    sB    	

A	A,q!$$fc22222r   )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   <module>r1     sc   ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1 1 1 1 1 1 1 1 ? ? ? ? ? ? ? ? ( ( ( ( ( ( A A A A A A A A A A  W\""
1a R Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y[ 	 
 "c'$4L$4R$<$<<<
X	YYYK			YYYK			A	X 		b&"	%	%	b&"	%	%	A	X  	
QFF	 	
QFF	 	
1X2 	
QFF	 	
QFF	 	
11XD 	
QFF	 	
QFF	 	
1CXV 	
IIIIIII	 	 	JJJJJJJ	 	 	1	UXl 	
IIIIIII	 	 	IIIIIII	 	 	1	kXB 	
IIIIIII	 	 	IIIIIII	 	 	1	AXX 	
IIIIIII	 	 	IIIIIII	 	 	1	WXn 	
IIIIIII	 	 	IIIIIII	 	 	1	mXD 	
IIIIIII	 	 	IIIIIII	 	 	1	CXZ 	
LLLLLLLLL 	 	 	KKKKKKKKK 	 	 	1YXt 	
LLLLLLLLL 	 	 	LLLLLLLLL 	 	 	1sXN 	
MMMMMMM	  	  	MMMMMMM	  	  	1	MXd 	
MMMMMMM	  	  	MMMMMMM	  	  	1	cXz 	
LLLLL	 	
NNNNN	! 	!
1yXL 	
IIIII	 	
IIIII	 	
1KXb 	
	! #%		& 	&
 		! #%		& 	&
 	1]XB 	
IIIII	 	
JJJJJ	 	
1XT 	
OOOOOOO 	" 	" 	OOOOOOO 	" 	" 	1	SXj 	
***************	, .0		1 	1
 	***************	, .0		1 	1
 	1iXH 	
OOOOOOOOOOO	 !		" 	"
 	OOOOOOOOOOO	 !		" 	"
 	1GXf 	
 P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P)R* +	 	, 	HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH'J& LN'	O 	O( 	1Y-eXD	 	
 P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P)R* +	 	, 	 < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < <)>* +	 	, 	1]/C	Xf
 	
 [ [ [ W W W W W W W W W V V V g g g Y Y Y Z Z Z Z Z Z Y Y Y X X X W W W W W W Z Z Z Y Y Y U U U X X X Z Z Z W W W V V V Y Y Y Z Z Z W W W Z Z Z U U U V V V X X X Y Y Y W W W X X X=Z> ?	 	@ 	SWWIIV     > 
q"uuQ{{#A!
 !	 !	B 57788::
EFFIEe
Xv 	
UAJA$$
QFQFR  
1	uXF 	
QFF	 	
QFF	 	
1CXZ 	
IIIII	 	
JJJJJ	 	
1WXn 	
IIIII	 	
JJJJJ	 	
1kXB 	
QFFF	 	 	QFFF	 	 	1
XZ 	
IIIII	 	
IIIII	 	
1WXp 	R  ))++
1kXB 	R  ))++
1}Xr 	
QFFF	 	 	QFFF	 	 	13OXJ 	
MMMMM 	" 	"
IIIII	 	QGX^ 	
	
Aq		
Aq		 	 	QqS1Q3YA26*!ac	AE*,-/	1 	1
1Q319	[Xv  (= = =

# 
# 
#	# 	# 	# /??7 7 @?7 /??) ) @?)
 /??- - @?- /??) ) @?)
 /??- - @?-
 /??5 5 @?5 /??5 5 @?5 /??5 5 @?5 /??- - @?-
 /??- - @?-
 /??) ) @?)
 /??) ) @?)
 /??2 2 @?2 /??' ' @?' /??1 1 @?1
 /??3 3 @?3 3 3r   