o
    GZhD                     @   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 d   n1 sw   Y  dd ZLdd ZMe  G d d! d!e)e*e,ZNW d   n1 sw   Y  d"d# ZOd$d% ZPe  G d&d' d'e)e*e-ZQW d   n	1 s%w   Y  d(d) ZRd*d+ ZSe  G d,d- d-e)e*e.ZTW d   n	1 sKw   Y  d.d/ ZUd0d1 ZVe  G d2d3 d3e)e*e/ZWW d   n	1 sqw   Y  e  G d4d5 d5e)e*e1ZXW d   n	1 sw   Y  d6d7 ZYd8d9 ZZd:d; Z[d<d= Z\d>d? Z]d@dA Z^dBdC Z_dDdE Z`dFdG ZadHdI ZbdJdK ZcdLdM ZddNdO ZedPdQ ZfdRdS ZgdTdU ZhdVdW ZidXdY ZjdZd[ Zkd\d] Zld^d_ Zmd`da Zndbdc Zoddde Zpdfdg Zqdhdi Zrdjdk Zsdldm Ztdndo Zudpdq Zvdrds Zwdtdu Zxdvdw Zydxdy Zzdzd{ Z{d|d} Z|d~d Z}dd 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ӄ ZdS )    )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 ]?}|D ]}t  t||du saJ W d    n1 skw   Y  qRt  t||d	u s~J W d    n1 sw   Y  qNd 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MrB   rB   U/var/www/auris/lib/python3.10/site-packages/sympy/matrices/tests/test_commonmatrix.py
<listcomp>Y   s     z5test_matrix_deprecated_isinstance.<locals>.<listcomp>rB   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)r5   r   r!   r   r   r    r6   r7   r8   r9   r:   r"   r;   r#   r<   r)   r.   Z
all_mixinsZall_matricesZMstZmixinrD   rB   rB   rE   !test_matrix_deprecated_isinstance'   sF   $ 	rK   c                   @      e Zd ZdS )ShapingOnlyMatrixN__name__
__module____qualname__rB   rB   rB   rE   rM   i       rM   Nc                 C      t | | dd S )Nc                 S      t | |kS NintijrB   rB   rE   <lambda>n       zeye_Shaping.<locals>.<lambda>rM   nrB   rB   rE   eye_Shapingm      r`   c                 C   rS   )Nc                 S      dS Nr   rB   rX   rB   rB   rE   r[   r       zzeros_Shaping.<locals>.<lambda>r]   r^   rB   rB   rE   zeros_Shapingq   ra   re   c                   @   rL   )PropertiesOnlyMatrixNrN   rB   rB   rB   rE   rf   v   rR   rf   c                 C   rS   )Nc                 S   rT   rU   rV   rX   rB   rB   rE   r[   {   r\   z eye_Properties.<locals>.<lambda>rf   r^   rB   rB   rE   eye_Propertiesz   ra   rh   c                 C   rS   )Nc                 S   rb   rc   rB   rX   rB   rB   rE   r[      rd   z"zeros_Properties.<locals>.<lambda>rg   r^   rB   rB   rE   zeros_Properties~   ra   ri   c                   @   rL   )OperationsOnlyMatrixNrN   rB   rB   rB   rE   rj      rR   rj   c                 C   rS   )Nc                 S   rT   rU   rV   rX   rB   rB   rE   r[      r\   z eye_Operations.<locals>.<lambda>rj   r^   rB   rB   rE   eye_Operations   ra   rl   c                 C   rS   )Nc                 S   rb   rc   rB   rX   rB   rB   rE   r[      rd   z"zeros_Operations.<locals>.<lambda>rk   r^   rB   rB   rE   zeros_Operations   ra   rm   c                   @   rL   )ArithmeticOnlyMatrixNrN   rB   rB   rB   rE   rn      rR   rn   c                 C   rS   )Nc                 S   rT   rU   rV   rX   rB   rB   rE   r[      r\   z eye_Arithmetic.<locals>.<lambda>rn   r^   rB   rB   rE   eye_Arithmetic   ra   rp   c                 C   rS   )Nc                 S   rb   rc   rB   rX   rB   rB   rE   r[      rd   z"zeros_Arithmetic.<locals>.<lambda>ro   r^   rB   rB   rE   zeros_Arithmetic   ra   rq   c                   @   rL   )SpecialOnlyMatrixNrN   rB   rB   rB   rE   rr      rR   rr   c                   @   rL   )CalculusOnlyMatrixNrN   rB   rB   rB   rE   rs      rR   rs   c                  C   sr  t ddg d} | jdksJ | jdksJ | d dksJ | d dks&J t| g dks0J t| dd d f g dks@J t| d d df ddgksPJ t| d d d d f t| ksbJ | d d d d f | kspJ t | | ksxJ t g dg dg| ksJ t g dg df| ksJ t ddg| ksJ t d	| ksJ t ddgdd
gddgg| krJ d S )Nr?   r@   )r>   r?   r@   rA         r>   r>   rt   r>   rA   rt   ru   r>   r?   r@   )rx   rw   rA   ru   )r   rowscolslistr2   rB   rB   rE   test__MinimalMatrix   s      $&r}   c                   C   s   t ddgddggjttksJ t ddgddggjttks"J t ddg jttks/J t tggjttks<J t dt dggggjttksNJ tdggjttks[J tdt dggggjttksmJ d S )Nr>   r?   r@   rA   r   )r#   kindr   r	   r2   r
   r)   rB   rB   rB   rE   	test_kind   s   ""$(r   c                  C   sL   t ddg d} |  }|jdksJ tdD ]}|| |d ks#J qd S )Nr?   )r>   r@   r?   rA   r>   rA   )rM   Zvecrz   range)mZm_vecrY   rB   rB   rE   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rR|   krR|   krR| |||dksUJ  J d S )Nza:d)r   r   r   r>   r>   r   rv   )r   r+   r-   r,   r.   Ztodok)abcdm1m2m3Zm4rB   rB   rE   
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sCJ d S )Nr?   r@   rA   )	r   OneHalfr2   r3   ZZeror4   rM   tolist)lstZflat_lstr   rB   rB   rE   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s'J d S )Nr@   r?   r   r>   r   r>   r?   )rM   r   r   r   r2   Ztodod)r   dictrB   rB   rE   
test_todod   s   "r   c                      sH  t ddg d tt fdd tt fdd tt fdd tt fdd  d d	  krEtg d
g dgksHJ  J  d d	  krdtddgddgddggksgJ  J  d d  krtg d
g dgksJ  J  d d  krtddgddgddggksJ  J d S )Nr@   	r>   r?   r@   rA   rt   ru         	   c                      
     dS Nrt   row_delrB   erB   rE   r[         
 z"test_row_col_del.<locals>.<lambda>c                      r   Nr   rB   r   rB   rE   r[      r   c                      r   r   col_delrB   r   rB   rE   r[      r   c                      r   r   r   rB   r   rB   rE   r[      r   r?   rx   rw   r>   rA   rt   r   r   r   r   r   ru   r   )rM   r   
IndexErrorr   r#   r   rB   rB   r   rE   test_row_col_del   s   8>8B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s-J | |gks6J | |gks?J d S Nr>   r?   r@   )r#   r2   r3   r4   get_diag_blocks)r   r   r   rB   rB   rE   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siJ | | ||gkstJ | | ||gksJ | |||gksJ d S r   )	r#   r2   r3   r4   r$   rM   ry   rz   r   )r   r   r   ABCDrB   rB   rE   test_get_diag_blocks2   s    4r   c                  C   s"   t ddddg} | jdksJ d S )Nr>   r?   r   r>   r?   )rM   shaper   rB   rB   rE   
test_shape  s   r   c                  C   sh   t d} | ddtdddksJ tdddd }|ddtdks&J |d	d
tdks2J d S )Nr@   r>   r   )	r>   r   r   r   r>   r   r   r   r>   rA   c                 S   s   | | S rU   rB   rX   rB   rB   rE   r[         ztest_reshape.<locals>.<lambda>)r   r@   r>   r?   )r@   rA   r?   r@   rA   rt   r?   ru   ))r   r>   r?   r@   r>   r?   )r@   rA   r?   r@   rA   rt   )r`   Zreshaper#   rM   m0r   rB   rB   rE   test_reshape  s   r   c                  C   sP   t ddg d} | dtddg dksJ | dtddg dks&J d S )Nr@   r   r   r>   rx   )r>   rA   r   )rM   rowr#   colr   rB   rB   rE   test_row_col  s   "r   c                   C   s8   t dtg dtg dg dg dgksJ d S )Nr@   r   r   r   )r>   r   r   r   )r   r>   r   r   )r   r   r>   r   )r`   Zrow_joinr#   rB   rB   rB   rE   test_row_join  s   r   c                   C   s@   t dtg dgtg dg dg dg dgksJ d S )Nr@   r   r>   r   r   )r   r>   r   )r   r   r>   )r`   Zcol_joinr#   rB   rB   rB   rE   test_col_join#  s   r   c                  C   s\   t g dg} tddD ]}g d}||d ttd|| d |ks+J qd S )NrA   rA   rA   rt   r   rA   r@   r   )r#   r   insertr0   r`   Z
row_insertr   r   )Zr4rY   lrB   rB   rE   test_row_insert+  s   (r   c                  C   s   t g d} tddD ]}g d}||d ttd|| d |ks*J 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 g d
g dg dg dg dg dgks_J d S )Nr   r   rt   r   r   r   rA   r@   r   ru   r?   )r>   r   r   r?   r?   r   r   r   )r   r>   r   r?   r?   r   r   r   )r   r   r>   r?   r?   r   r   r   )r   r   r   r?   r?   r>   r   r   )r   r   r   r?   r?   r   r>   r   )r   r   r   r?   r?   r   r   r>   )	r#   r   r   r0   re   Z
col_insertr   r   r`   )Zc4rY   r   rB   rB   rE   test_col_insert3  s   (6r   c                      s   t dddd   g dddgtddg d	ksJ  ddgg d
tddg dks0J  tdtd ks>J tt fdd tt fdd d S )NrA   r@   c                 S      | d | S Nr@   rB   rX   rB   rB   rE   r[   D  r\   ztest_extract.<locals>.<lambda>)r   r>   r@   r   r>   r?   )r   r>   r@   rA   r   
   r   r   r?   )r   r   r?   r   r      c                           dgdgS )NrA   r   extractrB   r   rB   rE   r[   H      c                      r   )Nr   r@   r   rB   r   rB   rE   r[   I  r   )rM   r   r#   r   r   r   rB   rB   r   rE   test_extractC  s   ((r   c                     s   t dddd  t dddd    ksJ     t      kr<tg dg dg dg d	gks?J  J tt fd
d t t ksRJ tdd} tdd}tdd}tdd}t | |||  jdkr| jdks~J d S )NrA   r@   c                 S   r   r   rB   rX   rB   rB   rE   r[   M  r\   ztest_hstack.<locals>.<lambda>c                 S   r   r   rB   rX   rB   rB   rE   r[   N  r\   )	r   r>   r?   r   r>   r?   r   r>   r?   )	r@   rA   rt   r@   rA   rt   r@   rA   rt   )	ru   r   r   ru   r   r   ru   r   r   )	r   r   r   r   r   r   r   r   r   c                            S rU   )hstackrB   r   r   rB   rE   r[   U  r\   r   r>   r?   ru   )rM   r   r#   r   r   r(   ry   rz   )M1M2ZM3ZM4rB   r   rE   test_hstackL  s"   "r   c                      s   t dddd  t dddd    ksJ     t      krTtg dg dg dg d	g dg dg dg d	g dg dg dg d	gksWJ  J tt fd
d t t ksjJ d S )NrA   r@   c                 S   r   r   rB   rX   rB   rB   rE   r[   b  r\   ztest_vstack.<locals>.<lambda>c                 S   r   r   rB   rX   rB   rB   rE   r[   c  r\   r   r   )ru   r   r   )r   r   r   c                      r   rU   )vstackrB   r   rB   rE   r[   r  r\   )rM   r   r#   r   r   rB   rB   r   rE   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J | tthks(J d S Nr?   r>   )rf   r2   Zatomsr   r   ZNegativeOner   r   rB   rB   rE   
test_atomsw  s    r   c                   C   s    t tgdggjthksJ d S rc   )rf   r2   Zfree_symbolsrB   rB   rB   rE   test_free_symbols}  s    r   c                  C   s\   t ttfdf} | tsJ | trJ | tsJ t dtfdf} | tr,J d S )N)r?   r@   r?   )rf   r2   r3   hasr4   r   r   rB   rB   rE   test_has  s   r   c                  C   s  t d} tddddg du sJ tddd| d d|   d t| d d  d| t t |  t dg	}| du s<J |jdddu sFJ |jd	d
 ddu sRJ tdddd |D }|jdddu sgJ tdddd tjgt|dd   D }| du sJ d S )Nr2   r?   r>   Fr@   r   Tsimplifyc                 S   s   | S rU   rB   r|   rB   rB   rE   r[     rd   z(test_is_anti_symmetric.<locals>.<lambda>c                 S      g | ]}|  qS rB   expandrC   r2   rB   rB   rE   rF         z*test_is_anti_symmetric.<locals>.<listcomp>c                 S   r   rB   r   r   rB   rB   rE   rF     r   )r   rf   Zis_anti_symmetricr3   r   r   r{   )r2   r   rB   rB   rE   test_is_anti_symmetric  s   D*r   c                  C   s`  t ddg d} |  rJ |  sJ | jddsJ t ddg d} |  s*J t ddtddd} |  s:J |  s@J t ddg d} | tdddksRJ t ddtdd} |  raJ |  sgJ t d	} |  sqJ t d
} |  s{J tdddtd dt  d ttd d ddtddg	} |  sJ | jddrJ |  jddsJ d S )Nr?   r   r>   r>   r   Fr   r>   r   r   r>   r@   r>   )	r>   r   r   r   r?   r   r   r   r@   ))rt   r   r   ru   r   ))rt   r   r   )r   ru   r   r   )	rf   Zis_diagonalis_symmetricr$   r(   r#   r2   r3   r   r   rB   rB   rE   test_diagonal_symmetrical  s,   6r   c                  C   s   t dtgt dgg} | jsJ t dt tgt dgg} | jdu s$J t ttgt dgg} | jd u s6J t tdgt dgg} | jdu sHJ d S )Nr>   r?   F)rf   r   Zis_hermitianr2   r   rB   rB   rE   test_is_hermitian  s   
r   c                   C   sJ   t djsJ ttdjrJ ttdjrJ tg dgjr#J d S )Nr@   r   )rh   Zis_Identityrf   r(   r'   rB   rB   rB   rE   test_is_Identity  s   r   c                  C   s   t ttgttgg} |  du sJ t g dg dg} |  du s$J t g dddtdgg} |  du s8J t dtd	gg} |  du sHJ t g d
g} |  du sWJ t dgtgd	gg} |  du siJ t dgdgd	gg} |  du s{J d S )NTr=   rt   ru   r   r   Frt   ru   r   r>   r@   rx   r?   )rf   r2   Zis_symbolicr   rB   rB   rE   test_is_symbolic  s   r   c                  C   B   t g dg} | jdu sJ t dgdgdgg} | jdu sJ d S )Nrx   Tr>   r?   r@   F)rf   Zis_upperr   rB   rB   rE   test_is_upper     r   c                  C   r   )Nrx   Fr>   r?   r@   T)rf   Zis_lowerr   rB   rB   rE   test_is_lower  r   r   c                  C   s<   t dgdgg} t ddgddgg}| jrJ |jsJ d S Nr>   r?   )rf   Z	is_squarer   rB   rB   rE   test_is_square  s   
r   c                  C   s<   t ddg d} |  sJ t ddg d} |  rJ d S )Nr?   r   )r   r>   r   r>   )rf   r   r   rB   rB   rE   test_is_symmetric  s   r   c                  C   s   t g dg dg dg} | jsJ t ddg d} | jsJ t ddg d} | jdu s.J | jdu s5J t g dg dg dg} | jrGJ d S )	N)r@   rA   r>   )r?   rA   rt   r   r@   )	r@   r?   r   rA   rA   r>   r>   rt   r?   )	r@   r?   r   rA   rA   r>   r>   rt   r?   Fr   )rf   Zis_upper_hessenbergZis_lower_hessenbergr   rB   rB   rE   test_is_hessenberg  s   

r   c                  C   s   t ddg js	J t ddgddggjsJ t tddjs J t tdjr)J t tdgddggjd ks8J t tdgddggjdksGJ tddd} t | dgddggjdks\J d S )	Nr   r@   rA   r>   Fr   T)Znonzero)rf   Zis_zero_matrixr(   r%   r2   r   r   rB   rB   rE   test_is_zero  s   "r   c                  C   s\   t tddg d h dksJ tddd} t tdd| dddg | dhks,J d S )	Nr?   )r   r>   r?   r@   >   r>   r?   r@   r2   Trealr   r>   )setrf   valuesr   r|   rB   rB   rE   test_values  s   r  c                  C   sb   t td} | dd tdd ksJ | dd tdks"J | dd tdks/J d S )Nr@   c                 S   s   d|  S Nr?   rB   r|   rB   rB   rE   r[     r   z test_applyfunc.<locals>.<lambda>r?   c                 S   rb   rc   rB   r|   rB   rB   rE   r[     rd   c                 S   rb   Nr>   rB   r|   rB   rB   rE   r[     rd   )rj   r%   Z	applyfuncr(   r'   )r   rB   rB   rE   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J d S )Nr   r>   )r   rj   Zadjointr#   )ZdatZansrB   rB   rE   test_adjoint!  s   r  c               	   C   sp   t ddg d} t dddtj ddtj  ddtj  ddtj  g}| \}}|| ks0J || ks6J d S )Nr?   r=   r>   r@   rA   )rj   r   ZImaginaryUnitZas_real_imag)r   r   r   r   rB   rB   rE   test_as_real_imag'  s   r  c                  C   s   t dtdgg dg} | jtddgtdgddggksJ | jtdt dgg dgks.J | j|  ks7J | j| jjks@J | jtddgt dgddggksSJ d S )Nr   rt   r>   r?   r   r>   r?   )rj   r   Tr#   r   	conjugateHrD   rB   rB   rE   test_conjugate2  s    
r  c                  C   sJ   t tttddgg} | d dt ksJ |  tdt ggks#J d S )NF)evaluater   r?   )rj   r   r2   Zdoitr#   r   rB   rB   rE   	test_doitD  s    r  c                      sr   t ddtddg t fddtdD sJ t fddtdD s(J t fddtdD s7J d S )	Nr?   r>   rt   ru   c                 3   s(    | ]}   |  |   kV  qd S rU   ZevalfrC   rY   r   rB   rE   	<genexpr>L  s   & ztest_evalf.<locals>.<genexpr>c                 3   ,    | ]}  d |  |  d kV  qdS r?   Nr  r  r   rB   rE   r  M     * c                 3   r  r  r^   r  r   rB   rE   r  N  r  )rj   r   allr   rB   rB   r   rE   
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sJJ tddd}t ddtt| gjddtt|tt	|  gksnJ d S )Nr?   r@   r   Tr   r>   )complex)
rj   r2   r3   r   r#   r   r   r   r   r   )r   r   r   rB   rB   rE   test_expandQ  s   8F
r  c                  C   s@  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sQJ | t	tt	t@ }|ttd tgttd  td t ggksvJ | t
tt
t@ }|ttd t gt td  td  t ggksJ d S r  )rj   r   r2   r   r3   Zrefiner   r   r#   Zpositivenegativer   rB   rB   rE   test_refine^  s   .<0:r  c                     sT   t dtd\ tddfdd} tdd fdd}| }|| ks(J d S )NF, Gclsr?   c                        | | S rU   rB   rX   )GrB   rE   r[   m  r\   ztest_replace.<locals>.<lambda>c                    r  rU   rB   rX   FrB   rE   r[   n  r\   r   r   rj   replace)KrD   NrB   )r!  r  rE   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sQJ d S )	Nr  r  r?   r   r>   c                    r  rU   rB   rX   r   rB   rE   r[   w  r\   z"test_replace_map.<locals>.<lambda>Tr"  )r  r$  rD   r%  rB   r   rE   test_replace_maps  s   >r'  c                  C   s   t ddgddgg} | | d  kr| dksJ  J | d| d  kr9| d  kr9t dks<J  J | d| d	  krW| d
  krWt dksZJ  J |  | d  krt| d  krtt dkswJ  J d S )Nr>   r?   r@   rA   r   r   ru   ))rA   r@   r?   r>   r   r   ))r?   rA   r>   r@   i)r@   r>   )rA   r?   )r#   Zrot90r   rB   rB   rE   
test_rot90|  s
   (<<>r,  c               
   C   sJ  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s`J dt d }t|gg}| t|ggksxJ |jt	dt|jt	dggksJ tddgddgg}d|
   tdd	ksJ d S )
Nr_   fr>   r?   )ratio   r@   rA   "   )r   r   rj   r2   r3   r   r   r   r#   r   tracer   )r_   r-  rD   eqr   rB   rB   rE   test_simplify  s    :&$"r3  c                   C   s@  t dtgtdggtdtddgddggksJ 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s;J 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s\J t tdgtt dggtdtditddgddggks{J t tt ggjttd ttd idd	ttd td  ggksJ d S )
Nr>   rA   rt   r?   r   r   r*  T)Zsimultaneous)rj   r2   subsr#   r3   rB   rB   rB   rE   	test_subs  s   4(($(r5  c                  C   s.   t g dg dg dg} |  dksJ d S )Nr   )r   rt   r   )r   r   r      )rj   r1  r  rB   rB   rE   
test_trace  s
   r7  c                   C   sx   t dtgtdggtditddgddggksJ t tdgtt dggtdtditddgddggks:J d S )Nr>   rA   rt   r?   r   r   r*  )rj   r2   Zxreplacer#   r3   rB   rB   rB   rE   test_xreplace  s   $r8  c                     s  t ddg d 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rDtg d
g dg dgksGJ  J  ddgdd	gg}  jddgdd	ggdd|   krstg dg dg dgksvJ  J  jddgdd	ggdd}  jddgdd	ggddd|   krtg dg dg dgksJ  J  g dtg d
g dg dgksJ ddlm	}  |g dtg d
g dg dgksJ d S )Nr@   rA   )r>   r?   r@   rA   rt   ru   r   r   r   r   r      c                      s     ddggS )Nr   rt   )permuterB   r   rB   rE   r[     r   ztest_permute.<locals>.<lambda>c                      s     tdS )Nr2   )r:  r   rB   r   rB   rE   r[     s    r   r?   r>   r   )r   r   r   r9  r=   rz   )orientation)r?   r@   r>   rA   )ru   r   rt   r   )r   r   r   r9  Zbackward)	direction)r;  r<  )r@   r>   r?   rA   )r   rt   ru   r   )r   r   r   r9  )r>   r?   r   r@   )Permutation)
rj   r   r   
ValueErrorZpermute_rowsr:  r#   Zpermute_colsZsympy.combinatoricsr=  )r   r=  rB   r   rE   test_permute  sH    "$r?  c                  C   s   t g dg dg dg dg} | d}|t g dg dg dg dgks)J | d}|t g dg dg dg dgksBJ |  }|t g dg dg dg dgksZJ d S )Nr>   r>   r>   r>   r?   )r   r   r>   r>   )r   r   r   r>   r   r   r   r   r   )r   r>   r>   r>   )rj   Zupper_triangular)r   RrB   rB   rE   test_upper_triangular  s6   

rC  c                  C   s   t g dg dg dg dg} |  }|tg dg dg dg dgks(J | d}|tg dg dg dg dgksAJ | d}|tg dg dg dg dgksZJ d S )Nr@  )r>   r   r   r   )r>   r>   r   r   )r>   r>   r>   r   r?   r   rA  )rj   Zlower_triangularrn   )r   LrB   rB   rE   test_lower_triangular  s6   

rE  c                  C   s@   t ddgttgg} t| t ddgttttggksJ d S )Nr>   r   r?   )rn   r2   r3   absr   r   rB   rB   rE   test_abs  s   ,rG  c                      s   t g dtttgdt dtt gg    t g ddt dt dt gdt ddt t ggks4J t ddddgtt fdd	 d S )
Nrx   r?   i)r?   rA   ru   rA   ir>   c                           S rU   rB   rB   r   r_   rB   rE   r[     r   ztest_add.<locals>.<lambda>)rn   r2   r3   r4   r   r   rB   rB   rI  rE   test_add  s   &BrJ  c                     sT  t d t dtt fdd tt fdd   } | d dks'J | d d	ks/J | d
 dks7J | d dks?J | d dksGJ | d dksOJ ztd W n	 ty^   Y n1w | d dksgJ | d d	ksoJ | d
 dkswJ | d dksJ | d dksJ | d dksJ  | }|t | ksJ |d dksJ |d dksJ |d
 dksJ |d dksJ |d dksJ |d dksJ tt fdd td } t	| t sJ | d t
ksJ | d d	t
 ksJ | d
 dt
 ksJ | d dks
J t
 }| |ksJ d } t	| t s!J | d dks*J | d dks3J | d
 dks<J | d dksEJ ztd W n
 tyU   Y n-w t	| t s^J | d dksgJ | d dkspJ | d
 dksyJ | d dksJ ttdd}tdd	 }t|||g}||t|g|g|ggksJ d S )N)r   r+  r   )r   )r@   r   c                           S rU   rB   rB   r   r   rB   rE   r[   -  r   z%test_multiplication.<locals>.<lambda>c                      s    i  S rU   rB   rB   r   rB   rE   r[   .  r   r   r   r   r?   r   ru   rv   )r?   r      r(  r   z	c = a @ brA   c                      s
     S rU   )multiply_elementwiserB   rL  rB   rE   r[   L  r   r2   r@   rt   r      z	c = 5 @ br>   )rn   r   r   	TypeErrorevalSyntaxErrorrN  r&   r   rI   r2   r#   r'   r   )r   hc2r   _hr   rB   rL  rE   test_multiplication!  s~   

rV  c                  C   s   t ddgddgg} | dtksJ | dtksJ ztd W n ty+   Y n	 ty3   Y nw ztd W d S  tyE   Y d S  tyN   Y d S w )Nr>   r?   r@   rA   z2 @ aza @ 2)r#   
__matmul__NotImplemented__rmatmul__rQ  rR  rP  r   rB   rB   rE   test_matmult  s"   rZ  c                  C   s   G dd dt } tddgddgg}|  }|| t|d| gd| d| ggks+J || t|d| gd| d| ggksAJ 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>.fooFrv   N)rO   rP   rQ   Z	is_MatrixZis_MatrixLiker   rB   rB   rB   rE   foo  s    r[  r>   r?   r@   rA   N)r   r#   )r[  r   r   rB   rB   rE   test_non_matmul  s
   ,0r\  c                  C   s  t tdd  tddgddgg} | d d d  dksJ tg dg d	g d
g} | d d d  dks6J | d tdks@J | d | ksHJ tdggd d dd ksXJ tddgddggtd tddgddggksrJ tddgddgg} | jddd| jdddksJ d S )Nc                   S   s   t dd S )Nr   r?   r#   rB   rB   rB   rE   r[     r\   ztest_power.<locals>.<lambda>r?   r@   rA   rt   )i  i  i,*  i7  )r?   r>   r@   )rA   r?   rA   )ru   r9  r>   )	i"  i     i  i  ip  i  i  i  r   r>   d   r   r   r   rO        Zcayley)methodmultiply)r   r   rn   r%   r   r#   powr   rB   rB   rE   
test_power  s    4$re  c                  C   s.   t ddddg} |  t ddddgksJ d S )Nr>   r?   r   r   ro   r^   rB   rB   rE   test_neg  s   rf  c                  C   s0   t ddddg} | |  t ddddgksJ d S )Nr>   r?   r   ro   r^   rB   rB   rE   test_sub  s    rg  c                  C   s:   t ddddg} | d t ddtjtdd gksJ d S r   )rn   r   r   r^   rB   rB   rE   test_div  s   *rh  c                   C   sj   t tddg dksJ t tdg dksJ ttdtks&J ttjdtdtks3J d S )Nr?   r   r  )r{   rr   r%   typer#   rB   rB   rB   rE   test_eye  s   rj  c                   C      t tddg dksJ t tdg dksJ tddtg dg dgks-J ttdtks8J ttjdtdtksEJ d S )Nr?   r@  r@   r>   r>   r>   r  )r{   rr   r'   r#   ri  rB   rB   rB   rE   	test_ones  
   $rm  c                   C   rk  )Nr?   rA  r@   r   r  )r{   rr   r(   r#   ri  rB   rB   rB   rE   
test_zeros  rn  ro  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g dg d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sUJ  tg dg d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sJ  tg dg d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sJ 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g dg dg dg dgksJ tt fdd dtdggks)J dddtddgddggks<J dddtddgddggksOJ ddddtddgddgddggksfJ ddg tddgddggksyJ tddgtdgdggksJ 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sJ  J tdt ksJ tdtdtksJ tg dtdddksJ tjg dddj	dksJ tg dgj	dksJ tjg dgddj	dksJ tg dggj	dks J tt
ddddtg dg dgks7J tt
ddddtddgddgddgddggksTJ d S )Nr>   r?   r@   )r>   r?   r   r   r   r   )r?   r@   r   r   r   r   r   )r>   r?   r   r   r   r   r   )r?   r@   r   r   r   r   r   rA   rt   ru   r   )r   r   r   r   r   r   )r   r   r>   r?   r   r   )r   r   r@   rA   r   r   )r   r   r   r   rt   ru   c                      s    dddS )Nr   rt   ry   rB   rB   r   r   r   r$   rB   rE   r[         z test_diag_make.<locals>.<lambda>rp  )rz   )ry   rz   F)unpackr  rx   r+  r)  )r   r   r>   r   )r   r   r   r?   )rr   r$   r#   r2   r3   r4   r   r>  ri  r   r'   rB   rB   rq  rE   test_diag_make  s    		&&.
" rt  c                     s@  t ddtd } | dksJ t| dksJ tddks(J tddks3J td	d
ks>J t tksJJ tddddi}t| t|ks^J tt|kshJ 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sJ d S )Nr@   r   r   )r   rA   r   r>   )r>   rt   r   )r@   r   r?   )r?   rv   c                      r   r   diagonalrB   r   rB   rE   r[   ,  r   ztest_diagonal.<locals>.<lambda>c                      r   )Nr*  ru  rB   r   rB   rE   r[   -  r   c                      s
     tS rU   )rv  r   rB   r   rB   rE   r[   .  r   c                    s   i | ]
}|t  |qS rB   )r{   rv  r  r  rB   rE   
<dictcomp>0  s    z!test_diagonal.<locals>.<dictcomp>)r#   r   rv  tupleri  r)   r   r>  r'   r*   ry   rz   )r   srB   )rD   r   rE   test_diagonal   s(   
rz  c                   C   s  t ddt jddd  kr?t jddd  kr?t jdddd  kr?t jdddd  kr?tg dg d	g d
gksBJ  J t jddddtg dg dg dgksYJ 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sJ d S )Nr@   r?   
eigenvalue)sizer|  upper)Zband)r}  eigenvalr|  )r?   r>   r   )r   r?   r>   r   lower)r?   r   r   r  r   c                   S   
   t dS r  rr   jordan_blockrB   rB   rB   rE   r[   D  r   z#test_jordan_block.<locals>.<lambda>c                   S   s   t ddS )Ng      @r?   r  rB   rB   rB   rE   r[   F  r\   c                   S   s   t jddS )Nr?   r{  r  rB   rB   rB   rE   r[   H  r\   c                   S   s   t jdddS )Nr?   rA   )r|  r  r  rB   rB   rB   rE   r[   K  s    )r}  r  )rr   r  r#   r   r>  rB   rB   rB   rE   test_jordan_block4  s:   
r  c                     s  t ddgddgg} | t dgdggt dgdgggks J | jt dgdggddt dtd d gtdd gggksBJ | 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slJ | t dgdggt dgdggt dgdgggksJ | t dgdggg ksJ t g dg dg d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sJ t g dt g dt g dg tt fdd t g dt g dt g dg tt fdd d S )Nr>   r?   r@   rA   T)	normalizert   r   iru   r   )r   r>   r   )r@   ru   r   )r   rt   r?   r   r         r   rx   )r>   rA   rt   c                         t j ddiS NZ	rankcheckTr#   orthogonalizerB   ZvecsrB   rE   r[   d  r   z$test_orthogonalize.<locals>.<lambda>rw   r   c                      r  r  r  rB   r  rB   rE   r[   g  r   )r#   r  r   r   r   r>  rI  rB   r  rE   test_orthogonalizeS  s*   ,$"*".*""r  c               
   C   s   t d\} }| t g dg dg dgksJ |t g dg dg dgks)J t d\} }| t g dg dg d	g d
g dg dg dgksMJ |t g dg dg dg d
g dg dg dgksjJ d S )Nr>   )r   r>   r   )r>   r   r>   )r   r>   r>   )r>   r>   r   r@   )r*  r>   r   r   r   r   r   )r>   r   r>   r   r   r   r   )r   r>   r   r>   r   r   r   )r   r   r>   r   r>   r   r   )r   r   r   r>   r>   r>   r   )r   r   r   r   r>   r?   r>   )r   r   r   r   r   r>   r@   )r@   r>   r   r   r   r   r   )r>   r?   r>   r   r   r   r   )r   r>   r>   r>   r   r   r   )r#   Z	wilkinson)ZwminusZwplusrB   rB   rE   test_wilkinsoni  s<   
r  c                  C   s>   t d\} }tdd| |g}|| tddddgksJ d S )Nx yr?   r>   r   )r   rs   diffr#   r2   r3   r   rB   rB   rE   	test_diff  s   "r  c                  C   sJ   t d\} }tdd| |g}|| tdd| d d ||  gks#J d S )Nr  r?   r>   )r   rs   Z	integrater#   r  rB   rB   rE   test_integrate  s   .r  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sFJ tddg d tddg dtt fdd	 tt fd
d	 d S )Nzrho,phir@   r>   r?   r   r=   rA   c                      s     tddgS r   )jacobianr#   rB   r   rB   rE   r[     rr  z test_jacobian2.<locals>.<lambda>c                      s
     S rU   )r  rB   r   rB   rE   r[     r   )r   rs   r   r   r#   r  r   rP  )rhophiXYJrB   r   rE   test_jacobian2  s   &
r  c                  C   sJ   t d\} }tddd|  |g}|| dtddtdd|gks#J d S )Nr  r?   r>   rt   )r   rs   limitr#   r   r  rB   rB   rE   
test_limit  s   *r  c                      sN   t g dg dg dg g dtt fdd tt fdd d S )Nrx   rw   r   rl  c                      s     S rU   rB   rB   rD   vrB   rE   r[     r   z"test_issue_13774.<locals>.<lambda>c                      rK  rU   rB   rB   r  rB   rE   r[     r   )r#   r   rP  rB   rB   r  rE   test_issue_13774  s   r  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sDJ ttd	|| g td
|  gd	| ggks]J ttd	||| g td
d
|  gd	d
| gd
d	| ggks~J d S )Nr2   r3   c                   S   r  r  )r#   	companionrB   rB   rB   rE   r[     r   z test_companion.<locals>.<lambda>c                      s   t tdg S r  r#   r  r/   rB   r|   rB   rE   r[     rr  c                      s   t tddg S r   r  rB   r|   rB   rE   r[     r   c                      s   t t   gS rU   r  rB   r2   r3   rB   rE   r[     s    zc0:3r>   r   )r   r   r>  r   r#   r  r/   )Zc0c1rT  rB   r  rE   test_companion  s   $$r  c                  C   s   t d\} }}t| ||g}|t| ||gg d}|tdgdgdggks)J t| | | | | g| | | | | g| | | | | gg}|t| gdg}|tg dg dg dgksZJ d S )Nzx, y zrx   r>   r?   r@   )r>   r>   r>   r>   r>   )r   r#   r4  zip)r2   r3   r4   r   r   rB   rB   rE   test_issue_10589  s   ,&r  c                  C   sf   G dd dt } tddg d}| ddg d}|| }t|| s#J |tddgddggks1J d S )	Nc                   @   s   e Zd Zejd ZdS )ztest_rmul_pr19860.<locals>.Foog{Gz?N)rO   rP   rQ   r+   Z_op_priorityrB   rB   rB   rE   Foo  s    r  r?   r=   r   r   rO  r`  )r-   r#   rI   )r  r   r   r   rB   rB   rE   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@   rA   c                      s     S rU   rB   rB   r   r   rB   rE   r[     r   z"test_issue_18956.<locals>.<lambda>c                      rH  rU   rB   rB   r  rB   rE   r[     r   )Arrayr#   r   rP  rB   rB   r  rE   test_issue_18956  s   r  c                  C   sP   G dd dt } tddddg}||  ksJ G dd d| }|| ks&J 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   rB   selfrB   rB   rE   __iter__  s   ztest__eq__.<locals>.My.__iter__c                 S   s   t | | S rU   )r{   )r  rY   rB   rB   rE   __getitem__  s   z"test__eq__.<locals>.My.__getitem__N)rO   rP   rQ   r  r  rB   rB   rB   rE   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 rU   r]  r  rB   rB   rE   _sympy_  s   z$test__eq__.<locals>.My_sympy._sympy_N)rO   rP   rQ   r  rB   rB   rB   rE   My_sympy  s    r  )objectr#   )r  r   r  rB   rB   rE   
test__eq__  s
   r  )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   rG   r   r   r   r   r   r    r!   rH   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   rM   r`   re   rf   rh   ri   rj   rl   rm   rn   rp   rq   rr   rs   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r&  r'  r,  r3  r5  r7  r8  r?  rC  rE  rG  rJ  rV  rZ  r\  re  rf  rg  rh  rj  rm  ro  rt  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  rB   rB   rB   rE   <module>   s  $8A
			
 		$!!SO"

