U
    -eZ                     @   s  d dl 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mZmZmZmZmZmZmZmZ d dlmZ dd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Z dd Z!dd Z"dd Z#dd Z$d d! Z%d"d# Z&d$d% Z'd&d' Z(d(S ))    )FloatIRational)S)Symbolsymbols)Abs)PurePoly)	MatrixMutableSparseMatrixImmutableSparseMatrixSparseMatrixeyeoneszeros
ShapeErrorNonSquareMatrixError)raisesc                  C   s   t dddddgddggi} | t ddgddggks8tt dddddggi} | t ddgddggksjtt dddddgi} | t ddgddggkstd S )N   r   r            r   r   AssertionError)a r   a/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/matrices/tests/test_sparse.pytest_sparse_creation   s    r   c            !         s  dd } dd }t tdd  td}t||ks6tdd	lm} tg }|d
dg}|||ksht|||ksztt	||t	|kstt	||t	|kstdd t
dD }tj| tddg kstdd t
dD }tj| tddg ksttd}d|d< |d dks*td
|d< d|d< |tdksLtd|d< |tdksftd|d< |tdkst| dddksttd}td}|| }|d dkst|d dkst|d dkst|d dkst|d dks
t|d  dkstztd! W n tk
r>   Y nnX |d dksRt|d dksdt|d dksvt|d dkst|d dkst|d  dksttd"}|td" }t|tst|d |kst|d d| kst|d d| kst|d dks td| }t|ts8t|d dksJt|d d#ks\t|d d$ksnt|d dksttddgddgg}|d d d  d%d&d'd(gksttdd
dgdddgdd)d
gg}|d d d  d*d+d,d-d.d/d0d1d2g	ksttd"}t|dgddgg}|}	|	j|	jks4t|	jdksDt|	d d  |dddgksbttdd|dddg}|}	|	j|	jkst|	jdkst|	d d  |dddgkst||kst| d}
|
d
 |
td
ddgddd
ggkst| d}
|
d
 |
td
dgddgdd
ggks2ttd}
d|
d < |
d
d |
tdd
dgd
ddgddd
ggkszt|
dd
 |
td
ddgdd
dgddd
ggksttd
dd
dg}| }| }|d d
kst|d |tddg kst|d
 |td
d
d
gks$ttd
ddgd
dgd
ggtd
ddgd
ddgd
ddggksdttddd| di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 td3d  td
dd
dg d
dggksttddd
ddgg d
dgddggkstt td4d  t td5d  td6gts@ttd ddijdksZttd dd
ijd7kstttd d dd
ijd7kstt td8d  t td9d  t td:d  td"td; }}td
d
dg  dksttd
gg  d
ksttd<  d=kstt|d
f|d| ff  d| | | ksJttd>  d
ks`ttd?  d@ksvttdA  dksttdB  dCksttdD  dEksttdF  dGksttdH  dIksttdJ  dksttdK  dLk	sttdM  dNk	s&t| d}|d dd df | dk	sPt|ddddf |dk	srttdddOd }|dd d f td
ddPk	st|d
dd
f tdd
dQk	sttdd
ddgddddgdRdSd#dTgd)dUdVd$gg}|d d d=f tdd
dddTd$gk
s t|dWd d d f tdRdSd#dTgd)dUdVd$ggk
sVttd
dgddggd
gd
gf tdggk
st|d}	| d|	ddddf< |	tdXdXdYdZgk
stt!|	 dk
st| d|	d dd df< |	| dksttdd
d[|	d d df< |	td\d]d^d_gks4t|d|	d d d d f< |	|dks^tdA|	d d d d f< |	tdAkstddg|	d ddf< |	td`kst| d}|"d
dStd
dSdaksttdddbd }|"ddtdPdcdddegkst|"ddtdfdggks t| d}|#dhd | dd ksHt|#did |dksdtt$t|d
f|d| fftt%|d
ft%|dt%| ffksttddddgddddgdRdddgdWdddgg}|& \}}}|j'st|j(s t|| )|dj| |dks"ttddWddgddddgd
dWddgdkdddgg}|& \}}}|j'slt|j(sxt|| )|dj| |dksttd"td;tdl  }}}td
|d
fd|df|d|ff  & \}}}|j'st|j(st|| )|dj  |dksttdddgdddgdRddgg}tdd
dddg}|| }|*|}||kspttdd=dgdd#dgdRddgg}tdd
d=ddg}|| }|*|}||kst| d}|+ | dkst|j+dmdn| dkst|j+dodn| dksttdddgdddgdddgg}tt|+ }|| | dksZt|j+dmdn|kspt|j+dodn|ksttdddgdddgdddgg}tt|+ }|| | dkst|j+dmdn|kst|j+dodn|ksttd
dd
ddg}td
ddddg}|,|td
ddWddWgks>t|-dd dVksVttd
dt. fdpf}|j/td
dt. gddggkst|tddd
ddd
g |kst|tddd
d
d
d
g tddt. gddggkst|| dtd
dt. gddgd
dgdd
ggkst|0d| dtd
dt. gddgd
dgdd
ggksXt|1dt2dd
td
dt. dgdddggkst|j3dqdrrttdd  d= d<  4d
 fdsd  tdddgd=ddgdddggksttd  5d  tdddgdddgdddggks2t| d| d6 ksLttd
ddgdddgdddgg}|6 tdtdudugdvddgdwd
dggksttd
ddgdddgddRdSgg}|6 tdwddwgddvdgdwddwggksttd"}td;}td
d|d | d|d  ||  g}||g}|7|td| | |d g|d| | ggks`ttd
d||d |d  g}|7|td
dgd| |d  |d d |d  ggksttd
dgddgg}|8 \}}
t9}|td|d=d |dd |d
d |d=d  gdd|d=d  |d
 d |d
d |d=d  ggksTt|
td|d
d dRd|d=d  gd|d
d |d
d ggkst||
 |kst|j:| | dkstt9}tdddd
gd
ddd=gg  ; \}}|td
d|d dx |dUdx gdd
|dRdx |dudx ggks:ttd
dddddd
gdWduddWdydd
gddSdddddgd=dwdd
ddSdgg  ; \}}|td
ddddddgdddd
dddgdddddd
|d
d gdddddddggkst < }|d tdwd
dddddgkst|d
 tddd
ddddgks8t|d tdWdddWd
ddgks\t|d tddddd|d=d d
gksttd"}td;}| d}|=|t>|d
 d kst|=|t>|d
 d ksttdzd{d|g  ? } t@| A d=d
dgkstt9}td
ddgdd
dgddd
gg  B d
dtd
ddgtdd
dgtddd
ggfgkstttdddgdddgddd
gg  B d
d
t|d=d |dd d
ggfdd
tdd
dggfdd
td
d
dggfgkst 2ddtddi ksttd#d#dd)dd}d)d~d}d)dd	}|C dddddddddg	ksTt|D dddddddddg	ksxttdE dkstd S )Nc                 S   s
   t | S N)r   r   nr   r   r   
sparse_eye   s    z&test_sparse_matrix.<locals>.sparse_eyec                 S   s
   t | S r   r   r   r    r   r   r   sparse_zeros   s    z(test_sparse_matrix.<locals>.sparse_zerosc                   S   s
   t ddS Nr   r   r   r   r   r   r   <lambda>       z$test_sparse_matrix.<locals>.<lambda>r   r   r   r   r   )MutableDenseMatrixr   r   c                 S   s   g | ]}t d |qS r   r#   .0r!   r   r   r   
<listcomp>.   s     z&test_sparse_matrix.<locals>.<listcomp>r      c                 S   s   g | ]}t |d qS r-   r#   r.   r   r   r   r0   0   s     r   r   r   r   )r   r   r+      r*   )r3   )r4   r   )r3   )r4   r   )r   r*   )r   r   )r   r   )r   r1   )r5   )r   r      r+   r3      )r   r   z	c = a @ bx
      i  i  i,*  i7     i"  i     i  i  ip  i  i  i  c                   S   s   t ddddiS )Nr   r2   r&   r   r   r   r   r'      r(   c                   S   s   t dddgS )Nr   r   r&   r   r   r   r   r'      r(   c                   S   s   t ddddggS r%   r&   r   r   r   r   r'      r(   g?r5   c                   S   s   t d dddggS r%   r&   r   r   r   r   r'      r(   c                   S   s   t dd ddggS r%   r&   r   r   r   r   r'      r(   c                   S   s   t ddtdddS )Nr   r   )r   r2   )r   r   r   r   r   r   r'      r(   y))r   )   ))r   r   r   r   r   r   )r   r   r1   ))r   r   r4   )rC   r   rC   r   r   rC   r4   r   r4   r   r   r   i)r   r   r   r   )r4   r1   r6   r?   	   r9      r;         r:      )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   i  ))r   r   r   r   r;   )r   r   r   r   r   )r   r   r   rA   r   )r   r   rA   r   r?   )r   r   r   r   r1   i))r@   r   r   r   r4   )r   r   r   r4   )r   r   r>   r   r4   )r   r   r   rC   r4   )r   r   r   r   rA   i-  ))r   r   r   r   )rC   r   r   r   rD   rE   <   )r   r   r   r   )r4   r   r   r   )rH   r9   rI   r   rJ   )rN   rO   rP   rQ   )r   r   r   r   r      ))r   r6   rA   r   r   )r   r   r   r   r   )rC   r   r6   r   r   )r>   rC   r   r4   r   )r   r   r   r   r   {   c                 S   s   | | S r   r   ijr   r   r   r'     r(   r   r   r   )r   r   r?   rH   rI   rK   rL   rC   )r   r   r   r   )r   r   r   r   )r   r   r   r   rF   rT   )r   r   r   r   )r   r   r   r   )r   r   r   r   ))r   r   r   r   )r   r1   r6   r?   rG   rJ   )	r   r   r   r   r   r   r   r   r   c                 S   s   | | S r   r   rW   r   r   r   r'   :  r(   )r   r   r   )r   r   r   )r   r   r4   )r   r   r   r   r   r   )r   r   r   r   r   r4   c                 S   s   d|  S )Nr   r   r8   r   r   r   r'   B  r(   c                 S   s   dS Nr   r   r[   r   r   r   r'   C  r(   ZbackwardizCHmethodLDLr   r   F)simplifyc                    s   | d |df   S )Nr   r   r   )vrX   Mr   r   r'     r(      iir>      i)r   r   rA   )r   r   r   )rA   r   r   rM      )	r   )r   rH   )r   r   )r   r6   )r   rH   )r   r   )r4   r6   )r1   r   )rH   r6   )r   r   r7   )r   rH   r;   )r   r   r7   )r   r6   rM   )r   rH   r;   )r   r   ri   )r4   r6   rM   )r1   r   r;   )rH   r6   r7   )Fr   	TypeErrorr   r   sympy.matricesr,   r   Zrow_joincol_jointyperangeZhstackr
   ZvstacktodokevalSyntaxErrorr   
isinstancecolsrowsZrow_delZcol_delr   Zcol_swapZrow_swapcopy
ValueErrortolisthasr   shapeZdetlenZreshapeZ	applyfuncabsr   ZLUdecompositionZis_lowerZis_upperZpermute_rowsZLUsolveinvcrossZnormr   CZ
row_insertZ
col_insertr   Zis_symmetricZcol_opfillZcofactor_matrixZjacobianZQRdecompositionr   TZrrefZ	nullspaceZcharpolyr	   Z	eigenvalssortedkeysZ
eigenvectsrow_listcol_listZnnz)!r"   r$   r   r,   bZsparse_matricescr8   Amr   r=   Zm0m1m2ZtestmatLUpr]   ZsolnZAinvZv1Zv2testZsymsQRouttmpZbasisZsparse_eye3valsr   re   r   test_sparse_matrix   s0   " ,








$.2



















""""**62




 F


"


" "





"
"




 
 
(8@.4
 $$$,  


* $$r   c                   C   s*   t ddggdt ddggks&td S )Nr   r   r   r1   )r   Zscalar_multiplyr   r   r   r   r   test_scalar_multiply'  s    r   c                   C   s   t d t dkstd S )Nr5   rb   ))r   r   )r   r   )r   Z	transposer   r   r   r   r   test_transpose+  s    
r   c                   C   s,   t d dkstt d dks(td S )Nr   r4   )r   )r   r   r   )r   tracer   r   r   r   r   
test_trace0  s    r   c                   C   s<   t d ddddgkstt d ddddgks8td S )Nr   r   r   r   rZ   )r   r   r   )r   r   r   )r   r   r   r   r   r   r   r   
test_CL_RL5  s    



r   c                  C   sp   t dt d t dkstt dddd } t dddd }t|  t|  t| |   dksltd S )	Nr)   )r+   r*   )r2   r2   d   c                 S   s   t |dko| | dkS r\   intrW   r   r   r   r'   ?  r(   ztest_add.<locals>.<lambda>c                 S   s   t | dko||  dkS r\   r   rW   r   r   r   r'   @  r(   r   )r   r   rz   ro   )r   r   r   r   r   test_add<  s    r   c                   C   s   t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t td	d  t td
d  t tdd  d S )Nc                   S   s   t dddd S )Ngffffff?r   c                 S   s   dS r\   r   rW   r   r   r   r'   E  r(   z/test_errors.<locals>.<lambda>.<locals>.<lambda>r&   r   r   r   r   r'   E  r(   ztest_errors.<locals>.<lambda>c                   S   s   t dddgddgS Nr   r   r   r&   r   r   r   r   r'   F  r(   c                   S   s   t ddgddggd S Nr   r   r   r   rB   r&   r   r   r   r   r'   G  r(   c                   S   s   t ddgddggd S )Nr   r   r   r   r4   r&   r   r   r   r   r'   H  r(   c                   S   s   t ddgddggd S r   r&   r   r   r   r   r'   I  r(   c                   S   s"   t ddgddggddgt S )Nr   r   r   r   r   )r   Zcopyin_listsetr   r   r   r   r'   K  r(   c                   S   s   t ddgddggd S )Nr   r   r   r   r5   r&   r   r   r   r   r'   M  r(   c                   S   s   t dddgdS r   )r   r}   r   r   r   r   r'   N  r(   c                   S   s   t ddddgd S r   r&   r   r   r   r   r'   O  r(   c                   S   s    t ddddgt ddddg S r%   r&   r   r   r   r   r'   Q  r(   )r   rv   rj   
IndexErrorr   r   r   r   r   test_errorsD  s"     r   c                   C   s4   t  r
tt  t g kstt  t g gks0td S r   r   r   r   r   r   test_lenT  s    
r   c                   C   sl   t dtdt dksttt d dks4tt dtdt dksNttt d dkshtd S )Nr   )clsr   )r   r   r   rz   ro   r   r   r   r   r   test_sparse_zeros_sparse_eyeZ  s    r   c                  C   s  t ddi } d| d< | d d df t tdddgks:t| d dksJt| dd dgks`td| d< | d dksxt| ddd f t ddggksttdd	gg| ddd f< | dd d f t ddd	ggkstdd
gg| ddd f< | dd d f t ddd
ggkstd| d< | d d d df t dddgksDtdddg| d< | d d df t dddgksvttdddg| d< | d d df t dddgkstt dddg| d< | d d df t dddgkstd S )Nr   r   r*   r   r   *   r2   r4   r1   +      r   )r   r
   r   )sr   r   r   test_copyina  s(    &"$&($$r   c                  C   s  t d} |  tdddgdddgdddggks4t|  |  j tddd	gdd
dgd	ddggksjtt d} |  \}}d| tdddgdddgdddggkst|tdddgdddgdddggkst|| |j | kstt d} |  |  t tdkstt dddgdddgdddgg} t tddtddtddgtddtddtddgddt	j
gg}| jdd|kst| jdd|kst| | t tdkst| | d d df d}| | | d d df kst| | d d df d}| | | d d df ks&t| | } | | d d df d}| | | d d df ksft| | d d df d}| | | d d df kstd S )N))   r:   r@   )r:   r7   r   )r@   r   rI   r4   r   r   rA   r   r   r:   r@   r7   rI   rH   r>   ))r   r   r   r   )r   r   r   r   r1   r^   r_   ra   )r   Zcholeskyr
   r   r   ZLDLdecompositionr|   r   r   r   ZHalfZsolverl   Zsolve_least_squares)r   r   DZansr   r   r   r   test_sparse_solvex  s`    

r   c                  C   s   t tdd  t tdd  t tdd  td\} }}}td\}}}}t| dg||gg}t||g||gg}	t||g||gg}
t||  ||  g||| |   | ||| |   | gg}|	|	|kst
|	|
|kst
d S )Nc                   S   s   t ddggtddggS r%   r   lower_triangular_solver
   r   r   r   r   r'     s    z-test_lower_triangular_solve.<locals>.<lambda>c                   S   s    t ddgddggtdgS Nr   r   r   r   r   r   r   r   r   r'     s    c                   S   s*   t ddgddggtddgddggS Nr   r   r   r   r   r   r   r   r   r'     s    a:du:xr   )r   r   r   rv   r   r   r   r   r
   r   r   r   r   r   durd   wr8   r   Br~   solr   r   r   test_lower_triangular_solve  s    <r   c                  C   s   t tdd  t tdd  t tdd  td\} }}}td\}}}}t| |gd|gg}t||g||gg}	t||g||gg}
t||| |  |  ||| |  |  g|| || gg}|	|	|kst
|	|
|kst
d S )Nc                   S   s   t ddggtddggS r%   r   upper_triangular_solver
   r   r   r   r   r'     s    z-test_upper_triangular_solve.<locals>.<lambda>c                   S   s    t ddgddggtdgS r   r   r   r   r   r   r'     s    c                   S   s*   t ddgddggtddgddggS r   r   r   r   r   r   r'     s    r   r   r   )r   r   r   rj   r   r   r   r   r
   r   r   r   r   r   r   test_upper_triangular_solve  s    <r   c            
      C   s   t d\} }t d\}}}}t| dgd|gg}t||g||gg}t||g||gg}t||  ||  g|| || gg}	|||	kst|||	kstd S )Nza dr   r   )r   r   r   r   r
   Zdiagonal_solver   )
r   r   r   rd   r   r8   r   r   r~   r   r   r   r   test_diagonal_solve  s    $r   c                  C   s   t d} tdtgt dgg}|js(ttdtgt dgg}|jsHtdt |d< |jdksbt| |d< |jd ksxt|d t |d< |jdkstd S )	Nr8   r   r   r   r   Fr*   r+   )r   r   r   Zis_hermitianr   )r8   r   r   r   r   test_hermitian  s    

r   N))Zsympy.core.numbersr   r   r   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Z$sympy.functions.elementary.complexesr   Zsympy.polys.polytoolsr	   rk   r
   r   r   r   r   r   r   r   r   Zsympy.testing.pytestr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s4   ,	    1