a
    khD                     @   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 s0    Y  dd ZLdd ZMe $ G d d! d!e)e*e,ZNW d   n1 s0    Y  d"d# ZOd$d% ZPe $ G d&d' d'e)e*e-ZQW d   n1 sN0    Y  d(d) ZRd*d+ ZSe $ G d,d- d-e)e*e.ZTW d   n1 s0    Y  d.d/ ZUd0d1 ZVe $ G d2d3 d3e)e*e/ZWW d   n1 s0    Y  e $ G d4d5 d5e)e*e1ZXW d   n1 s"0    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 sJ W d    q1 s0    Y  qt " t||d	u sJ W d    q1 s0    Y  qd S )
Nr   )MatrixRequiredr   r!   r   r   r    MatrixCommon)MatrixDeterminantMatrixReductionsMatrixSubspacesMatrixEigenr"   MatrixDeprecated)r#   ImmutableMatrixr)   r.   c                 S   s    g | ]}|d dgddggqS              ).0MrB   rB   T/var/www/auris/lib/python3.9/site-packages/sympy/matrices/tests/test_commonmatrix.py
<listcomp>Y       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'   s<    $	 2rL   c                   @   s   e Zd ZdS )ShapingOnlyMatrixN__name__
__module____qualname__rB   rB   rB   rE   rM   i   s   rM   Nc                 C   s   t | | dd S )Nc                 S   s   t | |kS NintijrB   rB   rE   <lambda>n   rG   zeye_Shaping.<locals>.<lambda>rM   nrB   rB   rE   eye_Shapingm   s    r\   c                 C   s   t | | dd S )Nc                 S   s   dS Nr   rB   rU   rB   rB   rE   rX   r   rG   zzeros_Shaping.<locals>.<lambda>rY   rZ   rB   rB   rE   zeros_Shapingq   s    r^   c                   @   s   e Zd ZdS )PropertiesOnlyMatrixNrN   rB   rB   rB   rE   r_   v   s   r_   c                 C   s   t | | dd S )Nc                 S   s   t | |kS rR   rS   rU   rB   rB   rE   rX   {   rG   z eye_Properties.<locals>.<lambda>r_   rZ   rB   rB   rE   eye_Propertiesz   s    ra   c                 C   s   t | | dd S )Nc                 S   s   dS r]   rB   rU   rB   rB   rE   rX      rG   z"zeros_Properties.<locals>.<lambda>r`   rZ   rB   rB   rE   zeros_Properties~   s    rb   c                   @   s   e Zd ZdS )OperationsOnlyMatrixNrN   rB   rB   rB   rE   rc      s   rc   c                 C   s   t | | dd S )Nc                 S   s   t | |kS rR   rS   rU   rB   rB   rE   rX      rG   z eye_Operations.<locals>.<lambda>rc   rZ   rB   rB   rE   eye_Operations   s    re   c                 C   s   t | | dd S )Nc                 S   s   dS r]   rB   rU   rB   rB   rE   rX      rG   z"zeros_Operations.<locals>.<lambda>rd   rZ   rB   rB   rE   zeros_Operations   s    rf   c                   @   s   e Zd ZdS )ArithmeticOnlyMatrixNrN   rB   rB   rB   rE   rg      s   rg   c                 C   s   t | | dd S )Nc                 S   s   t | |kS rR   rS   rU   rB   rB   rE   rX      rG   z eye_Arithmetic.<locals>.<lambda>rg   rZ   rB   rB   rE   eye_Arithmetic   s    ri   c                 C   s   t | | dd S )Nc                 S   s   dS r]   rB   rU   rB   rB   rE   rX      rG   z"zeros_Arithmetic.<locals>.<lambda>rh   rZ   rB   rB   rE   zeros_Arithmetic   s    rj   c                   @   s   e Zd ZdS )SpecialOnlyMatrixNrN   rB   rB   rB   rE   rk      s   rk   c                   @   s   e Zd ZdS )CalculusOnlyMatrixNrN   rB   rB   rB   rE   rl      s   rl   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 )Nr?   r@   )r>   r?   r@   rA         r>   r>   rm   r>   rA   rm   rn   r>   r?   r@   )rq   rp   rA   rn   )r   rowscolslistr2   rB   rB   rE   test__MinimalMatrix   s       $rv   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 )Nr>   r?   r@   rA   r   )r#   kindr   r	   r2   r
   r)   rB   rB   rB   rE   	test_kind   s    ""$rx   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vecrs   range)mZm_vecrV   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r|   kr|   kr| |||dksn J d S )Nza:d)r   r   r   r>   r>   r   ro   )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sJ d S )Nr?   r@   rA   )	r   OneHalfr2   r3   ZZeror4   rM   tolist)lstZflat_lstrz   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sNJ d S )Nr@   r?   r   r>   r   r>   r?   )rM   r   r   r   r2   Ztodod)rz   dictrB   rB   rE   
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 )Nr@   	r>   r?   r@   rA   rm   rn         	   c                      s
     dS Nrm   row_delrB   erB   rE   rX      rG   z"test_row_col_del.<locals>.<lambda>c                      s
     dS Nr   rB   r   rB   rE   rX      rG   c                      s
     dS r   col_delrB   r   rB   rE   rX      rG   c                      s
     dS r   r   rB   r   rB   rE   rX      rG   r?   rq   rp   r>   rA   rm   r   r   r   r   r   rn   r   )rM   r   
IndexErrorr   r#   r   rB   rB   r   rE   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 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sJ | | ||gksJ | | ||gksJ | |||gksJ d S r   )	r#   r2   r3   r4   r$   rM   rr   rs   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rz   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sLJ |d	d
tdksdJ d S )Nr@   r>   r   )	r>   r   r   r   r>   r   r   r   r>   rA   c                 S   s   | | S rR   rB   rU   rB   rB   rE   rX     rG   ztest_reshape.<locals>.<lambda>)r   r@   r>   r?   )r@   rA   r?   r@   rA   rm   r?   rn   ))r   r>   r?   r@   r>   r?   )r@   rA   r?   r@   rA   rm   )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sLJ d S )Nr@   r   r   r>   rq   )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s4J 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   rm   r   rA   r@   r   )r#   ry   insertr0   r\   Z
row_insertr   r   )Zr4rV   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sJ d S )Nr   r   rm   r   r   r   rA   r@   r   rn   r?   )r>   r   r   r?   r?   r   r   r   )r   r>   r   r?   r?   r   r   r   )r   r   r>   r?   r?   r   r   r   )r   r   r   r?   r?   r>   r   r   )r   r   r   r?   r?   r   r>   r   )r   r   r   r?   r?   r   r   r>   )	r#   ry   r   r0   r^   Z
col_insertr   r   r\   )Zc4rV   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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 )NrA   r@   c                 S   s   | d | S Nr@   rB   rU   rB   rB   rE   rX   D  rG   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                      s     dgdgS )NrA   r   extractrB   r   rB   rE   rX   H  rG   c                      s     dgdgS )Nr   r@   r   rB   r   rB   rE   rX   I  rG   )rM   r   r#   ry   r   r   rB   rB   r   rE   test_extractC  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 )NrA   r@   c                 S   s   | d | S r   rB   rU   rB   rB   rE   rX   M  rG   ztest_hstack.<locals>.<lambda>c                 S   s   | d | S r   rB   rU   rB   rB   rE   rX   N  rG   )	r   r>   r?   r   r>   r?   r   r>   r?   )	r@   rA   rm   r@   rA   rm   r@   rA   rm   )	rn   r   r   rn   r   r   rn   r   r   )	r   r   r   r   r   r   r   r   r   c                      s      S rR   )hstackrB   rz   r   rB   rE   rX   U  rG   r   r>   r?   rn   )rM   r   r#   r   r   r(   rr   rs   )M1M2ZM3ZM4rB   r   rE   test_hstackL  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 )NrA   r@   c                 S   s   | d | S r   rB   rU   rB   rB   rE   rX   b  rG   ztest_vstack.<locals>.<lambda>c                 S   s   | d | S r   rB   rU   rB   rB   rE   rX   c  rG   r   r   )rn   r   r   )r   r   r   c                      s      S rR   )vstackrB   r   rB   rE   rX   r  rG   )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sPJ d S Nr?   r>   )r_   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 r]   )r_   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rXJ d S )N)r?   r@   r?   )r_   r2   r3   Z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 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 )Nr2   r?   r>   Fr@   r   Tsimplifyc                 S   s   | S rR   rB   ru   rB   rB   rE   rX     rG   z(test_is_anti_symmetric.<locals>.<lambda>c                 S   s   g | ]}|  qS rB   expandrC   r2   rB   rB   rE   rF     rG   z*test_is_anti_symmetric.<locals>.<listcomp>c                 S   s   g | ]}|  qS rB   r   r   rB   rB   rE   rF     rG   )r   r_   Zis_anti_symmetricr3   r   r   rt   )r2   rz   rB   rB   rE   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 )Nr?   r   r>   r>   r   Fr   r>   r   r   r>   r@   r>   )	r>   r   r   r   r?   r   r   r   r@   ))rm   r   r   rn   r|   ))rm   r   r   )r   rn   r   r   )	r_   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 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 )Nr>   r?   F)r_   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r2J tg dgjrFJ d S )Nr@   r   )ra   Zis_Identityr_   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 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 )NTr=   rm   rn   r   r   Frm   rn   r   r>   r@   rq   r?   )r_   r2   Zis_symbolicr   rB   rB   rE   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 )Nrq   Tr>   r?   r@   F)r_   Zis_upperr   rB   rB   rE   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 )Nrq   Fr>   r?   r@   T)r_   Zis_lowerr   rB   rB   rE   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 Nr>   r?   )r_   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} |  r8J d S )Nr?   r   )r   r>   r   r>   )r_   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 sjJ t g dg dg dg} | jrJ d S )	N)r@   rA   r>   )r?   rA   rm   r   r@   )	r@   r?   r   rA   rA   r>   r>   rm   r?   )	r@   r?   r   rA   rA   r>   r>   rm   r?   Fr   )r_   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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   r@   rA   r>   Fr   T)Znonzero)r_   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sXJ d S )	Nr?   )r   r>   r?   r@   >   r>   r?   r@   r2   Trealr   r>   )setr_   valuesr   ru   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sDJ | dd tdks^J d S )Nr@   c                 S   s   d|  S Nr?   rB   ru   rB   rB   rE   rX     rG   z test_applyfunc.<locals>.<lambda>r?   c                 S   s   dS r]   rB   ru   rB   rB   rE   rX     rG   c                 S   s   dS Nr>   rB   ru   rB   rB   rE   rX     rG   )rc   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   rc   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s`J || kslJ d S )Nr?   r=   r>   r@   rA   )rc   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snJ | j| jjksJ | jtddgt dgddggksJ d S )Nr   rm   r>   r?   r   r>   r?   )rc   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sFJ d S )NF)evaluater   r?   )rc   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 s2J t fddtdD sPJ t fddtdD snJ d S )	Nr?   r>   rm   rn   c                 3   s&   | ]}   |  |   kV  qd S rR   ZevalfrC   rV   r   rB   rE   	<genexpr>L  rG   ztest_evalf.<locals>.<genexpr>c                 3   s*   | ]"}  d |  |  d kV  qdS r?   Nr   r   r   rB   rE   r   M  rG   c                 3   s*   | ]"}  d |  |  d kV  qdS r   rZ   r   r   rB   rE   r   N  rG   )rc   r   allry   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sJ tddd}t ddtt| gjddtt|tt	|  gksJ d S )Nr?   r@   r   Tr   r>   )complex)
rc   r2   r3   r   r#   r   r   r   r   r   )r   r   r   rB   rB   rE   test_expandQ  s    8F
r  c                  C   sB  t ttd ttd gttd ttd  ttd ttd  gg} | tttt@ }|ttd ttgtd tt td tt ggk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   )rc   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sPJ d S )NF, Gclsr?   c                    s    | | S rR   rB   rU   )GrB   rE   rX   m  rG   ztest_replace.<locals>.<lambda>c                    s    | | S rR   rB   rU   FrB   rE   rX   n  rG   r   r   rc   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sJ d S )	Nr  r  r?   r   r>   c                    s    | | S rR   rB   rU   r
  rB   rE   rX   w  rG   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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 )Nr>   r?   r@   rA   r   r   rn   ))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   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 )
Nr[   fr>   r?   )Zratio   r@   rA   "   )r   r   rc   r2   r3   r   r   r   r#   r   tracer   )r[   r  rD   eqrz   rB   rB   rE   test_simplify  s     :&&r  c                   C   sB  t dtgtdggtdtddgddggk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 )
Nr>   rA   rm   r?   r   r   r  T)Zsimultaneous)rc   r2   subsr#   r3   rB   rB   rB   rE   	test_subs  s    4(($(r  c                  C   s.   t g dg dg dg} |  dks*J d S )Nr   )r   rm   r   )r   r   r      )rc   r  r   rB   rB   rE   
test_trace  s
    r   c                   C   sx   t dtgtdggtditddgddggk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 )Nr>   rA   rm   r?   r   r   r  )rc   r2   Zxreplacer#   r3   rB   rB   rB   rE   test_xreplace  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 )Nr@   rA   )r>   r?   r@   rA   rm   rn   r   r   r   r   r      c                      s     ddggS )Nr   rm   )permuterB   r   rB   rE   rX     rG   ztest_permute.<locals>.<lambda>c                      s     tdS )Nr2   )r#  r   rB   r   rB   rE   rX     rG   r   r?   r>   r   )r   r   r   r"  r=   rs   )orientation)r?   r@   r>   rA   )rn   r   rm   r   )r   r   r   r"  Zbackward)	direction)r$  r%  )r@   r>   r?   rA   )r   rm   rn   r   )r   r   r   r"  )r>   r?   r   r@   )Permutation)
rc   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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r>   r>   r>   r>   r?   )r   r   r>   r>   )r   r   r   r>   r   r   r   r   r   )r   r>   r>   r>   )rc   Zupper_triangular)r   RrB   rB   rE   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)  )r>   r   r   r   )r>   r>   r   r   )r>   r>   r>   r   r?   r   r*  )rc   Zlower_triangularrg   )r   LrB   rB   rE   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 )Nr>   r   r?   )rg   r2   r3   absr   r   rB   rB   rE   test_abs  s    r0  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 )
Nrq   r?   i)r?   rA   rn   rA   ir>   c                      s     S rR   rB   rB   rz   r[   rB   rE   rX     rG   ztest_add.<locals>.<lambda>)rg   r2   r3   r4   r   r   rB   rB   r1  rE   test_add  s    &Br2  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   )r@   r   c                      s     S rR   rB   rB   r   r   rB   rE   rX   -  rG   z%test_multiplication.<locals>.<lambda>c                      s    i  S rR   rB   rB   r   rB   rE   rX   .  rG   r|   r   r}   r?   r~   rn   ro   )r?   r      r  r   z	c = a @ brA   c                      s
     S rR   )multiply_elementwiserB   r3  rB   rE   rX   L  rG   r2   r@   rm   r      z	c = 5 @ br>   )rg   r   r   	TypeErrorevalSyntaxErrorr5  r&   r   rJ   r2   r#   r'   r   )r   hc2r   Z_hr   rB   r3  rE   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 )Nr>   r?   r@   rA   z2 @ aza @ 2)r#   
__matmul__NotImplemented__rmatmul__r8  r9  r7  r   rB   rB   rE   test_matmult  s    r@  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>.fooFro   N)rO   rP   rQ   Z	is_MatrixZis_MatrixLiker   rB   rB   rB   rE   foo  s   rA  r>   r?   r@   rA   N)r   r#   )rA  r   r   rB   rB   rE   test_non_matmul  s
    ,rB  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   r?   r#   rB   rB   rB   rE   rX     rG   ztest_power.<locals>.<lambda>r?   r@   rA   rm   )i  i  i,*  i7  )r?   r>   r@   )rA   r?   rA   )rn   r"  r>   )	i"  i     i  i  ip  i  i  i  r   r>   d   r|   r   r   r6        Zcayley)methodmultiply)r   r   rg   r%   r   r#   powr   rB   rB   rE   
test_power  s     4rK  c                  C   s.   t ddddg} |  t ddddgks*J d S )Nr>   r?   r   r   rh   rZ   rB   rB   rE   test_neg  s    rL  c                  C   s0   t ddddg} | |  t ddddgks,J d S )Nr>   r?   r   rh   rZ   rB   rB   rE   test_sub  s    rM  c                  C   s:   t ddddg} | d t ddtjtdd gks6J d S r   )rg   r   r   rZ   rB   rB   rE   test_div  s    rN  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 )Nr?   r   r  )rt   rk   r%   typer#   rB   rB   rB   rE   test_eye  s    rP  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 )Nr?   r)  r@   r>   r>   r>   r  )rt   rk   r'   r#   rO  rB   rB   rB   rE   	test_ones  s
    $rR  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 )Nr?   r*  r@   r   r  )rt   rk   r(   r#   rO  rB   rB   rB   rE   
test_zeros  s
    $rS  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 )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   rm   rn   r   )r   r   r   r   r   r   )r   r   r>   r?   r   r   )r   r   r@   rA   r   r   )r   r   r   r   rm   rn   c                      s    dddS )Nr   rm   rr   rB   rB   r   r   r   r$   rB   rE   rX     rG   z test_diag_make.<locals>.<lambda>rT  )rs   )rr   rs   F)unpackr  rq   r  r  )r   r   r>   r   )r   r   r   r?   )rk   r$   r#   r2   r3   r4   r   r'  rO  r   r'   rB   rB   rU  rE   test_diag_make  s     		&&.
" rW  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 )Nr@   r   r   )r   rA   r   r>   )r>   rm   r   )r@   r   r?   )r?   ro   c                      s
     dS r   diagonalrB   r   rB   rE   rX   ,  rG   ztest_diagonal.<locals>.<lambda>c                      s
     dS )Nr  rX  rB   r   rB   rE   rX   -  rG   c                      s
     tS rR   )rY  r   rB   r   rB   rE   rX   .  rG   c                    s   i | ]}|t  |qS rB   )rt   rY  r   r   rB   rE   
<dictcomp>0  s   z!test_diagonal.<locals>.<dictcomp>)r#   ry   rY  tuplerO  r)   r   r'  r'   r*   rr   rs   )r   srB   )rD   rz   rE   test_diagonal   s(    
r]  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 )Nr@   r?   
eigenvalue)sizer_  upper)Zband)r`  eigenvalr_  )r?   r>   r   )r   r?   r>   r   lower)r?   r   r   r   r   c                   S   s
   t dS r   rk   jordan_blockrB   rB   rB   rE   rX   D  rG   z#test_jordan_block.<locals>.<lambda>c                   S   s   t ddS )Ng      @r?   rd  rB   rB   rB   rE   rX   F  rG   c                   S   s   t jddS )Nr?   r^  rd  rB   rB   rB   rE   rX   H  rG   c                   S   s   t jdddS )Nr?   rA   )r_  rb  rd  rB   rB   rB   rE   rX   K  s   )r`  rb  )rk   re  r#   r   r'  rB   rB   rB   rE   test_jordan_block4  s:    
rf  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 )Nr>   r?   r@   rA   T)	normalizerm   r   irn   r   )r   r>   r   )r@   rn   r   )r   rm   r?   r   r         r   rq   )r>   rA   rm   c                      s   t j ddiS NZ	rankcheckTr#   orthogonalizerB   ZvecsrB   rE   rX   d  rG   z$test_orthogonalize.<locals>.<lambda>rp   r   c                      s   t j ddiS rj  rk  rB   rm  rB   rE   rX   g  rG   )r#   rl  r   r   r   r'  r1  rB   rm  rE   test_orthogonalizeS  s*    ,$"*"
 .*
""rn  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 )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<    
ro  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   rl   diffr#   r2   r3   rz   rB   rB   rE   	test_diff  s    rs  c                  C   sJ   t d\} }tdd| |g}|| tdd| d d ||  gksFJ d S )Nrp  r?   r>   )r   rl   Z	integrater#   rr  rB   rB   rE   test_integrate  s    rt  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,phir@   r>   r?   r   r=   rA   c                      s     tddgS r   )jacobianr#   rB   r   rB   rE   rX     rG   z test_jacobian2.<locals>.<lambda>c                      s
     S rR   )ru  rB   r   rB   rE   rX     rG   )r   rl   r   r   r#   ru  r   r7  )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sFJ d S )Nrp  r?   r>   rm   )r   rl   limitr#   r   rr  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 )Nrq   rp   r   rQ  c                      s     S rR   rB   rB   rD   vrB   rE   rX     rG   z"test_issue_13774.<locals>.<lambda>c                      s     S rR   rB   rB   r~  rB   rE   rX     rG   )r#   r   r7  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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 )Nr2   r3   c                   S   s
   t dS r   )r#   	companionrB   rB   rB   rE   rX     rG   z test_companion.<locals>.<lambda>c                      s   t tdg S r   r#   r  r/   rB   ru   rB   rE   rX     rG   c                      s   t tddg S r   r  rB   ru   rB   rE   rX     rG   c                      s   t t   gS rR   r  rB   r2   r3   rB   rE   rX     rG   zc0:3r>   r   )r   r   r'  r   r#   r  r/   )Zc0Zc1r;  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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 zrq   r>   r?   r@   )r>   r>   r>   r>   r>   )r   r#   r  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|| 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)rO   rP   rQ   r+   Z_op_priorityrB   rB   rB   rE   Foo  s   r  r?   r=   r   r   r6  rF  )r-   r#   rJ   )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 rR   rB   rB   r   r   rB   rE   rX     rG   z"test_issue_18956.<locals>.<lambda>c                      s     S rR   rB   rB   r  rB   rE   rX     rG   )Arrayr#   r   r7  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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   rB   selfrB   rB   rE   __iter__  s    ztest__eq__.<locals>.My.__iter__c                 S   s   t | | S rR   )rt   )r  rV   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 rR   rC  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   rH   r   r   r   r   r   r    r!   rI   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   rL   rM   r\   r^   r_   ra   rb   rc   re   rf   rg   ri   rj   rk   rl   rv   rx   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r!  r(  r,  r.  r0  r2  r<  r@  rB  rK  rL  rM  rN  rP  rR  rS  rW  r]  rf  rn  ro  rs  rt  r{  r}  r  r  r  r  r  r  rB   rB   rB   rE   <module>   s   $8A444444
			
 		$!!SO"

