U
    L?hX%                     @   s  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jdejejejej ej!gejde dfed ggd fedggdfgdd Z"ejdddddddgejdeddfeedfede ffde e e 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 ee  fgd-d. Z#d/d0 Z$d1d2 Z%ejdd3d4d5d6d7d8d9gejdeddfed(d)fgd:d; Z&d<d= Z'd>d? Z(d@dA Z)dBdC Z*dDdE Z+dFdG Z,dHdI Z-dJdK Z.dS )L    N)I)Rational)Symbolsymbols)sqrt)Poly)Matrixeyeones)xyz)raises)NonSquareMatrixError)	factorialsubfactorialmethodzM, sol      c                 C   s   | ||kst d S N)AssertionErrorr   MZsol r   W/var/www/html/venv/lib/python3.8/site-packages/sympy/matrices/tests/test_determinant.pytest_eval_determinant   s    r   	domain-gebareiss	berkowitzbirdlaplaceZ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&   r+   )r   r'      r#   )	   
                     )r&   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   )r-   r.   r/   r   r1   )r6   r7   r8   r9   )r   r   r   r   r&      ))r   r   r   r"   r0   )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(   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+   r   r&   )r   r   r   r   r   {   )r   r   r   c                 C   s   |j | d|kstd S Nr   detr   r   r   r   r   test_determinant   s    8rB   c                     sT   t d  fdd} | d dks(t| d dks<t| d dksPtd S )Nac                    s   t  fddt D S )Nc                    s$   g | ]  fd dt D qS )c                    s   g | ]}|   qS r   r   ).0i)rC   jr   r   
<listcomp>Z   s     zAtest_issue_13835.<locals>.<lambda>.<locals>.<listcomp>.<listcomp>)range)rD   )rC   n)rF   r   rG   Z   s   z6test_issue_13835.<locals>.<lambda>.<locals>.<listcomp>)r   rH   rI   rC   rJ   r   <lambda>Z   s   z"test_issue_13835.<locals>.<lambda>r   r   r'   r,   )r   rA   r   )r   r   rK   r   test_issue_13835X   s
    rM   c               
   C   s   t ddt dt dgdt dddt gdt dddt  dt gddt dt ddt  gg} |  }tt| }| |td   dkst	d S )Nr   r.   r   r"   r+   )
r   r   Z	eigenvalsrandomchoicelistkeysr	   rA   r   )r   ZevZtest_evr   r   r   test_issue_14517a   s    rR   ZbareisZdet_luZdet_LUZBareisZBAREISSZ	BERKOWITZZLUc                 C   s   |j | d|kstd S r>   r@   r   r   r   r   test_legacy_detm   s    rS   c                 C   s   t | | dd S )Nc                 S   s   t | |kS r   )intrE   rF   r   r   r   rL          z!eye_Determinant.<locals>.<lambda>r   rJ   r   r   r   eye_Determinant   s    rX   c                 C   s   t | | dd S )Nc                 S   s   dS Nr   r   rU   r   r   r   rL      rV   z#zeros_Determinant.<locals>.<lambda>rW   rJ   r   r   r   zeros_Determinant   s    rZ   c                     sx  t ddddddddg tt fdd td} td}|  d	ksJt| dksZttd
}t d	d	g  t dddg}t ddddddg}t dddddddddddg	}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 d	d	||d d	|||d g	}  dksrt| dkst| dkst| dkst d| d kstjddd| d kstjddd| d kstjddd| d kst| || | ks6t| || | ksPt| dksbtttfdd d S )Nr"   r&   r   r+   r   r'   c                      s      S r   rA   r   rK   r   r   rL      rV   ztest_det.<locals>.<lambda>r   r   r,   r#   r-   r.   r/   r0   r2   r3   )rE   rF   klmrI   r%   r(      r   r?   r   r   c                      s    j ddS )Ntest)Z
iszerofuncr[   r   er   r   rL      rV   )r   r   r   rZ   rX   rA   r   r   	sympy.abcrE   rF   r\   r]   r^   rI   
ValueError)r   Zeyr   bcdrE   rF   r\   r]   r^   rI   fghr   rC   rb   r   test_det   s<    " *rl   c                  C   s  t dddgdddgddd	gg} |  d
ks0ttddD ]|}t|| t||j   krlt|ksrn tt||t|  t||t| j   krt|ks:n tq:t	d\}}}}}t |||||g} |  | j   kr|| | | | ksn td S )Nr   r"   r&   r+   r   r'   r,   r#   r-   i  r0   za_1 a_2 a_3 a_4 a_5)
r   Zperr   rH   r
   Tr   r	   r   r   )r   rE   Za1Za2a3Za4Za5r   r   r   test_permanent   s     4Fro   c                     s8  t d} tdd| ddddddddd	d
dddddg}tddddgdd|  d d|  d d|  d gdd|  d d|  d d|  d gdd|  d d|  d|  d gg}| |kst|jdd|kst|jdd|kst|jd d|kst|jd!d|ks
ttddddddddg tt fd"d# d S )$Nr   r+   r   r"   r&   r   r'   r,   r-   r.   r/   r0   r2   r3   r   L   D   r#   r<   r_         0   H   r   r?   r   r   r    c                      s      S r   )adjugater   rK   r   r   rL      rV   ztest_adjugate.<locals>.<lambda>)r   r   rz   r   r   r   )r   rb   Zadjr   rK   r   test_adjugate   s"    "
""r{   c                  C   sz  t } tdddddg}tdddddg}| tdks<t||tdd| dd | d	d | d
d gkstttddtddddgksttddtddddgkst| |kstt	dt	d
 ksttdddgdddgdddgg}|
 tdddgdddgdddggks(ttdddgdddgdddgg}|
 tdddgdddgdddggksvtd S )Nr   r&   r"   r+   r   r3   '      4   r2   r   r'      iir!   r,   r#   r-   )r   r   Znormr   r   projectZzerosr
   copyr	   cofactor_matrix)RZv1Zv2r`   r   r   r   	test_util   s"    8  
 r   c                     sn  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dd	dgdddgg}tddddgdd|  d d|  d d|  d gdd|  d d|  d d|  gdd|  d d|  d d|  d gg}t| ddgdddgdd	d
gg}dd|kstdd|kstddd|  d ks0tddd|  d ksNt |ks`tjdd |ksvtjd!d |kstjd"d |kstjd#d |kstttfd$d% ttfd&d% ttfd'd% tddddddddg  ddtddggks&tttd(d%  tt	 fd)d% tt	 fd*d% tt	 fd+d% d S ),Nr   r+   r   r"   r&   r   r'   r,   r-   r.   r/   r0   r2   r3   rq   rt   rx   rp   rr   rs   ru   rv   r<   ry   r#   rw   r   r_   r%   ir   r?   r   r   r    c                      s     ddS Nr+   r   cofactorr   ra   r   r   rL      rV   z*test_cofactor_and_minors.<locals>.<lambda>c                      s     ddS r   minorr   ra   r   r   rL      rV   c                      s     ddS r   )minor_submatrixr   ra   r   r   rL      rV   c                   S   s   t ddg ddS rY   )r   r   r   r   r   r   rL      s    c                      s     ddS rY   r   r   rK   r   r   rL     rV   c                      s     ddS rY   r   r   rK   r   r   rL     rV   c                      s      S r   )r   r   rK   r   r   rL     rV   )
r   r   r   r   r   r   r   r   rd   r   )r   r^   cmsubr   rk   r   test_cofactor_and_minors   sL    "
"" r   c            	      C   s  t dt d } }t dt d }}ddlm}m}m} tdddd	dd
dddddg	}td| t| d d | kszt	td|t|d d |kst	| t| d d| d	   d|   | kst	t
tdd  td
d
ddddddddddddddddg}| t| d
 | ks"t	td
d
ddddddddddddddddg}| t| d
 d| d   d| d	   d|   d | kst	tdd| dd||d|||g	}| t|d | | | |d	   || | ||  | |    | | |  |kst	d S )Nr   r   r   tr   )rC   re   rf   r&   r   r"   r+   r   r'   r,   r#   r-   r4      c                   S   s   t dgdgg S )Nr   r"   )r   charpolyr   r   r   r   rL     rV   ztest_charpoly.<locals>.<lambda>-      W   r0      ik"  i i| )r   rc   rC   re   rf   r   rX   r   r   r   r   r   )	r   r   r   r   rC   re   rf   r^   rI   r   r   r   test_charpoly  s    $$.,,@r   )/rN   ZpytestZsympy.core.numbersr   r   Zsympy.core.symbolr   r   Z(sympy.functions.elementary.miscellaneousr   Zsympy.polys.polytoolsr   Zsympy.matricesr   r	   r
   rc   r   r   r   Zsympy.testing.pytestr   Zsympy.matrices.exceptionsr   Z(sympy.functions.combinatorial.factorialsr   r   markZparametrizeZ_eval_det_bareissZ_eval_det_berkowitzZ_eval_det_birdZ_eval_det_laplaceZ_eval_det_lur   rB   rM   rR   rS   rX   rZ   rl   ro   r{   r   r   r   r   r   r   r   <module>   s           

5	      $*