
    Rie6                         d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dl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  G d deee          Zd 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)_MinimalMatrix_CastableMatrix)MatrixReductions)raises)Matrixzeros)Symbol)Rational)sqrt)simplify)xc                       e Zd ZdS )ReductionsOnlyMatrixN)__name__
__module____qualname__     Dlib/python3.11/site-packages/sympy/matrices/tests/test_reductions.pyr   r      s        Dr   r   c                 &    t          | | d           S )Nc                 (    t          | |k              S N)intijs     r   <lambda>z eye_Reductions.<locals>.<lambda>   s    3qAv;; r   r   ns    r   eye_Reductionsr#      s    1&>&>???r   c                 &    t          | | d           S )Nc                     dS )Nr   r   r   s     r   r   z"zeros_Reductions.<locals>.<lambda>   s    1 r   r    r!   s    r   zeros_Reductionsr&      s    1nn555r   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 )#N   c                  .                          d          S Nabcelementary_row_opes   r   r   ztest_row_op.<locals>.<lambda>       q22599 r   c                  ,                                      S r   r,   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 )Nr4   r5   r6   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   r5   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>   r5   r?   r@   r,   r.   s   r   r   ztest_row_op.<locals>.<lambda>    rC   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?   r5   rA   rB   r8   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 )NrK   r5   r?   rL   r,   r.   s   r   r   ztest_row_op.<locals>.<lambda>$   rM   r   c                  6                          dddd          S )NrK   r;   r?   r5   rL   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 )NrK   r?   r;   r5   rL   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 rJ   r,   r.   s   r   r   ztest_row_op.<locals>.<lambda>'   rM   r   r4   r   r5   r5   r   r   r   r?   r   r   r   r?   r?   r?   r   r   r   r5   r   r6   )rA   r8   r>   r@   )r7   rB   rK   )r?   r5   r   )r7   r8   rB   )rA   r8   rB         )r#   r   
ValueErrorr-   r	   r   ar/   s    @r   test_row_opr^         q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A3q5))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>?   r0   r   c                  ,                                      S r   rb   r.   s   r   r   ztest_col_op.<locals>.<lambda>@   r2   r   c                  4                          ddd          S )Nr4   r5   colr8   rb   r.   s   r   r   ztest_col_op.<locals>.<lambda>A   r9   r   c                  4                          ddd          S )Nr4   r;   r5   rf   rb   r.   s   r   r   ztest_col_op.<locals>.<lambda>B   r<   r   c                  4                          ddd          S )Nr>   r?   r5   col1col2rb   r.   s   r   r   ztest_col_op.<locals>.<lambda>C   rC   r   c                  4                          ddd          S )Nr>   r5   r?   rj   rb   r.   s   r   r   ztest_col_op.<locals>.<lambda>D   rC   r   c                  4                          ddd          S )Nr>   r;   r?   rj   rb   r.   s   r   r   ztest_col_op.<locals>.<lambda>E   rF   r   c                  4                          ddd          S )Nr>   r?   r;   rj   rb   r.   s   r   r   ztest_col_op.<locals>.<lambda>F   rH   r   c                  6                          dddd          S NrK   r?   r5   rk   rl   r8   rb   r.   s   r   r   ztest_col_op.<locals>.<lambda>G   rM   r   c                  6                          dddd          S )NrK   r5   r?   rr   rb   r.   s   r   r   ztest_col_op.<locals>.<lambda>H   rM   r   c                  6                          dddd          S )NrK   r;   r?   r5   rr   rb   r.   s   r   r   ztest_col_op.<locals>.<lambda>I   rP   r   c                  6                          dddd          S )NrK   r?   r;   r5   rr   rb   r.   s   r   r   ztest_col_op.<locals>.<lambda>J   rR   r   c                  6                          dddd          S rq   rb   r.   s   r   r   ztest_col_op.<locals>.<lambda>K   rM   r   r4   r   r5   rT   rU   rV   r?   rW   rX   rf   )rk   r8   r>   rj   )rg   rl   rK   )r5   r?   r   )rg   r8   rl   )rk   r8   rl   rY   rZ   )r#   r   r[   rc   r	   r   r\   s    @r   test_col_oprw   <   r_   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   rY   )r(   rY   r?   r   r   rZ   )r   r   rZ   r(   rY   r?   r   r?   	r   r   r   r?   rY   r(   r   r   r   )r&   r#   
is_echelonr   r   )zroidentr]   r   s       r   test_is_echelonr}   `   s%   
1

C1E>Q2&&A<Q#5#5#566A<Q#5#5#566A|sAQAq!9--A<QAq!9--A|Q#>#>#>??A|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?   r5   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   r   r   s     r   r   zCtest_echelon_form.<locals>.verify_row_null_space.<locals>.<genexpr>   s$      ,,Qqy,,,,,,r   c              3   $   K   | ]}|j         V  d S r   r   r   s     r   r   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?   rY   r(      r5   rZ         	   c                 (    g | ]}|d d f         S r   r   r   r   r]   s     r   
<listcomp>z%test_echelon_form.<locals>.<listcomp>   %    +++AadG+++r   )	r?   rY   r(   r   r5   rZ   r   r   r   c                 (    g | ]}|d d f         S r   r   r   s     r   r   z%test_echelon_form.<locals>.<listcomp>   r   r   )	rY   r?   r(   r   r   r   rY   r?   r(   rY   c                 (    g | ]}|d d f         S r   r   r   s     r   r   z%test_echelon_form.<locals>.<listcomp>   r   r   )	rY   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   rY   rY   r   r?   r?   c                 (    g | ]}|d d f         S r   r   r   s     r   r   z%test_echelon_form.<locals>.<listcomp>   r   r   )rY   rY   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   r	   ranger   rz   r   )r/   r   r   r   r]   r   s       @@r   test_echelon_formr   {   s   
 	AqA >>q    >>q    Q2&&A>>q    QA3''A>>q    K K K K K 	Q#>#>#>??ATTT   E ,+++U16]]+++D  I!T5))) 	Q#>#>#>??AE++++U16]]+++D  I!T5)))Q#>#>#>??Ar1ooVV   r1ooVV  	E ,+++U16]]+++D  I!T5))) 	Q#>#>#>??AVVV   E ,+++U16]]+++D  I!T5)))Q#>#>#>??ASSS   TTT  	E ,+++U16]]+++D  I!T5)))Q#5#5#566A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?   r5   r(   )r?   rY   r(   r   )r?   r   r   r   r?   rY   )r   r   r   )	r?   rY   r(   r?   rY   r(   r?   rY   r(   )	r?   rY   r(   r   r   r   r   r   r   ry   )	r   r   r   r   r   r   r?   rY   r(   )r   r   r?   rY   rY   r;   r(   )r   r5   rY   rY   r?   ir5   )r   r   r   r   r   r   r;   )r   r5   r   r   r   r?   r   )r?   r;   r   r   r?   r?   r   )r   r   r?   r   r   r   r?   )r   r   r   r?   r?   r   r?   )r   r   r   r   r   r   r   )r   rY   r(      rY   )r   r5   rZ   r   )r   r   
      )            i   r;      r   r   r   r   r   )r   rrefr	   r#   r&   r   r   r   zipr   r   )r/   r]   bcdzr   pivot_offsetsr   r   r   s              r   	test_rrefr      s6   Q2&&A6661$$$$QA3''AQA3''A6661666#7#7<<<<1<<<<<<Q999--A6666A3aS/#:#:::::Q999--A6666999+#6#66666Q#>#>#>??A6666%/ZZ%/ZZ%/ZZ+1 $2 $2 2 2 2 2
 	Q#>#>#>??AQ#>#>#>??AQ#>#>#>??AQ#>#>#>??A666FF%F  & & & &FF%F  & & & & FF%F  & & & & %&& & & & & &
 	qAA6661$$$$6661$$$$''''''''''''	) 	* 	*A
 C&------------	/ 0 0 0 0 0 0
 I%%%%x2!QA!L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Aq!T!WWa#;<<AAFF%F((477QBF#a!Q&7%7!%;<1aa1q)+, , ' '1 A&&&&&' '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   rY   r?   r(   )rY   r(   r   r   )r   r(   r(   r;   )r   r   r   rZ   r>   rY   r5   r@   rK   r(   rL   r4   r6   )r   r(   r   r   )      r   r   c                  4                          ddd          S )Nr>   rY   rZ   r@   r,   Cs   r   r   z"test_issue_17827.<locals>.<lambda>+  rC   r   c                  4                          ddd          S )Nr4   r   rY   r6   r,   r   s   r   r   z"test_issue_17827.<locals>.<lambda>,  r9   r   c                  6                          dddd          S )NrK   r   r5   rY   rL   r,   r   s   r   r   z"test_issue_17827.<locals>.<lambda>-  rP   r   )r	   r-   r   r[   )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?   rY   r(   r   r   )r	   r   rankr   r
   )mr"   ps      r   	test_rankr   /  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?   rY   r   )r   r	   r   )axaybxbycxcydxdyexeyt0t1Ms                r   test_issue_11434r   7  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   rY   r   r   r   )r   r	   r   r   r
   shape)nulambAexpected_reducedexpected_pivotsreducedr   s          r   test_rank_regression_from_sor   A  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   rY   r?   r   r(   rY   )r	   eyer   r   )r   Bs     r   test_issue_15872r   U  s    ooo~~~|||LMMA	FJqMMAA6688q====qD;;==AqD;;==Ar   N)#sympy.core.numbersr   sympy.core.symbolr   sympy.matrices.commonr   r   sympy.matrices.matricesr   sympy.testing.pytestr   sympy.matricesr	   r
   r   r   (sympy.functions.elementary.miscellaneousr   sympy.simplify.simplifyr   	sympy.abcr   r   r#   r&   r^   rw   r}   r   r   r   r   r   r   r   r   r   r   <module>r      s               % % % % % % A A A A A A A A 4 4 4 4 4 4 ' ' ' ' ' ' ( ( ( ( ( ( ( ( $ $ $ $ $ $ ' ' ' ' ' ' 9 9 9 9 9 9 , , , , , ,      	 	 	 	 	>?<L 	 	 	@ @ @6 6 6!J !J !JH!J !J !JH  6\* \* \*~>' >' >'@U U U*    % % %(    r   