o
    ohD                     @   s  d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZ d dlmZmZmZmZmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZ d dlmZ d dl m!Z!m"Z" d dl#m$Z$m%Z% d dl&m'Z' d dl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZE d dlFmGZGmHZHmIZI dd ZJe  G dd de)e*e+ZKW d   n1 sw   Y  dd ZLdd ZMe  G d d! d!e)e*e,ZNW d   n1 sw   Y  d"d# ZOd$d% ZPe  G d&d' d'e)e*e-ZQW d   n	1 s%w   Y  d(d) ZRd*d+ ZSe  G d,d- d-e)e*e.ZTW d   n	1 sKw   Y  d.d/ ZUd0d1 ZVe  G d2d3 d3e)e*e/ZWW d   n	1 sqw   Y  e  G d4d5 d5e)e*e1ZXW d   n	1 sw   Y  d6d7 ZYd8d9 ZZd:d; Z[d<d= Z\d>d? Z]d@dA Z^dBdC Z_dDdE Z`dFdG ZadHdI ZbdJdK ZcdLdM ZddNdO ZedPdQ ZfdRdS ZgdTdU ZhdVdW ZidXdY ZjdZd[ Zkd\d] Zld^d_ Zmd`da Zndbdc Zoddde Zpdfdg Zqdhdi Zrdjdk Zsdldm Ztdndo Zudpdq Zvdrds Zwdtdu Zxdvdw Zydxdy Zzdzd{ Z{d|d} Z|d~d Z}dd Z~dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zedd ZddÄ Zddń ZddǄ ZddɄ Zdd˄ Zdd̈́ Zddτ Zddф Zddӄ ZdS )    )raisesXFAILwarns_deprecated_sympy)Q)Expr)Add)Function)
NumberKindUndefinedKind)IIntegeroopiRational)S)Symbolsymbols)Abs)exp)sqrt)cossin)
ShapeErrorNonSquareMatrixError)
MatrixKind)_MinimalMatrix_CastableMatrixMatrixShapingMatrixPropertiesMatrixOperationsMatrixArithmeticMatrixSpecial)MatrixCalculus)Matrixdiageyematrix_multiply_elementwiseoneszerosSparseMatrixbandedMutableDenseMatrixMutableSparseMatrixImmutableDenseMatrixImmutableSparseMatrix)Poly)flatten)ImmutableDenseNDimArray)xyzc                  C   s   ddl m} m}m}m}m}m}m} ddlm	}m
}m}	m}
m}m} ddlm}m}m}m} | |||||||||	|
||f}||||f}dd |D }d}|D ]?}|D ]}t  t||du saJ W d    n1 skw   Y  qRt  t||d	u s~J W d    n1 sw   Y  qNd S )
Nr   )MatrixRequiredr   r!   r   r   r    MatrixCommon)MatrixDeterminantMatrixReductionsMatrixSubspacesMatrixEigenr"   MatrixDeprecated)r#   ImmutableMatrixr)   r.   c                 S   s    g | ]}|d dgddggqS              ).0MrB   rB   z/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/sympy/matrices/tests/test_commonmatrix.py
<listcomp>Y   s     z5test_matrix_deprecated_isinstance.<locals>.<listcomp>rB   TF)sympy.matrices.commonr5   r   r!   r   r   r    r6   sympy.matrices.matricesr7   r8   r9   r:   r"   r;   sympyr#   r<   r)   r.   r   
isinstance)r5   r   r!   r   r   r    r6   r7   r8   r9   r:   r"   r;   r#   r<   r)   r.   
all_mixinsall_matricesMstmixinrD   rB   rB   rE   !test_matrix_deprecated_isinstance'   sF   $ 	rP   c                   @      e Zd ZdS )ShapingOnlyMatrixN__name__
__module____qualname__rB   rB   rB   rE   rR   i       rR   Nc                 C      t | | dd S )Nc                 S      t | |kS NintijrB   rB   rE   <lambda>n       zeye_Shaping.<locals>.<lambda>rR   nrB   rB   rE   eye_Shapingm      re   c                 C   rX   )Nc                 S      dS Nr   rB   r]   rB   rB   rE   r`   r       zzeros_Shaping.<locals>.<lambda>rb   rc   rB   rB   rE   zeros_Shapingq   rf   rj   c                   @   rQ   )PropertiesOnlyMatrixNrS   rB   rB   rB   rE   rk   v   rW   rk   c                 C   rX   )Nc                 S   rY   rZ   r[   r]   rB   rB   rE   r`   {   ra   z eye_Properties.<locals>.<lambda>rk   rc   rB   rB   rE   eye_Propertiesz   rf   rm   c                 C   rX   )Nc                 S   rg   rh   rB   r]   rB   rB   rE   r`      ri   z"zeros_Properties.<locals>.<lambda>rl   rc   rB   rB   rE   zeros_Properties~   rf   rn   c                   @   rQ   )OperationsOnlyMatrixNrS   rB   rB   rB   rE   ro      rW   ro   c                 C   rX   )Nc                 S   rY   rZ   r[   r]   rB   rB   rE   r`      ra   z eye_Operations.<locals>.<lambda>ro   rc   rB   rB   rE   eye_Operations   rf   rq   c                 C   rX   )Nc                 S   rg   rh   rB   r]   rB   rB   rE   r`      ri   z"zeros_Operations.<locals>.<lambda>rp   rc   rB   rB   rE   zeros_Operations   rf   rr   c                   @   rQ   )ArithmeticOnlyMatrixNrS   rB   rB   rB   rE   rs      rW   rs   c                 C   rX   )Nc                 S   rY   rZ   r[   r]   rB   rB   rE   r`      ra   z eye_Arithmetic.<locals>.<lambda>rs   rc   rB   rB   rE   eye_Arithmetic   rf   ru   c                 C   rX   )Nc                 S   rg   rh   rB   r]   rB   rB   rE   r`      ri   z"zeros_Arithmetic.<locals>.<lambda>rt   rc   rB   rB   rE   zeros_Arithmetic   rf   rv   c                   @   rQ   )SpecialOnlyMatrixNrS   rB   rB   rB   rE   rw      rW   rw   c                   @   rQ   )CalculusOnlyMatrixNrS   rB   rB   rB   rE   rx      rW   rx   c                  C   sr  t ddg d} | jdksJ | jdksJ | d dksJ | d dks&J t| g dks0J t| dd d f g dks@J t| d d df ddgksPJ t| d d d d f t| ksbJ | d d d d f | kspJ t | | ksxJ t g dg dg| ksJ t g dg df| ksJ t ddg| ksJ t d	| ksJ t ddgdd
gddgg| krJ d S )Nr?   r@   )r>   r?   r@   rA         r>   r>   ry   r>   rA   ry   rz   r>   r?   r@   )r}   r|   rA   rz   )r   rowscolslistr2   rB   rB   rE   test__MinimalMatrix   s      $&r   c                   C   s   t ddgddggjttksJ t ddgddggjttks"J t ddg jttks/J t tggjttks<J t dt dggggjttksNJ tdggjttks[J tdt dggggjttksmJ d S )Nr>   r?   r@   rA   r   )r#   kindr   r	   r2   r
   r)   rB   rB   rB   rE   	test_kind   s   ""$(r   c                  C   sL   t ddg d} |  }|jdksJ tdD ]}|| |d ks#J qd S )Nr?   )r>   r@   r?   rA   r>   rA   )rR   vecr   range)mm_vecr^   rB   rB   rE   test_vec   s   r   c                  C   s   t d\} }}}t| |g||gg}t| |g||gg}t| |g||gg}t| |g||gg}| |   krR|   krR|   krR| |||dksUJ  J d S )Nza:d)r   r   r   r>   r>   r   r{   )r   r+   r-   r,   r.   todok)abcdm1m2m3m4rB   rB   rE   
test_todok   s   0r   c                  C   s   t jt jtt t jgttttd gtt j tt dgg} t jt jtt t jttttd tt j tt dg}tdd|}| | ksCJ d S )Nr?   r@   rA   )	r   OneHalfr2   r3   Zeror4   rR   tolist)lstflat_lstr   rB   rB   rE   test_tolist   s   82r   c                  C   sR   t ddtjdgdtjgtdgg} dtjidtjidtid}|  |ks'J d S )Nr@   r?   r   r>   r   r>   r?   )rR   r   r   r   r2   todod)r   dictrB   rB   rE   
test_todod   s   "r   c                      sH  t ddg d tt fdd tt fdd tt fdd tt fdd  d d	  krEtg d
g dgksHJ  J  d d	  krdtddgddgddggksgJ  J  d d  krtg d
g dgksJ  J  d d  krtddgddgddggksJ  J d S )Nr@   	r>   r?   r@   rA   ry   rz         	   c                      
     dS Nry   row_delrB   erB   rE   r`         
 z"test_row_col_del.<locals>.<lambda>c                      r   Nr   rB   r   rB   rE   r`      r   c                      r   r   col_delrB   r   rB   rE   r`      r   c                      r   r   r   rB   r   rB   rE   r`      r   r?   r}   r|   r>   rA   ry   r   r   r   r   r   rz   r   )rR   r   
IndexErrorr   r#   r   rB   rB   r   rE   test_row_col_del   s   8>8Br   c                  C   s   t ddgddgg} t dtgtdgg}t dtdgtdtgtttgg}|  | gks-J | |gks6J | |gks?J d S Nr>   r?   r@   )r#   r2   r3   r4   get_diag_blocks)r   r   r   rB   rB   rE   test_get_diag_blocks1   s    r   c                  C   s  t ddgddgg} t dtgtdgg}t dtdgtdtgtttgg}t| ||t| ||t| ||t|||f\}}}}t|j|j|}t|j|j|}t|j|j|}t|j|j|}| | ||gksiJ | | ||gkstJ | | ||gksJ | |||gksJ d S r   )	r#   r2   r3   r4   r$   rR   r~   r   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?   )rR   shaper   rB   rB   rE   
test_shape  s   r   c                  C   sh   t d} | ddtdddksJ tdddd }|ddtdks&J |d	d
tdks2J d S )Nr@   r>   r   )	r>   r   r   r   r>   r   r   r   r>   rA   c                 S   s   | | S rZ   rB   r]   rB   rB   rE   r`         ztest_reshape.<locals>.<lambda>)r   r@   r>   r?   )r@   rA   r?   r@   rA   ry   r?   rz   ))r   r>   r?   r@   r>   r?   )r@   rA   r?   r@   rA   ry   )re   reshaper#   rR   m0r   rB   rB   rE   test_reshape  s   r   c                  C   sP   t ddg d} | dtddg dksJ | dtddg dks&J d S )Nr@   r   r   r>   r}   )r>   rA   r   )rR   rowr#   colr   rB   rB   rE   test_row_col  s   "r   c                   C   s8   t dtg dtg dg dg dgksJ d S )Nr@   r   r   r   )r>   r   r   r   )r   r>   r   r   )r   r   r>   r   )re   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>   )re   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   ry   r   rA   r@   r   )r#   r   insertr0   re   
row_insertr   r   )r4r^   lrB   rB   rE   test_row_insert+  s   (r   c                  C   s   t g d} tddD ]}g d}||d ttd|| d |ks*J qtddt d	d	gd	d	gd	d	gd	d	gd	d	gd	d	ggt g d
g dg dg dg dg dgks_J d S )Nr   r   ry   r   r   r   rA   r@   r   rz   r?   )r>   r   r   r?   r?   r   r   r   )r   r>   r   r?   r?   r   r   r   )r   r   r>   r?   r?   r   r   r   )r   r   r   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   rj   
col_insertr   r   re   )c4r^   r   rB   rB   rE   test_col_insert3  s   (6r   c                      s   t dddd   g dddgtddg d	ksJ  ddgg d
tddg dks0J  tdtd ks>J tt fdd tt fdd d S )NrA   r@   c                 S      | d | S Nr@   rB   r]   rB   rB   rE   r`   D  ra   ztest_extract.<locals>.<lambda>)r   r>   r@   r   r>   r?   )r   r>   r@   rA   r   
   r   r   r?   )r   r   r?   r   r      c                           dgdgS )NrA   r   extractrB   r   rB   rE   r`   H      c                      r   )Nr   r@   r   rB   r   rB   rE   r`   I  r   )rR   r   r#   r   r   r   rB   rB   r   rE   test_extractC  s   ((r   c                     s   t dddd  t dddd    ksJ     t      kr<tg dg dg dg d	gks?J  J tt fd
d t t ksRJ tdd} tdd}tdd}tdd}t | |||  jdkr| jdks~J d S )NrA   r@   c                 S   r   r   rB   r]   rB   rB   rE   r`   M  ra   ztest_hstack.<locals>.<lambda>c                 S   r   r   rB   r]   rB   rB   rE   r`   N  ra   )	r   r>   r?   r   r>   r?   r   r>   r?   )	r@   rA   ry   r@   rA   ry   r@   rA   ry   )	rz   r   r   rz   r   r   rz   r   r   )	r   r   r   r   r   r   r   r   r   c                            S rZ   )hstackrB   r   r   rB   rE   r`   U  ra   r   r>   r?   rz   )rR   r   r#   r   r   r(   r~   r   )M1M2M3M4rB   r   rE   test_hstackL  s"   "r   c                      s   t dddd  t dddd    ksJ     t      krTtg dg dg dg d	g dg dg dg d	g dg dg dg d	gksWJ  J tt fd
d t t ksjJ d S )NrA   r@   c                 S   r   r   rB   r]   rB   rB   rE   r`   b  ra   ztest_vstack.<locals>.<lambda>c                 S   r   r   rB   r]   rB   rB   rE   r`   c  ra   r   r   )rz   r   r   )r   r   r   c                      r   rZ   )vstackrB   r   rB   rE   r`   r  ra   )rR   r   r#   r   r   rB   rB   r   rE   test_vstacka  s&   "r   c               	   C   sT   t ddddtddt  g} |  tjtdtjthksJ | tthks(J d S Nr?   r>   )rk   r2   atomsr   r   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 rh   )rk   r2   free_symbolsrB   rB   rB   rE   test_free_symbols}  s    r   c                  C   s\   t ttfdf} | tsJ | trJ | tsJ t dtfdf} | tr,J d S )N)r?   r@   r?   )rk   r2   r3   hasr4   r   r   rB   rB   rE   test_has  s   r   c                  C   s  t d} tddddg du sJ tddd| d d|   d t| d d  d| t t |  t dg	}| du s<J |jdddu sFJ |jd	d
 ddu sRJ tdddd |D }|jdddu sgJ tdddd tjgt|dd   D }| du sJ d S )Nr2   r?   r>   Fr@   r   Tsimplifyc                 S   s   | S rZ   rB   r   rB   rB   rE   r`     ri   z(test_is_anti_symmetric.<locals>.<lambda>c                 S      g | ]}|  qS rB   expandrC   r2   rB   rB   rE   rF         z*test_is_anti_symmetric.<locals>.<listcomp>c                 S   r   rB   r   r   rB   rB   rE   rF     r   )r   rk   is_anti_symmetricr3   r   r   r   )r2   r   rB   rB   rE   test_is_anti_symmetric  s   D*r  c                  C   s`  t ddg d} |  rJ |  sJ | jddsJ t ddg d} |  s*J t ddtddd} |  s:J |  s@J t ddg d} | tdddksRJ t ddtdd} |  raJ |  sgJ t d	} |  sqJ t d
} |  s{J tdddtd dt  d ttd d ddtddg	} |  sJ | jddrJ |  jddsJ d S )Nr?   r   r>   r>   r   Fr   r>   r   r   r>   r@   r>   )	r>   r   r   r   r?   r   r   r   r@   ))ry   r   r   rz   r   ))ry   r   r   )r   rz   r   r   )	rk   is_diagonalis_symmetricr$   r(   r#   r2   r3   r   r   rB   rB   rE   test_diagonal_symmetrical  s,   6r  c                  C   s   t dtgt dgg} | jsJ t dt tgt dgg} | jdu s$J t ttgt dgg} | jd u s6J t tdgt dgg} | jdu sHJ d S )Nr>   r?   F)rk   r   is_hermitianr2   r   rB   rB   rE   test_is_hermitian  s   
r  c                   C   sJ   t djsJ ttdjrJ ttdjrJ tg dgjr#J d S )Nr@   r   )rm   is_Identityrk   r(   r'   rB   rB   rB   rE   test_is_Identity  s   r  c                  C   s   t ttgttgg} |  du sJ t g dg dg} |  du s$J t g dddtdgg} |  du s8J t dtd	gg} |  du sHJ t g d
g} |  du sWJ t dgtgd	gg} |  du siJ t dgdgd	gg} |  du s{J d S )NTr=   ry   rz   r   r   Fry   rz   r   r>   r@   r}   r?   )rk   r2   is_symbolicr
  rB   rB   rE   test_is_symbolic  s   r  c                  C   B   t g dg} | jdu sJ t dgdgdgg} | jdu sJ d S )Nr}   Tr>   r?   r@   F)rk   is_upperr
  rB   rB   rE   test_is_upper     r  c                  C   r  )Nr}   Fr>   r?   r@   T)rk   is_lowerr
  rB   rB   rE   test_is_lower  r  r  c                  C   s<   t dgdgg} t ddgddgg}| jrJ |jsJ d S Nr>   r?   )rk   	is_squarer   rB   rB   rE   test_is_square  s   
r  c                  C   s<   t ddg d} |  sJ t ddg d} |  rJ d S )Nr?   r  )r   r>   r   r>   )rk   r  r   rB   rB   rE   test_is_symmetric  s   r  c                  C   s   t g dg dg dg} | jsJ t ddg d} | jsJ t ddg d} | jdu s.J | jdu s5J t g dg dg dg} | jrGJ d S )	N)r@   rA   r>   )r?   rA   ry   r   r@   )	r@   r?   r   rA   rA   r>   r>   ry   r?   )	r@   r?   r   rA   rA   r>   r>   ry   r?   Fr   )rk   is_upper_hessenbergis_lower_hessenbergr   rB   rB   rE   test_is_hessenberg  s   

r  c                  C   s   t ddg js	J t ddgddggjsJ t tddjs J t tdjr)J t tdgddggjd ks8J t tdgddggjdksGJ tddd} t | dgddggjdks\J d S )	Nr   r@   rA   r>   Fr   T)nonzero)rk   is_zero_matrixr(   r%   r2   r   r
  rB   rB   rE   test_is_zero  s   "r   c                  C   s\   t tddg d h dksJ tddd} t tdd| dddg | dhks,J d S )	Nr?   )r   r>   r?   r@   >   r>   r?   r@   r2   Trealr   r>   )setrk   valuesr   r   rB   rB   rE   test_values  s   r%  c                  C   sb   t td} | dd tdd ksJ | dd tdks"J | dd tdks/J d S )Nr@   c                 S   s   d|  S Nr?   rB   r   rB   rB   rE   r`     r   z test_applyfunc.<locals>.<lambda>r?   c                 S   rg   rh   rB   r   rB   rB   rE   r`     ri   c                 S   rg   Nr>   rB   r   rB   rB   rE   r`     ri   )ro   r%   	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   ro   adjointr#   )datansrB   rB   rE   test_adjoint!  s   r-  c               	   C   sp   t ddg d} t dddtj ddtj  ddtj  ddtj  g}| \}}|| ks0J || ks6J d S )Nr?   r=   r>   r@   rA   )ro   r   ImaginaryUnitas_real_imag)r   r   r   r   rB   rB   rE   test_as_real_imag'  s   r0  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   ry   r>   r?   r   r>   r?   )ro   r   Tr#   r   	conjugateHrD   rB   rB   rE   test_conjugate2  s    
r6  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?   )ro   r   r2   doitr#   r
  rB   rB   rE   	test_doitD  s    r9  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>   ry   rz   c                 3   s(    | ]}   |  |   kV  qd S rZ   evalfrC   r^   r
  rB   rE   	<genexpr>L  s   & ztest_evalf.<locals>.<genexpr>c                 3   ,    | ]}  d |  |  d kV  qdS r?   Nr:  r<  r
  rB   rE   r=  M     * c                 3   r>  r?  rc   r<  r
  rB   rE   r=  N  r@  )ro   r   allr   rB   rB   r
  rE   
test_evalfJ  s   "rB  c                  C   s   t ttt  dgtt t t ttttt    gg} |  }|ttt td  dgttd  ttd   tt ttd   td  ggksJJ tddd}t ddtt| gjddtt|tt	|  gksnJ d S )Nr?   r@   r   Tr!  r>   )complex)
ro   r2   r3   r   r#   r   r   r   r   r   )r   r   r   rB   rB   rE   test_expandQ  s   8F
rD  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&  )ro   r   r2   r   r3   refiner   r"  r#   positivenegativer   rB   rB   rE   test_refine^  s   .<0:rH  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 rZ   rB   r]   )GrB   rE   r`   m  ra   ztest_replace.<locals>.<lambda>c                    rL  rZ   rB   r]   FrB   rE   r`   n  ra   r   r   ro   replace)KrD   NrB   )rO  rM  rE   test_replacek  s
   rT  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 )	NrI  rJ  r?   r   r>   c                    rL  rZ   rB   r]   rN  rB   rE   r`   w  ra   z"test_replace_map.<locals>.<lambda>TrP  )rM  rR  rD   rS  rB   rN  rE   test_replace_maps  s   >rU  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   rz   ))rA   r@   r?   r>   r   r   ))r?   rA   r>   r@   i)r@   r>   )rA   r?   )r#   rot90r   rB   rB   rE   
test_rot90|  s
   (<<>r[  c               
   C   sJ  t d} td}tdt dt  ttt  t g|tt|t  |t dd|  t| t |    t gg}| ttt tt  dt gdt dddtt|    t|    ggks`J dt d }t|gg}| t|ggksxJ |jt	dt|jt	dggksJ tddgddgg}d|
   tdd	ksJ d S )
Nrd   fr>   r?   )ratio   r@   rA   "   )r   r   ro   r2   r3   r   r   r   r#   r   tracer   )rd   r\  rD   eqr   rB   rB   rE   test_simplify  s    :&$"rb  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   ry   r?   r   r   rX  T)simultaneous)ro   r2   subsr#   r3   rB   rB   rB   rE   	test_subs  s   4(($(re  c                  C   s.   t g dg dg dg} |  dksJ d S )Nr   )r   ry   r   )r   r   r      )ro   r`  r5  rB   rB   rE   
test_trace  s
   rg  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   ry   r?   r   r   rX  )ro   r2   xreplacer#   r3   rB   rB   rB   rE   test_xreplace  s   $ri  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   ry   rz   r   r   r   r   r      c                      s     ddggS )Nr   ry   )permuterB   r
  rB   rE   r`     r   ztest_permute.<locals>.<lambda>c                      s     tdS )Nr2   )rk  r   rB   r
  rB   rE   r`     s    r   r?   r>   r  )r   r   r   rj  r=   r   )orientation)r?   r@   r>   rA   )rz   r   ry   r   )r   r   r   rj  backward)	direction)rl  rn  )r@   r>   r?   rA   )r   ry   rz   r   )r   r   r   rj  )r>   r?   r   r@   )Permutation)
ro   r   r   
ValueErrorpermute_rowsrk  r#   permute_colssympy.combinatoricsro  )r   ro  rB   r
  rE   test_permute  sH    "$rt  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>   )ro   upper_triangular)r   RrB   rB   rE   test_upper_triangular  s6   

ry  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 )Nru  )r>   r   r   r   )r>   r>   r   r   )r>   r>   r>   r   r?   r   rv  )ro   lower_triangularrs   )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?   )rs   r2   r3   absr   r   rB   rB   rE   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s4J t ddddgtt fdd	 d S )
Nr}   r?   i)r?   rA   rz   rA   ir>   c                           S rZ   rB   rB   r   rd   rB   rE   r`     r   ztest_add.<locals>.<lambda>)rs   r2   r3   r4   r   r   rB   rB   r  rE   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   rY  r  )r   )r@   r   c                           S rZ   rB   rB   r   r   rB   rE   r`   -  r   z%test_multiplication.<locals>.<lambda>c                      s    i  S rZ   rB   rB   r
  rB   rE   r`   .  r   r   r   r   r?   r   rz   r{   )r?   r      rV  r   z	c = a @ brA   c                      s
     S rZ   )multiply_elementwiserB   r  rB   rE   r`   L  r   r2   r@   ry   r      z	c = 5 @ br>   )rs   r   r   	TypeErrorevalSyntaxErrorr  r&   r   rJ   r2   r#   r'   r   )r   hc2r   _hr   rB   r  rE   test_multiplication!  s~   

r  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__r  r  r  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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>.fooFr{   N)rT   rU   rV   	is_Matrixis_MatrixLiker   rB   rB   rB   rE   foo  s    r  r>   r?   r@   rA   N)r   r#   )r  r   r   rB   rB   rE   test_non_matmul  s
   ,0r  c                  C   s  t tdd  tddgddgg} | d d d  dksJ tg dg d	g d
g} | d d d  dks6J | d tdks@J | d | ksHJ tdggd d dd ksXJ tddgddggtd tddgddggksrJ tddgddgg} | jddd| jdddksJ d S )Nc                   S   s   t dd S )Nr   r?   r#   rB   rB   rB   rE   r`     ra   ztest_power.<locals>.<lambda>r?   r@   rA   ry   )i  i  i,*  i7  )r?   r>   r@   )rA   r?   rA   )rz   rj  r>   )	i"  i     i  i  ip  i  i  i  r   r>   d   r   r   r   r        cayley)methodmultiply)r   r   rs   r%   r   r#   powr   rB   rB   rE   
test_power  s    4$r  c                  C   s.   t ddddg} |  t ddddgksJ d S )Nr>   r?   r   r   rt   rc   rB   rB   rE   test_neg  s   r  c                  C   s0   t ddddg} | |  t ddddgksJ d S )Nr>   r?   r   rt   rc   rB   rB   rE   test_sub  s    r  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  )rs   r   r   rc   rB   rB   rE   test_div  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  rJ  )r   rw   r%   typer#   rB   rB   rB   rE   test_eye  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?   ru  r@   r>   r>   r>   rJ  )r   rw   r'   r#   r  rB   rB   rB   rE   	test_ones  
   $r  c                   C   r  )Nr?   rv  r@   r   rJ  )r   rw   r(   r#   r  rB   rB   rB   rE   
test_zeros  r  r  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   ry   rz   r   )r   r   r   r   r   r   )r   r   r>   r?   r   r   )r   r   r@   rA   r   r   )r   r   r   r   ry   rz   c                      s    dddS )Nr   ry   r~   rB   rB   r   r   r   r$   rB   rE   r`         z test_diag_make.<locals>.<lambda>r  )r   )r~   r   F)unpackrJ  r}   rY  rW  )r   r   r>   r   )r   r   r   r?   )rw   r$   r#   r2   r3   r4   r   rp  r  r   r'   rB   rB   r  rE   test_diag_make  s    		&&.
" r  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>   ry   r   )r@   r   r?   )r?   r{   c                      r   r   diagonalrB   r   rB   rE   r`   ,  r   ztest_diagonal.<locals>.<lambda>c                      r   )NrX  r  rB   r   rB   rE   r`   -  r   c                      s
     tS rZ   )r  r   rB   r   rB   rE   r`   .  r   c                    s   i | ]
}|t  |qS rB   )r   r  r<  r5  rB   rE   
<dictcomp>0  s    z!test_diagonal.<locals>.<dictcomp>)r#   r   r  tupler  r)   r   rp  r'   r*   r~   r   )r   srB   )rD   r   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sBJ  J t jddddtg dg dg dgksYJ ttdd  ttdd  ttdd  ttdd  t jdddt jdddksJ d S )Nr@   r?   
eigenvalue)sizer  upper)band)r  eigenvalr  )r?   r>   r   )r   r?   r>   r   lower)r?   r   r   r1  r   c                   S   
   t dS r&  rw   jordan_blockrB   rB   rB   rE   r`   D  r   z#test_jordan_block.<locals>.<lambda>c                   S   s   t ddS )Ng      @r?   r  rB   rB   rB   rE   r`   F  ra   c                   S   s   t jddS )Nr?   r  r  rB   rB   rB   rE   r`   H  ra   c                   S   s   t jdddS )Nr?   rA   )r  r  r  rB   rB   rB   rE   r`   K  s    )r  r  )rw   r  r#   r   rp  rB   rB   rB   rE   test_jordan_block4  s:   
r  c                     s  t ddgddgg} | t dgdggt dgdgggks J | jt dgdggddt dtd d gtdd gggksBJ | t dgdggt dgdggt dgdggt td	dgtd
dgggkslJ | t dgdggt dgdggt dgdgggksJ | t dgdggg ksJ t g dg dg dg}t dgdggt dgdggt dgdggg |j  t dgdggt tddgtddgggksJ t g dt g dt g dg tt fdd t g dt g dt g dg tt fdd d S )Nr>   r?   r@   rA   T)	normalizery   r   irz   r   )r   r>   r   )r@   rz   r   )r   ry   r?   r   r         r   r}   )r>   rA   ry   c                         t j ddiS N	rankcheckTr#   orthogonalizerB   vecsrB   rE   r`   d  r   z$test_orthogonalize.<locals>.<lambda>r|   r   c                      r  r  r  rB   r  rB   rE   r`   g  r   )r#   r  r   r   r   rp  r  rB   r  rE   test_orthogonalizeS  s*   ,$"*".*""r  c               
   C   s   t d\} }| t g dg dg dgksJ |t g dg dg dgks)J t d\} }| t g dg dg d	g d
g dg dg dgksMJ |t g dg dg dg d
g dg dg dgksjJ d S )Nr>   )r   r>   r   )r>   r   r>   )r   r>   r>   )r>   r>   r   r@   )rX  r>   r   r   r   r   r   )r>   r   r>   r   r   r   r   )r   r>   r   r>   r   r   r   )r   r   r>   r   r>   r   r   )r   r   r   r>   r>   r>   r   )r   r   r   r   r>   r?   r>   )r   r   r   r   r   r>   r@   )r@   r>   r   r   r   r   r   )r>   r?   r>   r   r   r   r   )r   r>   r>   r>   r   r   r   )r#   	wilkinson)wminuswplusrB   rB   rE   test_wilkinsoni  s<   
r  c                  C   s>   t d\} }tdd| |g}|| tddddgksJ d S )Nx yr?   r>   r   )r   rx   diffr#   r2   r3   r   rB   rB   rE   	test_diff  s   "r  c                  C   sJ   t d\} }tdd| |g}|| tdd| d d ||  gks#J d S )Nr  r?   r>   )r   rx   	integrater#   r  rB   rB   rE   test_integrate  s   .r  c                     s   t d\} }tdd| t| | t| | d g}tdd| |g}tt||  t| gt|| t| gd|  dgg}|||ksFJ tddg d tddg dtt fdd	 tt fd
d	 d S )Nzrho,phir@   r>   r?   r   r=   rA   c                      s     tddgS r  )jacobianr#   rB   r   rB   rE   r`     r  z test_jacobian2.<locals>.<lambda>c                      s
     S rZ   )r  rB   r   rB   rE   r`     r   )r   rx   r   r   r#   r  r   r  )rhophiXYJrB   r   rE   test_jacobian2  s   &
r  c                  C   sJ   t d\} }tddd|  |g}|| dtddtdd|gks#J d S )Nr  r?   r>   ry   )r   rx   limitr#   r   r  rB   rB   rE   
test_limit  s   *r  c                      sN   t g dg dg dg g dtt fdd tt fdd d S )Nr}   r|   r   r  c                      s     S rZ   rB   rB   rD   vrB   rE   r`     r   z"test_issue_13774.<locals>.<lambda>c                      r  rZ   rB   rB   r  rB   rE   r`     r   )r#   r   r  rB   rB   r  rE   test_issue_13774  s   r  c                     s   t d t dttdd  tt fdd tt fdd tt fdd td\} }}ttd	| g t|  gksDJ ttd	|| g td
|  gd	| ggks]J ttd	||| g td
d
|  gd	d
| gd
d	| ggks~J d S )Nr2   r3   c                   S   r  r'  )r#   	companionrB   rB   rB   rE   r`     r   z test_companion.<locals>.<lambda>c                      s   t tdg S r'  r#   r  r/   rB   r   rB   rE   r`     r  c                      s   t tddg S r   r  rB   r   rB   rE   r`     r   c                      s   t t   gS rZ   r  rB   r2   r3   rB   rE   r`     s    zc0:3r>   r   )r   r   rp  r   r#   r  r/   )c0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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 zr}   r>   r?   r@   )r>   r>   r>   r>   r>   )r   r#   rd  zip)r2   r3   r4   r   r   rB   rB   rE   test_issue_10589  s   ,&r  c                  C   sf   G dd dt } tddg d}| ddg d}|| }t|| s#J |tddgddggks1J d S )	Nc                   @   s   e Zd Zejd ZdS )ztest_rmul_pr19860.<locals>.Foog{Gz?N)rT   rU   rV   r+   _op_priorityrB   rB   rB   rE   Foo  s    r  r?   r=   r   r   r  r  )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 rZ   rB   rB   r   r   rB   rE   r`     r   z"test_issue_18956.<locals>.<lambda>c                      r  rZ   rB   rB   r  rB   rE   r`     r   )Arrayr#   r   r  rB   rB   r  rE   test_issue_18956  s   r  c                  C   sP   G dd dt } tddddg}||  ksJ G dd d| }|| ks&J d S )Nc                   @   s   e Zd Zdd Zdd ZdS )ztest__eq__.<locals>.Myc                 s   s    dV  dV  d S r  rB   selfrB   rB   rE   __iter__  s   ztest__eq__.<locals>.My.__iter__c                 S   s   t | | S rZ   )r   )r  r^   rB   rB   rE   __getitem__  s   z"test__eq__.<locals>.My.__getitem__N)rT   rU   rV   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 rZ   r  r  rB   rB   rE   _sympy_  s   z$test__eq__.<locals>.My_sympy._sympy_N)rT   rU   rV   r  rB   rB   rB   rE   My_sympy  s    r  )objectr#   )r  r   r  rB   rB   rE   
test__eq__  s
   r  )sympy.testing.pytestr   r   r   sympy.assumptionsr   sympy.core.exprr   sympy.core.addr   sympy.core.functionr   sympy.core.kindr	   r
   sympy.core.numbersr   r   r   r   r   sympy.core.singletonr   sympy.core.symbolr   r   $sympy.functions.elementary.complexesr   &sympy.functions.elementary.exponentialr   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   r   sympy.matrices.exceptionsr   r   sympy.matrices.kindr   rG   r   r   r   r   r   r    r!   rH   r"   sympy.matricesr#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   sympy.polys.polytoolsr/   sympy.utilities.iterablesr0   #sympy.tensor.array.dense_ndim_arrayr1   r  	sympy.abcr2   r3   r4   rP   rR   re   rj   rk   rm   rn   ro   rq   rr   rs   ru   rv   rw   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-  r0  r6  r9  rB  rD  rH  rT  rU  r[  rb  re  rg  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  rB   rB   rB   rE   <module>   s  $8A
			
 		$!!SO"

