U
    ZÊ¹jX%  ã                   @   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   úd/var/www/html/bwave/python/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s–t	‚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�s„t‚| ¡ dk�s–t‚| ¡ dk�s¨t‚ˆ ¡ d| d k�sÂt‚ˆjdd�d| d k�sàt‚ˆjdd�d| d k�sþt‚ˆ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r°t|ƒ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s¸t‚|jdd�|ksÌt‚|jdd�|ksàt‚|jd d�|ksôt‚|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s”t‚tddƒtddddgƒks²t‚| ¡ |ksÂt‚t	dƒt	dƒ 
¡ 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�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'   é   iúÿÿÿiôÿÿÿr!   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süt‚ˆ 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�sŒt‚ˆjd"d �|k�s¢t‚ˆjd#d �|k�s¸t‚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%   iïÿÿÿr   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sžt	‚| ¡ t| d d| d	   d|   | ƒksÌt	‚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�sŽt	‚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	      ÿýüû$*