
    \h'W                        S SK r S SKJr  S SKJrJr  S SKJr  S SKJ	r	J
r
  S SKJr  S SKJr  S SKJrJr  S S	KJrJrJr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 SK"J#r#J$r$  S r%S r&S r'S r(S r)S r*S r+S r,S r-S r.S r/S r0S r1S r2S r3S r4S  r5\ Rl                  Ro                  S!S"S#/5      \ Rl                  Ro                  S$\" / S%Q/ S&Q/ S'Q/5      \" S(S)/ S*Q5      4\" / S%Q/ S&Q/ S'Q/5      \" S)S+/S(S,/S-S.//5      4\" S+S+\
" S/5      5      \" S+S)\
" S05      5      4/5      S1 5       5       r8\ Rl                  Ro                  S2S"\4\\4/5      S3 5       r9S4 r:g)5    N)
expand_mul)IRational)S)Symbolsymbols)sympify)simplify)
ShapeErrorNonSquareMatrixError)ImmutableMatrixMatrixeyeonesImmutableDenseMatrixdotprodsimp)_det_laplace)raises)NonInvertibleMatrixError)DMShapeError)linsolve)xyc                      [        [        S5      5      n [        S5         U R                  [	        SS5      5      [        [        S5      5      [        SS/ 5      4:X  d   e S S S 5        g ! , (       d  f       g = f)N  [
        [             -3/4,       45/32 - 37*I/16,                   0,                     0],
        [-149/64 + 49*I/32, -177/128 - 1369*I/128,                   0, -2063/256 + 541*I/128],
        [                0,         9/4 + 55*I/16, 2473/256 + 137*I/64,                     0],
        [                0,                     0,                   0, -177/128 - 1369*I/128]]T        [
            [                          -32549314808672/3306971225785 - 17397006745216*I/3306971225785],
            [                               67439348256/3306971225785 - 9167503335872*I/3306971225785],
            [-15091965363354518272/21217636514687010905 + 16890163109293858304*I/21217636514687010905],
            [                                                          -11328/952745 + 87616*I/952745]]r   )r   r   r   gauss_jordan_solver   Ms    Y/var/www/auris/envauris/lib/python3.13/site-packages/sympy/matrices/tests/test_solvers.py%test_issue_17247_expression_blowup_29r#      s    q c d 	eA
 
T	##DAJ/F1 >k <l 5m ouuvxy{}n~	4@ @ 	@ @ 
		s   AA++
A9c                      [        [        S5      5      n [        S5         U R                  [	        SS5      5      [        [        S5      5      :X  d   e S S S 5        g ! , (       d  f       g = f)Nr   Tr   r   r   )r   r   r   cholesky_solver   r    s    r"   %test_issue_17247_expression_blowup_30r&      sm    q c d 	eA
 
T	Q
+va 9k 7l 0m m 	m m 
		s   4A
A,c                  j   [        [        S-   S-  [        S-  S[        -  -   S-   -
  [        /[        S//5      n [        SS/5      nS n[        S[        -  S[        S-  * S[        -  -
  [        S-   S-  -   S-
  [        -  -
  [        -  /5      nX0R                  XS9-
  [        SS/5      :X  d   eg )Nr      r   c                 4    U R                  5       (       a  S$ S$ )NFT)_random)es    r"   <lambda>)test_LUsolve_iszerofunc.<locals>.<lambda>@   s    aiikkU;t;    )
iszerofunc)r   r   LUsolve)r!   bis_zero_funcx_exps       r"   test_LUsolve_iszerofuncr4   ;   s     	!a%!q!taczA~.2QF;<A1vA;LAaC!adUQqS[AaC!83a7::A=>?EIIaI99faVnLLLr.   c            
         [        [        S-   S[        -
  SS/S[        -
  [        S-   S[        S-   /SS[        -
  [        S-   S/SSS[        S-   //5      n [        S5         U R                  [	        SS5      5      [        [        S-   S[        -  -  /[        S-
  S[        -  -  /[        S-   S[        -  -  /S[        S-   -  //5      :X  d   e S S S 5        g ! , (       d  f       g = f)Nr   r   Tr   )r   r   r   r0   r   r    s    r"   %test_issue_17247_expression_blowup_32r6   G   s    	
QA1!$	
QA1a!e$Aq1u!$A1a!e$	& 	'A
 
T	yya$!eac]O!eac]O!eac]OAEO	0 )  	  
		s   #A0C
C+c            	      D  ^^ [        / SQ/ SQ/ SQ/5      m[        SS/ SQ5      n TU -  mTR                  T5      nX:X  d   e[        / SQ/ SQ/ S	Q/5      m[        SS/ S
Q5      n TU -  mTR                  T5      nX:X  d   e[        SS/SS/SS//5      m[        / SQ5      mTR                  T5      [        SS/5      :X  d   e[        / SQ5      m[        [        UU4S j5        [        / SQ/ SQ/ S	Q/ SQ/ SQ/ SQ/5      m[        / SQ5      n TU -  mTR                  T5      nX:X  d   e[        / SQ/ SQ/5      m[        / SQ5      n TU -  m[        [        UU4S j5        [        SSS 5      m[         R
                  " SS5      m[        [        UU4S j5        g )Nr(         r9      r(      r9   r<   r9   r   r9      r:   r   r(   r:   
   r@   r>   r9   r   rB   r(   r:   r(   r   )r9   r   r   )r9   r   r(   c                  &   > T R                  T5      $ Nr0   Ar1   s   r"   r,   test_LUsolve.<locals>.<lambda>g   s    qyy|r.   )r(   r   )rB   r(   r   c                  &   > T R                  T5      $ rH   rI   rJ   s   r"   r,   rL   u   s    		!r.   r   c                 &    U S:w  a
  SX-   S-   -  $ S$ )Nr9   r   r    )ijs     r"   r,   rL   w   s    qAv!QSU)"<1"<r.   c                  &   > T R                  T5      $ rH   rI   rJ   s   r"   r,   rL   y   s    QYYq\r.   )r   r0   r   
ValueErrorNotImplementedErrorzerosr   r   solnrK   r1   s     @@r"   test_LUsolverY   T   s   	 	A 	q!YA	!A99Q<D99
 	A 	q!Z A	!A99Q<D99AAA'(AyA99Q<61a&>)))yA
:+,
 	A 	zA	!A99Q<D99
J'(AzA	!A
 45q!<=AQA
#%9:r.   c                  ~   [        SSS9u  pp#[        SSS9u  pE[        X/X#//5      nXfR                  [        XE/5      5      -  nUS   R                  5       U:X  d   eUS   X S-  -  U* U* U S-  -  U-  U-   S-  -  U* U S-  -  U-  U-   -  U-   -  X2* U S-  -  U-  U-   S-  -  U* U S-  -  U-  U-   -  -   :X  d   eg )Na:4F)commutativeb:2)r   r   )r   r   rB   )r   r   r0   expand)a0a1a2a3b0b1rK   checks           r"   test_LUsolve_noncommutativerf   |   s   U6NBBU.FB2(#$A		&"*++E;2%%% ;
8bS2#b2h,r/B."55s28|B7KLrQR
c"r(l2o"b)
)B3rBx<?R+?
@	A  r.   c                     [        / SQ/ SQ/ SQ/5      n [        SS/ SQ5      nX-  nU R                  U5      nX1:X  d   e[        SS/SS/S	S
//5      nX-  nU R                  U5      nX1:X  d   e[        / SQ/ SQ/ SQ/5      n [        SS/ SQ5      nX-  nU R                  U5      nX1:X  d   e[        SS/SS/SS//5      nX-  nU R                  U5      nX1:X  d   eg )Nr8   r;   r=   r9   r   r?   r(   r   r:   r<   rA   rC   rE   rF   r@   r>   	   rD         )r   QRsolve)rK   r   r1   rX   s       r"   test_QRsolverl      s   	 	A 	q!YA	A99Q<D99AAA'(A	A99Q<D99
 	A 	q!Z A	A99Q<D99AB"b*+A	A99Q<D99r.   c                  &    [        [        S 5        g )Nc                  V    [        S/5      R                  [        SS/SS//5      5      $ )Nr   r(   r9   r   )r   r0   rP   r.   r"   r,   test_errors.<locals>.<lambda>   s'    vqc{226Aq6Aq6:J3KLr.   )r   r   rP   r.   r"   test_errorsrp      s    
:LMr.   c                  X   [        / SQ/ SQ/ SQ/5      n [        SS/ SQ5      nX-  nU R                  U5      nX1:X  d   e[        / SQ/ SQ/ S	Q/5      n [        SS/ S
Q5      nX-  nU R                  U5      nX1:X  d   e[        S5      n [        S5      nX-  nU R                  U5      nX1:X  d   e[        SS[        -  4S[        -  S445      n [        S5      nX-  nU R                  U5      n[        U5      U:X  d   e[        S[        -  S4S[        -   S445      n [        SS[        -  -   S45      nX-  nU R                  U5      n[        U5      U:X  d   e[	        S5      u  pEpgn[        XE4XV445      n [        Xx45      nU R                  U5      n[        X-  5      U:X  d   eg )Nr8   r;   r=   r9   r   r?   rA   rC   rE   rF   ))r   r:   )r:   r   )r   rh   rr   r:   r   r(   rB   za00, a01, a11, b0, b1)r   r%   r   r   r   r
   )	rK   r   r1   rX   a00a01a11rc   rd   s	            r"   test_cholesky_solverx      s   	 	A 	q!YA	AAD99
 	A 	q!Z A	AAD99 AwA	AAD99AaC2a4)$%AwA	AADdq   1a261+&'AAaC}A	AADdq   #$;<Ccr
SJ'(AxA	AAC=Ar.   c                  V  ^^ [        / SQ/ SQ/ SQ/5      m[        SS/ SQ5      n TU -  mTR                  T5      nX:X  d   e[        / SQ/ SQ/ S	Q/5      m[        SS/ S
Q5      n TU -  mTR                  T5      nX:X  d   e[        SS[        -  4S[        -  S445      m[        S5      n TU -  mTR                  T5      n[        U5      U :X  d   e[        S[        -  S4S[        -   S445      m[        SS[        -  -   S45      n TU -  mTR                  T5      n[        U5      U :X  d   e[        S5      m[        S5      n TU -  mTR                  T5      n[        U5      U :X  d   e[        / SQ/ SQ/5      m[        S/S/S//5      n TU -  m[	        [
        UU4S j5        g )Nr8   r;   r=   r9   r   r?   rA   rC   rE   rF   rh   rr   r:   rs   r(   rB   ))rh   r9   )r9   rh   )r   r   )rr   rM   )rr   ir@   r>   r@   rt   c                  &   > T R                  T5      $ rH   )LDLsolverJ   s   r"   r,   test_LDLsolve.<locals>.<lambda>   s    

1r.   )r   r|   r   r   r   rU   rW   s     @@r"   test_LDLsolver~      s   	 	A 	q!YA	!A::a=D99
 	A 	q!Z A	!A::a=D99AaC2a4)$%AwA	!A::a=Ddq   1a261+&'AAaC}A	!A::a=Ddq    AvA	AA::a=Ddq   k*+AaS2$ A	AA
 56r.   c                  L   [        [        S 5        [        [        S 5        [        [        S 5        [	        SS/SS//5      n [	        [
        [        /[        [
        //5      n[	        SS/SS	//5      nU R                  U5      U:X  d   eU R                  U5      U:X  d   eg )
Nc                  P    [        SS/5      R                  [        SS/5      5      $ Nr   r   r   lower_triangular_solverP   r.   r"   r,   -test_lower_triangular_solve.<locals>.<lambda>       1v55faVnEr.   c                  V    [        SS/SS//5      R                  [        S/5      5      $ r   r   rP   r.   r"   r,   r      '    AA'(??sLr.   c                  `    [        SS/SS//5      R                  [        SS/SS//5      5      $ Nr(   r   r   r   rP   r.   r"   r,   r      6    AA'(??QFQF#$&r.   r   r   r   r>   r(   rh   )r   r   r   rT   r   r   r   r   rK   BCs      r"   test_lower_triangular_solver      s    
EG
:LN
:	&' 	AA AAA AAA A##A&!+++##A&!+++r.   c                  L   [        [        S 5        [        [        S 5        [        [        S 5        [	        SS/SS//5      n [	        [
        [        /[        [
        //5      n[	        SS/SS	//5      nU R                  U5      U:X  d   eU R                  U5      U:X  d   eg )
Nc                  P    [        SS/5      R                  [        SS/5      5      $ r   r   upper_triangular_solverP   r.   r"   r,   -test_upper_triangular_solve.<locals>.<lambda>	  r   r.   c                  V    [        SS/SS//5      R                  [        S/5      5      $ r   r   rP   r.   r"   r,   r     r   r.   c                  `    [        SS/SS//5      R                  [        SS/SS//5      5      $ r   r   rP   r.   r"   r,   r     r   r.   r   r   r(   r   r9   r>   )r   r   r   	TypeErrorr   r   r   r   r   s      r"   test_upper_triangular_solver     s    
EG
:LN
9	&' 	AA AAA AAA A##A&!+++##A&!+++r.   c                    ^ ^ [        [        S 5        [        SS/SS//5      S-  m [        [        [        /[        [        //5      mT R                  T5      TS-  :X  d   e[        SS/SS//5      m [        [        U U4S j5        g )Nc                  N    [        SS/5      R                  [        S/5      5      $ )Nr   )r   diagonal_solverP   r.   r"   r,   %test_diagonal_solve.<locals>.<lambda>  s    faVn;;FA3KHr.   r   r   r(   c                  &   > T R                  T5      $ rH   )r   rK   r   s   r"   r,   r     s    a..q1r.   )r   r   r   r   r   r   r   s   @@r"   test_diagonal_solver     s    
9HIAA "AAA AA!A#%%%AA A
912r.   c                  2   [        SS/SS//5      n [        SS/5      nU R                  U5      U R                  U5      :X  d   eU R                  U5      U R                  U5      :X  d   eU R                  U5      [        [	        S5      [	        S5      /5      :X  d   eX R                  5       -  U-  U:X  d   e[        / S	Q/ S
Q/5      nU R                  U5      U R                  U5      :X  d   eU R                  U5      U R                  U5      :X  d   eU R                  U5      [        / SQ/ SQ/5      S-  :X  d   eX R                  5       -  U-  U:X  d   e[        / SQ/ SQ/5      n [        SS/5      nU R                  U5      n0 nUR                  [        5       H  nXCUR                  '   M     U[        US   S-  US   S-  -   US   S-  -
  S-   /US   S-  US   S-  -   US   S-  -
  S-   /US   * S-  US   S-  -
  US   S-  -   S-   //5      :X  d   eX R                  5       -  U-  U:X  d   e[        SS/SS/SS//5      n [        / SQ5      nU R                  U5      [        SS/5      :X  d   eX R                  5       -  U-  U:w  d   eg )Nr   r:   r@   rh   rj      z-43/26z71/26)rj   r      )         )iii)E   K   Q      )r   r   r   )r   r   r   w0_0r9   w1_0w2_0r   r   )r9   r(   r   )	r   
pinv_solver%   r|   r	   pinvatomsr   name)rK   r   solutionwss        r"   test_pinv_solver   !  s   AA ABxA<<?a..q1111<<?ajjm+++<<?fgh&79I%JKKKKvvx<!q   l+,A<<?a..q1111<<?ajjm+++<<?fo|%DEJJJJvvx<!q   	9%&A1vA||AH
A^^F#!&&	 $ v&	!aik 9AfIaK G! KL !&	!aik 9AfIaK G! KL!"6
1qy{ :QvYq[ H1 LMO P P P P vvx<!q   AAA'(AyA<<?faVn,,,vvx<!q   r.   c                  <   [        / SQ/ SQ/5      [        SS/SS//5      [        SS/SS/SS//5      /n U  Hd  nUR                  S	S
9nX-  nX!-  n[        X1-  5      U:X  d   e[        XB-  5      U:X  d   eUR                  U:X  d   eUR                  U:X  a  Md   e   U  Hd  nUR                  SS
9nX-  nX!-  n[        X1-  5      U:X  d   e[        XB-  5      U:X  d   eUR                  U:X  d   eUR                  U:X  a  Md   e   [        SS/SS//5      n[        SS/5      nUR	                  U5      nUR                  [        5      R                  5       nUR                  S:X  d   eU[        SU/5      :X  d   eXR                  5       -  U-  U:X  d   e[        SS/5      nUR	                  U5      nUR                  [        5      R                  5       nUR                  S:X  d   eU[        SU/5      :X  d   eXR                  5       -  U-  U:w  d   eg )Nr   r   r   )r(   r(   r(   r   r   r(   r   r9   r<   RD)methodEDr   )	r   r   r
   Hr   r   r   popr   )AsrK   A_pinvAApApAr   r   w1s           r"   test_pinv_rank_deficientr   B  s/   
)Y'
(
1a&1a&!
"
1a&1a&1a&)
*
,B t$jj A%%%%///uu||uu||  t$jj A%%%%///uu||uu||  	AA A1vA||AH			#	#	%B77fvq"g&&&vvx<!q   1vA||AH			#	#	%B77fvq"g&&&vvx<!q   r.   c            
        ^
^^ [        / SQ/ SQ/ SQ/5      m
[        / SQ5      mT
R                  T5      u  pU [        S/S/S//5      :X  d   eU[        SS/ 5      :X  d   e[        S	5      m
[        / S
Q/ SQ/ SQ/5      mT
R                  T5      u  pU T:X  d   eU[        SS/ 5      :X  d   e[        / SQ/ SQ/ SQ/5      m
[        / SQ5      mT
R                  TSS9u  pn0 nU R                  [        5       H  nXCUR
                  '   M     U [        US   S-
  /SUS   -  S-   /US   //5      :X  d   eU[        US   //5      :X  d   eUS/:X  d   e[        / SQ/ SQ/ SQ/5      m
[        S	S/SS/SS//5      mT
R                  TSS9u  pn0 nU R                  [        5       H  nXCUR
                  '   M     U [        US   S-
  US   [        SS	5      -
  /SUS   -  S-   SUS   -  [        SS	5      -   /US   US   //5      :X  d   eU[        US   US   //5      :X  d   eUS/:X  d   e[        / SQ/ SQ/ SQ/5      m
[        / SQ5      mT
R                  T5      u  p0 nU R                  [        5       H  nXCUR
                  '   M     U [        SUS   -  S	US   -  -
  /US   /US   //5      :X  d   eU[        US   /US   //5      :X  d   e[        / SQ/ SQ/ SQ/5      m
[        / SQ5      mT
R                  T5      u  p0 nU R                  [        5       H  nXCUR
                  '   M     U [        US   /US   /US   //5      :X  d   eU[        US   /US   /US   //5      :X  d   e[        / SQ/ SQ/ SQ/5      m
[        / SQ5      m[        [        U
U4S j5        [        / SQ/ SQ/ SQ/ S Q/5      m
[        / S!Q5      mT
R                  T5      u  pU [        [        SS5      /S/[        SS5      //5      :X  d   eU[        SS/ 5      :X  d   e[        / SQ/ SQ/ SQ/ S Q/5      m
[        SS/SS/SS/SS//5      mT
R                  T5      u  pU [        [        SS5      [        SS5      /SS/[        SS5      [        SS5      //5      :X  d   eU[        SS/ 5      :X  d   e[        / SQ/ SQ/ SQ/ S Q/5      m
[        / S"Q5      m[        [        U
U4S# j5        [        / SQ/ SQ/ SQ/ S Q/5      m
[        SS/SS/SS/SS//5      m[        [        U
U4S$ j5        [        / SQ/ SQ/ SQ/ S Q/5      m
[        SS/SS/SS/SS//5      m[        [        U
U4S% j5        [        / SQ/ S&Q/ S'Q/ S Q/5      m
[        / S"Q5      mT
R                  T5      u  p0 nU R                  [        5       H  nXCUR
                  '   M     U [        S(US   -  S)-   /S/US   //5      :X  d   eU[        US   //5      :X  d   e[        / SQ/ S&Q/ S'Q/ S Q/5      m
[        / S*Q5      m[        [        U
U4S+ j5        [        / S
Q/ SQ/ S,Q/5      m
[        / S-Q5      mT
R                  T5      u  p0 nU R                  [        5       H  nXCUR
                  '   M     U [        SUS   -  S-
  /S(US   -  S-   /S/US   //5      :X  d   eU[        US   //5      :X  d   e[        / S
Q/ SQ/ S.Q/5      m
[        / S/Q5      mT
R                  T5      u  p0 nU R                  [        5       H  nXCUR
                  '   M     U [        US   SUS   -  -   [        R                  -   /SUS   -  S	US   -  -
  [        SS5      -
  /US   /US   //5      :X  d   eU[        US   /US   //5      :X  d   e[        S05      u  pVpx[        / S1QSSSSSU//5      n	U	S S 2S S24   m
U	S S 2SS 24   mT
R                  T5      u  pU[        S	SXVU/5      :X  d   eU [        S)SUSXhU/5      :X  d   e[        / S
Q/ SQ/ S.Q/5      m
[        / S-Q5      m[        [        U
U4S2 j5        [        SS/SS//5      m
[        SS/5      mT
R                  T5      u  pU [        SS/5      :X  d   eU[        SS/ 5      :X  d   eU R                  [        :X  d   eUR                  [        :X  d   e[        / S3Q/ S"Q/5      m
[        SS/5      mT
R                  T5      u  p0 nU R                  [        5       H  nXCUR
                  '   M     U [        S/US   /US   /S//5      :X  d   eU[        US   /US   //5      :X  d   eg )4N)r   r(   r9   )r   r:   r<   )r@   r>   rD   )r9   r<   rh   rB   r(   r   r   r9   )r   r(   r9   r   )r:   r<   r@   r>   )rh   rD   ri   rj   r   )r@   r>   rh   T)freevartau0rt   r<   r>   rh   rj   tau1)r(   r   r<   )r   r   r   tau2)r   r   r   c                  &   > T R                  T5      $ rH   r   rJ   s   r"   r,   )test_gauss_jordan_solve.<locals>.<lambda>      q33A6r.   )r   r:   r9   )r(   r   r<   )r   r@   rh   )r   r   r9   )r   r   r   r   )r   r   r   r   c                  &   > T R                  T5      $ rH   r   rJ   s   r"   r,   r     r   r.   c                  &   > T R                  T5      $ rH   r   r   s   r"   r,   r     r   r.   c                  &   > T R                  T5      $ rH   r   r   s   r"   r,   r     r   r.   )r(   rD   r<   )r9   r   rh   rr   r:   )r   r   r   r   c                  &   > T R                  T5      $ rH   r   rJ   s   r"   r,   r     r   r.   )rh   rD   r   rj   r   )r(   r   r<   r>   )r   r   r   z_tau0 _tau1 _tau2 tau1)r   r   r   r   r   r   c                  &   > T R                  T5      $ rH   r   rJ   s   r"   r,   r     r   r.   )r   r   r   r   )r   r   r   r   r   r   r   r   rT   r   Halfr   r   	__class__r   )solparamsr   r   r   x0x1x2_x0r!   rK   r   r1   s             @@@r"   test_gauss_jordan_solver   k  sQ
    		9j12AyA&&q)KC&2$aS)****VAq"%%%% 	AAlO<=A&&q)KC!8O8VAq"%%%% 		9i01AyA//4/@C
AYYv!&&	  &1V9q=/BqyL1,<+=&	{KLLLLVai[M****qc>> 		9i01AAAB()A//4/@C
AYYv!&&	  &1V9q=!F)hq!n*DEai<!+R&	\HQN-JKV9ai03 4 4 4 4 Vai6345555qc>> 		9i01AyA&&q)KC
AYYv!&&	 &2ai<!AfI+56F)qyk3 4 4 4 4Vai[1V9+67777 		9i01AyA&&q)KC
AYYv!&&	 &1V9+&	{QvYK@AAAAVai[1V9+&	{CDDDD 		9i01AyA
:67 		9i;<A|A&&q)KC&8B?+aS8Aq>2BCDDDDVAq"%%%% 		9i;<A11v1v1v./A&&q)KC&8B?HRO<q!fxPQST~W_`acdWeFfghhhhVAq"%%%% 		9i;<A|A
:67 		9i;<A11v1v1v./A
:67 		9i;<A11v1v1v./A
:67 		:z9=>A|A&&q)KC
AYYv!&&	 &2ai<!+,rdQvYK@AAAAVai[M**** 		:z9=>A|A
:67 	lN;<AyA&&q)KC
AYYv!&&	 &1QvY;?+b6lQ.>-?!F)& ' ' ' 'Vai[M**** 	lL9:AyA&&q)KC
AYYv!&&	 &1V9q6{2QVV;<QvY,1V94x1~EFF)qyk3 4 4 4 4 Vai[1V9+6777767OBB"Q1aC$89:A	!SbS&	A	!RS&	A&&q)KCVAq22,////&AAr34444 	lL9:AyA
:67 	!Q!Q()AAA&&q)KC/1a&))))_Q2....==00003333 	l+,A1vA&&q)KC
AYYv!&&	 &1#&	{QvYK!=>>>>Vai[1V9+67777r.   c                     [        / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n [        / S	Q5      nU R                  U5      u  p#0 nUR                  [        5       H  nXTUR                  '   M     U[        US
   /US   /US   /US   /US   /US   //5      :X  d   eU[        SSUS   -  -
  /US   /SSUS
   -  -
  US   -   /US
   /US   US   -   /SUS   -  SUS   -  -
  SUS   -  -
  /SSUS   -  -
  /US   /US   /US   /US   /SSUS   -  -
  /US   /S//5      :X  d   eSSKJnJn  [        / SQSSSSSSSSU* /	SSSSSSSSU/	/5      n [        [        [        U 5      5      S   5      n[        S5      u  ppnU[        U* U-
  U	-
  U-   U-   S-   /Xj-
  U-
  U-
  /U	/U
/X{-
  U-
  U-
  /U/U/U//5      :X  d   eU S S 2S S24   U-  U S S 2S4   -
  nU[        S/S/S//5      :X  d   eg )N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r(   r   r   r   r   r   r(   r   r   r   tau3tau4tau5r   rB   r   )rR   f)	r   r   r   r   r   r   r   r   r   ztau:5)r   r   r   r   r   	sympy.abcrR   r   listr   r   )rK   r   r   r   r   r   rR   r   sol_1r   r   r   r   r   sol_2s                  r"   4test_linsolve_underdetermined_AND_gauss_jordan_solver     s   ::::::::< 	=A 
(	)A&&q)KC
AYYv!&&	 Vai[1V9+&	{i[1V9+&	{D E E E E&1q6{?+V9+q6{?QvY67V9+V9qy01ai<!AfI+5!F)CDq6{?+V9+V9+V9+V9+q6{?+V9+#         $Ar1b!R!$A1q!a!$ 	A hqk"1%
&E#*7#3 DDFaR!Vd]T1D81<=8d?T12&&8d?T12&&&" # # # # a2gK%!ArE)+EFQC!qc?++++r.   
det_methodbirdlaplacezM, rhsr8   r;   r=   r9   r   r?   r(   r   r:   r<   r[   r]   c                     [        UR                  X S9UR                  U5      -
  5      [        R                  " UR
                  UR                  5      :X  d   eg N)r   )r
   cramer_solver0   r   rV   rowscols)r   r!   rhss      r"   test_cramer_solver   M  sK     ANN3N>3O affchh78 8 8r.   zdet_method, errorc                 j   ^ ^^ [        / SQ/ SQ/5      m[        SS/5      m[        UUUU 4S j5        g )NrA   rC   rt   r   c                  $   > T R                  TTS9$ r   )r   )rK   r1   r   s   r"   r,   *test_cramer_solve_errors.<locals>.<lambda>_  s    !..z.Br.   )r   r   )r   errorrK   r1   s   ` @@r"   test_cramer_solve_errorsr   Y  s-     	
J'(ABxA
5BCr.   c                     ^ ^ [        SS/SS//5      m [        S/S//5      m[        [        U U4S j5        [        S/S//5      m[        [        U U4S j5        g )Nr   r(   r   r9   c                  &   > T R                  T5      $ rH   solverJ   s   r"   r,   test_solve.<locals>.<lambda>e      qwwqzr.   r>   c                  &   > T R                  T5      $ rH   r   rJ   s   r"   r,   r   g  r   r.   )r   r   rT   rJ   s   @@r"   
test_solver   b  sS    1!u~AaSzA
:)*!qc{A
:)*r.   );pytestsympy.core.functionr   sympy.core.numbersr   r   sympy.core.singletonr   sympy.core.symbolr   r   sympy.core.sympifyr	   sympy.simplify.simplifyr
   sympy.matrices.exceptionsr   r   sympy.matricesr   r   r   r   r   r   sympy.matrices.determinantr   sympy.testing.pytestr   r   sympy.polys.matrices.exceptionsr   sympy.solvers.solvesetr   r   r   r   r#   r&   r4   r6   rY   rf   rl   rp   rx   r~   r   r   r   r   r   r   r   markparametrizer   r   r   rP   r.   r"   <module>r     s    * , " / & , HK K 3 ' > 8 + @m8	M%;P2N"J&7R,$,$3!B'!Re8P7,t 	':;Y	9-.q!Y0GHY	9-.aVaVaV$%'Aq'%.!6!Q#?@	$ 8 <8
 ,\\+?@/B CDCD+r.   