
    MZd&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$y)    N)I)Rational)Symbolsymbols)sqrt)Poly)Matrixeyeones)xyz)raises)NonSquareMatrixError)	factorialsubfactorialc                  :   t               } | j                         dk(  sJ | j                         dk(  sJ | j                         dk(  sJ | j	                         dk(  sJ t        dgg      } | j                         dk(  sJ | j                         dk(  sJ | j                         dk(  sJ | j	                         dk(  sJ t        dgg      } | j                         dk(  sJ | j                         dk(  sJ | j                         dk(  sJ | j	                         dk(  sJ t        d      } | j                  d      dk(  sJ | j                  d      dk(  sJ | j                  d	      dk(  sJ | j                  d
      dk(  sJ t        t
        dft        dt        z  ff      } | j                  d      dt
        z  t        z  t        z
  k(  sJ | j                  d      dt
        z  t        z  t        z
  k(  sJ | j                  d	      dt
        z  t        z  t        z
  k(  sJ | j                  d
      dt
        z  t        z  t        z
  k(  sJ t        d      } | j                  d      dk(  sJ | j                  d      dk(  sJ | j                  d	      dk(  sJ | j                  d
      dk(  sJ t        d      } | j                  d      dk(  sJ | j                  d      dk(  sJ | j                  d	      dk(  sJ | j                  d
      dk(  sJ t        d      } | j                  d      dk(  sJ | j                  d      dk(  sJ | j                  d	      dk(  sJ | j                  d
      dk(  sJ t        d      } | j                  d      dk(  sJ | j                  d      dk(  sJ | j                  d	      dk(  sJ | j                  d
      dk(  sJ t        d      } | j                  d      dk(  sJ | j                  d      dk(  sJ | j                  d	      dk(  sJ | j                  d
      dk(  sJ t        d      } | j                  d      dk(  sJ | j                  d      dk(  sJ | j                  d	      dk(  sJ | j                  d
      dk(  sJ t        d      } | j                  d      dk(  sJ | j                  d      dk(  sJ | j                  d	      dk(  sJ | j                  d
      dk(  sJ t        d      } | j                  d      dk(  sJ | j                  d      dk(  sJ | j                  d	      dk(  sJ | j                  d
      dk(  sJ t        d      } | j                  d      dk(  sJ | j                  d      dk(  sJ | j                  d	      dk(  sJ | j                  d
      dk(  sJ t        d      } | j                  d      dk(  sJ | j                  d      dk(  sJ | j                  d	      dk(  sJ | j                  d
      dk(  sJ t        t
        t        t        fdt        t        t
        ff      } | j                  d      t        dz  t
        t        z  z
  k(  sJ | j                  d      t        dz  t
        t        z  z
  k(  sJ | j                  d	      t        dz  t
        t        z  z
  k(  sJ | j                  d
      t        dz  t
        t        z  z
  k(  sJ t        d      fd}  | d      j                         dk(  sJ  | d       j                         dk(  sJ  | d!      j                         dk(  sJ y )"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                     t        t        |       D cg c]!  }t        |       D cg c]
  }||z  z    c}# c}}      S c c}w c c}}w N)r	   range)njirG   s      G/usr/lib/python3/dist-packages/sympy/matrices/tests/test_determinant.py<lambda>z"test_determinant.<locals>.<lambda>   sE    &#(8- -2!H5q1qs75 - . 5 -s   A
AA
A
r#   r+   )	r	   det_eval_det_bareiss_eval_det_berkowitz_eval_det_lur   r   r   r   )MrG   s    @rN   test_determinantrU      s   A557a<< A%%%  "a'''>>q   !wA557a<< A%%%  "a'''>>q   !wA557a<< A%%%  "a'''>>q     	A 555$***55	5"b(((555$***555###!qQqS 	A 555$!A	11155	5"ac!eai///555$!A	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55	5"adQqSj000555$1qs
222555A!+++ 	A	.AQ488:??Q488:??Q488:??    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      } | j                         }t        j                  t        |j                                     }| |t        d      z  z
  j                         dk(  sJ y )Nr   r-   r   r   r(   )	r	   r   	eigenvalsrandomchoicelistkeysr
   rP   )rT   evtest_evs      rN   test_issue_14517r_      s    r!t1A&	A!1A&	A!Q1WA&r!t1a!A#g&	( 	)A
 
BmmDO,GA##%***rV   c                     t        d      } | j                  d      dk(  sJ | j                  d      dk(  sJ | j                  d      dk(  sJ t        d      } | j                  d      dk(  sJ | j                  d      dk(  sJ | j                  d	      dk(  sJ t        d
      } | j                  d      dk(  sJ | j                  d      dk(  sJ | j                  d      dk(  sJ t        d      } | j                  d      dk(  sJ | j                  d      dk(  sJ | j                  d      dk(  sJ t        d      } | j                  d      dk(  sJ | j                  d      dk(  sJ | j                  d      dk(  sJ t        d      } | j                  d      dk(  sJ | j                  d      dk(  sJ | j                  d      dk(  sJ t        d      } | j                  d      dk(  sJ | j                  d      dk(  sJ | j                  d      dk(  sJ t        d      } | j                  d      dk(  sJ | j                  d      dk(  sJ | j                  d      dk(  sJ y )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	   rP   )rT   s    rN   test_legacy_detrh      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$$$rV   c                     t        | | d       S )Nc                     t        | |k(        S rI   )intrM   rL   s     rN   rO   z!eye_Determinant.<locals>.<lambda>  s    Sa[ rV   r	   rK   s    rN   eye_Determinantro   
  s    !Q011rV   c                     t        | | d       S )Nc                      yNr    rl   s     rN   rO   z#zeros_Determinant.<locals>.<lambda>  s    rV   rm   rn   s    rN   zeros_Determinantrt     s    !Q''rV   c                     t        ddg d      t        t        fd       t        d      } t	        d      } | j
                         dk(  sJ |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	      }j                         dk(  sJ |j                         dk(  sJ |j                         dk(  sJ |j                         dk(  sJ j                         d|z  dz
  k(  sJ j                  d      d|z  dz
  k(  sJ j                  d      d|z  dz
  k(  sJ j                  d      d|z  dz
  k(  sJ |j                         ||z  |z  k(  sJ |j                         ||z  |z  k(  sJ |j                         dk(  sJ t        t        fd       y )Nr   r"   r   r   r"   r(   r   r#   c                  $     j                         S rI   rP   rG   s   rN   rO   ztest_det.<locals>.<lambda>  s     rV   r   r   r   r   r*   )	r   r   r"   r(   r   r#   r+   r   r   r(   r#   r+   r,   r-   r.   r/   r1   r2   )rM   rL   klmrK   r   r%      r   r   r   r   c                  (     j                  d      S )Ntest)
iszerofuncrx   es   rN   rO   ztest_det.<locals>.<lambda>2  s    quuu7 rV   )r	   r   r   rt   ro   rP   r   	sympy.abcrM   rL   rz   r{   r|   rK   
ValueError)r   eyr   bcdrM   rL   rz   r{   r|   rK   fghrG   r   s                  @@rN   test_detr     sa   q!'(A
1!A		B1557a<<668q==sAq!RAq!aSAq!\"Aq!01Aq!	
Aq!Q1aAr2r2r2>	@A**q!aAq!Q1a01Aq!aAq!Q1a01Aq!adAq!QUAq!QU;<A 557a<<557a<<557b==557a<<557acBh555$!b00055	5"acBh...555$!b000557ac!e557ac!e557a<<
:78rV   c                     t        g dg dg dg      } | j                         dk(  sJ t        dd      D ]  }t        ||      j                         t        ||      j                  j                         cxk(  rt        |      k(  sJ  J t        ||      t        |      z
  j                         t        ||      t        |      z
  j                  j                         cxk(  rt        |      k(  rJ  J  t        d      \  }}}}}t        |||||g      } | j                         | j                  j                         cxk(  r||z   |z   |z   |z   k(  sJ  J y )Nr!   r(   r   r#   r+   r   r,   i  r   r/   za_1 a_2 a_3 a_4 a_5)	r	   perrJ   r   Tr   r
   r   r   )rT   rM   a1a2a3a4a5s          rN   test_permanentr   4  s5   	9i01A557c>>1b\ [Aqz~~41:<<#3#3#5E1EEEEEQ
3q6!&&(T!QZA->,A,A,E,E,GZ<XY?ZZZZZ[ !!67BBBBB#$A557accggi927R<"#4r#999999rV   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      }|j                         |k(  sJ |j                  d      |k(  sJ |j                  d      |k(  sJ t        ddg d      t        t        fd        y )!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   rv   c                  $     j                         S rI   )adjugatery   s   rN   rO   ztest_adjugate.<locals>.<lambda>N  s     rV   )r   r	   r   r   r   )r   r   adjrG   s      @rN   test_adjugater   ?  s   sAq!	
Aq!Q1aAr2r2r2>	@A 0s1urzBqD1HbdRi0	r!tcz3q519qsRx01r	1bdRi0	2 3C
 ::<3::Y:'3...::[:)S000q!'(A
!56rV   c            
         t         } t        ddg d      }t        ddg d      }|j                         t        d      k(  sJ |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 |j                         |k(  sJ t        d      t        d      j                         k(  sJ t        g dg dg dg      }|j                         t        g dg dg dg      k(  sJ t        g dg dg dg      }|j                         t        g dg dg dg      k(  sJ y )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       rN   	test_utilr   P  sg   A	1i	 B	1i	 B779R   ::b>VAq1R58QrU2XquQw*GHHHH<<11q!f!55551:1q!f----779??q6SV++----9i34D!k:678 8 89i34D![+678 8 8rV   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      }j                  dd      |k(  sJ j                  d d       |k(  sJ j                  dd      d!| z  dz
  k(  sJ j	                  dd      d| z  dz   k(  sJ j                         |k(  sJ j                  d"#      |k(  sJ j                  d$#      |k(  sJ t        t        fd%       t        t        fd&       t        t        fd'       t        ddg d(      j                  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,       y )-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                  (     j                  dd      S Nr(   r   cofactorr   s   rN   rO   z*test_cofactor_and_minors.<locals>.<lambda>~  s    qzz!Q/ rV   c                  (     j                  dd      S r   minorr   s   rN   rO   z*test_cofactor_and_minors.<locals>.<lambda>  s    qwwq!} rV   c                  (     j                  dd      S r   )minor_submatrixr   s   rN   rO   z*test_cofactor_and_minors.<locals>.<lambda>  s    q00A6 rV   rv   c                  <    t        ddg       j                  dd      S rr   )r	   r   rs   rV   rN   rO   z*test_cofactor_and_minors.<locals>.<lambda>  s     q!R((A. rV   c                  (     j                  dd      S rr   r   ry   s   rN   rO   z*test_cofactor_and_minors.<locals>.<lambda>  s    Aq)9 rV   c                  (     j                  dd      S rr   r   ry   s   rN   rO   z*test_cofactor_and_minors.<locals>.<lambda>  s    A rV   c                  $     j                         S rI   )r   ry   s   rN   rO   z*test_cofactor_and_minors.<locals>.<lambda>  s    ):):)< rV   )	r   r	   r   r   r   r   r   r   r   )r   r|   cmsubrG   r   s       @@rN   test_cofactor_and_minorsr   c  sL   sAq!	
Aq!Q1aAr2r2r2>	@A 	
a! 	A 
/	SURZARTBY/
r!tax#a%!)1Q3/
bdRi1Q38RTBY/	1 
2B
 AJ C
 Q"a'''R$+++771a=CECK'''::ar!tcz)))"$$$I."444K0B666
:/0
:,-
:67q!'(AQ"fq!fX&6666
: / 0
!9:
!67
!<=rV   c                     t        d      t        d      }} t        d      t        d      }}ddlm}m}m} t        ddg d      }t        d      j                  |       t        | d	z
  dz  |       k(  sJ t        d      j                  |      t        |d	z
  dz  |      k(  sJ |j                         t        | dz  d
| dz  z  z
  d| z  z
  |       k(  sJ t        t        d        t        ddg d      }|j                         t        | dz  |       k(  sJ t        ddg d      }|j                         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	      }|j                         t        |dz  | |z   |z   |dz  z  z
  || |z  ||z  z   | |z  z   z  z   | |z  |z  z
  |      k(  sJ y )Nr   r   r   tr   )rG   r   r   r"   )	r   r   r"   r(   r   r#   r+   r   r,   r   r3   r      c                  <    t        dgdgg      j                         S )Nr   r   )r	   charpolyrs   rV   rN   rO   ztest_charpoly.<locals>.<lambda>  s    !qc
);)D)D)F rV   r(   )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	   ro   r   r   r   r   )	r   r   r   r   rG   r   r   r|   rK   s	            rN   test_charpolyr     s   #;sqA#;sqAq!01A1&&q)T1q51*a-@@@@1&&q)T1q51*a-@@@@::<41r!Q$wA 5q9999
!FGq!EFA::<41a=(((q!IJA::<41s1a4x$q!t) ;fQh F PRSTTTTq!aAq!Q1a01A::<41!Aq!t| 3a1QqS1o E!A MqQQQQrV   )%rY   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   rU   r_   rh   ro   rt   r   r   r   r   r   r   rs   rV   rN   <module>r      sj       ' / 9 & , ,   ' 6 L^@	+O%b2("9H	:7"8&&>PRrV   