
    gT                     
   d dl Z d dlmZ d dlmZ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mZmZ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 dl"m#Z#m$Z$ d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4e j5        6                    d d!d"g          e j5        6                    d# eg d$g d%g d&g           ed'd(g d)          f eg d$g d%g d&g           ed(d*gd'd+gd,d-gg          f ed*d* e
d.                     ed*d( e
d/                    fg          d0                         Z7e j5        6                    d1d!efeefg          d2             Z8d3 Z9dS )4    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                  8   t          t          d                    } t          d          5  |                     t	          dd                    t          t          d                    t          ddg           fk    sJ 	 d d d            d S # 1 swxY w Y   d S )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    ]/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/matrices/tests/test_solvers.py%test_issue_17247_expression_blowup_29r#      s$   q c d d 	e 	eA
 
T		 @ @##DAJJ//F1 >k <l <l 5m 5m ouuvxy{}n~n~	4@ @ @ @ @ @@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   ABBBc                     t          t          d                    } t          d          5  |                     t	          dd                    t          t          d                    k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   Tr   r   r   )r   r   r   cholesky_solver   r    s    r"   %test_issue_17247_expression_blowup_30r&      s   q c d d 	e 	eA
 
T		 m mQ

++va 9k 7l 7l 0m 0m m m m m mm m m m m m m m m m m m m m m m m ms   AA>>BBc                     t          t          dz   dz  t          dz  dt          z  z   dz   z
  t          gt          dgg          } t          ddg          }d }t          dt          z  dt          dz   dt          z  z
  t          dz   dz  z   dz
  t          z  z
  t          z  g          }||                     ||          z
  t          ddg          k    sJ d S )Nr      r   c                 2    |                                  rdndS )NFT)_random)es    r"   <lambda>z)test_LUsolve_iszerofunc.<locals>.<lambda>@   s    aiikk;UUt     )
iszerofunc)r   r   LUsolve)r!   bis_zero_funcx_exps       r"   test_LUsolve_iszerofuncr3   ;   s     	!a%!q!taczA~.2QF;<<A1vA;;LAaC!adUQqS[AaC!83a7::A=>??EAIIaLI999faVnnLLLLLLr-   c            
      "   t          t          dz   dt          z
  ddgdt          z
  t          dz   dt          dz   gddt          z
  t          dz   dgdddt          dz   gg          } t          d          5  |                     t	          dd                    t          t          dz   dt          z  z  gt          dz
  dt          z  z  gt          dz   dt          z  z  gdt          dz   z  gg          k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   r   Tr   )r   r   r   r/   r   r    s    r"   %test_issue_17247_expression_blowup_32r5   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   3BDDDc            	         t          g dg dg dg          t          ddg d          } | z                                }|| k    sJ t          g dg dg d	g          t          ddg d
          } | z                                }|| k    sJ t          ddgddgddgg          t          g d                                        t          ddg          k    sJ t          g d          t          t          fd           t          g dg dg d	g dg dg dg          t          g d          } | z                                }|| k    sJ t          g dg dg          t          g d          } | z  t          t          fd           t          ddd           t          j        dd          t          t          fd           d S )Nr(         r8      r(      r8   r;   r8   r   r8      r9   r   r(   r9   
   r?   r=   r8   r   rA   r(   r9   r(   r   )r8   r   r   )r8   r   r(   c                  .                                    S Nr/   Ar0   s   r"   r,   ztest_LUsolve.<locals>.<lambda>g   s    qyy|| r-   )r(   r   )rA   r(   r   c                  .                                    S rG   rH   rI   s   r"   r,   ztest_LUsolve.<locals>.<lambda>u   s    		! r-   r   c                 (    | dk    rd| |z   dz   z  ndS )Nr8   r   r    )ijs     r"   r,   ztest_LUsolve.<locals>.<lambda>w   s    qAvv!QqSU))1 r-   c                  .                                    S rG   rH   rI   s   r"   r,   ztest_LUsolve.<locals>.<lambda>y   s    QYYq\\ r-   )r   r/   r   
ValueErrorNotImplementedErrorzerosr   r   solnrJ   r0   s     @@r"   test_LUsolverW   T   sa   							 	 	A 	q!YYYA	!A99Q<<D19999






 	 	A 	q!ZZZ  A	!A99Q<<D19999AAA'((AyyyA99Q<<61a&>>))))yyyA
:+++++,,,






						 	 	A 	zzzA	!A99Q<<D19999


JJJ'((AzzzA	!A
 4 4 4 4 4555q!<<==AQA
#%9%9%9%9%9:::::r-   c                  "   t          g dg dg dg          } t          ddg d          }| |z  }|                     |          }||k    sJ t          ddgddgd	d
gg          }| |z  }|                     |          }||k    sJ t          g dg dg dg          } t          ddg d          }| |z  }|                     |          }||k    sJ t          ddgddgddgg          }| |z  }|                     |          }||k    sJ d S )Nr7   r:   r<   r8   r   r>   r(   r   r9   r;   r@   rB   rD   rE   r?   r=   	   rC         )r   QRsolve)rJ   r   r0   rV   s       r"   test_QRsolver]   |   sX   							 	 	A 	q!YYYA	!A99Q<<D19999AAA'((A	!A99Q<<D19999






 	 	A 	q!ZZZ  A	!A99Q<<D19999AB"b*++A	!A99Q<<D1999999r-   c                  2    t          t          d            d S )Nc                  n    t          dg                              t          ddgddgg                    S )Nr   r(   r8   r   )r   r/   rN   r-   r"   r,   ztest_errors.<locals>.<lambda>   s1    vqc{{226Aq6Aq6:J3K3KLL r-   )r   r   rN   r-   r"   test_errorsr`      s    
:LLMMMMMr-   c                  0   t          g dg dg dg          } t          ddg d          }| |z  }|                     |          }||k    sJ t          g dg dg d	g          } t          ddg d
          }| |z  }|                     |          }||k    sJ t          d          } t          d          }| |z  }|                     |          }||k    sJ t          ddt          z  fdt          z  dff          } t          d          }| |z  }|                     |          }t          |          |k    sJ t          dt          z  dfdt          z   dff          } t          ddt          z  z   df          }| |z  }|                     |          }t          |          |k    sJ t	          d          \  }}}}}t          ||f||ff          } t          ||f          }|                     |          }t          | |z            |k    sJ d S )Nr7   r:   r<   r8   r   r>   r@   rB   rD   rE   ))r   r9   )r9   r   )r   rY   rb   r9   r   r(   rA   za00, a01, a11, b0, b1)r   r%   r   r   r   r
   )	rJ   r   r0   rV   a00a01a11b0b1s	            r"   test_cholesky_solverj      s^   							 	 	A 	q!YYYA	!AAD19999






 	 	A 	q!ZZZ  A	!AAD19999  AwA	!AAD19999AaC2a4)$%%AwA	!AADdq    1a261+&''AAaC}A	!AADdq    #$;<<Cc2rc
S#J'((ABxA	AAaC==Ar-   c                     t          g dg dg dg          t          ddg d          } | z                                }|| k    sJ t          g dg dg d	g          t          ddg d
          } | z                                }|| k    sJ t          ddt          z  fdt          z  dff          t          d          } | z                                }t          |          | k    sJ t          dt          z  dfdt          z   dff          t          ddt          z  z   df          } | z                                }t          |          | k    sJ t          d          t          d          } | z                                }t          |          | k    sJ t          g dg dg          t          dgdgdgg          } | z  t	          t
          fd           d S )Nr7   r:   r<   r8   r   r>   r@   rB   rD   rE   rY   rb   r9   rc   r(   rA   ))rY   r8   )r8   rY   )r   r   )rb   rK   )rb   ir?   r=   r?   rd   c                  .                                    S rG   )LDLsolverI   s   r"   r,   ztest_LDLsolve.<locals>.<lambda>   s    

1 r-   )r   rn   r   r   r   rS   rU   s     @@r"   test_LDLsolvero      sA   							 	 	A 	q!YYYA	!A::a==D19999






 	 	A 	q!ZZZ  A	!A::a==D19999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    kkk*++AaS2$  A	AA
 5 5 5 5 566666r-   c                     t          t          d            t          t          d            t          t          d            t	          ddgddgg          } t	          t
          t          gt          t
          gg          }t	          ddgdd	gg          }|                     |          |k    sJ |                     |          |k    sJ d S )
Nc                  h    t          ddg                              t          ddg                    S Nr   r   r   lower_triangular_solverN   r-   r"   r,   z-test_lower_triangular_solve.<locals>.<lambda>   (    1v55faVnnEE r-   c                  n    t          ddgddgg                              t          dg                    S rr   rs   rN   r-   r"   r,   z-test_lower_triangular_solve.<locals>.<lambda>   1    AA'((??sLL r-   c                  x    t          ddgddgg                              t          ddgddgg                    S Nr(   r   r   rs   rN   r-   r"   r,   z-test_lower_triangular_solve.<locals>.<lambda>   C    AA'((??QFQF#$$& & r-   r   r   r   r=   r(   rY   )r   r   r   rR   r   r   r   rt   rJ   BCs      r"   test_lower_triangular_solver~      s    
EEG G G
:LLN N N
:	& 	&' ' ' 	AA  AAA  AAA  A##A&&!++++##A&&!++++++r-   c                     t          t          d            t          t          d            t          t          d            t	          ddgddgg          } t	          t
          t          gt          t
          gg          }t	          ddgdd	gg          }|                     |          |k    sJ |                     |          |k    sJ d S )
Nc                  h    t          ddg                              t          ddg                    S rr   r   upper_triangular_solverN   r-   r"   r,   z-test_upper_triangular_solve.<locals>.<lambda>   ru   r-   c                  n    t          ddgddgg                              t          dg                    S rr   r   rN   r-   r"   r,   z-test_upper_triangular_solve.<locals>.<lambda>   rw   r-   c                  x    t          ddgddgg                              t          ddgddgg                    S ry   r   rN   r-   r"   r,   z-test_upper_triangular_solve.<locals>.<lambda>   rz   r-   r   r   r(   r   r8   r=   )r   r   r   	TypeErrorr   r   r   r   r{   s      r"   test_upper_triangular_solver      s    
EEG G G
:LLN N N
9	& 	&' ' ' 	AA  AAA  AAA  A##A&&!++++##A&&!++++++r-   c                  P    t          t          d            t          ddgddgg          dz   t          t          t          gt          t          gg                                         dz  k    sJ t          ddgddgg           t          t           fd           d S )Nc                  f    t          ddg                              t          dg                    S )Nr   )r   diagonal_solverN   r-   r"   r,   z%test_diagonal_solve.<locals>.<lambda>  s&    faVnn;;FA3KKHH r-   r   r   r(   c                  .                                    S rG   )r   rJ   r|   s   r"   r,   z%test_diagonal_solve.<locals>.<lambda>  s    a..q11 r-   )r   r   r   r   r   r   r   s   @@r"   test_diagonal_solver   
  s    
9HHIIIAA  "AAA  AA!A#%%%%AA  A
91111122222r-   c                  T   t          ddgddgg          } t          ddg          }|                     |          |                     |          k    sJ |                     |          |                     |          k    sJ |                     |          t          t	          d          t	          d          g          k    sJ | |                                 z  |z  |k    sJ t          g d	g d
g          }|                     |          |                     |          k    sJ |                     |          |                     |          k    sJ |                     |          t          g dg dg          dz  k    sJ | |                                 z  |z  |k    sJ t          g dg dg          } t          ddg          }|                     |          }i }|                    t                    D ]}|||j        <   |t          |d         dz  |d         dz  z   |d         dz  z
  dz   g|d         dz  |d         dz  z   |d         dz  z
  dz   g|d          dz  |d         dz  z
  |d         dz  z   dz   gg          k    sJ | |                                 z  |z  |k    sJ t          ddgddgddgg          } t          g d          }|                     |          t          ddg          k    sJ | |                                 z  |z  |k    sJ d S )Nr   r9   r?   rY   r[      z-43/26z71/26)r[   r      )         )iii)E   K   Q      )r   r   r   )r   r   r   w0_0r8   w1_0w2_0r   r   )r8   r(   r   )	r   
pinv_solver%   rn   r	   pinvatomsr   name)rJ   r|   solutionwss        r"   test_pinv_solver     sR   AA  ABxA<<??a..q111111<<??ajjmm++++<<??fgh&7&79I9I%JKKKKKKqvvxx<!q    lll+,,A<<??a..q111111<<??ajjmm++++<<??fooo|||%DEEJJJJJqvvxx<!q    			999%&&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 P P qvvxx<!q    AAA'((AyyyA<<??faVnn,,,,qvvxx<!q      r-   c                     t          g dg dg          t          ddgddgg          t          ddgddgddgg          g} | D ]l}|                    d	
          }||z  }||z  }t          ||z            |k    sJ t          ||z            |k    sJ |j        |k    sJ |j        |k    sJ m| D ]l}|                    d
          }||z  }||z  }t          ||z            |k    sJ t          ||z            |k    sJ |j        |k    sJ |j        |k    sJ mt          ddgddgg          }t          ddg          }|                    |          }|                    t                                                    }|j        dk    sJ |t          d|g          k    sJ ||                                z  |z  |k    sJ t          ddg          }|                    |          }|                    t                                                    }|j        dk    sJ |t          d|g          k    sJ ||                                z  |z  |k    sJ d S )Nr   r   r   )r(   r(   r(   r   r   r(   r   r8   r;   RD)methodEDr   )	r   r   r
   Hr   r   r   popr   )AsrJ   A_pinvAApApAr|   r   w1s           r"   test_pinv_rank_deficientr   4  s   
)))YYY'
(
(
1a&1a&!
"
"
1a&1a&1a&)
*
*
,B   t$$&jqja  A%%%%f%%////u||||u|||||  t$$&jqja  A%%%%f%%////u||||u||||| 	AA  A1vA||AH				#	#	%	%B7fvq"g&&&&qvvxx<!q    1vA||AH				#	#	%	%B7fvq"g&&&&qvvxx<!q      r-   c            
        
 t          g dg dg dg          
t          g d          
                              \  } }| t          dgdgdgg          k    sJ |t          ddg           k    sJ t          d	          
t          g d
g dg dg          
                              \  } }| k    sJ |t          ddg           k    sJ t          g dg dg dg          
t          g d          
                    d          \  } }}i }|                     t                    D ]}|||j        <   | t          |d         dz
  gd|d         z  dz   g|d         gg          k    sJ |t          |d         gg          k    sJ |dgk    sJ t          g dg dg dg          
t          d	dgddgddgg          
                    d          \  } }}i }|                     t                    D ]}|||j        <   | t          |d         dz
  |d         t          dd	          z
  gd|d         z  dz   d|d         z  t          dd	          z   g|d         |d         gg          k    sJ |t          |d         |d         gg          k    sJ |dgk    sJ t          g dg dg dg          
t          g d          
                              \  } }i }|                     t                    D ]}|||j        <   | t          d|d         z  d	|d         z  z
  g|d         g|d         gg          k    sJ |t          |d         g|d         gg          k    sJ t          g dg dg dg          
t          g d          
                              \  } }i }|                     t                    D ]}|||j        <   | t          |d         g|d         g|d         gg          k    sJ |t          |d         g|d         g|d         gg          k    sJ t          g dg dg dg          
t          g d          t          t          
fd           t          g dg dg dg d g          
t          g d!          
                              \  } }| t          t          dd          gdgt          dd          gg          k    sJ |t          ddg           k    sJ t          g dg dg dg d g          
t          ddgddgddgddgg          
                              \  } }| t          t          dd          t          dd          gddgt          dd          t          dd          gg          k    sJ |t          ddg           k    sJ t          g dg dg dg d g          
t          g d"          t          t          
fd#           t          g dg dg dg d g          
t          ddgddgddgddgg          t          t          
fd$           t          g dg dg dg d g          
t          ddgddgddgddgg          t          t          
fd%           t          g dg d&g d'g d g          
t          g d"          
                              \  } }i }|                     t                    D ]}|||j        <   | t          d(|d         z  d)z   gdg|d         gg          k    sJ |t          |d         gg          k    sJ t          g dg d&g d'g d g          
t          g d*          t          t          
fd+           t          g d
g dg d,g          
t          g d-          
                              \  } }i }|                     t                    D ]}|||j        <   | t          d|d         z  dz
  gd(|d         z  dz   gdg|d         gg          k    sJ |t          |d         gg          k    sJ t          g d
g dg d.g          
t          g d/          
                              \  } }i }|                     t                    D ]}|||j        <   | t          |d         d|d         z  z   t          j
        z   gd|d         z  d	|d         z  z
  t          dd          z
  g|d         g|d         gg          k    sJ |t          |d         g|d         gg          k    sJ t          d0          \  }}}}t          g d1ddddd|gg          }	|	d d d df         
|	d d dd f         
                              \  } }|t          d	d|||g          k    sJ | t          d)d|d|||g          k    sJ t          g d
g dg d.g          
t          g d-          t          t          
fd2           t          ddgddgg          
t          ddg          
                              \  } }| t          ddg          k    sJ |t          ddg           k    sJ | j        t          k    sJ |j        t          k    sJ t          g d3g d"g          
t          ddg          
                              \  } }i }|                     t                    D ]}|||j        <   | t          dg|d         g|d         gdgg          k    sJ |t          |d         g|d         gg          k    sJ d S )4N)r   r(   r8   )r   r9   r;   )r?   r=   rC   )r8   r;   rY   rA   r(   r   r   r8   )r   r(   r8   r   )r9   r;   r?   r=   )rY   rC   rZ   r[   r   )r?   r=   rY   T)freevartau0rd   r;   r=   rY   r[   tau1)r(   r   r;   )r   r   r   tau2)r   r   r   c                  .                                    S rG   r   rI   s   r"   r,   z)test_gauss_jordan_solve.<locals>.<lambda>      q33A66 r-   )r   r9   r8   )r(   r   r;   )r   r?   rY   )r   r   r8   )r   r   r   r   )r   r   r   r   c                  .                                    S rG   r   rI   s   r"   r,   z)test_gauss_jordan_solve.<locals>.<lambda>  r   r-   c                  .                                    S rG   r   r   s   r"   r,   z)test_gauss_jordan_solve.<locals>.<lambda>  r   r-   c                  .                                    S rG   r   r   s   r"   r,   z)test_gauss_jordan_solve.<locals>.<lambda>  r   r-   )r(   rC   r;   )r8   r   rY   rb   r9   )r   r   r   r   c                  .                                    S rG   r   rI   s   r"   r,   z)test_gauss_jordan_solve.<locals>.<lambda>  r   r-   )rY   rC   r   r[   r   )r(   r   r;   r=   )r   r   r   z_tau0 _tau1 _tau2 tau1)r   r   r   r   r   r   c                  .                                    S rG   r   rI   s   r"   r,   z)test_gauss_jordan_solve.<locals>.<lambda>  r   r-   )r   r   r   r   )r   r   r   r   r   r   r   r   rR   r   Halfr   r   	__class__r   )solparamsr   r   r   x0x1x2_x0r!   rJ   r|   r0   s             @@@r"   test_gauss_jordan_solver   ]  s    				999jjj122AyyyA&&q))KC&2$aS)******VAq"%%%%%% 	AAlllOOO<==A&&q))KC!8888VAq"%%%%%% 				999iii011AyyyA//4/@@C
AYYv  !&		&1V9q=/BqyL1,<+=&	{KLLLLLLVai[M******qc>>>> 				999iii011AAAB())A//4/@@C
AYYv  !&		&1V9q=!F)hq!nn*DEai<!+R&	\HQNN-JKV9ai03 4 4 4 4 4 4 Vai634555555qc>>>> 				999iii011AyyyA&&q))KC
AYYv  !&		&2ai<!AfI+56F)qyk3 4 4 4 4 4 4Vai[1V9+6777777 				999iii011AyyyA&&q))KC
AYYv  !&		&1V9+&	{QvYK@AAAAAAVai[1V9+&	{CDDDDDD 				999iii011AyyyA
:66666777 				999iii;<<A|||A&&q))KC&8B??+aS8Aq>>2BCDDDDDDVAq"%%%%%% 				999iii;<<A11v1v1v.//A&&q))KC&8B??HROO<q!fxPQST~~W_`acdWeWeFfghhhhhhVAq"%%%%%% 				999iii;<<A|||A
:66666777 				999iii;<<A11v1v1v.//A
:66666777 				999iii;<<A11v1v1v.//A
:66666777 				:::zzz999=>>A|||A&&q))KC
AYYv  !&		&2ai<!+,rdQvYK@AAAAAAVai[M****** 				:::zzz999=>>A|||A
:66666777 	lllNNN;<<AyyyA&&q))KC
AYYv  !&		&1QvY;?+b6lQ.>-?!F)& ' ' ' ' ' 'Vai[M****** 	lllLLL9::AyyyA&&q))KC
AYYv  !&		&1V9q6{2QV;<QvY,1V94x1~~EFF)qyk3 4 4 4 4 4 4 Vai[1V9+6777777677OBB"""Q1aC$89::A	!!!SbS&	A	!!!RSS&	A&&q))KCVAq2r2,//////&AAr33444444 	lllLLL9::AyyyA
:66666777 	!Q!Q())AAA&&q))KC/1a&))))))_Q2......=0000033333 	lll+,,A1vA&&q))KC
AYYv  !&		&1#&	{QvYK!=>>>>>>Vai[1V9+677777777r-   c                     t          g dg dg dg dg dg dg dg dg          } t          g d	          }|                     |          \  }}i }|                    t                    D ]}|||j        <   |t          |d
         g|d         g|d         g|d         g|d         g|d         gg          k    sJ |t          dd|d         z  z
  g|d         gdd|d
         z  z
  |d         z   g|d
         g|d         |d         z   gd|d         z  d|d         z  z
  d|d         z  z
  gdd|d         z  z
  g|d         g|d         g|d         g|d         gdd|d         z  z
  g|d         gdgg          k    sJ ddlm}m} t          g ddddddddd| g	dddddddd|g	g          } t          t          t          |                     d                   }t          d          \  }	}
}}}|t          | |z
  |	z
  |z   |z   dz   g||
z
  |z
  |z
  g|	g|
g||z
  |z
  |z
  g|g|g|gg          k    sJ | d d d df         |z  | d d df         z
  }|t          dgdgdgg          k    sJ d S )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   rA   r   )rP   f)	r   r   r   r   r   r   r   r   r   ztau:5)r   r   r   r   r   	sympy.abcrP   r   listr   r   )rJ   r|   r   r   r   r   rP   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 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 hqkk""1%
&
&E#*7#3#3 D$dDFaR!Vd]T1D81<=t8d?T12&&t8d?T12&&&" # # # # # # aaa2gK%!AAArE)+EFQC!qc?++++++++r-   
det_methodbirdlaplacezM, rhsr7   r:   r<   r8   r   r>   r(   r   r9   r;   za:4zb:2c                     t          |                    ||           |                    |          z
            t          j        |j        |j                  k    sJ d S N)r   )r
   cramer_solver/   r   rT   rowscols)r   r!   rhss      r"   test_cramer_solver   ?  sc     ANN3:N>>3O  afch778 8 8 8 8 8r-   zdet_method, errorc                      t          g dg dg          t          ddg          t          | fd           d S )Nr@   rB   rd   r   c                  2                                    S r   )r   )rJ   r0   r   s   r"   r,   z*test_cramer_solve_errors.<locals>.<lambda>Q  s    !..z.BB r-   )r   r   )r   errorrJ   r0   s   ` @@r"   test_cramer_solve_errorsr   K  sX     	


JJJ'((ABxA
5BBBBBBCCCCCr-   c                       t          ddgddgg           t          dgdgg          t          t           fd           t          dgdgg          t          t           fd           d S )Nr   r(   r   r8   c                  .                                    S rG   solverI   s   r"   r,   ztest_solve.<locals>.<lambda>W      qwwqzz r-   r=   c                  .                                    S rG   r   rI   s   r"   r,   ztest_solve.<locals>.<lambda>Y  r   r-   )r   r   rR   rI   s   @@r"   
test_solver   T  s    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&   r3   r5   rW   r]   r`   rj   ro   r~   r   r   r   r   r   r   markparametrizer   r   r   rN   r-   r"   <module>r      s    * * * * * * , , , , , , , , " " " " " " / / / / / / / / & & & & & & , , , , , , H H H H H H H HK K K K K K K K K K K K K K K K 3 3 3 3 3 3 ' ' ' ' ' ' > > > > > > 8 8 8 8 8 8 + + + + + +        @ @ @m m m8	M 	M 	M  %; %; %;P  2N N N" " "J&7 &7 &7R, , ,$, , ,$3 3 3! ! !B'! '! '!Re8 e8 e8P7, 7, 7,t 	':;;VYYY			999-..q!YYY0G0GHVYYY			999-..VaVaVaV$%%'VAq''%..!!66!Q#?#?@	$  8 8  <;8
 ,\\+?@/B C CD DC CD+ + + + +r-   