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

ShapeErrorNonSquareMatrixError_MinimalMatrix_CastableMatrixMatrixShapingMatrixPropertiesMatrixOperationsMatrixArithmeticMatrixSpecial
MatrixKind)MatrixCalculus)Matrixdiageyematrix_multiply_elementwiseoneszerosSparseMatrixbandedMutableDenseMatrixMutableSparseMatrixImmutableDenseMatrixImmutableSparseMatrix)Poly)flatten)raisesXFAIL)ImmutableDenseNDimArray)xyzc                   @   s   e Zd ZdS )ShapingOnlyMatrixN__name__
__module____qualname__ r9   r9   g/var/www/html/Darija-Ai-Train/env/lib/python3.8/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ddddddg} | jdks&t| jdks4t| d dksDt| d dksTtt| ddddddgksptt| dd d f dddgkstt| d d df ddgkstt| d d d d f t| kst| d d d d f | kstt | | kstt dddgdddgg| ks&tt dddgdddgf| ksHtt dd	g| ks^tt d
| ksptt ddgddgddgg| krtd S )N                  rY   rY   rY   rW   rX   rZ   r[   r\   )r^   r_   )r   rowsAssertionErrorcolslistr1   r9   r9   r:   test__MinimalMatrixU   s     " $""re   c                   C   s   t ddgddggjttks"tt ddgddggjttksDtt ddg jttks^tt tggjttksxtt dt dggggjttksttdggjttksttdt dggggjttkstd S )NrY   rW   rX   rZ   r   )r    kindr   r   ra   r1   r   r&   r9   r9   r9   r:   	test_kindh   s    ""$rg   c                  C   sP   t ddddddg} |  }|jdks*ttdD ]}|| |d ks2tq2d S NrW   rY   rX   rZ   )r4   Zvecrb   ra   range)mZm_vecr?   r9   r9   r:   test_vecs   s
    rk   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 td S )Nza:d)r   r   r   rY   rY   r   r]   )r   r(   r*   r)   r+   Ztodokra   )abcdm1m2m3Zm4r9   r9   r:   
test_todok{   s    0rv   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st	d S )NrW   rX   rZ   )
r   OneHalfr1   r2   ZZeror3   r4   tolistra   )lstZflat_lstrj   r9   r9   r:   test_tolist   s    82r{   c                  C   sR   t ddtjdgdtjgtdgg} dtjidtjidtid}|  |ksNtd S )NrX   rW   r   rY   r   rY   rW   )r4   r   rw   rx   r1   Ztododra   )rj   dictr9   r9   r:   
test_todod   s    "r~   c                      s^  t ddddddddddd	g	 tt fd
d tt fdd tt fdd tt fdd  d d  krtdddgdddggksn t d d  krtddgddgddggksn t d d  krtdddgddd	ggksn t d d  krTtddgddgdd	ggksZn td S )NrX   rY   rW   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   )r4   r.   
IndexErrorr   r    ra   r   r9   r9   r   r:   test_row_col_del   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}|  | gksZt| |gkslt| |gks~td S NrY   rW   rX   )r    r1   r2   r3   get_diag_blocksra   )ro   rp   rq   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st	| | ||gkst	| | ||gkst	| |||gkst	d S r   )
r    r1   r2   r3   r!   r4   r`   rb   r   ra   )ro   rp   rq   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td S )NrY   rW   r   rY   rW   )r4   shapera   rj   r9   r9   r:   
test_shape   s    r   c                  C   sh   t d} | ddtdddks$ttdddd }|ddtdksLt|d	d
tdksdt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>)r|   )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    ra   r4   m0rs   r9   r9   r:   test_reshape   s     r   c                  C   sb   t ddddddddddd	g	} | d
tdddddgks>t| d
tdddddgks^td S )NrX   rY   rW   rZ   r[   r\   r   r   r   r   )r4   rowr    ra   colr   r9   r9   r:   test_row_col   s     r   c                   C   sF   t dtdddgtddddgddddgddddggksBtd S NrX   r   rY   r   )rF   Zrow_joinr    ra   r9   r9   r9   r:   test_row_join   s    

r   c                   C   sJ   t dtdddggtdddgdddgdddgdddggksFtd S r   )rF   Zcol_joinr    ra   r9   r9   r9   r:   test_col_join   s    
r   c                  C   s`   t dddgg} tddD ]@}dddg}||d ttd|| d |kstqd S )NrZ   r[   rY   r   rX   )	r    ri   insertr-   rF   Z
row_insertr   ry   ra   )Zr4r?   lr9   r9   r:   test_row_insert   s
    
r   c                  C   s  t dddg} tddD ]@}dddg}||d ttd|| d |kst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 ddddddddgddddddddgddddddddgddddddddgddddddddgddddddddggkstd S )	NrZ   r   r[   r   rX   r\   rW   rY   )
r    ri   r   r-   rH   Z
col_insertr   ry   ra   rF   )Zc4r?   r   r9   r9   r:   test_col_insert   s    
(6r   c                
      s   t dddd   dddgddgtdddddddd	gksBt ddgdddgtdddddddd
gkstt tdtd kst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   rW   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    ra   ri   r.   r   r9   r9   r   r:   test_extract   s    22r   c                     s:  t dddd  t dddd    ks2t    t      krtdddddddddg	ddd	ddd	ddd	g	d
ddd
ddd
ddg	dddddddddg	gksn ttt fdd t t ksttdd} tdd}tdd}tdd}t | |||  jdkr2 jd
ks6t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[   r\   r   r   r   r   r   c                      s      S r;   )hstackr9   rj   rt   r9   r:   rA     rB   )	r4   r   ra   r    r.   r   r%   r`   rb   )M1M2ZM3ZM4r9   r   r:   test_hstack   s"    "r   c                      s   t dddd  t dddd    ks2t    t      krtdddgddd	gd
ddgdddgdddgddd	gd
ddgdddgdddgddd	gd
ddgdddggksn ttt fdd t t kst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   r   rY   rW   r[   r\   r   r   r   r   r   c                      s      S r;   )vstackr9   r   r9   r:   rA   !  rB   )r4   r   ra   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<t| tthksPtd S NrW   rY   )rI   r1   Zatomsr   rw   ZNegativeOnera   r   r   r9   r9   r:   
test_atoms&  s     r   c                   C   s    t tgdggjthkstd S rG   )rI   r1   Zfree_symbolsra   r9   r9   r9   r:   test_free_symbols,  s    r   c                  C   s\   t ttfdf} | tst| tr,t| ts:tt dtfdf} | trXtd S )N)rW   rX   rW   )rI   r1   r2   hasra   r3   r   r   r9   r9   r:   test_has0  s    r   c                  C   s  t d} tddddg dks$ttddd| d d|   d t| d d  d| t t |  t dg	}| dksxt|jdddkst|jd	d
 ddksttdddd |D }|jdddksttdddd tjgt|dd   D }| dks
td S )Nr1   rW   rY   FrX   r   Tsimplifyc                 S   s   | S r;   r9   rd   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  s     z*test_is_anti_symmetric.<locals>.<listcomp>c                 S   s   g | ]}|  qS r9   r   r   r9   r9   r:   r   D  s     )r   rI   Zis_anti_symmetricra   r2   r   rw   rc   )r1   rj   r9   r9   r:   test_is_anti_symmetric:  s    D*r   c                  C   s~  t ddddddg} |  r t|  s,t| jdds<tt ddddddg} |  s\tt ddtddd} |  s|t|  stt dddddddddddg	} | tdddkstt ddtdd} |  rt|  stt d} |  stt d} |  sttdddtd dt  d ttd d ddtddg	} |  sRt| jddrdt| 	 jddsztd S )	NrW   r   rY   Fr   rX   ))r[   r   r   r\   rl   ))r[   r   r   )r   r\   r   )
rI   Zis_diagonalra   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 tt dt tgt dgg} | jdksHtt ttgt dgg} | jd ksltt tdgt dgg} | jdkstd S )NrY   rW   F)rI   r   Zis_hermitianra   r1   ro   r9   r9   r:   test_is_hermitianh  s    
r   c                   C   sL   t djstttdjr tttdjr2ttdddggjrHtd S )NrX   rY   r   )rK   Zis_Identityra   rI   r%   r$   r9   r9   r9   r:   test_is_Identitys  s    r   c                  C   s
  t ttgttgg} |  dks$tt ddddgdddd	gg} |  d
ksPtt ddddgddtd	gg} |  dks|tt dtdgg} |  dkstt dddgg} |  d
kstt dgtgdgg} |  dkstt dgdgdgg} |  d
kstd S )NTrY   rW   rX   rZ   r[   r\   r   r   F)rI   r1   Zis_symbolicra   r   r9   r9   r:   test_is_symbolic{  s    r   c                  C   sD   t dddgg} | jdkstt dgdgdgg} | jdks@td S )NrY   rW   rX   TF)rI   Zis_upperra   r   r9   r9   r:   test_is_upper  s    r   c                  C   sD   t dddgg} | jdkstt dgdgdgg} | jdks@td S )NrY   rW   rX   FT)rI   Zis_lowerra   r   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.t|js8td S NrY   rW   )rI   Z	is_squarera   r   r9   r9   r:   test_is_square  s    
r   c                  C   sD   t ddddddg} |  s tt ddddddg} |  r@td S )NrW   r   rY   )rI   r   ra   r   r9   r9   r:   test_is_symmetric  s    r   c                  C   s   t dddgdddgdddgg} | js*tt dddddddddddg	} | jsRtt dddddddddddg	} | jdks~t| jdkstt dddgdddgdddgg} | jrtd S )	NrX   rZ   rY   rW   r[   r   r   F)rI   Zis_upper_hessenbergra   Zis_lower_hessenbergr   r9   r9   r:   test_is_hessenberg  s     

 r   c                  C   s   t ddg jstt ddgddggjs,tt tddjs@tt tdjrRtt tdgddggjd ksptt tdgddggjdksttddd} t | dgddggjdkstd S )	Nr   rX   rZ   rY   Fro   T)Znonzero)rI   Zis_zero_matrixra   r%   r"   r1   r   r   r9   r9   r:   test_is_zero  s    r   c                  C   sb   t tddddddg dddhks*ttddd} t tdd| dddg | dhks^td S )NrW   r   rY   rX   r1   Treal)setrI   valuesra   r   rd   r9   r9   r:   test_values  s    r   c                  C   sb   t td} | dd tdd ks*t| dd tdksDt| dd tdks^td S )NrX   c                 S   s   d|  S NrW   r9   rd   r9   r9   r:   rA     rB   z test_applyfunc.<locals>.<lambda>rW   c                 S   s   dS rG   r9   rd   r9   r9   r:   rA     rB   c                 S   s   dS NrY   r9   rd   r9   r9   r:   rA     rB   )rM   r"   Z	applyfuncra   r%   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:td S )Nr   rY   )r   rM   Zadjointr    ra   )ZdatZansr9   r9   r:   test_adjoint  s    r   c               	   C   st   t ddddddg} t dddtj ddtj  ddtj  ddtj  g}| \}}|| ksdt|| ksptd S rh   )rM   r   ZImaginaryUnitZas_real_imagra   )rs   ru   ro   rp   r9   r9   r:   test_as_real_imag  s     r   c                  C   s   t dtdgdddgg} | jtddgtdgddggks<t| jtdt dgdddggks`t| j|  ksrt| j| jjkst| jtddgt dgddggkstd S )Nr   r[   rY   rW   )rM   r   Tr    ra   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*t|  tdt ggksFtd S )NF)evaluater   rW   )rM   r   r1   ra   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 s2tt fddtdD sPtt fddtdD sntd S )	NrW   rY   r[   r\   c                 3   s&   | ]}   |  |   kV  qd S r;   Zevalfr   r?   r   r9   r:   	<genexpr>  s     ztest_evalf.<locals>.<genexpr>c                 3   s*   | ]"}  d |  |  d kV  qdS rW   Nr   r   r   r9   r:   r     s     c                 3   s*   | ]"}  d |  |  d kV  qdS r   rD   r   r   r9   r:   r     s     )rM   r   allri   ra   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sttddd}t ddtt| gjddtt	|tt
|  gkstd S )NrW   rX   ro   Tr   rY   )complex)rM   r1   r2   r   r    ra   r   r   r   r   r   )r   rs   ro   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st	| t
tt
t@ }|ttd tgttd  td t ggkst	| tttt@ }|ttd t gt td  td  t ggks>t	d S r   )rM   r   r1   r   r2   Zrefiner   r   r    ra   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sPt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   replacera   )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st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 t| d| d  krn| d  krnt dkstn t| d| d	  kr| d
  krt dksn t|  | d  kr| d  krt dksn t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rot90ra   r   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st	dt d }t|gg}| t|ggkst	|jt
dt|jt
dggkst	tddgddgg}d|   tdd	ksJt	d S )
NrE   frY   rW   )ratio   rX   rZ   "   )r   r   rM   r1   r2   r   r   r   r    ra   r
   tracer   )rE   r   r   eqrj   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s4t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svt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stt tdgtt dggtdtditddgddggkstt tt ggjttd ttd idd	ttd td  ggks>td S )
NrY   rZ   r[   rW   r   r   r   T)Zsimultaneous)rM   r1   subsr    ra   r2   r9   r9   r9   r:   	test_subsD  s    4(($(r  c                  C   s4   t dddgdddgdddgg} |  dks0td S )NrY   r   r[   r      )rM   r  ra   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s6tt tdgtt dggtdtditddgddggksttd S )NrY   rZ   r[   rW   r   r   r   )rM   r1   Zxreplacer    ra   r2   r9   r9   r9   r:   test_xreplaceW  s    $r
  c                     s  t ddddddddddd	d
ddg 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ddddgd	d
ddgddddggksn t ddgddgg}  jddgddggdd|   krtddddgddddgd
dd	dggksn t jddgddggdd}  jddgddggddd|   krtddddgddddgdd	d
dggksn t ddddgtddddgd	d
ddgddddggkstddl	m
}  |ddddgtddddgd	d
ddgddddggkstd S )NrX   rZ   rY   rW   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   rb   )orientationZbackward)	direction)r  r  )Permutation)rM   r.   r   
ValueErrorZpermute_rowsr  r    ra   Zpermute_colsZsympy.combinatoricsr  )rp   r  r9   r   r:   test_permute^  sH    $ 


$


&








r  c               	   C   s   t ddddgddddgddddgddddgg} | d}|t ddddgddddgddddgddddggksrt| d}|t ddddgddddgddddgddddggkst|  }|t ddddgddddgddddgddddggkstd S )NrY   rW   r   r   )rM   Zupper_triangularra   )r   Rr9   r9   r:   test_upper_triangular  s6    

















r  c               	   C   s   t ddddgddddgddddgddddgg} |  }|tddddgddddgddddgddddggkspt| d}|tddddgddddgddddgddddggkst| d}|tddddgddddgddddgddddggkstd S )NrY   r   rW   r   )rM   Zlower_triangularrQ   ra   )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<td S )NrY   r   rW   )rQ   r1   r2   absr   ra   r   r9   r9   r:   test_abs  s    r  c                      s   t dddgtttgdt dtt gg    t dddgdt dt dt gdt ddt t ggksltt ddddgtt fdd	 d S )
NrY   rW   rX   irZ   r\   ic                      s     S r;   r9   r9   rj   rE   r9   r:   rA     rB   ztest_add.<locals>.<lambda>)rQ   r1   r2   r3   ra   r.   r   r9   r9   r  r:   test_add  s    (Dr  c                     sr  t d t dtt fdd tt fdd   } | d dksNt| d d	ks^t| d
 dksnt| d dks~t| d dkst| d dkstztd W n tk
r   Y nhX | d dkst| d d	kst| d
 dkst| d dkst| d dkst| d dks&t | }|t | ksDt|d dksVt|d dksht|d
 dkszt|d dkst|d dkst|d dksttt fdd t	d } t
| t st| d tkst| d d	t kst| d
 dt kst| d dks0tt }| |ksFtd } t
| t s^t| d dkspt| d dkst| d
 dkst| d dkstztd W n tk
r   Y nZX t
| t st| d dkst| d dkst| d
 dkst| d dks"tttdd}tdd	 }t|||g}||t|g|g|ggksntd S )N)r   r   r   )r   )rX   r   c                      s     S r;   r9   r9   ro   rp   r9   r:   rA     rB   z%test_multiplication.<locals>.<lambda>c                      s    i  S r;   r9   r9   r   r9   r:   rA     rB   rl   r   rm   rW   rn   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   	TypeErrorra   evalSyntaxErrorr  r#   r   
isinstancer1   r    r$   r   )rq   hc2r   _hr   r9   r  r:   test_multiplication  sz    

r%  c                  C   s   t ddgddgg} | dtks&t| dtks8tztd W n& tk
rX   Y n tk
rj   Y nX ztd W n& tk
r   Y n tk
r   Y nX d S )NrY   rW   rX   rZ   z2 @ aza @ 2)r    
__matmul__NotImplementedra   __rmatmul__r  r   r  r   r9   r9   r:   test_matmul#  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sVt|| t|d| gd| d| ggkst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   r*  rY   rW   rX   rZ   N)r   r    ra   )r*  r   rp   r9   r9   r:   test_non_matmul<  s
    ,r+  c                  C   s$  t tdd  tddgddgg} | d d d  dks:ttdddgdddgd	d
dgg} | d d d  dksrt| d tdkst| d | ksttdggd d dd ksttddgddggtd tddgddggksttddgddgg} | jddd| jdddks t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  rY   r\   r  )	i"  i     i  i  ip  i  i  i  r   d   rl   r   r   r        Zcayley)methodmultiply)r.   r   rQ   ra   r"   r	   r    powr   r9   r9   r:   
test_powerL  s      4r4  c                  C   s.   t ddddg} |  t ddddgks*td S )NrY   rW   r   r   rQ   ra   rD   r9   r9   r:   test_negZ  s    r6  c                  C   s0   t ddddg} | |  t ddddgks,td S )NrY   rW   r   r5  rD   r9   r9   r:   test_sub_  s    r7  c                  C   s:   t ddddg} | d t ddtjtdd gks6td S r   )rQ   r   rx   ra   rD   r9   r9   r:   test_divd  s    r8  c                   C   sr   t tddddddgks tt tdddddgks>tttdtksTtttjdtdtksntd S )NrW   rY   r   r   )rc   rU   r"   ra   typer    r9   r9   r9   r:   test_eyei  s     r:  c                   C   s   t tddddddgks tt tdddddgks>ttddtdddgdddggksftttdtks|tttjdtdtkstd S )NrW   rY   rX   r   )rc   rU   r$   ra   r    r9  r9   r9   r9   r:   	test_onesp  s
     (r;  c                   C   s   t tddddddgks tt tdddddgks>ttddtdddgdddggksftttdtks|tttjdtdtkstd S )NrW   r   rX   r   )rc   rU   r%   ra   r    r9  r9   r9   r9   r:   
test_zerosx  s
     (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ddddddgddddddg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st tdddddddgdddddddg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sDt tdddddddgdddddddg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st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ddddddgddddddgddddddgddddddggks|ttt fd	d
 dtdggkstdddtddgddggkstdddtddgddggkstddddtddgddgddggks(tddg tddgddggksNttddgtdgdggkstt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sn tt	dt kstt	dtdtks ttdddgtdddks$ttjdddgddj
dksDttdddggj
dksbttjdddggddj
dksttdddgggj
dkstttddddtddddgddddggkstttddddtddgddgddgddggkstd S )NrY   rW   rX   r   rZ   r[   r\   r   c                      s    dddS )Nr   r[   r`   r9   r9   ro   rp   rq   r!   r9   r:   rA     rB   z test_diag_make.<locals>.<lambda>r=  )rb   )r`   rb   F)unpackr   r   r   )rU   r!   r    r1   r2   r3   ra   r.   r  r9  r   r$   r9   r9   r>  r:   test_diag_make  s     		&&.
$ " 

r@  c                     sB  t ddtd } | dks*tt| dks:ttddksPttddksfttd	d
ks|tt tksttddddi}t| t|ksttt|kst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>t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   rA  r9   r   r9   r:   rA     rB   c                      s
     tS r;   )rB  r   r9   r   r9   r:   rA     rB   c                    s   i | ]}|t  |qS r9   )rc   rB  r   r   r9   r:   
<dictcomp>  s    z!test_diagonal.<locals>.<dictcomp>)r    ri   rB  ra   tupler9  r&   r.   r  r$   r'   r`   rb   )rr   sr9   )r   rj   r:   test_diagonal  s(    
rF  c                   C   s  t ddt jddd  krt jddd  krt jdddd  krt jdddd  krtddd	gd	ddgd	d	dggksn tt jddd
dtdd	d	gddd	gd	ddggkst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td S )NrX   rW   
eigenvalue)sizerH  upper)Zband)rI  eigenvalrH  rY   r   lowerc                   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   rM  r9   r9   r9   r:   rA     rB   c                   S   s   t jddS )NrW   rG  rM  r9   r9   r9   r:   rA     rB   c                   S   s   t jdddS )NrW   rZ   )rH  rK  rM  r9   r9   r9   r:   rA     s    )rI  rK  )rU   rN  r    ra   r.   r  r9   r9   r9   r:   test_jordan_block  s>      
rO  c                     s6  t ddgddgg} | t dgdggt dgdgggks@t| jt dgdggddt dtd d gtdd gggkst| 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st| t dgdggt dgdggt dgdgggkst| t dgdggg ks4tt dddgdd
dgdddg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stt dddgt dddgt dddgg tt fdd t dddgt ddd
gt dddgg tt fdd d S )NrY   rW   rX   rZ   T)	normalizer[   r   ir\   r   r   r   r   r   r         c                      s   t j ddiS NZ	rankcheckTr    orthogonalizer9   Zvecsr9   r:   rA     rB   z$test_orthogonalize.<locals>.<lambda>r   c                      s   t j ddiS rS  rT  r9   rV  r9   r:   rA     rB   )r    rU  ra   r   r   r.   r  r  r9   rV  r:   test_orthogonalize  s*    ,$"*"
  .*
((rW  c                  C   sr  t d\} }| t dddgdddgdddggks6t|t dddgdddgdddggks^tt d\} }| t dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddggkst|t dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddggksntd S )NrY   r   r   rX   r   r   rW   )r    Z	wilkinsonra   )ZwminusZwplusr9   r9   r:   test_wilkinson  s<    
rX  c                  C   s>   t d\} }tdd| |g}|| tddddgks:td S )Nx yrW   rY   r   )r   rV   diffr    ra   r1   r2   rj   r9   r9   r:   	test_diff:  s    r\  c                  C   sJ   t d\} }tdd| |g}|| tdd| d d ||  gksFtd S )NrY  rW   rY   )r   rV   Z	integrater    ra   r[  r9   r9   r:   test_integrateB  s    r]  c                     s   t d\} }tdd| t| | t| | d g}tdd| |g}tt||  t| gt|| t| gd|  dgg}|||ksttddddddg tddddddgtt fdd tt fd	d d S )
Nzrho,phirX   rY   rW   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;   )r^  r9   r   r9   r:   rA   V  rB   )	r   rV   r   r   r    r^  ra   r.   r  )rhophiXYJr9   r   r:   test_jacobian2H  s    &
rd  c                  C   sJ   t d\} }tddd|  |g}|| dtddtdd|gksFtd S )NrY  rW   rY   r[   )r   rV   limitr    r   ra   r[  r9   r9   r:   
test_limitY  s    rf  c                      sV   t dddgdddgddd	gg dddgtt fd
d tt fdd d S )NrY   rW   rX   rZ   r[   r\   r   r   r   c                      s     S r;   r9   r9   r   vr9   r:   rA   b  rB   z"test_issue_13774.<locals>.<lambda>c                      s     S r;   r9   r9   rg  r9   r:   rA   c  rB   )r    r.   r  r9   r9   rg  r:   test_issue_13774_  s     
ri  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stttd	|| g td
|  gd	| ggkstttd	||| g td
d
|  gd	d
| gd
d	| ggkst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    rj  r,   r9   rd   r9   r:   rA   i  rB   c                      s   t tddg S r   rk  r9   rd   r9   r:   rA   j  rB   c                      s   t t   gS r;   rk  r9   r1   r2   r9   r:   rA   k  rB   zc0:3rY   r   )r   r.   r  r   r    rj  r,   ra   )Zc0c1r#  r9   rl  r:   test_companione  s    $$rn  c               	   C   s   t d\} }}t| ||g}|t| ||gdddg}|tdgdgdggksTtt| | | | | g| | | | | g| | | | | gg}|t| gdg}|tdddddgdddddgdddddggkstd S )Nzx, y zrY   rW   rX   )r   r    r  zipra   )r1   r2   r3   r   r   r9   r9   r:   test_issue_10589t  s    ,rp  c                  C   sn   G dd dt } tddddddg}| ddddddg}|| }t|| sNt|tddgd	d
ggksjt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   rq  rW   rY   rX   rZ   r   r   r  r/  )r*   r    r!  ra   )rq  ro   rp   rq   r9   r9   r:   test_rmul_pr19860~  s    rr  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   rs  r9   r:   rA     rB   )Arrayr    r.   r  r9   r9   rs  r:   test_issue_18956  s    ru  c                  C   sP   G dd dt } tddddg}||  ks.tG dd d| }|| ksLt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;   )rc   )rw  r?   r9   r9   r:   __getitem__  s    z"test__eq__.<locals>.My.__getitem__N)r6   r7   r8   rx  ry  r9   r9   r9   r:   My  s   rz  rW   rY   c                   @   s   e Zd Zdd ZdS )ztest__eq__.<locals>.My_sympyc                 S   s   t | S r;   r,  rv  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    ra   )rz  ro   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   rt  Z	sympy.abcr1   r2   r3   r4   rF   rH   rI   rK   rL   rM   rO   rP   rQ   rS   rT   rU   rV   re   rg   rk   rv   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r
  r  r  r  r  r  r%  r)  r+  r4  r6  r7  r8  r:  r;  r<  r@  rF  rO  rW  rX  r\  r]  rd  rf  ri  rn  rp  rr  ru  r~  r9   r9   r9   r:   <module>   s   08
			
 		$!!SO"

