o
    e                     @   s  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!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) d dl*m+Z+ d dl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z>m?Z? d dl@mAZB d dlCmDZDmEZEmFZF G dd de"e#e$ZGdd ZHdd ZIG dd de"e#e%ZJdd ZKdd  ZLG d!d" d"e"e#e&ZMd#d$ ZNd%d& ZOG d'd( d(e"e#e'ZPd)d* ZQd+d, ZRG d-d. d.e"e#e(ZSG d/d0 d0e"e#e+ZTd1d2 ZUd3d4 ZVd5d6 ZWd7d8 ZXd9d: ZYd;d< ZZd=d> Z[d?d@ Z\dAdB Z]dCdD Z^dEdF Z_dGdH Z`dIdJ ZadKdL ZbdMdN ZcdOdP ZddQdR ZedSdT ZfdUdV ZgdWdX ZhdYdZ Zid[d\ Zjd]d^ Zkd_d` Zldadb Zmdcdd Zndedf Zodgdh Zpdidj Zqdkdl Zrdmdn Zsdodp Ztdqdr Zudsdt Zvdudv Zwdwdx Zxdydz Zyd{d| Zzd}d~ Z{dd Z|dd 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 Ze?dd Zdd Zdd Zdd ZddĄ ZddƄ ZddȄ Zddʄ Zdd̄ Zdd΄ ZdS )    )Q)Expr)Add)Function)
NumberKindUndefinedKind)IIntegeroopiRational)S)Symbolsymbols)Abs)exp)sqrt)cossin)

ShapeErrorNonSquareMatrixError_MinimalMatrix_CastableMatrixMatrixShapingMatrixPropertiesMatrixOperationsMatrixArithmeticMatrixSpecial
MatrixKind)MatrixCalculus)Matrixdiageyematrix_multiply_elementwiseoneszerosSparseMatrixbandedMutableDenseMatrixMutableSparseMatrixImmutableDenseMatrixImmutableSparseMatrix)Poly)flatten)raisesXFAIL)ImmutableDenseNDimArray)xyzc                   @      e Zd ZdS )ShapingOnlyMatrixN__name__
__module____qualname__ r:   r:   VD:\Projects\ConvertPro\env\Lib\site-packages\sympy/matrices/tests/test_commonmatrix.pyr5          r5   c                 C      t | | dd S )Nc                 S      t | |kS Nintijr:   r:   r;   <lambda>"       zeye_Shaping.<locals>.<lambda>r5   nr:   r:   r;   eye_Shaping!      rJ   c                 C   r=   )Nc                 S      dS Nr   r:   rB   r:   r:   r;   rE   &       zzeros_Shaping.<locals>.<lambda>rG   rH   r:   r:   r;   zeros_Shaping%   rK   rO   c                   @   r4   )PropertiesOnlyMatrixNr6   r:   r:   r:   r;   rP   )   r<   rP   c                 C   r=   )Nc                 S   r>   r?   r@   rB   r:   r:   r;   rE   .   rF   z eye_Properties.<locals>.<lambda>rP   rH   r:   r:   r;   eye_Properties-   rK   rR   c                 C   r=   )Nc                 S   rL   rM   r:   rB   r:   r:   r;   rE   2   rN   z"zeros_Properties.<locals>.<lambda>rQ   rH   r:   r:   r;   zeros_Properties1   rK   rS   c                   @   r4   )OperationsOnlyMatrixNr6   r:   r:   r:   r;   rT   5   r<   rT   c                 C   r=   )Nc                 S   r>   r?   r@   rB   r:   r:   r;   rE   :   rF   z eye_Operations.<locals>.<lambda>rT   rH   r:   r:   r;   eye_Operations9   rK   rV   c                 C   r=   )Nc                 S   rL   rM   r:   rB   r:   r:   r;   rE   >   rN   z"zeros_Operations.<locals>.<lambda>rU   rH   r:   r:   r;   zeros_Operations=   rK   rW   c                   @   r4   )ArithmeticOnlyMatrixNr6   r:   r:   r:   r;   rX   A   r<   rX   c                 C   r=   )Nc                 S   r>   r?   r@   rB   r:   r:   r;   rE   F   rF   z eye_Arithmetic.<locals>.<lambda>rX   rH   r:   r:   r;   eye_ArithmeticE   rK   rZ   c                 C   r=   )Nc                 S   rL   rM   r:   rB   r:   r:   r;   rE   J   rN   z"zeros_Arithmetic.<locals>.<lambda>rY   rH   r:   r:   r;   zeros_ArithmeticI   rK   r[   c                   @   r4   )SpecialOnlyMatrixNr6   r:   r:   r:   r;   r\   M   r<   r\   c                   @   r4   )CalculusOnlyMatrixNr6   r:   r:   r:   r;   r]   Q   r<   r]   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 )N      )   r^   r_            r`   r`   rb   r`   ra   rb   rc   r`   r^   r_   )rf   re   ra   rc   )r   rowscolslistr1   r:   r:   r;   test__MinimalMatrixU   s      $&rk   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   r1   r   r&   r:   r:   r:   r;   	test_kindh   s   ""$(rm   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   )r5   Zvecrh   range)mZm_vecrC   r:   r:   r;   test_vecs   s   rp   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   rd   )r   r(   r*   r)   r+   Ztodok)abcdm1m2m3Zm4r:   r:   r;   
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Halfr1   r2   ZZeror3   r5   tolist)lstZflat_lstro   r:   r:   r;   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^   )r5   r   r|   r}   r1   Ztodod)ro   dictr:   r:   r;   
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   rb   rc         	   c                      
     dS Nrb   row_delr:   er:   r;   rE         
 z"test_row_col_del.<locals>.<lambda>c                      r   Nr   r:   r   r:   r;   rE      r   c                      r   r   col_delr:   r   r:   r;   rE      r   c                      r   r   r   r:   r   r:   r;   rE      r   r^   rf   re   r`   ra   rb   r   r   r   r   r   rc   r   )r5   r.   
IndexErrorr   r    r   r:   r:   r   r;   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    r1   r2   r3   get_diag_blocks)rt   ru   rv   r:   r:   r;   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    r1   r2   r3   r!   r5   rg   rh   r   )rt   ru   rv   ABCDr:   r:   r;   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^   )r5   shapero   r:   r:   r;   
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 r?   r:   rB   r:   r:   r;   rE          ztest_reshape.<locals>.<lambda>)r   r_   r`   r^   )r_   ra   r^   r_   ra   rb   r^   rc   ))r   r`   r^   r_   r`   r^   )r_   ra   r^   r_   ra   rb   )rJ   Zreshaper    r5   m0rx   r:   r:   r;   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`   rf   )r`   ra   r   )r5   rowr    colr   r:   r:   r;   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   )rJ   Zrow_joinr    r:   r:   r:   r;   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`   )rJ   Zcol_joinr    r:   r:   r:   r;   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   rb   r   ra   r_   r   )r    rn   insertr-   rJ   Z
row_insertr   r~   )Zr4rC   lr:   r:   r;   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   rb   r   r   r   ra   r_   r   rc   r^   )r`   r   r   r^   r^   r   r   r   )r   r`   r   r^   r^   r   r   r   )r   r   r`   r^   r^   r   r   r   )r   r   r   r^   r^   r`   r   r   )r   r   r   r^   r^   r   r`   r   )r   r   r   r^   r^   r   r   r`   )	r    rn   r   r-   rO   Z
col_insertr   r~   rJ   )Zc4rC   r   r:   r:   r;   test_col_insert   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_   r:   rB   r:   r:   r;   rE      rF   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   extractr:   r   r:   r;   rE          c                      r   )Nr   r_   r   r:   r   r:   r;   rE      r   )r5   r   r    rn   r.   r   r:   r:   r   r;   test_extract   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   r:   rB   r:   r:   r;   rE      rF   ztest_hstack.<locals>.<lambda>c                 S   r   r   r:   rB   r:   r:   r;   rE      rF   )	r   r`   r^   r   r`   r^   r   r`   r^   )	r_   ra   rb   r_   ra   rb   r_   ra   rb   )	rc   r   r   rc   r   r   rc   r   r   )	r   r   r   r   r   r   r   r   r   c                            S r?   )hstackr:   ro   ry   r:   r;   rE     rF   r   r`   r^   rc   )r5   r   r    r.   r   r%   rg   rh   )M1M2ZM3ZM4r:   r   r;   test_hstack   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   r:   rB   r:   r:   r;   rE     rF   ztest_vstack.<locals>.<lambda>c                 S   r   r   r:   rB   r:   r:   r;   rE     rF   r   r   )rc   r   r   )r   r   r   c                      r   r?   )vstackr:   r   r:   r;   rE   !  rF   )r5   r   r    r.   r   r:   r:   r   r;   test_vstack  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`   )rP   r1   Zatomsr   r|   ZNegativeOner   r   r:   r:   r;   
test_atoms&  s    r   c                   C   s    t tgdggjthksJ d S rM   )rP   r1   Zfree_symbolsr:   r:   r:   r;   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^   )rP   r1   r2   hasr3   r   r   r:   r:   r;   test_has0  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 )Nr1   r^   r`   Fr_   r   Tsimplifyc                 S   s   | S r?   r:   rj   r:   r:   r;   rE   @  rN   z(test_is_anti_symmetric.<locals>.<lambda>c                 S      g | ]}|  qS r:   expand.0r1   r:   r:   r;   
<listcomp>B      z*test_is_anti_symmetric.<locals>.<listcomp>c                 S   r   r:   r   r   r:   r:   r;   r   D  r   )r   rP   Zis_anti_symmetricr2   r   r|   ri   )r1   ro   r:   r:   r;   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_   ))rb   r   r   rc   rq   ))rb   r   r   )r   rc   r   r   )	rP   Zis_diagonalis_symmetricr!   r%   r    r1   r2   r   r   r:   r:   r;   test_diagonal_symmetricalH  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)rP   r   Zis_hermitianr1   rt   r:   r:   r;   test_is_hermitianh  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   )rR   Zis_IdentityrP   r%   r$   r:   r:   r:   r;   test_is_Identitys  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 )NTr`   r^   r_   ra   rb   rc   r   r   Frb   rc   r   r`   r_   rf   r^   )rP   r1   Zis_symbolicr   r:   r:   r;   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 )Nrf   Tr`   r^   r_   F)rP   Zis_upperr   r:   r:   r;   test_is_upper     r   c                  C   r   )Nrf   Fr`   r^   r_   T)rP   Zis_lowerr   r:   r:   r;   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^   )rP   Z	is_squarer   r:   r:   r;   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`   )rP   r   r   r:   r:   r;   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   rb   r   r_   )	r_   r^   r   ra   ra   r`   r`   rb   r^   )	r_   r^   r   ra   ra   r`   r`   rb   r^   Fr   )rP   Zis_upper_hessenbergZis_lower_hessenbergr   r:   r:   r;   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`   Frt   T)Znonzero)rP   Zis_zero_matrixr%   r"   r1   r   r   r:   r:   r;   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_   r1   Trealr   r`   )setrP   valuesr   rj   r:   r:   r;   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^   r:   rj   r:   r:   r;   rE     r   z test_applyfunc.<locals>.<lambda>r^   c                 S   rL   rM   r:   rj   r:   r:   r;   rE     rN   c                 S   rL   Nr`   r:   rj   r:   r:   r;   rE     rN   )rT   r"   Z	applyfuncr%   r$   )r   r:   r:   r;   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   rT   Zadjointr    )ZdatZansr:   r:   r;   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   )rT   r   ZImaginaryUnitZas_real_imag)rx   rz   rt   ru   r:   r:   r;   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   rb   r`   r^   r   r`   r^   )rT   r   Tr    r   	conjugateHMr:   r:   r;   test_conjugate  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^   )rT   r   r1   Zdoitr    r   r:   r:   r;   	test_doit  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`   rb   rc   c                 3   s(    | ]}   |  |   kV  qd S r?   Zevalfr   rC   r   r:   r;   	<genexpr>  s   & ztest_evalf.<locals>.<genexpr>c                 3   ,    | ]}  d |  |  d kV  qdS r^   Nr  r  r   r:   r;   r       * c                 3   r  r  rH   r  r   r:   r;   r    r  )rT   r   allrn   r:   r:   r   r;   
test_evalf  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_   rt   Tr   r`   )complex)
rT   r1   r2   r   r    r   r   r   r   r   )r   rx   rt   r:   r:   r;   test_expand   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   )rT   r   r1   r   r2   Zrefiner   r   r    Zpositivenegativer   r:   r:   r;   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 r?   r:   rB   )Gr:   r;   rE     rF   ztest_replace.<locals>.<lambda>c                    r  r?   r:   rB   Fr:   r;   rE     rF   r   r   rT   replace)Kr   Nr:   )r  r  r;   test_replace  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  r?   r:   rB   r  r:   r;   rE   &  rF   z"test_replace_map.<locals>.<lambda>Tr  )r  r  r   r  r:   r  r;   test_replace_map"  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   rc   ))ra   r_   r^   r`   r   r   ))r^   ra   r`   r_   i)r_   r`   )ra   r^   )r    Zrot90r   r:   r:   r;   
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 )
NrI   fr`   r^   )ratio   r_   ra   "   )r   r   rT   r1   r2   r   r   r   r    r
   tracer   )rI   r  r   eqro   r:   r:   r;   test_simplify2  s    :&$"r%  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   rb   r^   r   r   r  T)Zsimultaneous)rT   r1   subsr    r2   r:   r:   r:   r;   	test_subsD  s   4(($(r'  c                  C   s.   t g dg dg dg} |  dksJ d S )Nr   )r   rb   r   )r   r   r      )rT   r#  r   r:   r:   r;   
test_traceP  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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   rb   r^   r   r   r  )rT   r1   Zxreplacer    r2   r:   r:   r:   r;   test_xreplaceW  s   $r*  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   rb   rc   r   r   r   r   r      c                      s     ddggS )Nr   rb   )permuter:   r   r:   r;   rE   a  r   ztest_permute.<locals>.<lambda>c                      s     tdS )Nr1   )r,  r   r:   r   r:   r;   rE   b  s    r   r^   r`   r   )r   r   r   r+  r   rh   )orientation)r^   r_   r`   ra   )rc   r   rb   r   )r   r   r   r+  Zbackward)	direction)r-  r.  )r_   r`   r^   ra   )r   rb   rc   r   )r   r   r   r+  )r`   r^   r   r_   )Permutation)
rT   r.   r   
ValueErrorZpermute_rowsr,  r    Zpermute_colsZsympy.combinatoricsr/  )ru   r/  r:   r   r;   test_permute^  sH    "$r1  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`   )rT   Zupper_triangular)r   Rr:   r:   r;   test_upper_triangular  s6   

r5  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 )Nr2  )r`   r   r   r   )r`   r`   r   r   )r`   r`   r`   r   r^   r   r3  )rT   Zlower_triangularrX   )r   Lr:   r:   r;   test_lower_triangular  s6   

r7  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^   )rX   r1   r2   absr   r   r:   r:   r;   test_abs  s   ,r9  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 )
Nrf   r^   i)r^   ra   rc   ra   ir`   c                           S r?   r:   r:   ro   rI   r:   r;   rE     r   ztest_add.<locals>.<lambda>)rX   r1   r2   r3   r.   r   r:   r:   r;  r;   test_add  s   &Br<  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 r?   r:   r:   rt   ru   r:   r;   rE     r   z%test_multiplication.<locals>.<lambda>c                      s    i  S r?   r:   r:   r   r:   r;   rE     r   rq   r   rr   r^   rs   rc   rd   )r^   r      r  r   z	c = a @ bra   c                      s
     S r?   )multiply_elementwiser:   r>  r:   r;   rE     r   r1   r_   rb   r      z	c = 5 @ br`   )rX   r.   r   	TypeErrorevalSyntaxErrorr@  r#   r   
isinstancer1   r    r$   r   )rv   hc2r   _hr   r:   r>  r;   test_multiplication  s~   

rI  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__rC  rD  rB  r   r:   r:   r;   test_matmul#  s"   rM  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>.fooFrd   N)r7   r8   r9   Z	is_MatrixZis_MatrixLiker   r:   r:   r:   r;   fooA  s    rN  r`   r^   r_   ra   N)r   r    )rN  r   ru   r:   r:   r;   test_non_matmul<  s
   ,0rO  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    r:   r:   r:   r;   rE   M  rF   ztest_power.<locals>.<lambda>r^   r_   ra   rb   )i  i  i,*  i7  )r^   r`   r_   )ra   r^   ra   )rc   r+  r`   )	i"  i     i  i  ip  i  i  i  r   r`   d   rq   r   r   rA        Zcayley)methodmultiply)r.   r   rX   r"   r	   r    powr   r:   r:   r;   
test_powerL  s    4$rX  c                  C   s.   t ddddg} |  t ddddgksJ d S )Nr`   r^   r   r   rY   rH   r:   r:   r;   test_negZ  s   rY  c                  C   s0   t ddddg} | |  t ddddgksJ d S )Nr`   r^   r   rY   rH   r:   r:   r;   test_sub_  s    rZ  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   )rX   r   r}   rH   r:   r:   r;   test_divd  s   *r[  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  )ri   r\   r"   typer    r:   r:   r:   r;   test_eyei  s   r]  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^   r2  r_   r`   r`   r`   r  )ri   r\   r$   r    r\  r:   r:   r:   r;   	test_onesp  
   $r`  c                   C   r^  )Nr^   r3  r_   r   r  )ri   r\   r%   r    r\  r:   r:   r:   r;   
test_zerosx  ra  rb  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   rb   rc   r   )r   r   r   r   r   r   )r   r   r`   r^   r   r   )r   r   r_   ra   r   r   )r   r   r   r   rb   rc   c                      s    dddS )Nr   rb   rg   r:   r:   rt   ru   rv   r!   r:   r;   rE         z test_diag_make.<locals>.<lambda>rc  )rh   )rg   rh   F)unpackr  rf   r  r  )r   r   r`   r   )r   r   r   r^   )r\   r!   r    r1   r2   r3   r.   r0  r\  r   r$   r:   r:   rd  r;   test_diag_make  s    		&&.
" rg  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`   rb   r   )r_   r   r^   )r^   rd   c                      r   r   diagonalr:   r   r:   r;   rE     r   ztest_diagonal.<locals>.<lambda>c                      r   )Nr  rh  r:   r   r:   r;   rE     r   c                      s
     tS r?   )ri  r   r:   r   r:   r;   rE     r   c                    s   i | ]
}|t  |qS r:   )ri   ri  r  r   r:   r;   
<dictcomp>  s    z!test_diagonal.<locals>.<dictcomp>)r    rn   ri  tupler\  r&   r.   r0  r$   r'   rg   rh   )rw   sr:   )r   ro   r;   test_diagonal  s(   
rm  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)sizero  upper)Zband)rp  eigenvalro  )r^   r`   r   )r   r^   r`   r   lower)r^   r   r   r   r   c                   S   
   t dS r   r\   jordan_blockr:   r:   r:   r;   rE     r   z#test_jordan_block.<locals>.<lambda>c                   S   s   t ddS )Ng      @r^   ru  r:   r:   r:   r;   rE     rF   c                   S   s   t jddS )Nr^   rn  ru  r:   r:   r:   r;   rE     rF   c                   S   s   t jdddS )Nr^   ra   )ro  rr  ru  r:   r:   r:   r;   rE     s    )rp  rr  )r\   rv  r    r.   r0  r:   r:   r:   r;   test_jordan_block  s:   
rw  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)	normalizerb   r   irc   r   )r   r`   r   )r_   rc   r   )r   rb   r^   r   r         r   rf   )r`   ra   rb   c                         t j ddiS NZ	rankcheckTr    orthogonalizer:   Zvecsr:   r;   rE     r   z$test_orthogonalize.<locals>.<lambda>re   r   c                      r{  r|  r}  r:   r  r:   r;   rE     r   )r    r~  r   r   r.   r0  r;  r:   r  r;   test_orthogonalize  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wplusr:   r:   r;   test_wilkinson  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   r]   diffr    r1   r2   ro   r:   r:   r;   	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   r]   Z	integrater    r  r:   r:   r;   test_integrateB  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    r:   r   r:   r;   rE   U  re  z test_jacobian2.<locals>.<lambda>c                      s
     S r?   )r  r:   r   r:   r;   rE   V  r   )r   r]   r   r   r    r  r.   rB  )rhophiXYJr:   r   r;   test_jacobian2H  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`   rb   )r   r]   limitr    r   r  r:   r:   r;   
test_limitY  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 )Nrf   re   r   r_  c                      s     S r?   r:   r:   r   vr:   r;   rE   b  r   z"test_issue_13774.<locals>.<lambda>c                      r=  r?   r:   r:   r  r:   r;   rE   c  r   )r    r.   rB  r:   r:   r  r;   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 )Nr1   r2   c                   S   rt  r   )r    	companionr:   r:   r:   r;   rE   h  r   z test_companion.<locals>.<lambda>c                      s   t tdg S r   r    r  r,   r:   rj   r:   r;   rE   i  re  c                      s   t tddg S r   r  r:   rj   r:   r;   rE   j  r   c                      s   t t   gS r?   r  r:   r1   r2   r:   r;   rE   k  s    zc0:3r`   r   )r   r.   r0  r   r    r  r,   )Zc0c1rG  r:   r  r;   test_companione  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 zrf   r`   r^   r_   )r`   r`   r`   r`   r`   )r   r    r&  zip)r1   r2   r3   r   r   r:   r:   r;   test_issue_10589t  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)r7   r8   r9   r(   Z_op_priorityr:   r:   r:   r;   Foo  s    r  r^   r   r   r   rA  rS  )r*   r    rE  )r  rt   ru   rv   r:   r:   r;   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 r?   r:   r:   r   r   r:   r;   rE     r   z"test_issue_18956.<locals>.<lambda>c                      r:  r?   r:   r:   r  r:   r;   rE     r   )Arrayr    r.   rB  r:   r:   r  r;   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   r:   selfr:   r:   r;   __iter__  s   ztest__eq__.<locals>.My.__iter__c                 S   s   t | | S r?   )ri   )r  rC   r:   r:   r;   __getitem__  s   z"test__eq__.<locals>.My.__getitem__N)r7   r8   r9   r  r  r:   r:   r:   r;   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 r?   rP  r  r:   r:   r;   _sympy_  s   z$test__eq__.<locals>.My_sympy._sympy_N)r7   r8   r9   r  r:   r:   r:   r;   My_sympy  s    r  )objectr    )r  rt   r  r:   r:   r;   
test__eq__  s
   r  N)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.commonr   r   r   r   r   r   r   r   r   r   Zsympy.matrices.matricesr   Zsympy.matricesr    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   Zsympy.polys.polytoolsr,   Zsympy.utilities.iterablesr-   Zsympy.testing.pytestr.   r/   Z#sympy.tensor.array.dense_ndim_arrayr0   r  Z	sympy.abcr1   r2   r3   r5   rJ   rO   rP   rR   rS   rT   rV   rW   rX   rZ   r[   r\   r]   rk   rm   rp   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  r  r%  r'  r)  r*  r1  r5  r7  r9  r<  rI  rM  rO  rX  rY  rZ  r[  r]  r`  rb  rg  rm  rw  r  r  r  r  r  r  r  r  r  r  r  r  r:   r:   r:   r;   <module>   s    08
			
 		$!!SO"

