
    sgI4                         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y)    )I)symbols)raises)Matrixzeroseye)Symbol)Rational)sqrt)simplify)xc                  r   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       j                  ddd      t	        g dg dg dg      k(  sJ j                  ddd      t	        g dg dg dg      k(  sJ j                  ddd      t	        g dg dg dg      k(  sJ j                  ddd      t	        g dg dg dg      k(  sJ j                  ddd      t	        g dg dg dg      k(  sJ j                  ddd      t	        g dg dg dg      k(  sJ j                  ddd      t	        g dg dg dg      k(  sJ j                  dddd      t	        g dg dg dg      k(  sJ j                  dddd      t	        g dg dg dg      k(  sJ j                  dddd       t	        g dg dg dg      k(  sJ t	        d!ddgd"z        } | j                  ddd      t	        d!ddgd"z        k(  sJ | j                  ddd      t	        d!ddgd"z        k(  sJ | j                  dddd      t	        d!ddgd"z        k(  sJ y )#N   c                  &     j                  d      S Nabcelementary_row_opes   W/var/www/html/venv/lib/python3.12/site-packages/sympy/matrices/tests/test_reductions.py<lambda>ztest_row_op.<locals>.<lambda>       q2259     c                  $     j                         S Nr   r   s   r   r   ztest_row_op.<locals>.<lambda>       q224 r   c                  ,     j                  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 r   c                  ,     j                  ddd      S )Nr   r    r!   r   r   s   r   r   ztest_row_op.<locals>.<lambda>       q227a2H r   c                  ,     j                  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 r   c                  ,     j                  ddd      S )Nr)   r    r*   r+   r   r   s   r   r   ztest_row_op.<locals>.<lambda>   r.   r   c                  ,     j                  ddd      S )Nr)   r&   r*   r+   r   r   s   r   r   ztest_row_op.<locals>.<lambda>       q227!2L r   c                  ,     j                  ddd      S )Nr)   r*   r&   r+   r   r   s   r   r   ztest_row_op.<locals>.<lambda>       q2272L r   c                  .     j                  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   c                  .     j                  dddd      S )Nr6   r    r*   r7   r   r   s   r   r   ztest_row_op.<locals>.<lambda>   r8   r   c                  .     j                  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 r   c                  .     j                  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 r   c                  .     j                  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:
:45
:GH
:HI
:KL
:KL
:LM
:LM
:RS
:RS
:ST
:ST
:RS w1-Iy8Y1ZZZZw1-Iy8Y1ZZZZwA3vy)U^>_7````wQ!4	9V_?`8aaaaw1-Iy8Y1ZZZZwQQ769iYbBc;ddddwAA6&)YXaAb:ccccy!Q2fiT]=^6____ya11=T]_hHiAjjjjyqAA>&)U^`iIjBkkkk 	q!aSUAw1-1qc!e1DDDDw1-1qc!e1DDDDy!Q2fQA3q56IIIIr   c                  r   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       j                  ddd      t	        g dg dg dg      k(  sJ j                  ddd      t	        g dg dg dg      k(  sJ j                  ddd      t	        g dg dg dg      k(  sJ j                  ddd      t	        g dg dg dg      k(  sJ j                  ddd      t	        g dg dg dg      k(  sJ j                  ddd      t	        g dg dg dg      k(  sJ j                  ddd      t	        g dg dg dg      k(  sJ j                  dddd      t	        g dg dg dg      k(  sJ j                  dddd      t	        g dg dg dg      k(  sJ j                  dddd       t	        g dg dg dg      k(  sJ t	        d!ddgd"z        } | j                  ddd      t	        d!ddgd"z        k(  sJ | j                  ddd      t	        d!ddgd"z        k(  sJ | j                  dddd      t	        d!ddgd"z        k(  sJ y )#Nr   c                  &     j                  d      S r   elementary_col_opr   s   r   r   ztest_col_op.<locals>.<lambda>4   r   r   c                  $     j                         S r   rM   r   s   r   r   ztest_col_op.<locals>.<lambda>5   r   r   c                  ,     j                  ddd      S )Nr   r    colr#   rM   r   s   r   r   ztest_col_op.<locals>.<lambda>6   r$   r   c                  ,     j                  ddd      S )Nr   r&   r    rQ   rM   r   s   r   r   ztest_col_op.<locals>.<lambda>7   r'   r   c                  ,     j                  ddd      S )Nr)   r*   r    col1col2rM   r   s   r   r   ztest_col_op.<locals>.<lambda>8   r.   r   c                  ,     j                  ddd      S )Nr)   r    r*   rU   rM   r   s   r   r   ztest_col_op.<locals>.<lambda>9   r.   r   c                  ,     j                  ddd      S )Nr)   r&   r*   rU   rM   r   s   r   r   ztest_col_op.<locals>.<lambda>:   r1   r   c                  ,     j                  ddd      S )Nr)   r*   r&   rU   rM   r   s   r   r   ztest_col_op.<locals>.<lambda>;   r3   r   c                  .     j                  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                  .     j                  dddd      S )Nr6   r    r*   r]   rM   r   s   r   r   ztest_col_op.<locals>.<lambda>=   r8   r   c                  .     j                  dddd      S )Nr6   r&   r*   r    r]   rM   r   s   r   r   ztest_col_op.<locals>.<lambda>>   r;   r   c                  .     j                  dddd      S )Nr6   r*   r&   r    r]   rM   r   s   r   r   ztest_col_op.<locals>.<lambda>?   r=   r   c                  .     j                  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 y )	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FE>>>q!RA<<<q!'(A<<<q!'(A||sAq!aAYA<<<q!aAYA||q!01A|||r   c                     t        d      } t        d      }| j                         | k(  sJ |j                         |k(  sJ t        ddg       } | j                         | k(  sJ t        dddg      } | j                         | k(  sJ fd}t        ddg d      } t        dgdgdgg      g}t	        | j
                        D cg c]  }| |d d f    }}| j                         j                  sJ  || ||       t        ddg d      } g }t	        | j
                        D cg c]  }| |d d f    }}| j                         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}t	        | j
                        D cg c]  }| |d d f    }}| j                         j                  sJ  || ||       t        ddg d      } t        dgdgdgg      g}t	        | j
                        D cg c]  }| |d d f    }}| j                         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}t	        | j
                        D cg c]  }| |d d f    }}| j                         j                  sJ  || ||       t        ddg d      } t        d
gdgdgg      g}t	        | j
                        D cg c]  }| |d d f    }}| j                         j                  sJ  || ||       y c c}w c c}w c c}w c c}w c c}w c c}w )Nr   r   r*   r    c                     |D ]  }t        d |z  D              rJ  |D ]:  }t        d |D              rt        d |j                         z  D              s:J  y )Nc              3   4   K   | ]  }|j                     y wr   is_zero.0ts     r   	<genexpr>zCtest_echelon_form.<locals>.verify_row_null_space.<locals>.<genexpr>   s     6Qqyy6   c              3   4   K   | ]  }|j                     y wr   rl   rn   s     r   rq   zCtest_echelon_form.<locals>.verify_row_null_space.<locals>.<genexpr>   s     ,Qqyy,rr   c              3   4   K   | ]  }|j                     y wr   rl   rn   s     r   rq   zCtest_echelon_form.<locals>.verify_row_null_space.<locals>.<genexpr>   s     JQqyyJrr   )all	transpose)matrowsnullsv	a_echelons       r   verify_row_null_spacez0test_echelon_form.<locals>.verify_row_null_space   sh     	7A6)A+6666	7 	KA,!,,J)AKKM2IJJJJ	Kr   	r*   rD   r      r    rE         	   )	r*   rD   r   r~   r    rE   r   r   r   )	rD   r*   r   r   r   r   rD   r*   r   rD   )	rD   r*   r   r   r   r   r*   r*   r   )	r   r   r   r   rD   rD   r   r*   r*   )rD   rD   r   r   r   r   )r   r   echelon_formr   rangerx   re   r
   )rH   r   r|   ry   irx   r{   s         @r   test_echelon_formr   p   s   
 	aAAA >>q   >>q   q!RA>>q   q!aSA>>q   K 	q!01ATTT  E #166]+AadG+D+ I!T5) 	q!01AE"166]+AadG+D+ I!T5)q!01Ar1oVV  r1oVV 	E #166]+AadG+D+ I!T5) 	q!01AVVV  E #166]+AadG+D+ I!T5)q!01ASSS  TTT 	E #166]+AadG+D+ I!T5)q!'(ATSS  E #166]+AadG+D+ I!T5)y , , , , , ,s$   M&M"<M'.M,0M1"M6c                     t        ddg       } | j                  d      | k(  sJ t        dddg      } t        dddg      }| j                  d      |j                  d      cxk(  r| k(  sJ  J t        ddg d      }|j                  d      t        dgdgdgg      k(  sJ t        ddg d      }|j                  d      t        g dg      k(  sJ t        ddg d      }|j                  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      }|j                  d      |j                  d      cxk(  r2|j                  d      cxk(  r|j                  d      cxk(  r|k(  sJ  J t        d      } t        d      }| j                  d      | k(  sJ |j                  d      |k(  sJ t        g dg dg dg dg      }|j                         \  }}|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      }|j                  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        |j                  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                  rJ  y )$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zrw   pivot_offsetsr   r   js              r   	test_rrefr      s   q!RA6661$$$q!aSAq!aSA6661666#7<1<<<<<q!YA6666A3aS/#::::q!YA66669+#6666q!01A6666%/%/%/+1 $2 2 2 2
 	q!01Aq!01Aq!01Aq!0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
 I%%%!R8Aq>aA>0002 	3A 6666*+Q8C3E)F*+QHR4E)F*+Q8C3E)F);	+= $> > > > 	sAq!aAtAw1-.AAFF%F(47QBF#a!Q&7%7!%;<1aa1q)+, '1 A&&&&'r   c                     t        d      \  } }}}t        ddgddgddgddgg      }t        | |||g      }|j                  |      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 y )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/0A1a|A::a=VFFFF	%  
1qMqSUQqS[MMM	 	   r   c            	         t        g dg dg dg dg dg dg      j                  ddd	
      } j                  dd	dd      }j                  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       y )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                  ,     j                  ddd      S )Nr)   rD   rE   r+   r   Cs   r   r   z"test_issue_17827.<locals>.<lambda>0  r.   r   c                  ,     j                  ddd      S )Nr   r   rD   r!   r   r   s   r   r   z"test_issue_17827.<locals>.<lambda>1  r$   r   c                  .     j                  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     s     	A 	
G!!4A	IAA<A	Ga0AQT7fl^,,-,QT7fm_--.-QT7fo.//0/
:KL
:GH
:STr   c                     t        ddgt        ddt        z  z
  gg      } | j                         dk(  sJ t        ddt        dd            }|j                         dk(  sJ t	        d      }|j                         dk(  sJ y )Nr*   rD   r   r   r   )r   r   rankr   r   )mnps      r   	test_rankr   4  st    AA!G%&A668q==q!U1b\"A668q==aA668q==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      }|j                         dk(  sJ y )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 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
 668q==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
}|j                         \  }}t        ||z
        t	        |j
                   k(  sJ ||k(  sJ y )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  s!    |$HBBA:B$2	A:QrTBrET>A#5:BIr:< 	=A 1aBED52:,>)?@ !1aArD52:,?@ !1aTEBJ@@B C  OffhOGV$w./5!''?BBB_$$$r   c                      t        g dg dg dg dg      } | t        j                  d      t        z  z
  }|j                         dk(  sJ |dz  j                         dk(  sJ |dz  j                         dk(  sJ y )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  sn    o~|LMA	FJJqMAA668q==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   <module>r      sb      % ' - - $ ' 9 , !JH!JH6\*~>'BU*%(r   