
    sgX%                     n   d dl Z 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 ej6                  j9                  dej:                  ej<                  ej>                  ej@                  ejB                  g      ej6                  j9                  d e       df ed gg      d f edgg      dfg      d               Z"ej6                  j9                  dg d      ej6                  j9                  d ed      df eedfedez  ff      dez  ez  ez
  f ed      df ed      df ed      d f ed      df ed      df ed      d f ed      df ed       d!f ed"      d#f ed$      d%f eeeefd&eeeff      edz  eez  z
  fg      d'               Z#d( Z$d) Z%ej6                  j9                  dg d*      ej6                  j9                  d ed      df ed"      d#fg      d+               Z&d, Z'd- Z(d. Z)d/ Z*d0 Z+d1 Z,d2 Z-d3 Z.y)4    N)I)Rational)Symbolsymbols)sqrt)Poly)Matrixeyeones)xyz)raises)NonSquareMatrixError)	factorialsubfactorialmethodzM, sol      c                      | |      |k(  sJ y N r   Msols      X/var/www/html/venv/lib/python3.12/site-packages/sympy/matrices/tests/test_determinant.pytest_eval_determinantr      s     !9    )	domain-gebareiss	berkowitzbirdlaplacelu))   )   r&   ))r   r   r   r   r&      )r   r+      ))r+   r   r   )r-   r   r-   r&   r   r-   r   r   r   r   r+      i)r   r&   r+   r0   )r   r,      r'   )	   
                     )r+   r&   r   r   r   r   r+   r&   r   r   r   r   r+   r&   r   r   r   r   r+   r&   )r&   r   r   r   r+   i  ))r+   r   r   r   )r-   r   r   r   r.   r/   <   ))r   r   r   r   )r   r   r   r   )r3   r4   r5   r   r7   )r<   r=   r>   r?   )r   r   r   r   r+      ))r   r   r   r&   r6   )r&   r   r   r   r0   )r&   r   r   r)   r+   )r+   r&   r)   r   r'   )r   r   r   r   r,   i))r(   r&   r+   r0   r   )r   r+   r0   r   )r   r&   r%   r0   r   )r   r&   r+   r-   r   )r   r&   r+   r0   r)   i-  ))r&   r2   r)   r+   r&   )r   r   r   r   r   )r-   r   r2   r   r&   )r%   r-   r0   r   r+   )r   r   r   r   r   {   )r   r   r   c                 2    |j                  |       |k(  sJ y Nr   detr   s      r   test_determinantrI      s    p 5553&&&r   c                      t        d      fd}  | d      j                         dk(  sJ  | d      j                         dk(  sJ  | d      j                         dk(  sJ y )Nac                     t        t        |       D cg c]!  }t        |       D cg c]
  }||z  z    c}# c}}      S c c}w c c}}w r   )r	   range)njirK   s      r   <lambda>z"test_issue_13835.<locals>.<lambda>Z   sE    &#(8- -2!H5q1qs75 - . 5 -s   A
AA
A
r   r   r,   r2   )r   rH   )r   rK   s    @r   test_issue_13835rR   X   sU    A	.AQ488:??Q488:??Q488:??r   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   r4   r   r&   r0   )	r	   r   	eigenvalsrandomchoicelistkeysr
   rH   )r   evtest_evs      r   test_issue_14517r[   a   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##%***r   )bareisdet_ludet_LUBareisBAREISS	BERKOWITZLUc                 2    |j                  |       |k(  sJ y rE   rG   r   s      r   test_legacy_detrd   m   s      5553&&&r   c                     t        | | d       S )Nc                     t        | |k(        S r   )intrP   rO   s     r   rQ   z!eye_Determinant.<locals>.<lambda>   s    Sa[ r   r	   rN   s    r   eye_Determinantrk      s    !Q011r   c                     t        | | d       S )Nc                      yNr   r   rh   s     r   rQ   z#zeros_Determinant.<locals>.<lambda>   s    r   ri   rj   s    r   zeros_Determinantro      s    !Q''r   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+   r0   r   r,   c                  $     j                         S r   rG   rK   s   r   rQ   ztest_det.<locals>.<lambda>   s     r   r   r   r   r   r1   )	r   r&   r+   r0   r   r,   r2   r'   r'   r0   r,   r2   r3   r4   r5   r6   r8   r9   )rP   rO   klmrN   r)   r-      r   rF   r    r!   c                  (     j                  d      S )Ntest)
iszerofuncrG   es   r   rQ   ztest_det.<locals>.<lambda>   s    quuu7 r   )r	   r   r   ro   rk   rH   r   	sympy.abcrP   rO   rt   ru   rv   rN   
ValueError)r   eyr   bcdrP   rO   rt   ru   rv   rN   fghrK   r|   s                  @@r   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8r   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*   r0   r   r,   r2   r'   r3   i  r   r6   za_1 a_2 a_3 a_4 a_5)	r	   perrM   r   Tr   r
   r   r   )r   rP   a1a2a3a4a5s          r   test_permanentr      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9r   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 |j                  d      |k(  sJ |j                  d       |k(  sJ t        ddg d!      t        t        fd"       y )#Nr   r0   r   r&   r+   r   r,   r2   r3   r4   r5   r6   r8   r9   )r0   r0   r   L   D   r'   rB   rw         0   H   r    rF   r!   r"   r#   rq   c                  $     j                         S r   )adjugaters   s   r   rQ   ztest_adjugate.<locals>.<lambda>   s     r   )r   r	   r   r   r   )r   r|   adjrK   s      @r   test_adjugater      sP   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::V:$+++::Y:'3...q!'(A
!56r   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+   r0   r   r9   '      4   r8   r   r&   r   )r   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v2ry   s       r   	test_utilr      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 8r   c                  h   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 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   r0   r   r&   r+   r   r,   r2   r3   r4   r5   r6   r8   r9   )r&   r3   r5   )r6   r8   r9   )r0   r   r   r   r   r   r   r   r   rB   r   r'   r   r   rw   r   r   )r&   r3   r4   r)   ir    rF   r!   r"   r#   c                  (     j                  dd      S Nr0   r   cofactorr{   s   r   rQ   z*test_cofactor_and_minors.<locals>.<lambda>   s    qzz!Q/ r   c                  (     j                  dd      S r   minorr{   s   r   rQ   z*test_cofactor_and_minors.<locals>.<lambda>   s    qwwq!} r   c                  (     j                  dd      S r   )minor_submatrixr{   s   r   rQ   z*test_cofactor_and_minors.<locals>.<lambda>   s    q00A6 r   rq   c                  <    t        ddg       j                  dd      S rn   )r	   r   r   r   r   rQ   z*test_cofactor_and_minors.<locals>.<lambda>   s     q!R((A. r   c                  (     j                  dd      S rn   r   rs   s   r   rQ   z*test_cofactor_and_minors.<locals>.<lambda>  s    Aq)9 r   c                  (     j                  dd      S rn   r   rs   s   r   rQ   z*test_cofactor_and_minors.<locals>.<lambda>  s    A r   c                  $     j                         S r   )r   rs   s   r   rQ   z*test_cofactor_and_minors.<locals>.<lambda>  s    ):):)< r   )	r   r	   r   r   r   r   r   r~   r   )r   rv   cmsubrK   r|   s       @@r   test_cofactor_and_minorsr      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 
2B
 AJ C
 Q"a'''R$+++771a=CECK'''::ar!tcz)))"$$$I."444K0B666F+r111I."444
:/0
:,-
:67q!'(AQ"fq!fX&6666
: / 0
!9:
!67
!<=r   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   )rK   r   r   r+   )	r   r&   r+   r0   r   r,   r2   r'   r3   r   r:   r&      c                  <    t        dgdgg      j                         S )Nr   r&   )r	   charpolyr   r   r   rQ   ztest_charpoly.<locals>.<lambda>  s    !qc
);)D)D)F r   r0   )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   r6      ik"  i i| )r   r}   rK   r   r   r	   rk   r   r   r   r   )	r   r   r   r   rK   r   r   rv   rN   s	            r   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Qr   )/rU   pytest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.exceptionsr   (sympy.functions.combinatorial.factorialsr   r   markparametrize_eval_det_bareiss_eval_det_berkowitz_eval_det_bird_eval_det_laplace_eval_det_lur   rI   rR   r[   rd   rk   ro   r   r   r   r   r   r   r   r   r   <module>r      s?       ' / 9 & , ,   ' : L 
f88
633V5H5H$ 
 XqMaSE]AaSE]A$ 
  $B C  qAh!A#h Q3q519&      ! #'(  ! " $%&    ! #&	'
    ! #%&  ! " $%&    ! #&	'
  # $ &)	*
  % & (-	.
  # $ &)	*
 q!Qi!Qi qD1Q3J(c4$ 4j'k4Cn'	+  $J K   ! #'(  % & (-	.
$ 
'
K'2("9H	:7&8&(>TRr   