
    Rie&4                         d dl 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mZmZ d dlmZmZmZ d d	lmZ d d
lmZ d dlmZ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S )    N)I)Rational)Symbolsymbols)sqrt)Poly)Matrixeyeones)xyz)raises)NonSquareMatrixError)	factorialsubfactorialc                     t                      } |                                 dk    sJ |                                 dk    sJ |                                 dk    sJ |                                 dk    sJ t          dgg          } |                                 dk    sJ |                                 dk    sJ |                                 dk    sJ |                                 dk    sJ t          dgg          } |                                 dk    sJ |                                 dk    sJ |                                 dk    sJ |                                 dk    sJ t          d          } |                     d          dk    sJ |                     d          dk    sJ |                     d	          dk    sJ |                     d
          dk    sJ t          t
          dft          dt          z  ff          } |                     d          dt
          z  t          z  t          z
  k    sJ |                     d          dt
          z  t          z  t          z
  k    sJ |                     d	          dt
          z  t          z  t          z
  k    sJ |                     d
          dt
          z  t          z  t          z
  k    sJ t          d          } |                     d          dk    sJ |                     d          dk    sJ |                     d	          dk    sJ |                     d
          dk    sJ t          d          } |                     d          dk    sJ |                     d          dk    sJ |                     d	          dk    sJ |                     d
          dk    sJ t          d          } |                     d          dk    sJ |                     d          dk    sJ |                     d	          dk    sJ |                     d
          dk    sJ t          d          } |                     d          dk    sJ |                     d          dk    sJ |                     d	          dk    sJ |                     d
          dk    sJ t          d          } |                     d          dk    sJ |                     d          dk    sJ |                     d	          dk    sJ |                     d
          dk    sJ t          d          } |                     d          dk    sJ |                     d          dk    sJ |                     d	          dk    sJ |                     d
          dk    sJ t          d          } |                     d          dk    sJ |                     d          dk    sJ |                     d	          dk    sJ |                     d
          dk    sJ t          d          } |                     d          dk    sJ |                     d          dk    sJ |                     d	          dk    sJ |                     d
          dk    sJ t          d          } |                     d          dk    sJ |                     d          dk    sJ |                     d	          dk    sJ |                     d
          dk    sJ t          d          } |                     d          dk    sJ |                     d          dk    sJ |                     d	          dk    sJ |                     d
          dk    sJ t          t
          t          t          fdt          t          t
          ff          } |                     d          t          dz  t
          t          z  z
  k    sJ |                     d          t          dz  t
          t          z  z
  k    sJ |                     d	          t          dz  t
          t          z  z
  k    sJ |                     d
          t          dz  t
          t          z  z
  k    sJ t          d          fd}  | d                                          dk    sJ  | d                                           dk    sJ  | d!                                          dk    sJ d S )"N   r      ))   )   	domain-gemethodbareiss	berkowitzlur   ))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   r0   r6   r7   r8   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   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   ac                 X     t           fdt                     D                       S )Nc                 J    g | ]fd t                    D             S )c                      g | ]
}|z  z   S  rK   ).0irG   js     Elib/python3.11/site-packages/sympy/matrices/tests/test_determinant.py
<listcomp>zAtest_determinant.<locals>.<lambda>.<locals>.<listcomp>.<listcomp>   s!    555q1qs7555    )range)rL   rN   rG   ns    @rO   rP   z6test_determinant.<locals>.<lambda>.<locals>.<listcomp>   sG     - - - 65555E!HH555 - - -rQ   )r	   rR   )rS   rG   s   `rO   <lambda>z"test_determinant.<locals>.<lambda>   sC    & - - - - -#(88- - - . . rQ   r#   r+   )	r	   det_eval_det_bareiss_eval_det_berkowitz_eval_det_lur   r   r   r   )MrG   s    @rO   test_determinantrZ      s	   A5577a<<<<  A%%%%  ""a''''>>q    !wA5577a<<<<  A%%%%  ""a''''>>q    !wA5577a<<<<  A%%%%  ""a''''>>q      	 	A 555$$****55	5""b((((555$$****555####!qQqS 	 	A 555$$!A	111155	5""ac!eai////555$$!A	11115551Q****  	 	A 555$$))))55	5""a''''555$$))))555"""" # 	$ 	$A
 555$$,,,,55	5""d****555$$,,,,555%%%% $ 	% 	%A
 555$$))))55	5""a''''555$$))))555"""" # 	$ 	$A 555$$++++55	5""c))))555$$++++555$$$$ # 	$ 	$A
 555$$****55	5""b((((555$$****555#### $ 	% 	%A
 555$$))))55	5""a''''555$$))))555"""" # 	$ 	$A 555$$++++55	5""c))))555$$++++555$$$$ & 	' 	'A 555$$++++55	5""c))))555$$++++555$$$$ ( 	) 	)A 555$$----55	5""e++++555$$----555&&&& & 	' 	'A 555$$++++55	5""c))))555$$++++555$$$$!QQ 	 	A 555$$1qs
222255	5""adQqSj0000555$$1qs
2222555A!++++ 	A	. 	. 	. 	.A1Q4488::????1Q4488::????1Q4488::??????rQ   c                     t          ddt          z  dt          z  dgdt          z  dddt          z  gdt          z  dddt          z  z   dt          z  gddt          z  dt          z  ddt          z  z   gg          } |                                 }t          j        t          |                                                    }| |t          d          z  z
                                  dk    sJ d S )Nr   r-   r   r   r(   )	r	   r   	eigenvalsrandomchoicelistkeysr
   rU   )rY   evtest_evs      rO   test_issue_14517rc      s    r!t1A&	A!1A&	A!Q1WA&r!t1a!A#g&	( 	) 	)A
 
BmDOO,,GA##%%******rQ   c                  6   t          d          } |                     d          dk    sJ |                     d          dk    sJ |                     d          dk    sJ t          d          } |                     d          dk    sJ |                     d          dk    sJ |                     d	          dk    sJ t          d
          } |                     d          dk    sJ |                     d          dk    sJ |                     d          dk    sJ t          d          } |                     d          dk    sJ |                     d          dk    sJ |                     d          dk    sJ t          d          } |                     d          dk    sJ |                     d          dk    sJ |                     d          dk    sJ t          d          } |                     d          dk    sJ |                     d          dk    sJ |                     d          dk    sJ t          d          } |                     d          dk    sJ |                     d          dk    sJ |                     d          dk    sJ t          d          } |                     d          dk    sJ |                     d          dk    sJ |                     d          dk    sJ d S )Nr$   bareisr   r)   det_ludet_LUr5   r:   Bareisr@   rA   BAREISSr;   r   r<   r   r    r=   r   r>   r?   rB   rD   	BERKOWITZrE   rF   LU)r	   rU   )rY   s    rO   test_legacy_detrl      s    	 # 	$ 	$A
 555!!T))))555!!T))))555!!T)))) # 	$ 	$A 555!!S((((555!!S((((555!!S(((( & 	' 	'A 555!!S((((555!!S((((55	5""c)))) # 	$ 	$A
 55	5""b((((555$$****555#### $ 	% 	%A
 55	5""a''''555$$))))555"""" # 	$ 	$A 55	5""c))))555$$++++555$$$$ ( 	) 	)A 555!!U****555!!U****555$$---- & 	' 	'A 555!!S((((555!!S((((555$$$$$$rQ   c                 &    t          | | d           S )Nc                 (    t          | |k              S N)intrM   rN   s     rO   rT   z!eye_Determinant.<locals>.<lambda>  s    Sa[[ rQ   r	   rS   s    rO   eye_Determinantrt   
  s    !Q00111rQ   c                 &    t          | | d           S )Nc                     dS Nr   rK   rq   s     rO   rT   z#zeros_Determinant.<locals>.<lambda>  s    Q rQ   rr   rs   s    rO   zeros_Determinantrx     s    !Q'''rQ   c                  z   t          ddg d          t          t          fd           t          d          } t	          d          } | j                    dk    sJ |                                dk    sJ t          d          }t          ddg           t          dddg          }t          ddg d	          }t          ddg d
          }t          dd|dddddddddddddddg          ddlm}m	}m
}m}	m}
m} t          dd||	|
d||dd|g	          }t          dd|dd|	|d|
||g	          }t          dd|dz  dd||dz  d|||dz  g	          }                                dk    sJ |                                dk    sJ |                                dk    sJ |                                dk    sJ                                 d|z  dz
  k    sJ                     d          d|z  dz
  k    sJ                     d          d|z  dz
  k    sJ                     d          d|z  dz
  k    sJ |                                ||z  |z  k    sJ |                                ||z  |z  k    sJ |                                dk    sJ t          t          fd           d S )Nr   r"   r   r   r"   r(   r   r#   c                  ,                                      S ro   rU   rG   s   rO   rT   ztest_det.<locals>.<lambda>  s     rQ   r   r   r   r   r*   )	r   r   r"   r(   r   r#   r+   r   r   r(   r#   r+   r,   r-   r.   r/   r1   r2   )rM   rN   klmrS   r   r%      r   r   r   r   c                  0                          d          S )Ntest)
iszerofuncr|   es   rO   rT   ztest_det.<locals>.<lambda>2  s    quuu77 rQ   )r	   r   r   rx   rt   rU   r   	sympy.abcrM   rN   r~   r   r   rS   
ValueError)r   eyr   bcdrM   rN   r~   r   r   rS   fghrG   r   s                  @@rO   test_detr     s   q!'''((A
111!A			B1577a<<<<6688q====sAq!RAq!aSAq!\\\""Aq!00011Aq!	
Aq!Q1aAr2r2r2>	@ 	@A****************q!aAq!Q1a011Aq!aAq!Q1a011Aq!adAq!QUAq!QU;<<A 5577a<<<<5577a<<<<5577b====5577a<<<<5577acBh555$$!b000055	5""acBh....555$$!b00005577ac!e5577ac!e5577a<<<<
:777788888rQ   c                  :   t          g dg dg dg          } |                                 dk    sJ t          dd          D ]}t          ||                                          t          ||          j                                        cxk    rt          |          k    sn J t          ||          t          |          z
                                  t          ||          t          |          z
  j                                        cxk    rt          |          k    sn J t          d          \  }}}}}t          |||||g          } |                                 | j                                        cxk    r||z   |z   |z   |z   k    sn J d S )Nr!   r(   r   r#   r+   r   r,   i  r   r/   za_1 a_2 a_3 a_4 a_5)	r	   perrR   r   Tr   r
   r   r   )rY   rM   a1a2a3a4a5s          rO   test_permanentr   4  s   			999iii011A5577c>>>>1b\\ [ [Aqzz~~41::<#3#3#5#5EEEE1EEEEEEQ

3q66!&&((T!QZZA->,A,E,E,G,GZZZZ<XY??ZZZZZZZ !677BBBBB#$$A5577acggii999927R<"#4r#999999999rQ   c                  
   t          d          } t          dd| ddddddddd	d
dddddg          }t          g ddd| z  dz
  d| z  dz
  d| z  dz   gdd| z  dz   d| z  dz   d| z  dz
  gdd| z  dz
  d| z  d| z  dz   gg          }|                                |k    sJ |                    d          |k    sJ |                    d          |k    sJ t          ddg d          t          t          fd            d S )!Nr   r(   r   r   r"   r   r#   r+   r,   r-   r.   r/   r1   r2   )r(   r(   r   L   D   r   rC   r         0   H   r   r   r   rz   c                  ,                                      S ro   )adjugater}   s   rO   rT   ztest_adjugate.<locals>.<lambda>N  s     rQ   )r   r	   r   r   r   )r   r   adjrG   s      @rO   test_adjugater   ?  s`   sAq!	
Aq!Q1aAr2r2r2>	@ 	@A 000s1urzBqD1HbdRi0	r!tcz3q519qsRx01r	1bdRi0	2 3 3C
 ::<<3::Y:''3....::[:))S0000q!'''((A
!5!5!5!566666rQ   c            
         t           } t          ddg d          }t          ddg d          }|                                t          d          k    sJ |                    |          t          dd | d          dz   | d          dz   | d	          d
z  g          k    sJ t          j        dd          t          ddddg          k    sJ t          dd          t          ddddg          k    sJ |                                |k    sJ t          d          t          d          	                                k    sJ t          g dg dg dg          }|	                                t          g dg dg dg          k    sJ t          g dg dg dg          }|	                                t          g dg dg dg          k    sJ d S )Nr   r"   r!   )r"   r(   r   r2   '      4   r1   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	   normr   projectzerosr   copyr
   cofactor_matrix)Rv1v2r   s       rO   	test_utilr   P  s   A	1iii	 	 B	1iii	 	 B7799R    ::b>>VAq11R558QQrUU2XqquuQw*GHHHHHH<11q!f!5!555551::1q!f------7799????q66SVV++------999iii344D!!kkk:::6778 8 8 8999iii344D!![[[+++6778 8 8 8 8 8rQ   c                     t          d          } t          dd| ddddddddd	d
dddddg          t          | ddgg dg dg          }t          g ddd| z  dz
  d| z  dz   d| z  dz
  gdd| z  dz
  d| z  dz   d| z  gdd| z  dz   d| z  dz
  d| z  dz   gg          }t          | ddgg dg dg          }                    dd          |k    sJ                     d d           |k    sJ                     dd          d!| z  dz
  k    sJ                     dd          d| z  dz   k    sJ                                 |k    sJ                     d"#          |k    sJ                     d$#          |k    sJ t          t          fd%           t          t          fd&           t          t          fd'           t          ddg d(                              dd          t          ddgg          k    sJ t          t          d)            t          t          fd*           t          t          fd+           t          t          fd,           d S )-Nr   r(   r   r   r"   r   r#   r+   r,   r-   r.   r/   r1   r2   )r   r,   r.   )r/   r1   r2   )r(   r   r   r   r   r   r   r   r   rC   r   r   r   r   r   r   r   )r   r,   r-   r   ir   r   r   c                  0                          dd          S Nr(   r   cofactorr   s   rO   rT   z*test_cofactor_and_minors.<locals>.<lambda>~  s    qzz!Q// rQ   c                  0                          dd          S r   minorr   s   rO   rT   z*test_cofactor_and_minors.<locals>.<lambda>  s    qwwq!}} rQ   c                  0                          dd          S r   )minor_submatrixr   s   rO   rT   z*test_cofactor_and_minors.<locals>.<lambda>  s    q00A66 rQ   rz   c                  L    t          ddg                               dd          S rw   )r	   r   rK   rQ   rO   rT   z*test_cofactor_and_minors.<locals>.<lambda>  s&    q!R((A.. rQ   c                  0                          dd          S rw   r   r}   s   rO   rT   z*test_cofactor_and_minors.<locals>.<lambda>  s    Aq)9)9 rQ   c                  0                          dd          S rw   r   r}   s   rO   rT   z*test_cofactor_and_minors.<locals>.<lambda>  s    A rQ   c                  ,                                      S ro   )r   r}   s   rO   rT   z*test_cofactor_and_minors.<locals>.<lambda>  s    ):):)<)< rQ   )	r   r	   r   r   r   r   r   r   r   )r   r   cmsubrG   r   s       @@rO   test_cofactor_and_minorsr   c  s$   sAq!	
Aq!Q1aAr2r2r2>	@ 	@A 	
a! 	 	A 
///	SURZARTBY/
r!tax#a%!)1Q3/
bdRi1Q38RTBY/	1 
2 
2B
 AJJJJJ  C
 Q""a''''R$$++++771a==CECK''''::ar!tcz))))"$$$$I.."4444K00B6666
:////000
:,,,,---
:6666777q!'''((AQ""fq!fX&6&66666
: / / 0 0 0
!9!9!9!9:::
!6!6!6!6777
!<!<!<!<=====rQ   c                  Z   t          d          t          d          }} t          d          t          d          }}ddlm}m}m} t          ddg d          }t          d                              |           t          | d	z
  dz  |           k    sJ t          d                              |          t          |d	z
  dz  |          k    sJ |                                t          | dz  d
| dz  z  z
  d| z  z
  |           k    sJ t          t          d            t          ddg d          }|                                t          | dz  |           k    sJ t          ddg d          }|                                t          | dz  d| dz  z  z
  d| dz  z  z   d| z  z
  dz   |           k    sJ t          dd| dd||d|||g	          }|                                t          |dz  | |z   |z   |dz  z  z
  || |z  ||z  z   | |z  z   z  z   | |z  |z  z
  |          k    sJ d S )Nr   r   r   tr   )rG   r   r   r"   )	r   r   r"   r(   r   r#   r+   r   r,   r   r3   r      c                  L    t          dgdgg                                          S )Nr   r   )r	   charpolyrK   rQ   rO   rT   ztest_charpoly.<locals>.<lambda>  s"    !qc
););)D)D)F)F rQ   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   W   r   r   r   r   r/      ik"  i i| )r   r   rG   r   r   r	   rt   r   r   r   r   )	r   r   r   r   rG   r   r   r   rS   s	            rO   test_charpolyr     sY   #;;sqA#;;sqAq!00011A1&&q))T1q51*a-@-@@@@@1&&q))T1q51*a-@-@@@@@::<<41r!Q$wA 5q999999
!F!FGGGq!EEEFFA::<<41a==((((q!IIIJJA::<<41s1a4x$q!t) ;fQh F PRSTTTTTTq!aAq!Q1a011A::<<41!Aq!t| 3a1QqS1o E!A MqQQQQQQQQrQ   )%r]   sympy.core.numbersr   r   sympy.core.symbolr   r   (sympy.functions.elementary.miscellaneousr   sympy.polys.polytoolsr   sympy.matricesr	   r
   r   r   r   r   r   sympy.testing.pytestr   sympy.matrices.commonr   (sympy.functions.combinatorial.factorialsr   r   rZ   rc   rl   rt   rx   r   r   r   r   r   r   rK   rQ   rO   <module>r      s                ' ' ' ' ' ' / / / / / / / / 9 9 9 9 9 9 & & & & & & , , , , , , , , , ,           ' ' ' ' ' ' 6 6 6 6 6 6 L L L L L L L L^ ^ ^@	+ 	+ 	+O% O% O%b2 2 2( ( ("9 "9 "9H	: 	: 	:7 7 7"8 8 8&&> &> &>PR R R R RrQ   