o
    8VaL2                     @   s   d dl Z d dlmZ d dlmZmZmZmZ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)symbolsSymbolRationalsqrtPoly)Matrixeyeones)xyz)raises)NonSquareMatrixError)	factorialsubfactorialc                     s  t  t dggfD ]"} |  |    kr(|    kr(|    kr(dks+J  J q	t d} | jdddks:J | jdddksDJ | jdddksNJ | jdddksXJ t tdftd	t ff} | jddd	t t t kstJ | jddd	t t t ksJ | jddd	t t t ksJ | jddd	t t t ksJ t d
} | jdddksJ | jdddksJ | jdddksJ | jdddksJ t d} | jdddksJ | jdddksJ | jdddksJ | jdddksJ t d} | jdddksJ | jdddksJ | jdddks!J | jdddks,J t d} | jdddks;J | jdddksFJ | jdddksQJ | jdddks\J t d} | jdddkskJ | jdddksvJ | jdddksJ | jdddksJ t d} | jdddksJ | jdddksJ | jdddksJ | jdddksJ t d} | jdddksJ | jdddksJ | jdddksJ | jdddksJ t d} | jdddksJ | jdddksJ | jdddksJ | jdddksJ t d} | jdddks+J | jdddks6J | jdddksAJ | jdddksLJ t d} | jdddks[J | jdddksfJ | jdddksqJ | jdddks|J t tttfdtttff} | jddtd	 tt  ksJ | jddtd	 tt  ksJ | jddtd	 tt  ksJ | jddtd	 tt  ksJ td  fdd} | d  dksJ | d! dksJ | d" dksJ d S )#N   ))   )   	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.   r4   r5   r6   r7   )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  rF   ).0i)rE   jrF   G/usr/lib/python3/dist-packages/sympy/matrices/tests/test_determinant.py
<listcomp>   s    zAtest_determinant.<locals>.<lambda>.<locals>.<listcomp>.<listcomp>)range)rG   )rE   n)rI   rJ   rK      s    z6test_determinant.<locals>.<lambda>.<locals>.<listcomp>)r   rL   rM   rE   rN   rJ   <lambda>   s    z"test_determinant.<locals>.<lambda>r#   r    r)   )	r   detZ_eval_det_bareissZ_eval_det_berkowitzZ_eval_det_lur   r   r   r   MrF   rO   rJ   test_determinant   s   
    
""""rT   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sKJ d S )Nr   r+   r#   r   r&   )	r   r   Z	eigenvalsrandomchoicelistkeysr	   rQ   )rS   ZevZtest_evrF   rF   rJ   test_issue_14517   s    rY   c                  C   s(  t d} | jdddksJ | jdddksJ | jdddks"J t d} | jdddks0J | jdddks:J | jd	ddksDJ t d
} | jdddksRJ | jdddks\J | jdddksfJ t d} | jdddkstJ | jdddks~J | jdddksJ t d} | jdddksJ | jdddksJ | jdddksJ t d} | jdddksJ | jdddksJ | jdddksJ t d} | jdddksJ | jdddksJ | jdddksJ t d} | jdddksJ | jdddksJ | jdddksJ d S )Nr!   Zbareisr   r'   Zdet_luZdet_LUr3   r8   ZBareisr>   r?   ZBAREISSr9   r   r:   r   r   r;   r   r<   r=   r@   rB   Z	BERKOWITZrC   rD   ZLU)r   rQ   rR   rF   rF   rJ   test_legacy_det   s@   rZ   c                 C      t | | dd S )Nc                 S   s   t | |kS N)intrH   rI   rF   rF   rJ   rP          z!eye_Determinant.<locals>.<lambda>r   rN   rF   rF   rJ   eye_Determinant      ra   c                 C   r[   )Nc                 S   s   dS Nr   rF   r^   rF   rF   rJ   rP      s    z#zeros_Determinant.<locals>.<lambda>r`   rN   rF   rF   rJ   zeros_Determinant   rb   rd   c                     sN  t ddg d tt fdd td} td}|  dks!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 dd||d d|||d g	}  dksJ | d	ksJ | dksJ | 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sJ | || | ksJ | || | ksJ | dksJ ttfdd d S )Nr   r   r   r   r   r&   r#   r    c                            S r\   rQ   rF   rO   rF   rJ   rP         ztest_det.<locals>.<lambda>r   r   r   r#   r(   )	r   r   r   r&   r#   r    r)   r   r   r&   r    r)   r*   r+   r,   r-   r/   r0   )rH   rI   klmrM   r   r"      r   r   r   r   c                      s    j ddS )Ntest)Z
iszerofuncrg   rF   erF   rJ   rP   "  r_   )r   r   r   rd   ra   rQ   r   	sympy.abcrH   rI   ri   rj   rk   rM   
ValueError)r   Zeyr   bcdrH   rI   ri   rj   rk   rM   fghrF   rE   ro   rJ   test_det   s<   " *ry   c                  C   s  t g dg dg dg} |  dksJ tddD ]@}t|| t||j   kr4t|ks7J  J t||t|  t||t| j   krWt|ksZJ  J qtd\}}}}}t |||||g} |  | j   kr|| | | | ksJ  J d S )Nr   r&   r#   r    r)   r   r*   i  r   r-   za_1 a_2 a_3 a_4 a_5)	r   ZperrL   r
   Tr   r	   r   r   )rS   rH   Za1Za2a3Za4Za5rF   rF   rJ   test_permanent$  s   6H:r~   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sZJ |jdd|ksdJ |jdd|ksnJ tddg d tt fd d! d S )"Nr   r&   r   r   r   r#   r    r)   r*   r+   r,   r-   r/   r0   )r&   r&   r   L   D   r   rA   rl         0   H   r   r   r   re   c                      rf   r\   )adjugaterF   rO   rF   rJ   rP   >  rh   ztest_adjugate.<locals>.<lambda>)r   r   r   r   r   )r   ro   ZadjrF   rO   rJ   test_adjugate/  s   """r   c                  C   sZ  t } tddg d}tddg d}| tdksJ ||tdd| dd | dd | d	d
 gks8J tddtddddgksHJ tddtddddgksWJ | |ks_J tdtd	 kskJ tg dg dg dg}|	 tg dg dg dgksJ tg dg dg dg}|	 tg dg dg dgksJ d S )Nr   r   r   )r   r&   r#   r0   '      4   r/   r#   r   r   )r   r   r   )r   r    r   )r   r   r    )   r   )r   r   )r   r   r   rz   r{   )r   r    r   )r    r   r    )
r   r   Znormr   ZprojectZzerosr
   copyr	   cofactor_matrix)RZv1Zv2rm   rF   rF   rJ   	test_util@  s"   8 r   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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sxJ d d |ksJ ddd!|  d ksJ ddd|  d ksJ  |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sJ 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/   r0   )r   r*   r,   )r-   r/   r0   )r&   r   r   r   r   r   r   r   r   rA   r   r   r   r   rl   r   rz   )r   r*   r+   r   ir   r   r   c                           ddS Nr&   r#   cofactorrF   rn   rF   rJ   rP   n  r_   z*test_cofactor_and_minors.<locals>.<lambda>c                      r   r   minorrF   rn   rF   rJ   rP   o  r_   c                      r   r   )minor_submatrixrF   rn   rF   rJ   rP   p  r_   re   c                   S   s   t ddg ddS rc   )r   r   rF   rF   rF   rJ   rP   u  s   c                           ddS rc   r   rF   rO   rF   rJ   rP   w  r_   c                      r   rc   r   rF   rO   rF   rJ   rP   x  r_   c                      rf   r\   )r   rF   rO   rF   rJ   rP   y  rh   )	r   r   r   r   r   r   r   rq   r   )r   rk   cmsubrF   rx   rJ   test_cofactor_and_minorsS  sH   """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s6J td|t|d	 d |ksHJ | t| d d
| d   d|   | ks_J t	t
dd  tddg d}| t| d | ks{J tddg d}| t| d d| d   d| d   d|   d | ksJ tdd| dd||d|||g	}| t|d | | | |d   || | ||  | |    | | |  |ksJ d S )Nr   r   r   tr   )rE   rr   rs   r   )	r   r   r   r&   r#   r    r)   r   r*   r   r1   r      c                   S   s   t dgdgg S )Nr   r   )r   charpolyrF   rF   rF   rJ   rP     s    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   r-      ik"  i i| )r   rp   rE   rr   rs   r   ra   r   r   r   r   )	r   r   r   r   rE   rr   rs   rk   rM   rF   rF   rJ   test_charpoly{  s   $$.>Zr   )#rU   Zsympy.core.numbersr   Zsympyr   r   r   r   r   Zsympy.matricesr   r	   r
   rp   r   r   r   Zsympy.testing.pytestr   Zsympy.matrices.commonr   Z(sympy.functions.combinatorial.factorialsr   r   rT   rY   rZ   ra   rd   ry   r~   r   r   r   r   rF   rF   rF   rJ   <module>   s(     Q$(