U
    L?hD                  	   @   s(  d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZ d dlmZmZmZmZ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 d dl m!Z!m"Z" d dl#m$Z$m%Z% d dl&m'Z' d dl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZE d dlFmGZGmHZHmIZI dd ZJe  G dd de)e*e+ZKW 5 Q R X dd ZLdd ZMe  G dd  d e)e*e,ZNW 5 Q R X d!d" ZOd#d$ ZPe  G d%d& d&e)e*e-ZQW 5 Q R X d'd( ZRd)d* ZSe  G d+d, d,e)e*e.ZTW 5 Q R X d-d. ZUd/d0 ZVe  G d1d2 d2e)e*e/ZWW 5 Q R X e  G d3d4 d4e)e*e1ZXW 5 Q R X d5d6 ZYd7d8 ZZd9d: Z[d;d< Z\d=d> Z]d?d@ Z^dAdB Z_dCdD Z`dEdF ZadGdH ZbdIdJ ZcdKdL ZddMdN ZedOdP ZfdQdR ZgdSdT ZhdUdV ZidWdX ZjdYdZ Zkd[d\ Zld]d^ Zmd_d` Zndadb Zodcdd Zpdedf Zqdgdh Zrdidj Zsdkdl Ztdmdn Zudodp Zvdqdr Zwdsdt Zxdudv Zydwdx Zzdydz Z{d{d| Z|d}d~ Z}dd Z~dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zedd Zdd ZddĄ ZddƄ ZddȄ Zddʄ Zdd̄ Zdd΄ ZddЄ Zdd҄ ZdS )    )raisesXFAILwarns_deprecated_sympy)Q)Expr)Add)Function)
NumberKindUndefinedKind)IIntegeroopiRational)S)Symbolsymbols)Abs)exp)sqrt)cossin)
ShapeErrorNonSquareMatrixError)
MatrixKind)_MinimalMatrix_CastableMatrixMatrixShapingMatrixPropertiesMatrixOperationsMatrixArithmeticMatrixSpecial)MatrixCalculus)Matrixdiageyematrix_multiply_elementwiseoneszerosSparseMatrixbandedMutableDenseMatrixMutableSparseMatrixImmutableDenseMatrixImmutableSparseMatrix)Poly)flatten)ImmutableDenseNDimArray)xyzc                  C   s   ddl m} m}m}m}m}m}m} ddlm	}m
}m}	m}
m}m} ddlm}m}m}m} | |||||||||	|
||f}||||f}dd |D }d}|D ]V}|D ](}t  t||dkstW 5 Q R X qt  t||d	kstW 5 Q R X qd S )
Nr   )MatrixRequiredr   r!   r   r   r    MatrixCommon)MatrixDeterminantMatrixReductionsMatrixSubspacesMatrixEigenr"   MatrixDeprecated)r#   ImmutableMatrixr)   r.   c                 S   s    g | ]}|d dgddggqS )             ).0MrA   rA   X/var/www/html/venv/lib/python3.8/site-packages/sympy/matrices/tests/test_commonmatrix.py
<listcomp>Y   s     z5test_matrix_deprecated_isinstance.<locals>.<listcomp>rA   TF)sympy.matrices.commonr5   r   r!   r   r   r    r6   sympy.matrices.matricesr7   r8   r9   r:   r"   r;   Zsympyr#   r<   r)   r.   r   
isinstanceAssertionError)r5   r   r!   r   r   r    r6   r7   r8   r9   r:   r"   r;   r#   r<   r)   r.   Z
all_mixinsZall_matricesZMstZmixinrC   rA   rA   rD   !test_matrix_deprecated_isinstance'   s<    $	 rK   c                   @   s   e Zd ZdS )ShapingOnlyMatrixN__name__
__module____qualname__rA   rA   rA   rD   rL   i   s   rL   c                 C   s   t | | dd S )Nc                 S   s   t | |kS NintijrA   rA   rD   <lambda>n       zeye_Shaping.<locals>.<lambda>rL   nrA   rA   rD   eye_Shapingm   s    r\   c                 C   s   t | | dd S )Nc                 S   s   dS Nr   rA   rT   rA   rA   rD   rW   r   rX   zzeros_Shaping.<locals>.<lambda>rY   rZ   rA   rA   rD   zeros_Shapingq   s    r^   c                   @   s   e Zd ZdS )PropertiesOnlyMatrixNrM   rA   rA   rA   rD   r_   v   s   r_   c                 C   s   t | | dd S )Nc                 S   s   t | |kS rQ   rR   rT   rA   rA   rD   rW   {   rX   z eye_Properties.<locals>.<lambda>r_   rZ   rA   rA   rD   eye_Propertiesz   s    ra   c                 C   s   t | | dd S )Nc                 S   s   dS r]   rA   rT   rA   rA   rD   rW      rX   z"zeros_Properties.<locals>.<lambda>r`   rZ   rA   rA   rD   zeros_Properties~   s    rb   c                   @   s   e Zd ZdS )OperationsOnlyMatrixNrM   rA   rA   rA   rD   rc      s   rc   c                 C   s   t | | dd S )Nc                 S   s   t | |kS rQ   rR   rT   rA   rA   rD   rW      rX   z eye_Operations.<locals>.<lambda>rc   rZ   rA   rA   rD   eye_Operations   s    re   c                 C   s   t | | dd S )Nc                 S   s   dS r]   rA   rT   rA   rA   rD   rW      rX   z"zeros_Operations.<locals>.<lambda>rd   rZ   rA   rA   rD   zeros_Operations   s    rf   c                   @   s   e Zd ZdS )ArithmeticOnlyMatrixNrM   rA   rA   rA   rD   rg      s   rg   c                 C   s   t | | dd S )Nc                 S   s   t | |kS rQ   rR   rT   rA   rA   rD   rW      rX   z eye_Arithmetic.<locals>.<lambda>rg   rZ   rA   rA   rD   eye_Arithmetic   s    ri   c                 C   s   t | | dd S )Nc                 S   s   dS r]   rA   rT   rA   rA   rD   rW      rX   z"zeros_Arithmetic.<locals>.<lambda>rh   rZ   rA   rA   rD   zeros_Arithmetic   s    rj   c                   @   s   e Zd ZdS )SpecialOnlyMatrixNrM   rA   rA   rA   rD   rk      s   rk   c                   @   s   e Zd ZdS )CalculusOnlyMatrixNrM   rA   rA   rA   rD   rl      s   rl   c               	   C   s  t ddddddddg} | jdks&t| jdks4t| d dksDt| d dksTtt| ddddddgksptt| dd d f dddgkstt| d d df ddgkstt| d d d d f t| kst| d d d d f | kstt | | kstt dddgdddgg| ks&tt dddgdddgf| ksHtt dd	g| ks^tt d
| ksptt ddgddgddgg| krtd S )Nr>   r?   r=   r@         r=   r=   r=   r>   r?   r@   rm   rn   )rp   rq   )r   rowsrI   colslistr2   rA   rA   rD   test__MinimalMatrix   s     " $""rv   c                   C   s   t ddgddggjttks"tt ddgddggjttksDtt ddg jttks^tt tggjttksxtt dt dggggjttksttdggjttksttdt dggggjttkstd S )Nr=   r>   r?   r@   r   )r#   kindr   r	   rI   r2   r
   r)   rA   rA   rA   rD   	test_kind   s    ""$rx   c                  C   sP   t ddddddg} |  }|jdks*ttdD ]}|| |d ks2tq2d S Nr>   r=   r?   r@   )rL   Zvecrs   rI   range)mZm_vecrU   rA   rA   rD   test_vec   s
    r|   c                  C   s   t d\} }}}t| |g||gg}t| |g||gg}t| |g||gg}t| |g||gg}| |   kr|   kr|   kr| |||dksn td S )Nza:d)r   r   r   r=   r=   r   ro   )r   r+   r-   r,   r.   ZtodokrI   )abcdm1m2m3Zm4rA   rA   rD   
test_todok   s    0r   c                  C   s   t jt jtt t jgttttd gtt j tt dgg} t jt jtt t jttttd tt j tt dg}tdd|}| | kst	d S )Nr>   r?   r@   )
r   OneHalfr2   r3   ZZeror4   rL   tolistrI   )lstZflat_lstr{   rA   rA   rD   test_tolist   s    82r   c                  C   sR   t ddtjdgdtjgtdgg} dtjidtjidtid}|  |ksNtd S )Nr?   r>   r   r=   r   r=   r>   )rL   r   r   r   r2   ZtododrI   )r{   dictrA   rA   rD   
test_todod   s    "r   c                      s^  t ddddddddddd	g	 tt fd
d tt fdd tt fdd tt fdd  d d  krtdddgdddggksn t d d  krtddgddgddggksn t d d  krtdddgddd	ggksn t d d  krTtddgddgdd	ggksZn td S )Nr?   r=   r>   r@   rm   rn         	   c                      s
     dS Nrm   row_delrA   erA   rD   rW      rX   z"test_row_col_del.<locals>.<lambda>c                      s
     dS Nr   rA   r   rA   rD   rW      rX   c                      s
     dS r   col_delrA   r   rA   rD   rW      rX   c                      s
     dS r   r   rA   r   rA   rD   rW      rX   )rL   r   
IndexErrorr   r#   rI   r   rA   rA   r   rD   test_row_col_del   s    :<>r   c                  C   s   t ddgddgg} t dtgtdgg}t dtdgtdtgtttgg}|  | gksZt| |gkslt| |gks~td S Nr=   r>   r?   )r#   r2   r3   r4   get_diag_blocksrI   )r   r   r   rA   rA   rD   test_get_diag_blocks1   s     r   c                  C   s  t ddgddgg} t dtgtdgg}t dtdgtdtgtttgg}t| ||t| ||t| ||t|||f\}}}}t|j|j|}t|j|j|}t|j|j|}t|j|j|}| | ||gkst	| | ||gkst	| | ||gkst	| |||gkst	d S r   )
r#   r2   r3   r4   r$   rL   rr   rs   r   rI   )r   r   r   ABCDrA   rA   rD   test_get_diag_blocks2   s     4r   c                  C   s"   t ddddg} | jdkstd S )Nr=   r>   r   r=   r>   )rL   shaperI   r{   rA   rA   rD   
test_shape  s    r   c                  C   sh   t d} | ddtdddks$ttdddd }|ddtdksLt|d	d
tdksdtd S )Nr?   r=   r   )	r=   r   r   r   r=   r   r   r   r=   r@   c                 S   s   | | S rQ   rA   rT   rA   rA   rD   rW     rX   ztest_reshape.<locals>.<lambda>)r   )r?   r=   r>   )r?   r@   r>   )r?   r@   rm   r>   rn   ))r   r=   r>   r?   r=   r>   )r?   r@   r>   r?   r@   rm   )r\   Zreshaper#   rI   rL   m0r   rA   rA   rD   test_reshape  s     r   c                  C   sb   t ddddddddddd	g	} | d
tdddddgks>t| d
tdddddgks^td S )Nr?   r=   r>   r@   rm   rn   r   r   r   r   )rL   rowr#   rI   colr   rA   rA   rD   test_row_col  s     r   c                   C   sF   t dtdddgtddddgddddgddddggksBtd S Nr?   r   r=   r   )r\   Zrow_joinr#   rI   rA   rA   rA   rD   test_row_join  s    

r   c                   C   sJ   t dtdddggtdddgdddgdddgdddggksFtd S r   )r\   Zcol_joinr#   rI   rA   rA   rA   rD   test_col_join#  s    
r   c                  C   s`   t dddgg} tddD ]@}dddg}||d ttd|| d |kstqd S )Nr@   rm   r=   r   r?   )	r#   rz   insertr0   r\   Z
row_insertr   r   rI   )Zr4rU   lrA   rA   rD   test_row_insert+  s
    
r   c                  C   s  t dddg} tddD ]@}dddg}||d ttd|| d |kstqt	ddt ddgddgddgddgddgddggt ddddddddgddddddddgddddddddgddddddddgddddddddgddddddddggkstd S )	Nr@   r   rm   r   r?   rn   r>   r=   )
r#   rz   r   r0   r^   Z
col_insertr   r   rI   r\   )Zc4rU   r   rA   rA   rD   test_col_insert3  s    
(6r   c                
      s   t dddd   dddgddgtdddddddd	gksBt ddgdddgtdddddddd
gkstt tdtd ksttt fdd tt fdd d S )Nr@   r?   c                 S   s   | d | S Nr?   rA   rT   rA   rA   rD   rW   D  rX   ztest_extract.<locals>.<lambda>r   r=   r>   r   
      c                      s     dgdgS )Nr@   r   extractrA   r   rA   rD   rW   H  rX   c                      s     dgdgS )Nr   r?   r   rA   r   rA   rD   rW   I  rX   )rL   r   r#   rI   rz   r   r   rA   rA   r   rD   test_extractC  s    22r   c                     s:  t dddd  t dddd    ks2t    t      krtdddddddddg	ddd	ddd	ddd	g	d
ddd
ddd
ddg	dddddddddg	gksn ttt fdd t t ksttdd} tdd}tdd}tdd}t | |||  jdkr2 jd
ks6td S )Nr@   r?   c                 S   s   | d | S r   rA   rT   rA   rA   rD   rW   M  rX   ztest_hstack.<locals>.<lambda>c                 S   s   | d | S r   rA   rT   rA   rA   rD   rW   N  rX   r   r=   r>   rm   rn   r   r   r   r   r   c                      s      S rQ   )hstackrA   r{   r   rA   rD   rW   U  rX   )	rL   r   rI   r#   r   r   r(   rr   rs   )M1M2ZM3ZM4rA   r   rD   test_hstackL  s"    "r   c                      s   t dddd  t dddd    ks2t    t      krtdddgddd	gd
ddgdddgdddgddd	gd
ddgdddgdddgddd	gd
ddgdddggksn ttt fdd t t kstd S )Nr@   r?   c                 S   s   | d | S r   rA   rT   rA   rA   rD   rW   b  rX   ztest_vstack.<locals>.<lambda>c                 S   s   | d | S r   rA   rT   rA   rA   rD   rW   c  rX   r   r=   r>   rm   rn   r   r   r   r   r   c                      s      S rQ   )vstackrA   r   rA   rD   rW   r  rX   )rL   r   rI   r#   r   r   rA   rA   r   rD   test_vstacka  s&    "r   c               	   C   sT   t ddddtddt  g} |  tjtdtjthks<t| tthksPtd S Nr>   r=   )r_   r2   Zatomsr   r   ZNegativeOnerI   r   r   rA   rA   rD   
test_atomsw  s     r   c                   C   s    t tgdggjthkstd S r]   )r_   r2   Zfree_symbolsrI   rA   rA   rA   rD   test_free_symbols}  s    r   c                  C   s\   t ttfdf} | tst| tr,t| ts:tt dtfdf} | trXtd S )N)r>   r?   r>   )r_   r2   r3   hasrI   r4   r   r   rA   rA   rD   test_has  s    r   c                  C   s  t d} tddddg dks$ttddd| d d|   d t| d d  d| t t |  t dg	}| dksxt|jdddkst|jd	d
 ddksttdddd |D }|jdddksttdddd tjgt|dd   D }| dks
td S )Nr2   r>   r=   Fr?   r   Tsimplifyc                 S   s   | S rQ   rA   ru   rA   rA   rD   rW     rX   z(test_is_anti_symmetric.<locals>.<lambda>c                 S   s   g | ]}|  qS rA   expandrB   r2   rA   rA   rD   rE     s     z*test_is_anti_symmetric.<locals>.<listcomp>c                 S   s   g | ]}|  qS rA   r   r   rA   rA   rD   rE     s     )r   r_   Zis_anti_symmetricrI   r3   r   r   rt   )r2   r{   rA   rA   rD   test_is_anti_symmetric  s    D*r   c                  C   s~  t ddddddg} |  r t|  s,t| jdds<tt ddddddg} |  s\tt ddtddd} |  s|t|  stt dddddddddddg	} | tdddkstt ddtdd} |  rt|  stt d} |  stt d} |  sttdddtd dt  d ttd d ddtddg	} |  sRt| jddrdt| 	 jddsztd S )	Nr>   r   r=   Fr   r?   ))rm   r   r   rn   r}   ))rm   r   r   )r   rn   r   )
r_   Zis_diagonalrI   is_symmetricr$   r(   r#   r2   r3   r   r   rA   rA   rD   test_diagonal_symmetrical  s,    6r   c                  C   s   t dtgt dgg} | js tt dt tgt dgg} | jdksHtt ttgt dgg} | jd ksltt tdgt dgg} | jdkstd S )Nr=   r>   F)r_   r   Zis_hermitianrI   r2   r   rA   rA   rD   test_is_hermitian  s    
r   c                   C   sL   t djstttdjr tttdjr2ttdddggjrHtd S )Nr?   r=   r   )ra   Zis_IdentityrI   r_   r(   r'   rA   rA   rA   rD   test_is_Identity  s    r   c                  C   s
  t ttgttgg} |  dks$tt ddddgdddd	gg} |  d
ksPtt ddddgddtd	gg} |  dks|tt dtdgg} |  dkstt dddgg} |  d
kstt dgtgdgg} |  dkstt dgdgdgg} |  d
kstd S )NTr=   r>   r?   r@   rm   rn   r   r   F)r_   r2   Zis_symbolicrI   r   rA   rA   rD   test_is_symbolic  s    r   c                  C   sD   t dddgg} | jdkstt dgdgdgg} | jdks@td S )Nr=   r>   r?   TF)r_   Zis_upperrI   r   rA   rA   rD   test_is_upper  s    r   c                  C   sD   t dddgg} | jdkstt dgdgdgg} | jdks@td S )Nr=   r>   r?   FT)r_   Zis_lowerrI   r   rA   rA   rD   test_is_lower  s    r   c                  C   s<   t dgdgg} t ddgddgg}| jr.t|js8td S Nr=   r>   )r_   Z	is_squarerI   r   rA   rA   rD   test_is_square  s    
r   c                  C   sD   t ddddddg} |  s tt ddddddg} |  r@td S )Nr>   r   r=   )r_   r   rI   r   rA   rA   rD   test_is_symmetric  s    r   c                  C   s   t dddgdddgdddgg} | js*tt dddddddddddg	} | jsRtt dddddddddddg	} | jdks~t| jdkstt dddgdddgdddgg} | jrtd S )	Nr?   r@   r=   r>   rm   r   r   F)r_   Zis_upper_hessenbergrI   Zis_lower_hessenbergr   rA   rA   rD   test_is_hessenberg  s     

 r   c                  C   s   t ddg jstt ddgddggjs,tt tddjs@tt tdjrRtt tdgddggjd ksptt tdgddggjdksttddd} t | dgddggjdkstd S )	Nr   r?   r@   r=   Fr   T)Znonzero)r_   Zis_zero_matrixrI   r(   r%   r2   r   r   rA   rA   rD   test_is_zero  s    r   c                  C   sb   t tddddddg dddhks*ttddd} t tdd| dddg | dhks^td S )Nr>   r   r=   r?   r2   Treal)setr_   valuesrI   r   ru   rA   rA   rD   test_values  s    r   c                  C   sb   t td} | dd tdd ks*t| dd tdksDt| dd tdks^td S )Nr?   c                 S   s   d|  S Nr>   rA   ru   rA   rA   rD   rW     rX   z test_applyfunc.<locals>.<lambda>r>   c                 S   s   dS r]   rA   ru   rA   rA   rD   rW     rX   c                 S   s   dS Nr=   rA   ru   rA   rA   rD   rW     rX   )rc   r%   Z	applyfuncrI   r(   r'   )r   rA   rA   rD   test_applyfunc  s    r   c                  C   s>   dt gddgg} tddgt  dgg}| t| ks:td S )Nr   r=   )r   rc   Zadjointr#   rI   )ZdatZansrA   rA   rD   test_adjoint!  s    r   c               	   C   st   t ddddddg} t dddtj ddtj  ddtj  ddtj  g}| \}}|| ksdt|| ksptd S ry   )rc   r   ZImaginaryUnitZas_real_imagrI   )r   r   r   r   rA   rA   rD   test_as_real_imag'  s     r   c                  C   s   t dtdgdddgg} | jtddgtdgddggks<t| jtdt dgdddggks`t| j|  ksrt| j| jjkst| jtddgt dgddggkstd S )Nr   rm   r=   r>   )rc   r   Tr#   rI   r   	conjugateHrC   rA   rA   rD   test_conjugate2  s     
r   c                  C   sJ   t tttddgg} | d dt ks*t|  tdt ggksFtd S )NF)evaluater   r>   )rc   r   r2   rI   Zdoitr#   r   rA   rA   rD   	test_doitD  s    r   c                      sr   t ddtddg t fddtdD s2tt fddtdD sPtt fddtdD sntd S )	Nr>   r=   rm   rn   c                 3   s&   | ]}   |  |   kV  qd S rQ   ZevalfrB   rU   r   rA   rD   	<genexpr>L  s     ztest_evalf.<locals>.<genexpr>c                 3   s*   | ]"}  d |  |  d kV  qdS r>   Nr   r   r   rA   rD   r   M  s     c                 3   s*   | ]"}  d |  |  d kV  qdS r   rZ   r   r   rA   rD   r   N  s     )rc   r   allrz   rI   rA   rA   r   rD   
test_evalfJ  s    r   c                  C   s   t ttt  dgtt t t ttttt    gg} |  }|ttt td  dgttd  ttd   tt ttd   td  ggksttddd}t ddtt| gjddtt	|tt
|  gkstd S )Nr>   r?   r   Tr   r=   )complex)rc   r2   r3   r   r#   rI   r   r   r   r   r   )r   r   r   rA   rA   rD   test_expandQ  s    8F
r   c                  C   sB  t ttd ttd gttd ttd  ttd ttd  gg} | tttt@ }|ttd ttgtd tt td tt ggkst	| t
tt
t@ }|ttd tgttd  td t ggkst	| tttt@ }|ttd t gt td  td  t ggks>t	d S r   )rc   r   r2   r   r3   Zrefiner   r   r#   rI   Zpositivenegativer   rA   rA   rD   test_refine^  s    .<0r   c                     sT   t dtd\ tddfdd} tdd fdd}| }|| ksPtd S )NF, Gclsr>   c                    s    | | S rQ   rA   rT   )GrA   rD   rW   m  rX   ztest_replace.<locals>.<lambda>c                    s    | | S rQ   rA   rT   FrA   rD   rW   n  rX   r   r   rc   replacerI   )KrC   NrA   )r  r   rD   test_replacek  s
    r  c               
      s   t dtd\ } tdd| d d| dif| d d| dif| d d| dif| d d| difg}tdd fdd}| | d}||kstd S )	Nr   r   r>   r   r=   c                    s    | | S rQ   rA   rT   r   rA   rD   rW   w  rX   z"test_replace_map.<locals>.<lambda>Tr  )r   r  rC   r  rA   r   rD   test_replace_maps  s    >r  c                  C   s   t ddgddgg} | | d  kr4| dks:n t| d| d  krn| d  krnt dkstn t| d| d	  kr| d
  krt dksn t|  | d  kr| d  krt dksn td S )Nr=   r>   r?   r@   r   r   rn   ))r@   r?   r>   r=   r   r   ))r>   r@   r=   r?   i)r?   r=   )r@   r>   )r#   Zrot90rI   r   rA   rA   rD   
test_rot90|  s
    &::r  c               
   C   sN  t d} td}tdt dt  ttt  t g|tt|t  |t dd|  t| t |    t gg}| ttt tt  dt gdt dddtt|    t|    ggkst	dt d }t|gg}| t|ggkst	|jt
dt|jt
dggkst	tddgddgg}d|   tdd	ksJt	d S )
Nr[   fr=   r>   )ratio   r?   r@   "   )r   r   rc   r2   r3   r   r   r   r#   rI   r   tracer   )r[   r  rC   eqr{   rA   rA   rD   test_simplify  s     :&&r  c                   C   sB  t dtgtdggtdtddgddggks4tt tdgtt dggtdgtdggtddgddggksvtt tdgtt dggtdftdfgtddgddggkstt tdgtt dggtdtditddgddggkstt tt ggjttd ttd idd	ttd td  ggks>td S )
Nr=   r@   rm   r>   r   r   r
  T)Zsimultaneous)rc   r2   subsr#   rI   r3   rA   rA   rA   rD   	test_subs  s    4(($(r  c                  C   s4   t dddgdddgdddgg} |  dks0td S )Nr=   r   rm   r      )rc   r  rI   r   rA   rA   rD   
test_trace  s
    
r  c                   C   sx   t dtgtdggtditddgddggks6tt tdgtt dggtdtditddgddggksttd S )Nr=   r@   rm   r>   r   r   r
  )rc   r2   Zxreplacer#   rI   r3   rA   rA   rA   rD   test_xreplace  s    $r  c                     s  t ddddddddddd	d
ddg tt fdd tt fdd  ddgddgg}  ddgddgg|   krtddddgd	d
ddgddddggksn t ddgddgg}  jddgddggdd|   krtddddgddddgd
dd	dggksn t jddgddggdd}  jddgddggddd|   krtddddgddddgdd	d
dggksn t ddddgtddddgd	d
ddgddddggkstddl	m
}  |ddddgtddddgd	d
ddgddddggkstd S )Nr?   r@   r=   r>   rm   rn   r   r   r   r   r      c                      s     ddggS )Nr   rm   )permuterA   r   rA   rD   rW     rX   ztest_permute.<locals>.<lambda>c                      s     tdS )Nr2   )r  r   rA   r   rA   rD   rW     rX   r   rs   )orientationZbackward)	direction)r  r  )Permutation)rc   r   r   
ValueErrorZpermute_rowsr  r#   rI   Zpermute_colsZsympy.combinatoricsr  )r   r  rA   r   rD   test_permute  sH    $ 


$


&








r  c               	   C   s   t ddddgddddgddddgddddgg} | d}|t ddddgddddgddddgddddggksrt| d}|t ddddgddddgddddgddddggkst|  }|t ddddgddddgddddgddddggkstd S )Nr=   r>   r   r   )rc   Zupper_triangularrI   )r   RrA   rA   rD   test_upper_triangular  s6    

















r!  c               	   C   s   t ddddgddddgddddgddddgg} |  }|tddddgddddgddddgddddggkspt| d}|tddddgddddgddddgddddggkst| d}|tddddgddddgddddgddddggkstd S )Nr=   r   r>   r   )rc   Zlower_triangularrg   rI   )r   LrA   rA   rD   test_lower_triangular  s6    

















r#  c                  C   s@   t ddgttgg} t| t ddgttttggks<td S )Nr=   r   r>   )rg   r2   r3   absr   rI   r   rA   rA   rD   test_abs  s    r%  c                      s   t dddgtttgdt dtt gg    t dddgdt dt dt gdt ddt t ggksltt ddddgtt fdd	 d S )
Nr=   r>   r?   ir@   rn   ic                      s     S rQ   rA   rA   r{   r[   rA   rD   rW     rX   ztest_add.<locals>.<lambda>)rg   r2   r3   r4   rI   r   r   rA   rA   r&  rD   test_add  s    (Dr'  c                     sr  t d t dtt fdd tt fdd   } | d dksNt| d d	ks^t| d
 dksnt| d dks~t| d dkst| d dkstztd W n tk
r   Y nhX | d dkst| d d	kst| d
 dkst| d dkst| d dkst| d dks&t | }|t | ksDt|d dksVt|d dksht|d
 dkszt|d dkst|d dkst|d dksttt fdd t	d } t
| t st| d tkst| d d	t kst| d
 dt kst| d dks0tt }| |ksFtd } t
| t s^t| d dkspt| d dkst| d
 dkst| d dkstztd W n tk
r   Y nZX t
| t st| d dkst| d dkst| d
 dkst| d dks"tttdd}tdd	 }t|||g}||t|g|g|ggksntd S )N)r   r  r   )r   )r?   r   c                      s     S rQ   rA   rA   r   r   rA   rD   rW   -  rX   z%test_multiplication.<locals>.<lambda>c                      s    i  S rQ   rA   rA   r   rA   rD   rW   .  rX   r}   r   r~   r>   r   rn   ro   )r>   r      r  r   z	c = a @ br@   c                      s
     S rQ   )multiply_elementwiserA   r(  rA   rD   rW   L  rX   r2   r?   rm   r      z	c = 5 @ br=   )rg   r   r   	TypeErrorrI   evalSyntaxErrorr*  r&   r   rH   r2   r#   r'   r   )r   hc2r   _hr   rA   r(  rD   test_multiplication!  sz    

r2  c                  C   s   t ddgddgg} | dtks&t| dtks8tztd W n& tk
rX   Y n tk
rj   Y nX ztd W n& tk
r   Y n tk
r   Y nX d S )Nr=   r>   r?   r@   z2 @ aza @ 2)r#   
__matmul__NotImplementedrI   __rmatmul__r-  r.  r,  r   rA   rA   rD   test_matmult  s    r6  c                  C   s   G dd dt } tddgddgg}|  }|| t|d| gd| d| ggksVt|| t|d| gd| d| ggkstdS )zd
    Test that if explicitly specified as non-matrix, mul reverts
    to scalar multiplication.
    c                   @   s   e Zd ZdZdZdZdS )ztest_non_matmul.<locals>.fooFro   N)rN   rO   rP   Z	is_MatrixZis_MatrixLiker   rA   rA   rA   rD   foo  s   r7  r=   r>   r?   r@   N)r   r#   rI   )r7  r   r   rA   rA   rD   test_non_matmul  s
    ,r8  c                  C   s$  t tdd  tddgddgg} | d d d  dks:ttdddgdddgd	d
dgg} | d d d  dksrt| d tdkst| d | ksttdggd d dd ksttddgddggtd tddgddggksttddgddgg} | jddd| jdddks td S )Nc                   S   s   t dd S )Nr   r>   r#   rA   rA   rA   rD   rW     rX   ztest_power.<locals>.<lambda>r>   r?   r@   rm   )i  i  i,*  i7  r=   rn   r  )	i"  i     i  i  ip  i  i  i  r   d   r}   r   r   r+        Zcayley)methodmultiply)r   r   rg   rI   r%   r   r#   powr   rA   rA   rD   
test_power  s      4rA  c                  C   s.   t ddddg} |  t ddddgks*td S )Nr=   r>   r   r   rg   rI   rZ   rA   rA   rD   test_neg  s    rC  c                  C   s0   t ddddg} | |  t ddddgks,td S )Nr=   r>   r   rB  rZ   rA   rA   rD   test_sub  s    rD  c                  C   s:   t ddddg} | d t ddtjtdd gks6td S r   )rg   r   r   rI   rZ   rA   rA   rD   test_div  s    rE  c                   C   sr   t tddddddgks tt tdddddgks>tttdtksTtttjdtdtksntd S )Nr>   r=   r   r   )rt   rk   r%   rI   typer#   rA   rA   rA   rD   test_eye  s     rG  c                   C   s   t tddddddgks tt tdddddgks>ttddtdddgdddggksftttdtks|tttjdtdtkstd S )Nr>   r=   r?   r   )rt   rk   r'   rI   r#   rF  rA   rA   rA   rD   	test_ones  s
     (rH  c                   C   s   t tddddddgks tt tdddddgks>ttddtdddgdddggksftttdtks|tttjdtdtkstd S )Nr>   r   r?   r   )rt   rk   r(   rI   r#   rF  rA   rA   rA   rD   
test_zeros  s
     (rI  c                      s  t jtddgddgg tdtgtdggtdtdgtdtgtttgg tddddddgddddddgdddtddgddtdddgdddddtgddddtdggkst tdddddddgdddddddgdddtdddgddtddddgdddddtdgddddtdtgddddtttggksDt tdddddddgdddddddgdddtdddgddtdtddgddtttddgddddddtgdddddtdggkstttttg tddgddggtddgg dttdddddgtdddddgtdddddgddddddgddddddgddddddgddddddggks|ttt fd	d
 dtdggkstdddtddgddggkstdddtddgddggkstddddtddgddgddggks(tddg tddgddggksNttddgtdgdggksttdddgdgdddgddgdggdd  krtddgddgddggksn tt	dt kstt	dtdtks ttdddgtdddks$ttjdddgddj
dksDttdddggj
dksbttjdddggddj
dksttdddgggj
dkstttddddtddddgddddggkstttddddtddgddgddgddggkstd S )Nr=   r>   r?   r   r@   rm   rn   r   c                      s    dddS )Nr   rm   rr   rA   rA   r   r   r   r$   rA   rD   rW     rX   z test_diag_make.<locals>.<lambda>rJ  )rs   )rr   rs   F)unpackr   r  r	  )rk   r$   r#   r2   r3   r4   rI   r   r  rF  r   r'   rA   rA   rK  rD   test_diag_make  s     		&&.
$ " 

rM  c                     sB  t ddtd } | dks*tt| dks:ttddksPttddksfttd	d
ks|tt tksttddddi}t| t|ksttt|kstttfdd ttfdd ttfdd t	d	d t
 fddtd j  jD  ks>td S )Nr?   r   r   )r   r@   r   r=   )r=   rm   r   )r?   r   r>   )r>   ro   c                      s
     dS r   diagonalrA   r   rA   rD   rW   ,  rX   ztest_diagonal.<locals>.<lambda>c                      s
     dS )Nr
  rN  rA   r   rA   rD   rW   -  rX   c                      s
     tS rQ   )rO  r   rA   r   rA   rD   rW   .  rX   c                    s   i | ]}|t  |qS rA   )rt   rO  r   r   rA   rD   
<dictcomp>0  s    z!test_diagonal.<locals>.<dictcomp>)r#   rz   rO  rI   tuplerF  r)   r   r  r'   r*   rr   rs   )r   srA   )rC   r{   rD   test_diagonal   s(    
rS  c                   C   s  t ddt jddd  krt jddd  krt jdddd  krt jdddd  krtddd	gd	ddgd	d	dggksn tt jddd
dtdd	d	gddd	gd	ddggkstttdd  ttdd  ttdd  ttdd  t jdddt jdddkstd S )Nr?   r>   
eigenvalue)sizerU  upper)Zband)rV  eigenvalrU  r=   r   lowerc                   S   s
   t dS r   rk   jordan_blockrA   rA   rA   rD   rW   D  rX   z#test_jordan_block.<locals>.<lambda>c                   S   s   t ddS )Ng      @r>   rZ  rA   rA   rA   rD   rW   F  rX   c                   S   s   t jddS )Nr>   rT  rZ  rA   rA   rA   rD   rW   H  rX   c                   S   s   t jdddS )Nr>   r@   )rU  rX  rZ  rA   rA   rA   rD   rW   K  s    )rV  rX  )rk   r[  r#   rI   r   r  rA   rA   rA   rD   test_jordan_block4  s>      
r\  c                     s6  t ddgddgg} | t dgdggt dgdgggks@t| jt dgdggddt dtd d gtdd gggkst| t dgdggt dgdggt dgdggt td	dgtd
dgggkst| t dgdggt dgdggt dgdgggkst| t dgdggg ks4tt dddgdd
dgdddgg}t dgdggt dgdggt dgdggg |j  t dgdggt tddgtddgggkstt dddgt dddgt dddgg tt fdd t dddgt ddd
gt dddgg tt fdd d S )Nr=   r>   r?   r@   T)	normalizerm   r   irn   r   r   r   r   r   r         c                      s   t j ddiS NZ	rankcheckTr#   orthogonalizerA   ZvecsrA   rD   rW   d  rX   z$test_orthogonalize.<locals>.<lambda>r   c                      s   t j ddiS r`  ra  rA   rc  rA   rD   rW   g  rX   )r#   rb  rI   r   r   r   r  r&  rA   rc  rD   test_orthogonalizeS  s*    ,$"*"
  .*
((rd  c                  C   sr  t d\} }| t dddgdddgdddggks6t|t dddgdddgdddggks^tt d\} }| t ddd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dgdddddddgdddddddgdddddddggkst|t ddd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dgdddddddgdddddddgdddddddggksntd S )Nr=   r   r   r?   r
  r   r>   )r#   Z	wilkinsonrI   )ZwminusZwplusrA   rA   rD   test_wilkinsoni  s<    
re  c                  C   s>   t d\} }tdd| |g}|| tddddgks:td S )Nx yr>   r=   r   )r   rl   diffr#   rI   r2   r3   r{   rA   rA   rD   	test_diff  s    ri  c                  C   sJ   t d\} }tdd| |g}|| tdd| d d ||  gksFtd S )Nrf  r>   r=   )r   rl   Z	integrater#   rI   rh  rA   rA   rD   test_integrate  s    rj  c                     s   t d\} }tdd| t| | t| | d g}tdd| |g}tt||  t| gt|| t| gd|  dgg}|||ksttddddddg tddddddgtt fdd tt fd	d d S )
Nzrho,phir?   r=   r>   r   r@   c                      s     tddgS r   )jacobianr#   rA   r   rA   rD   rW     rX   z test_jacobian2.<locals>.<lambda>c                      s
     S rQ   )rk  rA   r   rA   rD   rW     rX   )	r   rl   r   r   r#   rk  rI   r   r,  )rhophiXYJrA   r   rD   test_jacobian2  s    &
rq  c                  C   sJ   t d\} }tddd|  |g}|| dtddtdd|gksFtd S )Nrf  r>   r=   rm   )r   rl   limitr#   r   rI   rh  rA   rA   rD   
test_limit  s    rs  c                      sV   t dddgdddgddd	gg dddgtt fd
d tt fdd d S )Nr=   r>   r?   r@   rm   rn   r   r   r   c                      s     S rQ   rA   rA   rC   vrA   rD   rW     rX   z"test_issue_13774.<locals>.<lambda>c                      s     S rQ   rA   rA   rt  rA   rD   rW     rX   )r#   r   r,  rA   rA   rt  rD   test_issue_13774  s     
rv  c                     s   t d t dttdd  tt fdd tt fdd tt fdd td\} }}ttd	| g t|  gkstttd	|| g td
|  gd	| ggkstttd	||| g td
d
|  gd	d
| gd
d	| ggkstd S )Nr2   r3   c                   S   s
   t dS r   )r#   	companionrA   rA   rA   rD   rW     rX   z test_companion.<locals>.<lambda>c                      s   t tdg S r   r#   rw  r/   rA   ru   rA   rD   rW     rX   c                      s   t tddg S r   rx  rA   ru   rA   rD   rW     rX   c                      s   t t   gS rQ   rx  rA   r2   r3   rA   rD   rW     rX   zc0:3r=   r   )r   r   r  r   r#   rw  r/   rI   )Zc0c1r0  rA   ry  rD   test_companion  s    $$r{  c               	   C   s   t d\} }}t| ||g}|t| ||gdddg}|tdgdgdggksTtt| | | | | g| | | | | g| | | | | gg}|t| gdg}|tdddddgdddddgdddddggkstd S )Nzx, y zr=   r>   r?   )r   r#   r  ziprI   )r2   r3   r4   r   r   rA   rA   rD   test_issue_10589  s    ,r}  c                  C   sn   G dd dt } tddddddg}| ddddddg}|| }t|| sNt|tddgd	d
ggksjtd S )Nc                   @   s   e Zd Zejd ZdS )ztest_rmul_pr19860.<locals>.Foog{Gz?N)rN   rO   rP   r+   Z_op_priorityrA   rA   rA   rD   Foo  s   r~  r>   r=   r?   r@   r   r   r+  r<  )r-   r#   rH   rI   )r~  r   r   r   rA   rA   rD   test_rmul_pr19860  s    r  c                      sT   t ddgddgg tddgddggtt fdd tt fdd d S )Nr=   r>   r?   r@   c                      s     S rQ   rA   rA   r   r   rA   rD   rW     rX   z"test_issue_18956.<locals>.<lambda>c                      s     S rQ   rA   rA   r  rA   rD   rW     rX   )Arrayr#   r   r,  rA   rA   r  rD   test_issue_18956  s    r  c                  C   sP   G dd dt } tddddg}||  ks.tG dd d| }|| ksLtd S )Nc                   @   s   e Zd Zdd Zdd ZdS )ztest__eq__.<locals>.Myc                 s   s   dV  dV  d S r   rA   selfrA   rA   rD   __iter__  s    ztest__eq__.<locals>.My.__iter__c                 S   s   t | | S rQ   )rt   )r  rU   rA   rA   rD   __getitem__  s    z"test__eq__.<locals>.My.__getitem__N)rN   rO   rP   r  r  rA   rA   rA   rD   My  s   r  r>   r=   c                   @   s   e Zd Zdd ZdS )ztest__eq__.<locals>.My_sympyc                 S   s   t | S rQ   r9  r  rA   rA   rD   _sympy_  s    z$test__eq__.<locals>.My_sympy._sympy_N)rN   rO   rP   r  rA   rA   rA   rD   My_sympy  s   r  )objectr#   rI   )r  r   r  rA   rA   rD   
test__eq__  s
    r  N)Zsympy.testing.pytestr   r   r   Zsympy.assumptionsr   Zsympy.core.exprr   Zsympy.core.addr   Zsympy.core.functionr   Zsympy.core.kindr	   r
   Zsympy.core.numbersr   r   r   r   r   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Z$sympy.functions.elementary.complexesr   Z&sympy.functions.elementary.exponentialr   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   r   Zsympy.matrices.exceptionsr   r   Zsympy.matrices.kindr   rF   r   r   r   r   r   r    r!   rG   r"   Zsympy.matricesr#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   Zsympy.polys.polytoolsr/   Zsympy.utilities.iterablesr0   Z#sympy.tensor.array.dense_ndim_arrayr1   r  Z	sympy.abcr2   r3   r4   rK   rL   r\   r^   r_   ra   rb   rc   re   rf   rg   ri   rj   rk   rl   rv   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   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  r6  r8  rA  rC  rD  rE  rG  rH  rI  rM  rS  r\  rd  re  ri  rj  rq  rs  rv  r{  r}  r  r  r  rA   rA   rA   rD   <module>   s   $8A
			
 		$!!SO"

