a
    khX%                     @   sp  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g d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*d+ Z$d,d- Z%ejdg d.ejdeddfed#d$fgd/d0 Z&d1d2 Z'd3d4 Z(d5d6 Z)d7d8 Z*d9d: Z+d;d< Z,d=d> Z-d?d@ Z.dS )A    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J d S N r   MZsolr   r   S/var/www/auris/lib/python3.9/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/   r0   r   r2   )r7   r8   r9   r:   )r   r   r   r   r&      ))r   r   r   r!   r1   )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J d S Nr   detr   r   r   r   test_determinant   s    8rC   c                     sT   t d  fdd} | d dks(J | d dks<J | d dksPJ 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)rD   jr   r   
<listcomp>Z       zAtest_issue_13835.<locals>.<lambda>.<locals>.<listcomp>.<listcomp>)range)rE   )rD   n)rG   r   rH   Z   s   z6test_issue_13835.<locals>.<lambda>.<locals>.<listcomp>)r   rJ   rK   rD   rL   r   <lambda>Z   s   z"test_issue_13835.<locals>.<lambda>r   r   r'   r-   )r   rB   )r   r   rM   r   test_issue_13835X   s
    rO   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sJ d S )Nr   r/   r   r!   r+   )	r   r   Z	eigenvalsrandomchoicelistkeysr	   rB   )r   ZevZtest_evr   r   r   test_issue_14517a   s    rT   )ZbareisZdet_luZdet_LUZBareisZBAREISSZ	BERKOWITZZLUc                 C   s   |j | d|ksJ d S r?   rA   r   r   r   r   test_legacy_detm   s    rU   c                 C   s   t | | dd S )Nc                 S   s   t | |kS r   )intrF   rG   r   r   r   rN      rI   z!eye_Determinant.<locals>.<lambda>r   rL   r   r   r   eye_Determinant   s    rY   c                 C   s   t | | dd S )Nc                 S   s   dS Nr   r   rW   r   r   r   rN      rI   z#zeros_Determinant.<locals>.<lambda>rX   rL   r   r   r   zeros_Determinant   s    r[   c                     s^  t ddg d tt fdd td} td}|  dksBJ | dksRJ 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 dd||d d|||d g	}  dksXJ | d	ksjJ | dks|J | dksJ  d| d ksJ jddd| d ksJ jddd| d ksJ jddd| d ksJ | || | ksJ | || | ks6J | dksHJ ttfdd d S )Nr!   r&   r   r!   r&   r+   r   r'   c                      s      S r   rA   r   rM   r   r   rN      rI   ztest_det.<locals>.<lambda>r   r   r   r   r,   )	r   r!   r&   r+   r   r'   r-   r"   r"   r+   r'   r-   r.   r/   r0   r1   r3   r4   )rF   rG   klmrK   r$   r(      r   r@   r   r   c                      s    j ddS )Ntest)Z
iszerofuncrA   r   er   r   rN      rI   )r   r   r   r[   rY   rB   r   	sympy.abcrF   rG   r]   r^   r_   rK   
ValueError)r   Zeyr   bcdrF   rG   r]   r^   r_   rK   fghr   rD   rc   r   test_det   s<    " *rm   c                  C   s  t g dg dg dg} |  dks*J tddD ]|}t|| t||j   krft|ksln J t||t|  t||t| j   krt|ks4n J q4td\}}}}}t |||||g} |  | j   kr|| | | | ksn J d S )Nr%   r+   r   r'   r-   r"   r.   i  r   r1   za_1 a_2 a_3 a_4 a_5)	r   ZperrJ   r
   Tr   r	   r   r   )r   rF   Za1Za2a3Za4Za5r   r   r   test_permanent   s    4Frr   c                     s,  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|  d d|  d d|  d gdd|  d d|  d d|  d gdd|  d d|  d|  d gg}| |ksJ |jdd|ksJ |jdd|ksJ |jdd|ksJ |jd d|ksJ tddg d! tt fd"d# d S )$Nr   r+   r   r!   r&   r   r'   r-   r.   r/   r0   r1   r3   r4   )r+   r+   r   L   D   r"   r=   r`         0   H   r   r@   r   r   r   r\   c                      s      S r   )adjugater   rM   r   r   rN      rI   ztest_adjugate.<locals>.<lambda>)r   r   r}   r   r   )r   rc   Zadjr   rM   r   test_adjugate   s"    """r~   c                  C   s^  t } tddg d}tddg d}| tdks8J ||tdd| dd | dd | d	d
 gkspJ tddtddddgksJ tddtddddgksJ | |ksJ tdtd	 ksJ 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sZJ d S )Nr   r&   r%   )r&   r+   r   r4   '      4   r3   r   r!   r   )r   r&   r!   )r!   r'   r&   )r!   r&   r'   )   r   )r!   r&   )r    r   r   rn   ro   )r    r'   r    )r'   r   r'   )
r   r   Znormr   projectzerosr
   copyr	   cofactor_matrix)RZv1Zv2ra   r   r   r   	test_util   s"    8 
r   c                     sZ  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|  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g dg dg}dd|ksJ d d |ksJ ddd!|  d ks$J ddd|  d ksBJ  |ksTJ jd"d#|ksjJ jd$d#|ksJ jd%d#|ksJ jd&d#|ksJ ttfd'd( ttfd)d( ttfd*d( tddg d+  ddtddggksJ ttd,d(  tt fd-d( tt fd.d( tt fd/d( d S )0Nr   r+   r   r!   r&   r   r'   r-   r.   r/   r0   r1   r3   r4   )r!   r.   r0   )r1   r3   r4   )r+   rt   rw   r{   rs   ru   rv   rx   ry   r=   r|   r"   rz   r   r`   r{   rn   )r!   r.   r/   r$   ir   r@   r   r   r   c                      s     ddS Nr+   r   cofactorr   rb   r   r   rN      rI   z*test_cofactor_and_minors.<locals>.<lambda>c                      s     ddS r   minorr   rb   r   r   rN      rI   c                      s     ddS r   )minor_submatrixr   rb   r   r   rN      rI   r\   c                   S   s   t ddg ddS rZ   )r   r   r   r   r   r   rN      s    c                      s     ddS rZ   r   r   rM   r   r   rN     rI   c                      s     ddS rZ   r   r   rM   r   r   rN     rI   c                      s      S r   )r   r   rM   r   r   rN     rI   )	r   r   r   r   r   r   r   re   r   )r   r_   cmsubr   rl   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g d}td| t| d	 d | kslJ td|t|d	 d |ksJ | t| d d
| d   d|   | ksJ t	t
dd  tddg d}| t| d | ksJ tddg d}| t| d d| d   d| d   d|   d | ksFJ tdd| dd||d|||g	}| t|d | | | |d   || | ||  | |    | | |  |ksJ d S )Nr   r   r   tr   )rD   rf   rg   r&   )	r   r!   r&   r+   r   r'   r-   r"   r.   r   r5   r!      c                   S   s   t dgdgg S )Nr   r!   )r   charpolyr   r   r   r   rN     rI   ztest_charpoly.<locals>.<lambda>r+   )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   r1      ik"  i i| )r   rd   rD   rf   rg   r   rY   r   r   r   r   )	r   r   r   r   rD   rf   rg   r_   rK   r   r   r   test_charpoly  s    $$.@r   )/rP   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
   rd   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   rC   rO   rT   rU   rY   r[   rm   rr   r~   r   r   r   r   r   r   r   <module>   s   

5	$*