
    gI4                         d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	 d dlm
Z
 d dl mZ d dlmZ d dlmZ d d	lmZ d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )    )I)symbols)raises)Matrixzeroseye)Symbol)Rational)sqrt)simplify)xc                     t          d          t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd	           t          t          fd
           t          t          fd           t          t          fd           t          t          fd           t          t          fd                               ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     dddd          t	          g dg dg dg          k    sJ                     dddd          t	          g dg dg dg          k    sJ                     dddd           t	          g dg dg dg          k    sJ t	          d!ddgd"z            } |                     ddd          t	          d!ddgd"z            k    sJ |                     ddd          t	          d!ddgd"z            k    sJ |                     dddd          t	          d!ddgd"z            k    sJ d S )#N   c                  .                          d          S Nabcelementary_row_opes   `/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/matrices/tests/test_reductions.py<lambda>ztest_row_op.<locals>.<lambda>       q22599     c                  ,                                      S Nr   r   s   r   r   ztest_row_op.<locals>.<lambda>       q2244 r   c                  4                          ddd          S )Nn->kn   rowkr   r   s   r   r   ztest_row_op.<locals>.<lambda>       q227Q2GG r   c                  4                          ddd          S )Nr   r    r!   r   r   s   r   r   ztest_row_op.<locals>.<lambda>       q227a2HH r   c                  4                          ddd          S )Nn<->m   r    row1row2r   r   s   r   r   ztest_row_op.<locals>.<lambda>       q2272KK r   c                  4                          ddd          S )Nr)   r    r*   r+   r   r   s   r   r   ztest_row_op.<locals>.<lambda>   r.   r   c                  4                          ddd          S )Nr)   r&   r*   r+   r   r   s   r   r   ztest_row_op.<locals>.<lambda>       q227!2LL r   c                  4                          ddd          S )Nr)   r*   r&   r+   r   r   s   r   r   ztest_row_op.<locals>.<lambda>       q2272LL r   c                  6                          dddd          S Nn->n+kmr*   r    r,   r-   r#   r   r   s   r   r   ztest_row_op.<locals>.<lambda>       q22911PQ2RR r   c                  6                          dddd          S )Nr6   r    r*   r7   r   r   s   r   r   ztest_row_op.<locals>.<lambda>   r8   r   c                  6                          dddd          S )Nr6   r&   r*   r    r7   r   r   s   r   r   ztest_row_op.<locals>.<lambda>       q2292AQR2SS r   c                  6                          dddd          S )Nr6   r*   r&   r    r7   r   r   s   r   r   ztest_row_op.<locals>.<lambda>       q22912QR2SS r   c                  6                          dddd          S r5   r   r   s   r   r   ztest_row_op.<locals>.<lambda>   r8   r   r   r   r    r    r   r   r   r*   r   r   r   r*   r*   r*   r   r   r   r    r   r!   )r,   r#   r)   r+   )r"   r-   r6   )r*   r    r   )r"   r#   r-   )r,   r#   r-         )r   r   
ValueErrorr   r   ar   s    @r   test_row_oprI         AA
:9999:::
:4444555
:GGGGHHH
:HHHHIII
:KKKKLLL
:KKKKLLL
:LLLLMMM
:LLLLMMM
:RRRRSSS
:RRRRSSS
:SSSSTTT
:SSSSTTT
:RRRRSSS w1--IIIyyy8Y1Z1ZZZZZw1--IIIyyy8Y1Z1ZZZZZwA33vyyy)))U^U^U^>_7`7`````wQ!44			999V_V_V_?`8a8aaaaaw1--IIIyyy8Y1Z1ZZZZZwQQ776999iiiYbYbYbBc;d;dddddwAA66&)))YYYXaXaXaAb:c:cccccy!Q22fiiiT]T]T]=^6_6_____ya11==T]T]T]_h_h_hHiAjAjjjjjyqAA>>&)))U^U^U^`i`i`iIjBkBkkkkk 	q!aSUAw1--1qc!e1D1DDDDDw1--1qc!e1D1DDDDDy!Q22fQA3q56I6IIIIIIIr   c                     t          d          t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd	           t          t          fd
           t          t          fd           t          t          fd           t          t          fd           t          t          fd                               ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     dddd          t	          g dg dg dg          k    sJ                     dddd          t	          g dg dg dg          k    sJ                     dddd           t	          g dg dg dg          k    sJ t	          d!ddgd"z            } |                     ddd          t	          d!ddgd"z            k    sJ |                     ddd          t	          d!ddgd"z            k    sJ |                     dddd          t	          d!ddgd"z            k    sJ d S )#Nr   c                  .                          d          S r   elementary_col_opr   s   r   r   ztest_col_op.<locals>.<lambda>4   r   r   c                  ,                                      S r   rM   r   s   r   r   ztest_col_op.<locals>.<lambda>5   r   r   c                  4                          ddd          S )Nr   r    colr#   rM   r   s   r   r   ztest_col_op.<locals>.<lambda>6   r$   r   c                  4                          ddd          S )Nr   r&   r    rQ   rM   r   s   r   r   ztest_col_op.<locals>.<lambda>7   r'   r   c                  4                          ddd          S )Nr)   r*   r    col1col2rM   r   s   r   r   ztest_col_op.<locals>.<lambda>8   r.   r   c                  4                          ddd          S )Nr)   r    r*   rU   rM   r   s   r   r   ztest_col_op.<locals>.<lambda>9   r.   r   c                  4                          ddd          S )Nr)   r&   r*   rU   rM   r   s   r   r   ztest_col_op.<locals>.<lambda>:   r1   r   c                  4                          ddd          S )Nr)   r*   r&   rU   rM   r   s   r   r   ztest_col_op.<locals>.<lambda>;   r3   r   c                  6                          dddd          S Nr6   r*   r    rV   rW   r#   rM   r   s   r   r   ztest_col_op.<locals>.<lambda><   r8   r   c                  6                          dddd          S )Nr6   r    r*   r]   rM   r   s   r   r   ztest_col_op.<locals>.<lambda>=   r8   r   c                  6                          dddd          S )Nr6   r&   r*   r    r]   rM   r   s   r   r   ztest_col_op.<locals>.<lambda>>   r;   r   c                  6                          dddd          S )Nr6   r*   r&   r    r]   rM   r   s   r   r   ztest_col_op.<locals>.<lambda>?   r=   r   c                  6                          dddd          S r\   rM   r   s   r   r   ztest_col_op.<locals>.<lambda>@   r8   r   r   r   r    r?   r@   rA   r*   rB   rC   rQ   )rV   r#   r)   rU   )rR   rW   r6   )r    r*   r   )rR   r#   rW   )rV   r#   rW   rD   rE   )r   r   rF   rN   r   rG   s    @r   test_col_oprb   1   rJ   r   c                     t          d          } t          d          }| j        sJ |j        sJ t          ddg           }|j        sJ t          ddg d          }|j        sJ t          ddg d          }|j        rJ t	          d          }t          dd|ddg          }|j        sJ t          dd||dg          }|j        rJ t          ddg d          }|j        rJ d S )	Nr   r   rD   )r   rD   r*   r   r   rE   )r   r   rE   r   rD   r*   r   r*   	r   r   r   r*   rD   r   r   r   r   )r   r   
is_echelonr   r	   )zroidentrH   r   s       r   test_is_echelonrh   U   s!   
((CFFE>q!RA<q!'''((A<q!'''((A|sAq!aAYA<q!aAYA|q!00011A|r   c                  *   t          d          t          d          }                                 k    sJ |                                 | k    sJ t          ddg                                           k    sJ t          dddg                                          k    sJ fd}t          ddg d          t          dgdgdgg          g}fdt	          j                  D             }                                j        sJ  |||           t          ddg d	          g }fd
t	          j                  D             }                                j        sJ  |||           t          ddg d          t          t          dd          gdgdgg          t          t          dd          gdgdgg          g}fdt	          j                  D             }                                j        sJ  |||           t          ddg d          t          dgdgdgg          g}fdt	          j                  D             }                                j        sJ  |||           t          ddg d          t          dgdgdgg          t          dgdgdgg          g}fdt	          j                  D             }                                j        sJ  |||           t          ddg d          t          dgdgdgg          g}fdt	          j                  D             }                                j        sJ  |||           d S )Nr   r   r*   r    c                     |D ] }t          d |z  D                       sJ !|D ]K}t          d |D                       s0t          d |                                z  D                       rJ Ld S )Nc              3   $   K   | ]}|j         V  d S r   is_zero.0ts     r   	<genexpr>zCtest_echelon_form.<locals>.verify_row_null_space.<locals>.<genexpr>   s$      66Qqy666666r   c              3   $   K   | ]}|j         V  d S r   rl   rn   s     r   rq   zCtest_echelon_form.<locals>.verify_row_null_space.<locals>.<genexpr>   s$      ,,Qqy,,,,,,r   c              3   $   K   | ]}|j         V  d S r   rl   rn   s     r   rq   zCtest_echelon_form.<locals>.verify_row_null_space.<locals>.<genexpr>   s$      JJQqyJJJJJJr   )all	transpose)matrowsnullsv	a_echelons       r   verify_row_null_spacez0test_echelon_form.<locals>.verify_row_null_space   s     	7 	7A66)A+666666666 	K 	KA,,!,,,,, KJJ)AKKMM2IJJJJJJJJ	K 	Kr   	r*   rD   r      r    rE         	   c                 (    g | ]}|d d f         S r    ro   irH   s     r   
<listcomp>z%test_echelon_form.<locals>.<listcomp>   %    +++AadG+++r   )	r*   rD   r   r}   r    rE   r~   r   r   c                 (    g | ]}|d d f         S r   r   r   s     r   r   z%test_echelon_form.<locals>.<listcomp>   r   r   )	rD   r*   r   r   r   r   rD   r*   r   rD   c                 (    g | ]}|d d f         S r   r   r   s     r   r   z%test_echelon_form.<locals>.<listcomp>   r   r   )	rD   r*   r   r   r   r   r*   r*   r   c                 (    g | ]}|d d f         S r   r   r   s     r   r   z%test_echelon_form.<locals>.<listcomp>   r   r   )	r   r   r   r   rD   rD   r   r*   r*   c                 (    g | ]}|d d f         S r   r   r   s     r   r   z%test_echelon_form.<locals>.<listcomp>   r   r   )rD   rD   r   r   r   r   c                 (    g | ]}|d d f         S r   r   r   s     r   r   z%test_echelon_form.<locals>.<listcomp>   r   r   )r   r   echelon_formr   rangerw   re   r
   )r   r{   rx   rw   rH   rz   s       @@r   test_echelon_formr   p   s   
 	aAAA >>q    >>q    q!RA>>q    q!aSA>>q    K K K K K 	q!00011ATTT   E ,+++U16]]+++D  I!T5))) 	q!00011AE++++U16]]+++D  I!T5)))q!00011Ar1ooVV   r1ooVV  	E ,+++U16]]+++D  I!T5))) 	q!00011AVVV   E ,+++U16]]+++D  I!T5)))q!00011ASSS   TTT  	E ,+++U16]]+++D  I!T5)))q!'''((ATSS   E ,+++U16]]+++D  I!T5)))))r   c                  6   t          ddg           } |                     d          | k    sJ t          dddg          } t          dddg          }|                     d          |                    d          cxk    r| k    sn J t          ddg d          }|                    d          t          dgdgdgg          k    sJ t          ddg d          }|                    d          t          g dg          k    sJ t          ddg d          }|                    d          t          g d	g d
g dg          k    sJ t          ddg d          }t          ddg d          }t          ddg d          }t          ddg d          }|                    d          |                    d          cxk    r<|                    d          cxk    r!|                    d          cxk    r|k    sn J t          d          } t          d          }|                     d          | k    sJ |                    d          |k    sJ t          g dg dg dg dg          }|                                \  }}|t          g dg dg dg dg          k    sJ |dk    sJ t          t	          dd          t	          dd          ddgg dg dg dg          }|                    d          t          dddt	          dd          gdddt	          d d          gdddt	          d!d          gg d"g          k    sJ t          d#          }t          dd|ddt          |          |dg          }t          |                    d          ddt          |          | dz   z  |t	          dd          z   |z   z  dddt          |          |z   dz   z  g          D ]\  }	}
t          |	|
z
            j	        sJ d S )$Nr   F)pivotsr*   r    r   )r*   rD   r   r|   )r*   r   r   r   r*   rD   )r   r   r   )	r*   rD   r   r*   rD   r   r*   rD   r   )	r*   rD   r   r   r   r   r   r   r   rd   )	r   r   r   r   r   r   r*   rD   r   )r   r   r*   rD   rD   r&   r   )r   r    rD   rD   r*   ir    )r   r   r   r   r   r   r&   )r   r    r   r   r   r*   r   )r*   r&   r   r   r*   r*   r   )r   r   r*   r   r   r   r*   )r   r   r   r*   r*   r   r*   )r   r   r   r   r   r   r   )r   rD   r      rD   )r}   r    rE   r~   )r   r   
      )            i   r&      r   r   r   r   r   )
r   rrefr   r   r
   r	   r   zipr   rm   )r   rH   bcdzrv   pivot_offsetsr   r   js              r   	test_rrefr      s2   q!RA6661$$$$q!aSAq!aSA6661666#7#7<<<<1<<<<<<q!YYYA6666A3aS/#:#:::::q!YYYA6666999+#6#66666q!00011A6666%/ZZ%/ZZ%/ZZ+1 $2 $2 2 2 2 2
 	q!00011Aq!00011Aq!00011Aq!00011A666FF%F  & & & &FF%F  & & & & FF%F  & & & & %&& & & & & &
 	AAaA6661$$$$6661$$$$''''''''''''	) 	* 	*A
 C&------------	/ 0 0 0 0 0 0
 I%%%%!R8Aq>>aA>0000000002 	3 	3A 6666*+Q8C3E3E)F*+QHR4E4E)F*+Q8C3E3E)F);););	+= $> $> > > > > 	sAq!aAtAww1-..AAFF%F((477QBF#a!Q&7%7!%;<1aa1q)+, , ' '1 A&&&&&' 'r   c                  D   t          d          \  } }}}t          ddgddgddgddgg          }t          | |||g          }|                    |          t          ddgddgddgddgg          t          d|z  |z   gd|z  dz  |dz  z
  g| g|gg          fk    sJ d S )Nza b c dr   r*   rD   r   r}   r   )r   r   rref_rhs)rH   r   r   r   ABs         r   test_rref_rhsr     s    ##JAq!QAAAA/00A1a|A::a==VFFFF	%   
1qMqSUQqS[MMM	  	      r   c            	      8   t          g dg dg dg dg dg dg                              ddd	
          }                     dd	dd          }                    dd	d          }| d	d d f         t          g dg          k    sJ |d	d d f         t          g dg          k    sJ |d	d d f         t          g dg          k    sJ t          t          fd           t          t          fd           t          t          fd           d S )N)r   r}   r   r*   )r   r   r   r   )r   rD   r*   r   )rD   r   r   r   )r   r   r   r&   )r   r   r   rE   r)   rD   r    r+   r6   r   r7   r   r!   )r   r   r   r   )      r   r   c                  4                          ddd          S )Nr)   rD   rE   r+   r   Cs   r   r   z"test_issue_17827.<locals>.<lambda>0  r.   r   c                  4                          ddd          S )Nr   r~   rD   r!   r   r   s   r   r   z"test_issue_17827.<locals>.<lambda>1  r$   r   c                  6                          dddd          S )Nr6   r   r    rD   r7   r   r   s   r   r   z"test_issue_17827.<locals>.<lambda>2  r;   r   )r   r   r   rF   )DEFr   s      @r   test_issue_17827r     si    	 	A 	
G!!44A	IAA<<A	Ga00AQT7flll^,,,,,,QT7fmmm_------QT7fooo.//////
:KKKKLLL
:GGGGHHH
:SSSSTTTTTr   c                  H   t          ddgt          ddt          z  z
  gg          } |                                 dk    sJ t          ddt          dd                    }|                                dk    sJ t	          d          }|                                dk    sJ d S )Nr*   rD   r   r   r   )r   r   rankr   r   )mnps      r   	test_rankr   4  s    AA!G%&&A6688q====q!U1b\\""A6688q====aA6688q======r   c                  ,   t          d          \  } }}}}}}}}}	}
}t          | || |
z  ||
z  dg||||
z  ||
z  dg||||
z  ||
z  dg||||
z  ||
z  dg||	d|z  |z  ||
z  z
  d|	z  |z  |	|
z  z
  dgg          }|                                dk    sJ d S )Nz/a_x a_y b_x b_y c_x c_y d_x d_y e_x e_y t_0 t_1r   r*   rD   r}   )r   r   r   )axaybxbycxcydxdyexeyt0t1Ms                r   test_issue_11434r   <  s    ABB 3BBBBBBRB2q)RB2q)RB2q)RB2q)R2b2b5!B$r'BrE/1=	? 	@ 	@A
 6688q======r   c            
         t          d          \  } }t          d| z  dddgd| z  d| z  dz
  ddgdd| z  d| z  |z
  dz
  dgdd| |z   dgg          }t          dddd| dz  | | z
  z  z  gdddd| | | z
  z  z  gdddd| | z
  z  gg d	g          }d
}|                                \  }}t          ||z
            t	          |j         k    sJ ||k    sJ d S )Nz
nu, lambdar   r*   r   r   r   rD   r   r   r   )r   r   r   r   r   shape)nulambr   expected_reducedexpected_pivotsreducedr   s          r   test_rank_regression_from_sor   F  sD    |$$HBBA:B$2	A:QrTBrET>A#5:BIr:< 	= 	=A 1aBED52:,>)?@ !1aArD52:,?@ !1aTEBJ@@@@B C C  OffhhOGV$w.//5!'?BBBB_$$$$$$r   c                  "   t          g dg dg dg dg          } | t          j        d          t          z  z
  }|                                dk    sJ |dz                                  dk    sJ |dz                                  dk    sJ d S )N)r*   r*   r*   r   )r   r   r   r   )r   r   r   r   )r   r   rD   r*   r}   r   rD   )r   r   r   r   )r   r   s     r   test_issue_15872r   Z  s    ooo~~~|||LMMA	FJqMMAA6688q====qD;;==AqD;;==Ar   N)sympy.core.numbersr   sympy.core.symbolr   sympy.testing.pytestr   sympy.matricesr   r   r   r	   r
   (sympy.functions.elementary.miscellaneousr   sympy.simplify.simplifyr   	sympy.abcr   rI   rb   rh   r   r   r   r   r   r   r   r   r   r   r   <module>r      sr               % % % % % % ' ' ' ' ' ' - - - - - - - - - - $ $ $ $ $ $ ' ' ' ' ' ' 9 9 9 9 9 9 , , , , , ,      !J !J !JH!J !J !JH  6\* \* \*~>' >' >'B  U U U*    % % %(    r   