U
    Ç-e&4  ã                   @   sô   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d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z dd„ Z!dd„ Z"dd„ Z#d d!„ Z$dS )"é    N)ÚI)ÚRational)ÚSymbolÚsymbols)Úsqrt)ÚPoly)ÚMatrixÚeyeÚones)ÚxÚyÚz)Úraises)ÚNonSquareMatrixError)Ú	factorialÚsubfactorialc                     s˜  t ƒ } |  ¡ dkst‚|  ¡ dks&t‚|  ¡ dks6t‚|  ¡ dksFt‚t dggƒ} |  ¡ dksbt‚|  ¡ dksrt‚|  ¡ dks‚t‚|  ¡ dks’t‚t dggƒ} |  ¡ dks®t‚|  ¡ dks¾t‚|  ¡ dksÎt‚|  ¡ dksÞt‚t dƒ} | jdddksút‚| jdddkst‚| jd	ddks&t‚| jd
ddks<t‚t tdftdt ffƒ} | jdddt t t ksvt‚| jdddt t t ks˜t‚| jd	ddt t t ksºt‚| jd
ddt t t ksÜt‚t dƒ} | jdddksút‚| jdddkst‚| jd	ddks&t‚| jd
ddks<t‚t dƒ} | jdddksZt‚| jdddkspt‚| jd	ddks†t‚| jd
ddksœt‚t dƒ} | jdddksºt‚| jdddksÐt‚| jd	ddksæt‚| jd
ddksüt‚t dƒ} | jdddkst‚| jdddks0t‚| jd	ddksFt‚| jd
ddks\t‚t dƒ} | jdddkszt‚| jdddkst‚| jd	ddks¦t‚| jd
ddks¼t‚t dƒ} | jdddksÚt‚| jdddksðt‚| jd	ddkst‚| jd
ddkst‚t dƒ} | jdddks:t‚| jdddksPt‚| jd	ddksft‚| jd
ddks|t‚t dƒ} | jdddksšt‚| jdddks°t‚| jd	ddksÆt‚| jd
ddksÜt‚t dƒ} | jdddksút‚| jdddkst‚| jd	ddks&t‚| jd
ddks<t‚t dƒ} | jdddksZt‚| jdddkspt‚| jd	ddks†t‚| jd
ddksœt‚t tttfdtttffƒ} | jddtd tt  ksØt‚| jddtd tt  ksút‚| jd	dtd tt  kst‚| jd
dtd tt  ks>t‚t	dƒ‰ ‡ fdd „} | dƒ ¡ dksht‚| d!ƒ ¡ dks~t‚| d"ƒ ¡ dks”t‚d S )#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   r,   ©r2   r3   r4   r5   )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                    s   t ‡‡ fdd„tˆ ƒD ƒƒS )Nc                    s$   g | ]‰ ‡‡ fd d„t ˆƒD ƒ‘qS )c                    s   g | ]}|ˆ ˆ  ‘qS © rD   )Ú.0Úi)rC   ÚjrD   úf/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/matrices/tests/test_determinant.pyÚ
<listcomp>¨   s     zAtest_determinant.<locals>.<lambda>.<locals>.<listcomp>.<listcomp>)Úrange)rE   )rC   Ún)rG   rH   rI   ¨   s   ÿz6test_determinant.<locals>.<lambda>.<locals>.<listcomp>)r   rJ   ©rK   ©rC   rL   rH   Ú<lambda>¨   s   ÿz"test_determinant.<locals>.<lambda>r    r'   )
r   ÚdetÚAssertionErrorZ_eval_det_bareissZ_eval_det_berkowitzZ_eval_det_lur   r   r   r   ©ÚMrD   rM   rH   Útest_determinant   s´    
ÿ""""
þ""""rS   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	   rO   rP   )rR   ZevZtest_evrD   rD   rH   Útest_issue_14517®   s    ürX   c                  C   s>  t dƒ} | jdddkst‚| jdddks0t‚| jdddksDt‚t dƒ} | jdddks`t‚| jdddkstt‚| jd	ddksˆt‚t d
ƒ} | jdddks¤t‚| jdddks¸t‚| jdddksÌt‚t dƒ} | jdddksèt‚| jdddksüt‚| jdddkst‚t dƒ} | jdddks0t‚| jdddksFt‚| jdddks\t‚t dƒ} | jdddkszt‚| jdddkst‚| jdddks¦t‚t dƒ} | jdddksÄt‚| jdddksÚt‚| jdddksðt‚t dƒ} | jdddkst‚| jdddks$t‚| jdddks:t‚d S )Nr!   Zbareisr   r&   Zdet_luZdet_LUr1   r6   ZBareisr<   r=   ZBAREISSr7   r   r8   r   r   r9   r   r:   r;   r>   r@   Z	BERKOWITZrA   rB   ZLU)r   rO   rP   rQ   rD   rD   rH   Útest_legacy_det¹   s@    rY   c                 C   s   t | | dd„ ƒS )Nc                 S   s   t | |kƒS ©N)Úint©rF   rG   rD   rD   rH   rN     ó    z!eye_Determinant.<locals>.<lambda>©r   rL   rD   rD   rH   Úeye_Determinant
  s    r_   c                 C   s   t | | dd„ ƒS )Nc                 S   s   dS ©Nr   rD   r\   rD   rD   rH   rN     r]   z#zeros_Determinant.<locals>.<lambda>r^   rL   rD   rD   rH   Úzeros_Determinant  s    ra   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 rZ   ©rO   rD   rM   rD   rH   rN     r]   ztest_det.<locals>.<lambda>r   r   r'   r   r(   r)   r*   r+   r-   r.   )rF   rG   ÚkÚlÚmrK   r   r"   é   r   r   r   r   c                      s   ˆ j ddS )NÚtest)Z
iszerofuncrb   rD   ©ÚerD   rH   rN   2  r]   )r   r   r   ra   r_   rO   rP   r   Ú	sympy.abcrF   rG   rc   rd   re   rK   Ú
ValueError)r   Zeyr   ÚbÚcÚdrF   rG   rc   rd   re   rK   ÚfÚgÚhrD   ©rC   ri   rH   Útest_det  s<    "ÿ *rs   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Â  r+   za_1 a_2 a_3 a_4 a_5)
r   ZperrP   rJ   r
   ÚTr   r	   r   r   )rR   rF   Za1Za2Úa3Za4Za5rD   rD   rH   Útest_permanent4  s     4Frv   c                     s  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‚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*   r+   r-   r.   éøÿÿÿr   éL   éòÿÿÿéD   r   r?   rf   é†ÿÿÿé   éŽ   éëÿÿÿé0   éH   r   r   r   c                      s   ˆ   ¡ S rZ   )ÚadjugaterD   rM   rD   rH   rN   N  r]   ztest_adjugate.<locals>.<lambda>)r   r   r   rP   r   r   )r   ri   ZadjrD   rM   rH   Ú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   r.   é'   é   é4   r-   r   r    é   iúÿÿÿiôÿÿÿr   r'   r   r(   )r   r   Znormr   rP   ÚprojectZzerosr
   Úcopyr	   Úcofactor_matrix)ÚRZv1Zv2rg   rD   rD   rH   Ú	test_utilP  s"    8  ÿ
 ÿr‹   c                     sB  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‚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*   r+   r-   r.   rx   r{   r   rw   ry   rz   r|   r}   r?   r€   r   r~   r   rf   r   iïÿÿÿr   r   r   c                      s   ˆ   dd¡S ©Nr%   r   ©ÚcofactorrD   rh   rD   rH   rN   ~  r]   z*test_cofactor_and_minors.<locals>.<lambda>c                      s   ˆ   dd¡S rŒ   ©ÚminorrD   rh   rD   rH   rN     r]   c                      s   ˆ   dd¡S rŒ   )Úminor_submatrixrD   rh   rD   rH   rN   €  r]   c                   S   s   t ddg ƒ dd¡S r`   )r   r‘   rD   rD   rD   rH   rN   …  s    c                      s   ˆ   dd¡S r`   r   rD   rM   rD   rH   rN   ‡  r]   c                      s   ˆ   dd¡S r`   r   rD   rM   rD   rH   rN   ˆ  r]   c                      s   ˆ   ¡ S rZ   )r‰   rD   rM   rD   rH   rN   ‰  r]   )
r   r   r‘   rP   r   rŽ   r‰   r   rk   r   )r   re   ÚcmÚsubrD   rr   rH   Útest_cofactor_and_minorsc  sH    "ÿý
""üý 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   rl   rm   r   r   r   r%   r   r    r'   r   r(   r/   é   c                   S   s   t dgdggƒ ¡ S )Nr   r   )r   ÚcharpolyrD   rD   rD   rH   rN   –  r]   ztest_charpoly.<locals>.<lambda>é-   é   éW   r+   é§   ik"  i‘¥ iÜ| )r   rj   rC   rl   rm   r   r_   r—   r   rP   r   r   )	r   r   r   r•   rC   rl   rm   re   rK   rD   rD   rH   Útest_charpoly‹  s    $$.,,@rœ   )%rT   Zsympy.core.numbersr   r   Zsympy.core.symbolr   r   Z(sympy.functions.elementary.miscellaneousr   Zsympy.polys.polytoolsr   Zsympy.matricesr   r	   r
   rj   r   r   r   Zsympy.testing.pytestr   Zsympy.matrices.commonr   Z(sympy.functions.combinatorial.factorialsr   r   rS   rX   rY   r_   ra   rs   rv   r‚   r‹   r”   rœ   rD   rD   rD   rH   Ú<module>   s,    !Q$(