a
    {d                     @   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                   @   s   e Zd ZdS )ShapingOnlyMatrixN__name__
__module____qualname__ r9   r9   o/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/sympy/matrices/tests/test_commonmatrix.pyr4      s   r4   c                 C   s   t | | dd S )Nc                 S   s   t | |kS Nintijr9   r9   r:   <lambda>"       zeye_Shaping.<locals>.<lambda>r4   nr9   r9   r:   eye_Shaping!   s    rF   c                 C   s   t | | dd S )Nc                 S   s   dS Nr   r9   r>   r9   r9   r:   rA   &   rB   zzeros_Shaping.<locals>.<lambda>rC   rD   r9   r9   r:   zeros_Shaping%   s    rH   c                   @   s   e Zd ZdS )PropertiesOnlyMatrixNr5   r9   r9   r9   r:   rI   )   s   rI   c                 C   s   t | | dd S )Nc                 S   s   t | |kS r;   r<   r>   r9   r9   r:   rA   .   rB   z eye_Properties.<locals>.<lambda>rI   rD   r9   r9   r:   eye_Properties-   s    rK   c                 C   s   t | | dd S )Nc                 S   s   dS rG   r9   r>   r9   r9   r:   rA   2   rB   z"zeros_Properties.<locals>.<lambda>rJ   rD   r9   r9   r:   zeros_Properties1   s    rL   c                   @   s   e Zd ZdS )OperationsOnlyMatrixNr5   r9   r9   r9   r:   rM   5   s   rM   c                 C   s   t | | dd S )Nc                 S   s   t | |kS r;   r<   r>   r9   r9   r:   rA   :   rB   z eye_Operations.<locals>.<lambda>rM   rD   r9   r9   r:   eye_Operations9   s    rO   c                 C   s   t | | dd S )Nc                 S   s   dS rG   r9   r>   r9   r9   r:   rA   >   rB   z"zeros_Operations.<locals>.<lambda>rN   rD   r9   r9   r:   zeros_Operations=   s    rP   c                   @   s   e Zd ZdS )ArithmeticOnlyMatrixNr5   r9   r9   r9   r:   rQ   A   s   rQ   c                 C   s   t | | dd S )Nc                 S   s   t | |kS r;   r<   r>   r9   r9   r:   rA   F   rB   z eye_Arithmetic.<locals>.<lambda>rQ   rD   r9   r9   r:   eye_ArithmeticE   s    rS   c                 C   s   t | | dd S )Nc                 S   s   dS rG   r9   r>   r9   r9   r:   rA   J   rB   z"zeros_Arithmetic.<locals>.<lambda>rR   rD   r9   r9   r:   zeros_ArithmeticI   s    rT   c                   @   s   e Zd ZdS )SpecialOnlyMatrixNr5   r9   r9   r9   r:   rU   M   s   rU   c                   @   s   e Zd ZdS )CalculusOnlyMatrixNr5   r9   r9   r9   r:   rV   Q   s   rV   c                  C   s|  t ddg d} | jdksJ | jdks,J | d dks<J | d dksLJ t| g dks`J t| dd d f g dksJ t| d d df ddgksJ t| d d d d f t| ksJ | d d d d f | ksJ t | | ksJ t g dg dg| ksJ t g dg df| ks,J t ddg| ksBJ t d	| ksTJ t ddgdd
gddgg| krxJ d S )N      )   rW   rX            rY   rY   r[   rY   rZ   r[   r\   rY   rW   rX   )r_   r^   rZ   r\   )r   rowscolslistr1   r9   r9   r:   test__MinimalMatrixU   s       $rd   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sDJ t ddg jttks^J t tggjttksxJ t dt dggggjttksJ tdggjttksJ tdt dggggjttksJ d S )NrY   rW   rX   rZ   r   )r    kindr   r   r1   r   r&   r9   r9   r9   r:   	test_kindh   s    ""$rf   c                  C   sL   t ddg d} |  }|jdks&J tdD ]}|| |d ks.J q.d S )NrW   )rY   rX   rW   rZ   rY   rZ   )r4   Zvecra   range)mZm_vecr?   r9   r9   r:   test_vecs   s
    ri   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 J d S )Nza:d)r   r   r   rY   rY   r   r]   )r   r(   r*   r)   r+   Ztodok)abcdm1m2m3Zm4r9   r9   r:   
test_todok{   s    0rt   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sJ d S )NrW   rX   rZ   )	r   OneHalfr1   r2   ZZeror3   r4   tolist)lstZflat_lstrh   r9   r9   r:   test_tolist   s    82ry   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sNJ d S )NrX   rW   r   rY   r   rY   rW   )r4   r   ru   rv   r1   Ztodod)rh   dictr9   r9   r:   
test_todod   s    "r|   c                      sF  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rtg d
g dgksn J  d d	  krtddgddgddggksn J  d d  krtg d
g dgksn J  d d  kr<tddgddgddggksBn J d S )NrX   	rY   rW   rX   rZ   r[   r\         	   c                      s
     dS Nr[   row_delr9   er9   r:   rA      rB   z"test_row_col_del.<locals>.<lambda>c                      s
     dS Nr   r9   r   r9   r:   rA      rB   c                      s
     dS r   col_delr9   r   r9   r:   rA      rB   c                      s
     dS r   r   r9   r   r9   r:   rA      rB   rW   r_   r^   rY   rZ   r[   r~   r   r~   r   r   r\   r   )r4   r.   
IndexErrorr   r    r   r9   r9   r   r:   test_row_col_del   s    6<8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sZJ | |gkslJ | |gks~J d S NrY   rW   rX   )r    r1   r2   r3   get_diag_blocks)rm   rn   ro   r9   r9   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sJ | | ||gksJ | | ||gksJ | |||gksJ d S r   )	r    r1   r2   r3   r!   r4   r`   ra   r   )rm   rn   ro   ABCDr9   r9   r:   test_get_diag_blocks2   s     4r   c                  C   s"   t ddddg} | jdksJ d S )NrY   rW   r   rY   rW   )r4   shaperh   r9   r9   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sLJ |d	d
tdksdJ d S )NrX   rY   r   )	rY   r   r   r   rY   r   r   r   rY   rZ   c                 S   s   | | S r;   r9   r>   r9   r9   r:   rA      rB   ztest_reshape.<locals>.<lambda>)rz   rX   rY   rW   )rX   rZ   rW   rX   rZ   r[   rW   r\   ))r   rY   rW   rX   rY   rW   )rX   rZ   rW   rX   rZ   r[   )rF   Zreshaper    r4   m0rq   r9   r9   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sLJ d S )NrX   r}   r   rY   r_   )rY   rZ   r~   )r4   rowr    colr   r9   r9   r:   test_row_col   s    r   c                   C   s8   t dtg dtg dg dg dgks4J d S )NrX   r~   r~   r~   )rY   r   r   r~   )r   rY   r   r~   )r   r   rY   r~   )rF   Zrow_joinr    r9   r9   r9   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 )NrX   r   rY   r   r   )r   rY   r   )r   r   rY   )rF   Zcol_joinr    r9   r9   r9   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rZ   rZ   rZ   r[   r   rZ   rX   r   )r    rg   insertr-   rF   Z
row_insertr   rw   )Zr4r?   lr9   r9   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sJ d S )Nr   r   r[   r   r   r   rZ   rX   r   r\   rW   )rY   r   r   rW   rW   r   r   r   )r   rY   r   rW   rW   r   r   r   )r   r   rY   rW   rW   r   r   r   )r   r   r   rW   rW   rY   r   r   )r   r   r   rW   rW   r   rY   r   )r   r   r   rW   rW   r   r   rY   )	r    rg   r   r-   rH   Z
col_insertr   rw   rF   )Zc4r?   r   r9   r9   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s8J  ddgg d
tddg dks`J  tdtd ks|J tt fdd tt fdd d S )NrZ   rX   c                 S   s   | d | S NrX   r9   r>   r9   r9   r:   rA      rB   ztest_extract.<locals>.<lambda>)r   rY   rX   r   rY   rW   )r   rY   rX   rZ   r   
   r   r   rW   )r   r   rW   r   r      c                      s     dgdgS )NrZ   r   extractr9   r   r9   r:   rA      rB   c                      s     dgdgS )Nr   rX   r   r9   r   r9   r:   rA      rB   )r4   r   r    rg   r.   r   r9   r9   r   r:   test_extract   s    ((r   c                     s   t dddd  t dddd    ks2J     t      krvtg dg dg dg d	gks|n J tt fd
d t t ksJ tdd} tdd}tdd}tdd}t | |||  jdkr jdksJ d S )NrZ   rX   c                 S   s   | d | S r   r9   r>   r9   r9   r:   rA      rB   ztest_hstack.<locals>.<lambda>c                 S   s   | d | S r   r9   r>   r9   r9   r:   rA      rB   )	r   rY   rW   r   rY   rW   r   rY   rW   )	rX   rZ   r[   rX   rZ   r[   rX   rZ   r[   )	r\   r~   r   r\   r~   r   r\   r~   r   )	r   r   r   r   r   r   r   r   r   c                      s      S r;   )hstackr9   rh   rr   r9   r:   rA     rB   r   rY   rW   r\   )r4   r   r    r.   r   r%   r`   ra   )M1M2ZM3ZM4r9   r   r:   test_hstack   s"    "r   c                      s   t dddd  t dddd    ks2J     t      krt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sn J tt fd
d t t ksJ d S )NrZ   rX   c                 S   s   | d | S r   r9   r>   r9   r9   r:   rA     rB   ztest_vstack.<locals>.<lambda>c                 S   s   | d | S r   r9   r>   r9   r9   r:   rA     rB   rz   r   )r\   r~   r   )r   r   r   c                      s      S r;   )vstackr9   r   r9   r:   rA   !  rB   )r4   r   r    r.   r   r9   r9   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sPJ d S NrW   rY   )rI   r1   Zatomsr   ru   ZNegativeOner   r   r9   r9   r:   
test_atoms&  s     r   c                   C   s    t tgdggjthksJ d S rG   )rI   r1   Zfree_symbolsr9   r9   r9   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rXJ d S )N)rW   rX   rW   )rI   r1   r2   Zhasr3   r   r   r9   r9   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 sxJ |jdddu sJ |jd	d
 ddu sJ tdddd |D }|jdddu sJ tdddd tjgt|dd   D }| du s
J d S )Nr1   rW   rY   FrX   r   Tsimplifyc                 S   s   | S r;   r9   rc   r9   r9   r:   rA   @  rB   z(test_is_anti_symmetric.<locals>.<lambda>c                 S   s   g | ]}|  qS r9   expand.0r1   r9   r9   r:   
<listcomp>B  rB   z*test_is_anti_symmetric.<locals>.<listcomp>c                 S   s   g | ]}|  qS r9   r   r   r9   r9   r:   r   D  rB   )r   rI   Zis_anti_symmetricr2   r   ru   rb   )r1   rh   r9   r9   r:   test_is_anti_symmetric:  s    D*r   c                  C   sf  t ddg d} |  rJ |  s(J | jdds8J t ddg d} |  sTJ t ddtddd} |  stJ |  sJ t ddg d} | tdddksJ t ddtdd} |  rJ |  sJ t d	} |  sJ t d
} |  sJ tdddtd dt  d ttd d ddtddg	} |  s:J | jddrLJ |  jddsbJ d S )NrW   r   rY   rY   r   Fr   rY   r   r   rY   rX   rY   )	rY   r   r   r   rW   r   r   r   rX   ))r[   r   r   r\   rj   ))r[   r   r   )r   r\   r   r   )	rI   Zis_diagonalis_symmetricr!   r%   r    r1   r2   r   r   r9   r9   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 sHJ t ttgt dgg} | jd u slJ t tdgt dgg} | jdu sJ d S )NrY   rW   F)rI   r   Zis_hermitianr1   rm   r9   r9   r:   test_is_hermitianh  s    
r   c                   C   sJ   t djsJ ttdjr J ttdjr2J tg dgjrFJ d S )NrX   r   )rK   Zis_IdentityrI   r%   r$   r9   r9   r9   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 sHJ t g dddtdgg} |  du spJ t dtd	gg} |  du sJ t g d
g} |  du sJ t dgtgd	gg} |  du sJ t dgdgd	gg} |  du sJ d S )NTrY   rW   rX   rZ   r[   r\   r~   r   Fr[   r\   r   rY   rX   r_   rW   )rI   r1   Zis_symbolicr   r9   r9   r:   test_is_symbolic{  s    r   c                  C   sB   t g dg} | jdu sJ t dgdgdgg} | jdu s>J d S )Nr_   TrY   rW   rX   F)rI   Zis_upperr   r9   r9   r:   test_is_upper  s    r   c                  C   sB   t g dg} | jdu sJ t dgdgdgg} | jdu s>J d S )Nr_   FrY   rW   rX   T)rI   Zis_lowerr   r9   r9   r:   test_is_lower  s    r   c                  C   s<   t dgdgg} t ddgddgg}| jr.J |js8J d S NrY   rW   )rI   Z	is_squarer   r9   r9   r:   test_is_square  s    
r   c                  C   s<   t ddg d} |  sJ t ddg d} |  r8J d S )NrW   r   )r   rY   r   rY   )rI   r   r   r9   r9   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 sjJ t g dg dg dg} | jrJ d S )	N)rX   rZ   rY   )rW   rZ   r[   rz   rX   )	rX   rW   r   rZ   rZ   rY   rY   r[   rW   )	rX   rW   r   rZ   rZ   rY   rY   r[   rW   Fr   )rI   Zis_upper_hessenbergZis_lower_hessenbergr   r9   r9   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rRJ t tdgddggjd kspJ t tdgddggjdksJ tddd} t | dgddggjdksJ d S )	Nr   rX   rZ   rY   Frm   T)Znonzero)rI   Zis_zero_matrixr%   r"   r1   r   r   r9   r9   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sXJ d S )	NrW   )r   rY   rW   rX   >   rY   rW   rX   r1   Trealr   rY   )setrI   valuesr   rc   r9   r9   r:   test_values  s    r   c                  C   sb   t td} | dd tdd ks*J | dd tdksDJ | dd tdks^J d S )NrX   c                 S   s   d|  S NrW   r9   rc   r9   r9   r:   rA     rB   z test_applyfunc.<locals>.<lambda>rW   c                 S   s   dS rG   r9   rc   r9   r9   r:   rA     rB   c                 S   s   dS NrY   r9   rc   r9   r9   r:   rA     rB   )rM   r"   Z	applyfuncr%   r$   )r   r9   r9   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   rY   )r   rM   Zadjointr    )ZdatZansr9   r9   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s`J || kslJ d S )NrW   r   rY   rX   rZ   )rM   r   ZImaginaryUnitZas_real_imag)rq   rs   rm   rn   r9   r9   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snJ | j| jjksJ | jtddgt dgddggksJ d S )Nr   r[   rY   rW   r   rY   rW   )rM   r   Tr    r   	conjugateHMr9   r9   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sFJ d S )NF)evaluater   rW   )rM   r   r1   Zdoitr    r   r9   r9   r:   	test_doit  s    r   c                      sr   t ddtddg t fddtdD s2J t fddtdD sPJ t fddtdD snJ d S )	NrW   rY   r[   r\   c                 3   s&   | ]}   |  |   kV  qd S r;   Zevalfr   r?   r   r9   r:   	<genexpr>  rB   ztest_evalf.<locals>.<genexpr>c                 3   s*   | ]"}  d |  |  d kV  qdS rW   Nr   r   r   r9   r:   r     rB   c                 3   s*   | ]"}  d |  |  d kV  qdS r   rD   r   r   r9   r:   r     rB   )rM   r   allrg   r9   r9   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sJ tddd}t ddtt| gjddtt|tt	|  gksJ d S )NrW   rX   rm   Tr   rY   )complex)
rM   r1   r2   r   r    r   r   r   r   r   )r   rq   rm   r9   r9   r:   test_expand   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sJ | t	tt	t@ }|ttd tgttd  td t ggksJ | t
tt
t@ }|ttd t gt td  td  t ggks>J d S r   )rM   r   r1   r   r2   Zrefiner   r   r    Zpositivenegativer   r9   r9   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sPJ d S )NF, GclsrW   c                    s    | | S r;   r9   r>   )Gr9   r:   rA     rB   ztest_replace.<locals>.<lambda>c                    s    | | S r;   r9   r>   Fr9   r:   rA     rB   r   r   rM   replace)Kr   Nr9   )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sJ d S )	Nr   r   rW   r   rY   c                    s    | | S r;   r9   r>   r   r9   r:   rA   &  rB   z"test_replace_map.<locals>.<lambda>Tr   )r   r   r   r  r9   r   r:   test_replace_map"  s    >r  c                  C   s   t ddgddgg} | | d  kr4| dks:n J | d| d  krn| d  krnt dkstn J | d| d	  kr| d
  krt dksn J |  | d  kr| d  krt dksn J d S )NrY   rW   rX   rZ   r   r   r\   ))rZ   rX   rW   rY   r   r~   ))rW   rZ   rY   rX   i)rX   rY   )rZ   rW   )r    Zrot90r   r9   r9   r:   
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sJ dt d }t|gg}| t|ggksJ |jt	dt|jt	dggksJ tddgddgg}d|
   tdd	ksJJ d S )
NrE   frY   rW   )Zratio   rX   rZ   "   )r   r   rM   r1   r2   r   r   r   r    r
   tracer   )rE   r	  r   eqrh   r9   r9   r:   test_simplify2  s     :&&r  c                   C   sB  t dtgtdggtdtddgddggks4J 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svJ 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sJ t tdgtt dggtdtditddgddggksJ t tt ggjttd ttd idd	ttd td  ggks>J d S )
NrY   rZ   r[   rW   r   r   r  T)Zsimultaneous)rM   r1   subsr    r2   r9   r9   r9   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   r[   r   )r   r   r      )rM   r  r   r9   r9   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s6J t tdgtt dggtdtditddgddggkstJ d S )NrY   rZ   r[   rW   r   r   r  )rM   r1   Zxreplacer    r2   r9   r9   r9   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rtg d
g dg dgksn J  ddgdd	gg}  jddgdd	ggdd|   krtg dg dg dgksn J  jddgdd	ggdd}  jddgdd	ggddd|   krHtg dg dg dgksNn J  g dtg d
g dg dgks|J ddlm	}  |g dtg d
g dg dgksJ d S )NrX   rZ   )rY   rW   rX   rZ   r[   r\   r~   r   r   r   r      c                      s     ddggS )Nr   r[   )permuter9   r   r9   r:   rA   a  rB   ztest_permute.<locals>.<lambda>c                      s     tdS )Nr1   )r  r   r9   r   r9   r:   rA   b  rB   r   rW   rY   r   )r   r   r   r  r   ra   )orientation)rW   rX   rY   rZ   )r\   r~   r[   r   )r   r   r   r  Zbackward)	direction)r  r  )rX   rY   rW   rZ   )r~   r[   r\   r   )r   r   r   r  )rY   rW   r   rX   )Permutation)
rM   r.   r   
ValueErrorZpermute_rowsr  r    Zpermute_colsZsympy.combinatoricsr  )rn   r  r9   r   r:   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sRJ | d}|t g dg dg dg dgksJ |  }|t g dg dg dg dgksJ d S )NrY   rY   rY   rY   rW   )r   r   rY   rY   )r   r   r   rY   r   r   r   r   r   )r   rY   rY   rY   )rM   Zupper_triangular)r   Rr9   r9   r:   test_upper_triangular  s6    

r  c                  C   s   t g dg dg dg dg} |  }|tg dg dg dg dgksPJ | d}|tg dg dg dg dgksJ | d}|tg dg dg dg dgksJ d S )Nr  )rY   r   r   r   )rY   rY   r   r   )rY   rY   rY   r   rW   r   r  )rM   Zlower_triangularrQ   )r   Lr9   r9   r:   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<J d S )NrY   r   rW   )rQ   r1   r2   absr   r   r9   r9   r:   test_abs  s    r"  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shJ t ddddgtt fdd	 d S )
Nr_   rW   i)rW   rZ   r\   rZ   irY   c                      s     S r;   r9   r9   rh   rE   r9   r:   rA     rB   ztest_add.<locals>.<lambda>)rQ   r1   r2   r3   r.   r   r9   r9   r#  r:   test_add  s    &Br$  c                     sl  t d t dtt fdd tt fdd   } | d dksNJ | d d	ks^J | d
 dksnJ | d dks~J | d dksJ | d dksJ ztd W n ty   Y nf0 | d dksJ | d d	ksJ | d
 dksJ | d dksJ | d dksJ | d dks"J  | }|t | ks@J |d dksRJ |d dksdJ |d
 dksvJ |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sJ | d
 dt
 ksJ | d dks,J t
 }| |ksBJ d } t	| t sZJ | d dkslJ | d dks~J | d
 dksJ | d dksJ ztd W n ty   Y nZ0 t	| t sJ | d dksJ | d dksJ | d
 dks
J | d dksJ ttdd}tdd	 }t|||g}||t|g|g|ggkshJ d S )N)r   r  r   )r   )rX   r   c                      s     S r;   r9   r9   rm   rn   r9   r:   rA     rB   z%test_multiplication.<locals>.<lambda>c                      s    i  S r;   r9   r9   r   r9   r:   rA     rB   rj   r~   rk   rW   rl   r\   r]   )rW   r      r  r   z	c = a @ brZ   c                      s
     S r;   )multiply_elementwiser9   r%  r9   r:   rA     rB   r1   rX   r[   r      z	c = 5 @ brY   )rQ   r.   r   	TypeErrorevalSyntaxErrorr'  r#   r   
isinstancer1   r    r$   r   )ro   hc2r   Z_hr   r9   r%  r:   test_multiplication  sz    

r/  c                  C   s   t ddgddgg} | dtks&J | dtks8J ztd W n" tyV   Y n tyf   Y n0 ztd W n" ty   Y n ty   Y n0 d S )NrY   rW   rX   rZ   z2 @ aza @ 2)r    
__matmul__NotImplemented__rmatmul__r*  r+  r)  r   r9   r9   r:   test_matmul#  s    r3  c                  C   s   G dd dt } tddgddgg}|  }|| t|d| gd| d| ggksVJ || t|d| gd| d| ggksJ 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>.fooFr]   N)r6   r7   r8   Z	is_MatrixZis_MatrixLiker   r9   r9   r9   r:   fooA  s   r4  rY   rW   rX   rZ   N)r   r    )r4  r   rn   r9   r9   r:   test_non_matmul<  s
    ,r5  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slJ | d tdksJ | d | ksJ tdggd d dd ksJ tddgddggtd tddgddggksJ tddgddgg} | jddd| jdddksJ d S )Nc                   S   s   t dd S )Nr   rW   r    r9   r9   r9   r:   rA   M  rB   ztest_power.<locals>.<lambda>rW   rX   rZ   r[   )i  i  i,*  i7  )rW   rY   rX   )rZ   rW   rZ   )r\   r  rY   )	i"  i     i  i  ip  i  i  i  r   rY   d   rj   r~   r   r(        Zcayley)methodmultiply)r.   r   rQ   r"   r	   r    powr   r9   r9   r:   
test_powerL  s     4r>  c                  C   s.   t ddddg} |  t ddddgks*J d S )NrY   rW   r   r   rR   rD   r9   r9   r:   test_negZ  s    r?  c                  C   s0   t ddddg} | |  t ddddgks,J d S )NrY   rW   r   rR   rD   r9   r9   r:   test_sub_  s    r@  c                  C   s:   t ddddg} | d t ddtjtdd gks6J d S r   )rQ   r   rv   rD   r9   r9   r:   test_divd  s    rA  c                   C   sj   t tddg dksJ t tdg dks6J ttdtksLJ ttjdtdtksfJ d S )NrW   r   r   )rb   rU   r"   typer    r9   r9   r9   r:   test_eyei  s    rC  c                   C   s   t tddg dksJ t tdg dks6J tddtg dg dgksZJ ttdtkspJ ttjdtdtksJ d S )NrW   r  rX   rY   rY   rY   r   )rb   rU   r$   r    rB  r9   r9   r9   r:   	test_onesp  s
    $rE  c                   C   s   t tddg dksJ t tdg dks6J tddtg dg dgksZJ ttdtkspJ ttjdtdtksJ d S )NrW   r  rX   r   r   )rb   rU   r%   r    rB  r9   r9   r9   r:   
test_zerosx  s
    $rF  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sJ  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s J  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sVJ 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sJ ddddtddgddgddggksJ ddg tddgddggksJ tddgtdgdggksJ dddgd	gdddgddgd	ggdd  krrtddgddgd	dggksxn 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sBJ tt
ddddtg dg dgkspJ tt
ddddtddgddgddgddggksJ d S )NrY   rW   rX   )rY   rW   r   r   r   r   )rW   rX   r   r   r   r   r   )rY   rW   r   r   r   r   r   )rW   rX   r   r   r   r   r   rZ   r[   r\   r~   )r   r~   r   r   r   r   )r   r   rY   rW   r   r   )r   r   rX   rZ   r   r   )r   r   r   r   r[   r\   c                      s    dddS )Nr~   r[   r`   r9   r9   rm   rn   ro   r!   r9   r:   rA     rB   z test_diag_make.<locals>.<lambda>rG  )ra   )r`   ra   F)unpackr   r_   r  r  )r   r   rY   r   )r   r   r   rW   )rU   r!   r    r1   r2   r3   r.   r  rB  r   r$   r9   r9   rH  r:   test_diag_make  s     		&&.
" rJ  c                     sB  t ddtd } | dks*J t| dks:J tddksPJ tddksfJ td	d
ks|J t tksJ tddddi}t| t|ksJ tt|ksJ 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>J d S )NrX   r   r   )r   rZ   r   rY   )rY   r[   r   )rX   r~   rW   )rW   r]   c                      s
     dS r   diagonalr9   r   r9   r:   rA     rB   ztest_diagonal.<locals>.<lambda>c                      s
     dS )Nr  rK  r9   r   r9   r:   rA     rB   c                      s
     tS r;   )rL  r   r9   r   r9   r:   rA     rB   c                    s   i | ]}|t  |qS r9   )rb   rL  r   r   r9   r:   
<dictcomp>  s   z!test_diagonal.<locals>.<dictcomp>)r    rg   rL  tuplerB  r&   r.   r  r$   r'   r`   ra   )rp   sr9   )r   rh   r:   test_diagonal  s(    
rP  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sn J t jddddtg dg dg dgksJ 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
J d S )NrX   rW   
eigenvalue)sizerR  upper)Zband)rS  eigenvalrR  )rW   rY   r   )r   rW   rY   r   lower)rW   r   r   r   rz   c                   S   s
   t dS r   rU   jordan_blockr9   r9   r9   r:   rA     rB   z#test_jordan_block.<locals>.<lambda>c                   S   s   t ddS )Ng      @rW   rW  r9   r9   r9   r:   rA     rB   c                   S   s   t jddS )NrW   rQ  rW  r9   r9   r9   r:   rA     rB   c                   S   s   t jdddS )NrW   rZ   )rR  rU  rW  r9   r9   r9   r:   rA     s   )rS  rU  )rU   rX  r    r.   r  r9   r9   r9   r:   test_jordan_block  s:    
rY  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sJ | 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sJ | t dgdggt dgdggt dgdgggksJ | t dgdggg ks4J 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 )NrY   rW   rX   rZ   T)	normalizer[   r   ir\   r   )r   rY   r   )rX   r\   r   )r   r[   rW   r   r         r   r_   )rY   rZ   r[   c                      s   t j ddiS NZ	rankcheckTr    orthogonalizer9   Zvecsr9   r:   rA     rB   z$test_orthogonalize.<locals>.<lambda>r^   r   c                      s   t j ddiS r]  r^  r9   r`  r9   r:   rA     rB   )r    r_  r   r   r.   r  r#  r9   r`  r:   test_orthogonalize  s*    ,$"*"
 .*
""ra  c               
   C   s   t d\} }| t g dg dg dgks0J |t g dg dg dgksRJ t d\} }| t g dg dg d	g d
g dg dg dgksJ |t g dg dg dg d
g dg dg dgksJ d S )NrY   )r   rY   r   )rY   r   rY   )r   rY   rY   )rY   rY   r   rX   )r  rY   r   r   r   r   r   )rY   r   rY   r   r   r   r   )r   rY   r   rY   r   r   r   )r   r   rY   r   rY   r   r   )r   r   r   rY   rY   rY   r   )r   r   r   r   rY   rW   rY   )r   r   r   r   r   rY   rX   )rX   rY   r   r   r   r   r   )rY   rW   rY   r   r   r   r   )r   rY   rY   rY   r   r   r   )r    Z	wilkinson)ZwminusZwplusr9   r9   r:   test_wilkinson  s<    
rb  c                  C   s>   t d\} }tdd| |g}|| tddddgks:J d S )Nx yrW   rY   r   )r   rV   diffr    r1   r2   rh   r9   r9   r:   	test_diff:  s    rf  c                  C   sJ   t d\} }tdd| |g}|| tdd| d d ||  gksFJ d S )Nrc  rW   rY   )r   rV   Z	integrater    re  r9   r9   r:   test_integrateB  s    rg  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sJ tddg d tddg dtt fdd	 tt fd
d	 d S )Nzrho,phirX   rY   rW   r   r   rZ   c                      s     tddgS r   )jacobianr    r9   r   r9   r:   rA   U  rB   z test_jacobian2.<locals>.<lambda>c                      s
     S r;   )rh  r9   r   r9   r:   rA   V  rB   )r   rV   r   r   r    rh  r.   r)  )rhophiXYJr9   r   r:   test_jacobian2H  s    &
rn  c                  C   sJ   t d\} }tddd|  |g}|| dtddtdd|gksFJ d S )Nrc  rW   rY   r[   )r   rV   limitr    r   re  r9   r9   r:   
test_limitY  s    rp  c                      sN   t g dg dg dg g dtt fdd tt fdd d S )Nr_   r^   r   rD  c                      s     S r;   r9   r9   r   vr9   r:   rA   b  rB   z"test_issue_13774.<locals>.<lambda>c                      s     S r;   r9   r9   rq  r9   r:   rA   c  rB   )r    r.   r)  r9   r9   rq  r:   test_issue_13774_  s    rs  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sJ ttd	|| g td
|  gd	| ggksJ ttd	||| g td
d
|  gd	d
| gd
d	| ggksJ d S )Nr1   r2   c                   S   s
   t dS r   )r    	companionr9   r9   r9   r:   rA   h  rB   z test_companion.<locals>.<lambda>c                      s   t tdg S r   r    rt  r,   r9   rc   r9   r:   rA   i  rB   c                      s   t tddg S r   ru  r9   rc   r9   r:   rA   j  rB   c                      s   t t   gS r;   ru  r9   r1   r2   r9   r:   rA   k  rB   zc0:3rY   r   )r   r.   r  r   r    rt  r,   )Zc0Zc1r.  r9   rv  r:   test_companione  s    $$rw  c                  C   s   t d\} }}t| ||g}|t| ||gg d}|tdgdgdggksRJ t| | | | | g| | | | | g| | | | | gg}|t| gdg}|tg dg dg dgksJ d S )Nzx, y zr_   rY   rW   rX   )rY   rY   rY   rY   rY   )r   r    r  zip)r1   r2   r3   r   r   r9   r9   r:   test_issue_10589t  s    ,ry  c                  C   sf   G dd dt } tddg d}| ddg d}|| }t|| sFJ |tddgddggksbJ d S )	Nc                   @   s   e Zd Zejd ZdS )ztest_rmul_pr19860.<locals>.Foog{Gz?N)r6   r7   r8   r(   Z_op_priorityr9   r9   r9   r:   Foo  s   rz  rW   r   r~   r   r(  r9  )r*   r    r,  )rz  rm   rn   ro   r9   r9   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 )NrY   rW   rX   rZ   c                      s     S r;   r9   r9   r   r   r9   r:   rA     rB   z"test_issue_18956.<locals>.<lambda>c                      s     S r;   r9   r9   r|  r9   r:   rA     rB   )Arrayr    r.   r)  r9   r9   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sLJ 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   r9   selfr9   r9   r:   __iter__  s    ztest__eq__.<locals>.My.__iter__c                 S   s   t | | S r;   )rb   )r  r?   r9   r9   r:   __getitem__  s    z"test__eq__.<locals>.My.__getitem__N)r6   r7   r8   r  r  r9   r9   r9   r:   My  s   r  rW   rY   c                   @   s   e Zd Zdd ZdS )ztest__eq__.<locals>.My_sympyc                 S   s   t | S r;   r6  r  r9   r9   r:   _sympy_  s    z$test__eq__.<locals>.My_sympy._sympy_N)r6   r7   r8   r  r9   r9   r9   r:   My_sympy  s   r  )objectr    )r  rm   r  r9   r9   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   r4   rF   rH   rI   rK   rL   rM   rO   rP   rQ   rS   rT   rU   rV   rd   rf   ri   rt   ry   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   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  r>  r?  r@  rA  rC  rE  rF  rJ  rP  rY  ra  rb  rf  rg  rn  rp  rs  rw  ry  r{  r~  r  r9   r9   r9   r:   <module>   s   08
			
 		$!!SO"

