
    \hI4                         S SK Jr  S SKJr  S SKJr  S SKJrJrJ	r	  S SKJ
r
  S SK Jr  S SKJr  S SKJr  S S	KJr  S
 rS rS rS rS rS rS rS rS rS rS rg)    )I)symbols)raises)Matrixzeroseye)Symbol)Rational)sqrt)simplify)xc                    ^ [        S5      m[        [        U4S j5        [        [        U4S j5        [        [        U4S j5        [        [        U4S j5        [        [        U4S j5        [        [        U4S j5        [        [        U4S j5        [        [        U4S	 j5        [        [        U4S
 j5        [        [        U4S j5        [        [        U4S j5        [        [        U4S j5        [        [        U4S j5        TR                  SSS5      [	        / SQ/ SQ/ SQ/5      :X  d   eTR                  SSS5      [	        / SQ/ SQ/ SQ/5      :X  d   eTR                  SSSS9[	        / SQ/ SQ/ SQ/5      :X  d   eTR                  SSSS9[	        / SQ/ SQ/ SQ/5      :X  d   eTR                  SSS5      [	        / SQ/ SQ/ SQ/5      :X  d   eTR                  SSSS9[	        / SQ/ SQ/ SQ/5      :X  d   eTR                  SSSS9[	        / SQ/ SQ/ SQ/5      :X  d   eTR                  SSSS5      [	        / SQ/ SQ/ SQ/5      :X  d   eTR                  SSSSS9[	        / SQ/ SQ/ SQ/5      :X  d   eTR                  SSSSS 9[	        / SQ/ SQ/ SQ/5      :X  d   e[	        S!SS/S"-  5      n U R                  SSS5      [	        S!SS/S"-  5      :X  d   eU R                  SSS5      [	        S!SS/S"-  5      :X  d   eU R                  SSSS5      [	        S!SS/S"-  5      :X  d   eg )#N   c                  &   > T R                  S5      $ Nabcelementary_row_opes   \/var/www/auris/envauris/lib/python3.13/site-packages/sympy/matrices/tests/test_reductions.py<lambda>test_row_op.<locals>.<lambda>       q2259    c                  $   > T R                  5       $ Nr   r   s   r   r   r          q224r   c                  &   > T R                  SSSS9$ )Nn->kn   rowkr   r   s   r   r   r          q227Q2Gr   c                  &   > T R                  SSSS9$ )Nr    r!   r"   r   r   s   r   r   r          q227a2Hr   c                  &   > T R                  SSSS9$ )Nn<->m   r!   row1row2r   r   s   r   r   r          q2272Kr   c                  &   > T R                  SSSS9$ )Nr*   r!   r+   r,   r   r   s   r   r   r      r/   r   c                  &   > T R                  SSSS9$ )Nr*   r'   r+   r,   r   r   s   r   r   r          q227!2Lr   c                  &   > T R                  SSSS9$ )Nr*   r+   r'   r,   r   r   s   r   r   r          q2272Lr   c                  (   > T R                  SSSSS9$ Nn->n+kmr+   r!   r-   r.   r$   r   r   s   r   r   r          q22911PQ2Rr   c                  (   > T R                  SSSSS9$ )Nr7   r!   r+   r8   r   r   s   r   r   r      r9   r   c                  (   > T R                  SSSSS9$ )Nr7   r'   r+   r!   r8   r   r   s   r   r   r          q2292AQR2Sr   c                  (   > T R                  SSSSS9$ )Nr7   r+   r'   r!   r8   r   r   s   r   r   r          q22912QR2Sr   c                  (   > T R                  SSSSS9$ r6   r   r   s   r   r   r      r9   r   r    r   r!   r!   r   r   r   r+   r   r   r   r+   r+   r+   r   r   r   r!   r   r"   )r-   r$   r*   r,   )r#   r.   r7   )r+   r!   r   )r#   r$   r.   )r-   r$   r.         )r   r   
ValueErrorr   r   ar   s    @r   test_row_oprJ         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                    ^ [        S5      m[        [        U4S j5        [        [        U4S j5        [        [        U4S j5        [        [        U4S j5        [        [        U4S j5        [        [        U4S j5        [        [        U4S j5        [        [        U4S	 j5        [        [        U4S
 j5        [        [        U4S j5        [        [        U4S j5        [        [        U4S j5        [        [        U4S j5        TR                  SSS5      [	        / SQ/ SQ/ SQ/5      :X  d   eTR                  SSS5      [	        / SQ/ SQ/ SQ/5      :X  d   eTR                  SSSS9[	        / SQ/ SQ/ SQ/5      :X  d   eTR                  SSSS9[	        / SQ/ SQ/ SQ/5      :X  d   eTR                  SSS5      [	        / SQ/ SQ/ SQ/5      :X  d   eTR                  SSSS9[	        / SQ/ SQ/ SQ/5      :X  d   eTR                  SSSS9[	        / SQ/ SQ/ SQ/5      :X  d   eTR                  SSSS5      [	        / SQ/ SQ/ SQ/5      :X  d   eTR                  SSSSS9[	        / SQ/ SQ/ SQ/5      :X  d   eTR                  SSSSS 9[	        / SQ/ SQ/ SQ/5      :X  d   e[	        S!SS/S"-  5      n U R                  SSS5      [	        S!SS/S"-  5      :X  d   eU R                  SSS5      [	        S!SS/S"-  5      :X  d   eU R                  SSSS5      [	        S!SS/S"-  5      :X  d   eg )#Nr   c                  &   > T R                  S5      $ r   elementary_col_opr   s   r   r   test_col_op.<locals>.<lambda>4   r   r   c                  $   > T R                  5       $ r   rN   r   s   r   r   rP   5   r   r   c                  &   > T R                  SSSS9$ )Nr    r!   colr$   rN   r   s   r   r   rP   6   r%   r   c                  &   > T R                  SSSS9$ )Nr    r'   r!   rS   rN   r   s   r   r   rP   7   r(   r   c                  &   > T R                  SSSS9$ )Nr*   r+   r!   col1col2rN   r   s   r   r   rP   8   r/   r   c                  &   > T R                  SSSS9$ )Nr*   r!   r+   rW   rN   r   s   r   r   rP   9   r/   r   c                  &   > T R                  SSSS9$ )Nr*   r'   r+   rW   rN   r   s   r   r   rP   :   r2   r   c                  &   > T R                  SSSS9$ )Nr*   r+   r'   rW   rN   r   s   r   r   rP   ;   r4   r   c                  (   > T R                  SSSSS9$ Nr7   r+   r!   rX   rY   r$   rN   r   s   r   r   rP   <   r9   r   c                  (   > T R                  SSSSS9$ )Nr7   r!   r+   r_   rN   r   s   r   r   rP   =   r9   r   c                  (   > T R                  SSSSS9$ )Nr7   r'   r+   r!   r_   rN   r   s   r   r   rP   >   r<   r   c                  (   > T R                  SSSSS9$ )Nr7   r+   r'   r!   r_   rN   r   s   r   r   rP   ?   r>   r   c                  (   > T R                  SSSSS9$ r^   rN   r   s   r   r   rP   @   r9   r   r    r   r!   r@   rA   rB   r+   rC   rD   rS   )rX   r$   r*   rW   )rT   rY   r7   )r!   r+   r   )rT   r$   rY   )rX   r$   rY   rE   rF   )r   r   rG   rO   r   rH   s    @r   test_col_oprd   1   rK   r   c                  (   [        S5      n [        S5      nU R                  (       d   eUR                  (       d   e[        SS/ 5      nUR                  (       d   e[        SS/ SQ5      nUR                  (       d   e[        SS/ SQ5      nUR                  (       a   e[	        S5      n[        SSUSS/5      nUR                  (       d   e[        SSX3S/5      nUR                  (       a   e[        SS/ SQ5      nUR                  (       a   eg )	Nr   r   rE   )r   rE   r+   r   r   rF   )r   r   rF   r   rE   r+   r   r+   	r   r   r   r+   rE   r   r   r   r   )r   r   
is_echelonr   r	   )zroidentrI   r   s       r   test_is_echelonrj   U   s    
(CFE>>>q!RA<<<q!'(A<<<q!'(A||sAq!aAYA<<<q!aAYA||q!01A|||r   c                  H  ^ [        S5      n [        S5      nU R                  5       U :X  d   eUR                  5       U:X  d   e[        SS/ 5      n U R                  5       U :X  d   e[        SSS/5      n U R                  5       U :X  d   eU4S jn[        SS/ SQ5      n [        S/S/S//5      /n[	        U R
                  5       Vs/ s H  o@US S 24   PM     nnU R                  5       mTR                  (       d   eU" XU5        [        SS/ SQ5      n / n[	        U R
                  5       Vs/ s H  o@US S 24   PM     nnU R                  5       mTR                  (       d   eU" XU5        [        SS/ S	Q5      n [        [        S
S5      /S/S//5      [        [        SS5      /S/S//5      /n[	        U R
                  5       Vs/ s H  o@US S 24   PM     nnU R                  5       mTR                  (       d   eU" XU5        [        SS/ SQ5      n [        S/S/S//5      /n[	        U R
                  5       Vs/ s H  o@US S 24   PM     nnU R                  5       mTR                  (       d   eU" XU5        [        SS/ SQ5      n [        S/S/S//5      [        S/S
/S//5      /n[	        U R
                  5       Vs/ s H  o@US S 24   PM     nnU R                  5       mTR                  (       d   eU" XU5        [        SS/ SQ5      n [        S
/S/S//5      /n[	        U R
                  5       Vs/ s H  o@US S 24   PM     nnU R                  5       mTR                  (       d   eU" XU5        g s  snf s  snf s  snf s  snf s  snf s  snf )Nr   r   r+   r!   c                    > U H  n[        S TU-   5       5      (       a  M   e   U HF  n[        S U 5       5      (       a  M  [        S TUR                  5       -   5       5      (       d  MF   e   g )Nc              3   8   #    U  H  oR                   v   M     g 7fr   is_zero.0ts     r   	<genexpr>Ctest_echelon_form.<locals>.verify_row_null_space.<locals>.<genexpr>   s     6+Qyy+   c              3   8   #    U  H  oR                   v   M     g 7fr   rn   rp   s     r   rs   rt      s     ,!Qyy!ru   c              3   8   #    U  H  oR                   v   M     g 7fr   rn   rp   s     r   rs   rt      s     J2IQyy2Iru   )all	transpose)matrowsnullsv	a_echelons       r   verify_row_null_space0test_echelon_form.<locals>.verify_row_null_space   se    A6)A+66666 A,!,,,J)AKKM2IJJJJJ r   	r+   rE   r      r!   rF         	   )	r+   rE   r   r   r!   rF   r   r   r   )	rE   r+   r   r   r   r   rE   r+   r   rE   )	rE   r+   r   r   r   r   r+   r+   r   )	r   r   r   r   rE   rE   r   r+   r+   )rE   rE   r   r   r   r   )r   r   echelon_formr   ranger{   rg   r
   )rI   r   r   r|   ir{   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]+]adG]D+ I!5) 	q!01AE"166]+]adG]D+ I!5)q!01Ar1oVV  r1oVV 	E #166]+]adG]D+ I!5) 	q!01AVVV  E #166]+]adG]D+ I!5)q!01ASSS  TTT 	E #166]+]adG]D+ I!5)q!'(ATSS  E #166]+]adG]D+ I!5)y , , , , , ,s$   	N1NNNNNc                     [        SS/ 5      n U R                  SS9U :X  d   e[        SSS/5      n [        SSS/5      nU R                  SS9UR                  SS9s=:X  a  U :X  d   e   e[        SS/ SQ5      nUR                  SS9[        S/S/S//5      :X  d   e[        SS/ SQ5      nUR                  SS9[        / SQ/5      :X  d   e[        SS/ SQ5      nUR                  SS9[        / S	Q/ S
Q/ SQ/5      :X  d   e[        SS/ SQ5      n[        SS/ SQ5      n[        SS/ SQ5      n[        SS/ SQ5      nUR                  SS9UR                  SS9s=:X  a/  UR                  SS9s=:X  a  UR                  SS9s=:X  a  U:X  d   e   e[        S5      n [        S5      nU R                  SS9U :X  d   eUR                  SS9U:X  d   e[        / SQ/ SQ/ SQ/ SQ/5      nUR                  5       u  pgU[        / SQ/ SQ/ SQ/ SQ/5      :X  d   eUS:X  d   e[        [	        SS5      [	        SS5      SS// SQ/ SQ/ SQ/5      nUR                  SS9[        SSS[	        SS5      /SSS[	        S S5      /SSS[	        S!S5      // S"Q/5      :X  d   e[        S#5      n[        SSUSS[        U5      US/5      n[        UR                  SS9SS[        U5      U* S-   -  U[	        SS5      -  * U-   -  SSS[        U5      U-   S-   -  /5       H#  u  p[        X-
  5      R                  (       a  M#   e   g )$Nr   F)pivotsr+   r!   r   )r+   rE   r   r   )r+   r   r   r   r+   rE   )r   r   r   )	r+   rE   r   r+   rE   r   r+   rE   r   )	r+   rE   r   r   r   r   r   r   r   rf   )	r   r   r   r   r   r   r+   rE   r   )r   r   r+   rE   rE   r'   r   )r   r!   rE   rE   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   rE   r      rE   )r   r!   rF   r   )r   r   
      )            i   r'      r   r   r   r   r   )
r   rrefr   r   r
   r	   r   zipr   ro   )r   rI   bcdzrz   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)+, &&&&&,r   c                  
   [        S5      u  pp#[        SS/SS/SS/SS//5      n[        XX#/5      nUR                  U5      [        SS/SS/SS/SS//5      [        SU-  U-   /SU-  S-  US-  -
  /U /U//5      4:X  d   eg )Nza b c dr   r+   rE   r   r   r   )r   r   rref_rhs)rI   r   r   r   ABs         r   test_rref_rhsr     s    #JA!AAAA/0Aa|A::a=VFFFF	%  
1qMqSUQqS[MMM	 	   r   c            	        ^ [        / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      mTR                  SSS	S
9n TR                  SS	SSS9nTR                  SS	SS9nU S	S S 24   [        / SQ/5      :X  d   eUS	S S 24   [        / SQ/5      :X  d   eUS	S S 24   [        / SQ/5      :X  d   e[        [        U4S j5        [        [        U4S j5        [        [        U4S j5        g )N)r   r   r   r+   )r   r   r   r   )r   rE   r+   r   )rE   r   r   r   )r   r   r   r'   )r   r   r   rF   r*   rE   r!   r,   r7   r   r8   r    r"   )r   r   r   r   )      r   r   c                  &   > T R                  SSSS9$ )Nr*   rE   rF   r,   r   Cs   r   r   "test_issue_17827.<locals>.<lambda>0  r/   r   c                  &   > T R                  SSSS9$ )Nr    r   rE   r"   r   r   s   r   r   r   1  r%   r   c                  (   > T R                  SSSSS9$ )Nr7   r   r!   rE   r8   r   r   s   r   r   r   2  r<   r   )r   r   r   rG   )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                  
   [        SS/[        SS[        -  -
  //5      n U R                  5       S:X  d   e[        SS[        SS5      5      nUR                  5       S:X  d   e[	        S5      nUR                  5       S:X  d   eg )Nr+   rE   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                      [        S5      u  pp#pEpgpp[        XX
-  X-  S/X#X*-  X:-  S/XEXJ-  XZ-  S/XgXj-  Xz-  S/XSU-  U-  X-  -
  SU	-  U-  X-  -
  S//5      nUR                  5       S:X  d   eg )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+   rE   r   )r   r   r   )axaybxbycxcydxdyexeyt0t1Ms                r   test_issue_11434r   <  s    AB 3BBBBBBq)q)q)q)2b25!B$r'BE/1=	? 	@A
 668q==r   c            
         [        S5      u  p[        SU -  SSS/SU -  SU -  S-
  SS/SSU -  SU -  U-
  S-
  S/SSX-   S//5      n[        SSSSU S-  U* U -
  -  -  /SSSSX* U -
  -  -  /SSSSU* U -
  -  // S	Q/5      nS
nUR                  5       u  pV[        X5-
  5      [	        UR
                  6 :X  d   eXd:X  d   eg )Nz
nu, lambdar   r+   r   r   r   rE   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:BIr:< 	=A 1aBED52:,>)?@ !1aAr52:,?@ !1aTEBJ@@B C  OffhOG$./5!''?BBB$$$r   c                     [        / SQ/ SQ/ SQ/ SQ/5      n U [         R                  " S5      [        -  -
  nUR                  5       S:X  d   eUS-  R                  5       S:X  d   eUS-  R                  5       S:X  d   eg )N)r+   r+   r+   r   )r   r   r   r   )r   r   r   r   )r   r   rE   r+   r   r   rE   )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   rJ   rd   rj   r   r   r   r   r   r   r   r    r   r   <module>r      sb      % ' - - $ ' 9 , !JH!JH6\*~>'BU*%(r   