
    gZ                         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 Zd	 Zd
 Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(dS )    )FloatIRational)S)Symbolsymbols)Abs)PurePoly)	MatrixMutableSparseMatrixImmutableSparseMatrixSparseMatrixeyeoneszeros
ShapeErrorNonSquareMatrixError)raisesc                  0   t          dddddgddggi          } | t          ddgddgg          k    sJ t          dddddggi          } | t          ddgddgg          k    sJ t          dddddgi          } | t          ddgddgg          k    sJ d S )N   r   r            r   r   )as    \/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/matrices/tests/test_sparse.pytest_sparse_creationr      s    QFaVaV$4566Aq!fq!f-......QFaVH-..Aq!fq!f-......QFQF+,,Aq!fq!f-........    c                  H6  ! d } d }t          t          d            t          d          }t          |          |k    sJ ddlm} t          g           } |ddg          }|                    |          |k    sJ |                    |          |k    sJ t          |                    |                    t          |          k    sJ t          |                    |                    t          |          k    sJ d	 t          d
          D             }t          j
        | t          ddg           k    sJ d t          d
          D             }t          j        | t          ddg           k    sJ t          d          }d
|d<   |d         d
k    sJ d|d<   d|d<   |t          d          k    sJ d|d<   |t          d          k    sJ d|d<   |t          d          k    sJ |                                dddk    sJ t          d          }t          d          }||z  }|d         dk    sJ |d         dk    sJ |d         dk    sJ |d         dk    sJ |d         dk    sJ |d         dk    sJ 	 t          d           |d         dk    sJ |d         dk    sJ |d         dk    sJ |d         dk    sJ |d         dk    sJ |d         dk    sJ n# t          $ r Y nw xY wt!          d          }|t!          d          z  }t#          |t                    sJ |d         |k    sJ |d         d|z  k    sJ |d         d|z  k    sJ |d         dk    sJ d|z  }t#          |t                    sJ |d         dk    sJ |d         dk    sJ |d         d k    sJ |d         dk    sJ t          ddgd
dgg          }|dz  d d          g d!k    sJ t          g d"g d#g d$g          }|dz  d d          g d%k    sJ t!          d          }t          |dgddgg          }|}	|	j        |	j        k    sJ |	j        dk    sJ |	d d          |dddgk    sJ t          dd|dddg          }|}	|	j        |	j        k    sJ |	j        dk    sJ |	d d          |dddgk    sJ ||k    sJ  | d          }
 |
j        d           |
t          g d&g d'g          k    sJ  | d          }
 |
j        d           |
t          ddgddgddgg          k    sJ t          j        d          }
d|
d<    |
j        dd           |
t          g d(g d&g d)g          k    sJ  |
j        dd           |
t          g d&g d(g d)g          k    sJ t          ddddg          }|                                }|                                }|d         dk    sJ |                    d           |t          ddg           k    sJ |                    d           |t          dddg          k    sJ t          g d*ddgdgg          t          g d*g d+g d&g          k    sJ t          d
d
d | d          i          t          g d,g d-g d.g d,g          k    sJ t          t4          d/            t          ddddg                                          ddggk    sJ t          dddddgg                                          ddgddggk    sJ t          t4          d0            t          t4          d1            t          d2g                              t:                    sJ t          d ddi          j        dk    sJ t          d ddi          j        d3k    sJ t          d d ddi          j        d3k    sJ t          t4          d4            t          t4          d5            t          t4          d6            t!          d          t!          d7          }}t          dddg                                          dk    sJ t          dgg                                          dk    sJ t          d8                                          d9k    sJ t          |df|d|z  ff                                          d|z  |z  |z
  k    sJ t          d:                                          dk    sJ t          d;                                          d<k    sJ t          d=                                          dk    sJ t          d>                                          d?k    sJ t          d@                                          dAk    sJ t          dB                                          dCk    sJ t          dD                                          dEk    sJ t          dF                                          dk    sJ t          dG                                          dHk    sJ t          dI                                          dJk    sJ  | d
          }|d dd df          | d          k    sJ |dd
ddf          |d          k    sJ t          dddK           }|dd d f         t          dddL          k    sJ |dddf         t          dddM          k    sJ t          g dNg dOg dPg dQg          }|d d d9f         t          d
dg dR          k    sJ |dSd d d f         t          g dPg dQg          k    sJ t          ddgdd
gg          dgdgf         t          d
gg          k    sJ  |d
          }	 | d          |	dd
dd
f<   |	t          g dT          k    sJ tA          |	                                          dk    sJ  | d          |	d dd df<   |	 | d
          k    sJ t          d
ddU          |	d d df<   |	t          g dV          k    sJ  |d
          |	d d d d f<   |	 |d
          k    sJ d=|	d d d d f<   |	t          d=          k    sJ ddg|	d ddf<   |	t          dW          k    sJ  | d          }|!                    ddX          t          ddXdY          k    sJ t          dd
dZ           }|!                    d
d          t          g d[          k    sJ |!                    dd          t          d\d]g          k    sJ  | d          }|"                    d^            | d          dz  k    sJ |"                    d_            |d          k    sJ tG          t          |df|d|z  ff                    t          tI          |          dftI          |          dtI          |          z  ff          k    sJ t          g d`g dag dbg dcg          }|%                                \  }}}|j&        sJ |j'        sJ ||z  (                    |dd          |z
   |d
          k    sJ t          g deg dfg dgg dhg          }|%                                \  }}}|j&        sJ |j'        sJ ||z  (                    |dd          |z
   |d
          k    sJ t!          d          t!          d7          t!          di          }}}t          d|dfd|df|d|ff          !!%                                \  }}}|j&        sJ |j'        sJ ||z  (                    |dd          !z
   |d          k    sJ t          g djg dkg dlg          }t          ddg dm          }||z  }|)                    |          }||k    sJ t          g dng dog dpg          }t          ddg dq          }||z  }|)                    |          }||k    sJ  | d
          }|*                                 | d
          k    sJ |*                    drs           | d
          k    sJ |*                    dts           | d
          k    sJ t          g djg dkg dug          }t          t          |          *                                          }||z   | d          k    sJ |*                    drs          |k    sJ |*                    dts          |k    sJ t          g djg dkg dvg          }t          t          |          *                                          }||z   | d          k    sJ |*                    drs          |k    sJ |*                    dts          |k    sJ t          ddg d*          }t          ddg dw          }|+                    |          t          ddg dx          k    sJ |,                    d          dz  dyk    sJ t          ddtZ          z   fdzf          }|j.        t          ddtZ          z
  gdd
gg          k    sJ |t          ddg d{          z  |k    sJ |t          ddg d|          z   t          ddtZ          z   gd
dgg          k    sJ |                     | d                    t          ddtZ          z   gdd
gddgddgg          k    sJ |/                    d | d                    t          ddtZ          z   gdd
gddgddgg          k    sJ |0                    dt          j1        dd                    t          ddtZ          z   dgg d}g          k    sJ |2                    d~          rJ t          j        d          dz  !d9!d<   !3                    d!fd           !t          g dg dg dg          k    sJ t          j        d          !!4                    d           !t          g dg dg dg          k    sJ  | d           | d          5                                k    sJ t          g dg dg dg          }|5                                t          g dg dg dg          k    sJ t          g d*g dg dg          }|5                                t          g dg dg dg          k    sJ t!          d          }t!          d7          }t          dd|dz  |z  d|dz  z  ||z  z   g          }||g}|6                    |          t          d|z  |z  |dz  g|d
|z  |z   gg          k    sJ t          dd||dz  |dz  z  g          }|6                    |          t          ddgd|z  |dz  z  |dz  dz  |dz  z  gg          k    sJ t          ddgddgg          }|7                                \  }}
tp          }|t          d |d9d          z   |d          dz   |d          dz   |d9d          z  z  gdd |d9d          z  z   |d           dz   |d          dz   |d9d          z  z  gg          k    sJ |
t          d |dd          z  dd |d9d          z  z  gd |d          dz   |dd          z  gg          k    sJ ||
z  |k    sJ |j9        |z   | d          k    sJ tp          }t          g dg dg          !!:                                \  }}|t          dd |d           dz   |d          dz  gdd |d          dz   |d          dz  gg          k    sJ t          g dg dg dg dg          !!:                                \  }}|t          g dg ddddddd |d          dz  gg dg          k    sJ !;                                }|d         t          g d          k    sJ |d         t          g d          k    sJ |d         t          g d          k    sJ |d         t          ddddd |d9          dz  dg          k    sJ t!          d          }t!          d7          } | d          }|<                    |          t{          |dz
  dz            k    sJ |<                    |          t{          |dz
  dz            k    sJ t          g d          !!>                                } t          | @                                          g dk    sJ tp          }t          g d&g d(g d'g          !!A                                ddt          g d&          t          g d(          t          g d'          gfgk    sJ t          g dg dg d'g          !!A                                ddt           |d9          dz   |d          dz  dg          gfddt          g d(          gfddt          g d          gfgk    sJ !1                    dd          t          ddi           k    sJ t          dddddddddddd	          }|B                                g dk    sJ |C                                g dk    sJ t          j        d          D                                dk    sJ d S )Nc                 *    t          j        |           S N)r   r   ns    r   
sparse_eyez&test_sparse_matrix.<locals>.sparse_eye   s    """r   c                 *    t          j        |           S r"   r   r   r#   s    r   sparse_zerosz(test_sparse_matrix.<locals>.sparse_zeros   s    !!$$$r   c                  "    t          dd          S Nr   r   r    r   r   <lambda>z$test_sparse_matrix.<locals>.<lambda>   s    l1a00 r   r   r   r   r   r   )MutableDenseMatrixr   r   c                 8    g | ]}t          j        d |          S r   r'   .0r$   s     r   
<listcomp>z&test_sparse_matrix.<locals>.<listcomp>.   %    BBBA|)!Q//BBBr   r      c                 8    g | ]}t          j        |d           S r2   r'   r3   s     r   r5   z&test_sparse_matrix.<locals>.<listcomp>0   r6   r   r   r   r   r   )r   r   r/      r.   )r:   )r;   r   )r:   )r;   r   )r   r.   )r   r   )r   r   )r   r7   )r<   )r   r      r/   r:      )r   r   z	c = a @ bx
      )i  i  i,*  i7  )r   r   r   )r   r   r   )r7      r   )	i"  i     i  i  ip  i  i  i  )r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   c                  (    t          ddddi          S )Nr   r9   r   r+   r   r   r,   z$test_sparse_matrix.<locals>.<lambda>   s    |Aq61+>> r   c                  &    t          dddg          S )Nr   r   r   r+   r   r   r,   z$test_sparse_matrix.<locals>.<lambda>   s    |Aq1#66 r   c                  *    t          ddddgg          S r*   r   r+   r   r   r,   z$test_sparse_matrix.<locals>.<lambda>   s    |AqAq6(;; r   g?r<   c                  *    t          d dddgg          S r*   r   r+   r   r   r,   z$test_sparse_matrix.<locals>.<lambda>   s    |D!q!fX>> r   c                  *    t          dd ddgg          S r*   r   r+   r   r   r,   z$test_sparse_matrix.<locals>.<lambda>   s    |Atq!fX>> r   c                  D    t          ddt          d          dd          S )Nr   r   )r   r9   )r   r   r+   r   r   r,   z$test_sparse_matrix.<locals>.<lambda>   s     |Aq477A2N2NOO r   y))r   )   )r   r   r   rF   )r   r   r7   ))r   r   r;   )rV   r   rV   r   r   rV   r;   r   r;   r   r   r   i)r   r   r   r   )r;   r7   r=   rR   	   r@      rB         rA      )r   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   rB   )r   r   r   r   r   )r   r   r   rT   r   )r   r   rT   r   rR   )r   r   r   r   r7   i))rS   r   r   r   r;   )r   r   r   r;   )r   r   rQ   r   r;   )r   r   r   rV   r;   )r   r   r   r   rT   i-  ))r   r   r   r   )rV   r   r   r   rW   rX   <   )r   r   r   r   )r;   r   r   r   )r[   r@   r\   r   r]   )ra   rb   rc   rd   )r   r   r   r   r      ))r   r=   rT   r   r   )r   r   r   r   r   )rV   r   r=   r   r   )rQ   rV   r   r;   r   )r   r   r   r   r   {   c                     | |z   S r"   r+   ijs     r   r,   z$test_sparse_matrix.<locals>.<lambda>  
    Q r   r   r   r   )r   r   )r   r   r   r   )r   r;   r7   r=   )rR   r[   r@   r\   )rB   r^   r_   rA   )r   r=   r\   rA   rV   )rH   rH   rI   )r   r   r   r   rY   )rg   )r   r   r   r   )r   r   r   r   )r   r   r   r   ))r   r   r   r   )r   r7   r=   rR   rZ   r]   r[   )	r   r   r   r   r   r   r   r   r   c                     | |z   S r"   r+   rk   s     r   r,   z$test_sparse_matrix.<locals>.<lambda>:  rn   r   )ro   )r   r   r   )r   r   r   r   r   r;   )r   r   r   r   r   r   )r   r   r   r   r   r;   c                     d| z  S )Nr   r+   r?   s    r   r,   z$test_sparse_matrix.<locals>.<lambda>B  s
    !A# r   c                     dS Nr   r+   rs   s    r   r,   z$test_sparse_matrix.<locals>.<lambda>C  s    ! r   )r   r   r;   r   )r   r   r=   r   )rR   r   r   r   )rV   r7   r   r   backward)r7   rV   r=   r   )r   r   r7   r=   )r   rV   r=   r   )ir   r7   r   z)r   r   r;   )r   r7   r   )rR   r   r7   )r   r=   r;   )r   rT   r   )r;   r@   r=   )rR   r   r   )rT   r   r;   CHmethodLDL)r=   r   r7   )r;   r   r7   rq   )rV   r   rV   r_   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   F)simplifyc                 $    | d|df         z  z   S )Nr   r   r+   )vrl   Ms     r   r,   z$test_sparse_matrix.<locals>.<lambda>  s    Q1QT7] r   )r   r   r   )rT   r   r   r   r   r   )r   r   r   )r   r   r   )r   r7   r   )r   r   r7   )   r   )r   r   )rQ   r   r   )r   r;   r7   )r=   rR   r[   )rQ   r7   rQ   )r7   r   r7   rR   )r;   r=   r   r   )r   r7   r   rT      r^   r   )r   r   r   r   r7   r   r   )rV   r   r   rV   ir   r   )r   r[   r   r   r7   r7   r   )rT   rQ   r   r   r   r[   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )rQ   r   r   r   r   r   r   )r   r   r   r   r   r   r   )rV   r   r   rV   r   r   r   ))r   r   rT   r   r   r   )rT   r   r   )rT   r   r   )r;   r   r   )r   r   r   r   rB   r`      )	r   )r   r[   )r   r   )r   r=   )r   r[   )r   r   )r;   r=   )r7   r   )r[   r=   )	r   r   r>   r   r[   rB   r   r   r>   r   r=   r`   r   r[   rB   r   r   r   r;   r=   r`   r7   r   rB   r[   r=   r>   )	r   r   r   r   r   r   r   r   r   )Er   	TypeErrorr   sympy.matricesr0   r   row_joincol_jointyperangehstackr   vstacktodokevalSyntaxErrorr   
isinstancecolsrowsrow_delcol_delr   col_swaprow_swapcopy
ValueErrortolisthasr   shapedetlenreshape	applyfuncabsr	   LUdecompositionis_loweris_upperpermute_rowsLUsolveinvcrossnormr   C
row_insert
col_insertr   is_symmetriccol_opfillcofactor_matrixjacobianQRdecompositionr   Trref	nullspacecharpolyr
   	eigenvalssortedkeys
eigenvectsrow_listcol_listnnz)"r%   r(   r   r0   bsparse_matricescr?   Amr   rP   m0m1m2testmatLUprw   solnAinvv1v2testsymsQRouttmpbasissparse_eye3valsr   s"                                    @r   test_sparse_matrixr      sj"   # # #% % % 900111  	 	A ??a111111BAAq6""A::a==A::a==A

1$q''))))

1$q'')))) CBqBBBO0F1a4D4DDDDDBBqBBBO0F1a4D4DDDDD 	  	 	A
 AaDT7a<<<<AaDAdG        AdG        AdG        7799A...... 	  	 	A 	  	 	A
 	
!AT7a<<<<T7a<<<<T7a<<<<T7a<<<<T7b====T7a<<<<
[ w!||||w!||||w!||||w!||||w"}}}}w!|||||     	sA	F3KKAa&&&&&T7a<<<<T7ac>>>>T7ac>>>>T7a<<<<	AAa&&&&&T7a<<<<T7c>>>>T7c>>>>T7a<<<< 	q!fq!f%&&AqD!!!92222222iiiJJJ788AqD!!!9EEEEEEE 	sAq!fq!f%&&A	A6QV6Q;;;;QQQ4Aq!Q<QAq!Q<((A	A6QV6Q;;;;QQQ4Aq!Q<6666
1AAIaLLL&YYII       	
1AAIaLLLVFF       	AAdGAJq!						       AJq!						      
 	QAq6""A	A	AQ419999IIaLLLQ2&&&&&&IIaLLLQA3''''''QFQC011V						= 6 6     1vzz!}}566&	B ; ;    
 :>>???1q!f%%,,..Aq6(::::1q1a&k**1133AA7GGGGG
:66777
:;;<<<!!%(((((vqk**0F::::vqk**0F::::dVQK006&@@@@
:>>???
:>>???
:OOPPP #;;sqA1qc""&&((A----!""$$))))*++//11R7777!Q!QqS*++//11QqSUQY>>>> & ' ''*suu2 2 2 2  , - - .1SUUd; ; ; ;
  - . . /2ceeq9 9 9 9
  , - - .1SUUc	: : : :  / 0 0 14	= = = =  1 2 2 36#%%5	A A A A  , - - .1SUUb9 9 9 9
  - . . /2ceeq9 9 9 9
  , - - .1SUUc	: : : :  / 0 0 14	= = = = 
ABbqb"1"f:A&&&&ac1Q3h<<<??****	a..	/	/Bad8|Aq)444444ac1f:aF333333		|||^^^5E5E5EF
H 
HBaaae9Q>>>::::::bcc111f:~~~7G7G7G&HIIIIII!Q!Q())1#s(3vse}}DDDD 	QA*Q--Aac1Q3hK , , , - - - - - - qwwyy>>Q
1Abqb"1"fI

11a..AaaadG , , , - - - - - - l1ooAaaadGQMAaaadG 0 1 1 1 1 1 1 1vAbqb!eH 0 1 1 1 1 1 1 
AB::a|Aq2MNNNNNN	a..	/	/B::aAAABBC C C C::a(*<=>>? ? ? ? 
AB<<&&**Q--/9999<<%%a8888 |aVa1X.//00L3q661+PSTUPVPVXYZ]^_Z`Z`X`OaAb4c4ccccc MMM)MM)MM)MM+ , ,G %%''GAq!::aCa,,w6,,q//IIIINNN*NN*NN*NN, - -G %%''GAq!::aCa,,w6,,q//IIIISkk6#;;s!qAAq	Aq!9q!Qi011A!!GAq!::aCa,,q0LLOOCCCC 	iiiiiii! 	" 	"A 	Q999%%A	!A99Q<<D19999jjj jj jj" 	# 	#A 	Q:::&&A	!A99Q<<D19999 	
1A5577jjmm####555A....555**Q--////iiiiiii! 	" 	"A q		((DT6ZZ]]""""555%%%%555$&&&&iiiiiii! 	" 	"A q		((DT6ZZ]]""""555%%%%555$&&&& 
1iii	 	 B	1iii	 	 B88B<<6!Q444444771::q=B 	q!a%j&)**A3,	
AE
	

        VAq,,,'''1,,,,vaLLL)))\	
AE
	

; . .     ::jjmm$$	
AE
	

	

	

	6 ) )     <<::a==))\	
AE
	

	

	

	; . .     <<<-a3344	
AE1F 9 9     ~~u~----- 	AAAdGHHQ****+++





       	AFF1III						       :a==JJqMM99;;;;;;IIIyyy9::D!!lllKKK<==> > > >IIIyyy9::D!!kkk;;;<==> > > > 	sAsAQAqDFAadFQqSL122Aq6D::dv!Aq!t}q!A#'l&CDDDDDDQAq!tAqDy>**A::d|aVac!Q$h1Qq!t5L,MNNNNNN 	AA  ADAqAaaAhh;!!A$$q&11Q446AAb!HH"445	
1aaAhh;!!A$$q11Q446AAb!HH"4457 8 8 8 8 8 8 	
AAaGG1aaAhh;'aadd1fqqAww&') * * * * * * Q3!888837jjmm####A 	lll}} 	 	AvvxxHC&1a!!A$$r11R5584a!!A$$r'11R55846 7 7 7 7 7 7 	////////////1 	2 	2A
 vvxxHC&//////aAq!QQqTT!V4///1 2 2 2 2 2 2
 KKMME8v4445555558v3334444448v5556666668vq!Q1aaeeAgq9:::::: 	sAsA*Q--K""hAz&:&:::::""hAz&:&::::: 	    	 	A ;;==D$))++***,,,,A							 	 	A <<>>q!yyyyyyyyy&       								 	 	A <<>>q!faaeeAgqqttAvq-A&B&B%CD !fYYY&7&7%89 !fYYY&7&7%89; ; ; ; ; 771a==LAr222222	b"r2r2WYceoq{}  HJ  K  K  
L  
LA::<<  H  H  H  H  H  H  H::<<  H  H  H  H  H  H  HA""$$))))))s   K* *
K76K7c                  |    t          ddgg                              d          t          ddgg          k    sJ d S )Nr   r   r   r7   )r   scalar_multiplyr+   r   r   test_scalar_multiplyr   '  sC    !Q!!11!44q!fX8N8NNNNNNNr   c                  n    t          d                                          t          d          k    sJ d S )Nr<   r|   ))r   r   )r   r   )r   	transposer+   r   r   test_transposer   +  sD    ())3355%&&' ' ' ' ' 'r   c                      t          d                                          dk    sJ t          d                                          dk    sJ d S )Nr   r;   )r   )r   r   r   )r   tracer+   r   r   
test_tracer   0  sT    ())//11Q6666())//11Q666666r   c                      t          d                                          g dk    sJ t          d                                          g dk    sJ d S )Nr   )rD   ro   r   r   r   r   r   r   )rD   r   ro   r   )r   r   r   r+   r   r   
test_CL_RLr   5  sv    ())22444445 5 5 5())22444445 5 5 5 5 5r   c                     t          d          t          d          z   t          d          k    sJ t          ddd           } t          ddd           }t          |                                           t          |                                          z   t          | |z                                             z
  dk    sJ d S )Nr-   )r/   r.   )r9   r9   d   c                 :    t          |dk    o| |z  dk              S ru   intrk   s     r   r,   ztest_add.<locals>.<lambda>?      CQ0E1q5A:,F,F r   c                 :    t          | dk    o|| z  dk              S ru   r   rk   s     r   r,   ztest_add.<locals>.<lambda>@  r   r   r   )r   r   r   )r   r   s     r   test_addr   <  s    ())L9I,J,JJ%&&' ' ' 'S#FFGGAS#FFGGA		NNS^^+c1q5--//.B.BBQFFFFFFr   c                     t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d	            t          t          d
            d S )Nc                  &    t          ddd           S )Ngffffff?r   c                     dS ru   r+   rk   s     r   r,   z/test_errors.<locals>.<lambda>.<locals>.<lambda>E  s     r   r   r+   r   r   r,   ztest_errors.<locals>.<lambda>E  s    |CNNCC r   c                  *    t          g dddg          S )NrF   r   r   r   r+   r   r   r,   ztest_errors.<locals>.<lambda>F  s    l999q!f== r   c                  8    t          ddgddgg          d         S Nr   r   r   r   rF   r   r+   r   r   r,   ztest_errors.<locals>.<lambda>G  s     |aVaV,<==iH r   c                  8    t          ddgddgg          d         S )Nr   r   r   r   r;   r   r+   r   r   r,   ztest_errors.<locals>.<lambda>H  s     |aVaV,<==a@ r   c                  8    t          ddgddgg          d         S r   r   r+   r   r   r,   ztest_errors.<locals>.<lambda>I  s     |aVaV,<==gF r   c                  p    t          ddgddgg                              ddgt                                S )Nr   r   r   r   r   )r   copyin_listsetr+   r   r   r,   ztest_errors.<locals>.<lambda>K  s3    q!fq!f-..::Aq6355II r   c                  8    t          ddgddgg          d         S )Nr   r   r   r   r<   r   r+   r   r   r,   ztest_errors.<locals>.<lambda>M  s     L1a&1a&)9::4@ r   c                  J    t          g d                              d          S )NrF   r   )r   r   r+   r   r   r,   ztest_errors.<locals>.<lambda>N  s     l99955;;A>> r   c                  4    t          ddddg          d         S )Nr   r   r   r   r+   r   r   r,   ztest_errors.<locals>.<lambda>O  s    |Aq1a&99!< r   c                  P    t          ddddg          t          ddddg          z   S r*   r   r+   r   r   r,   ztest_errors.<locals>.<lambda>Q  s+    QAq6**\!QA-G-GG r   )r   r   r   
IndexErrorr   r+   r   r   test_errorsr	  D  s    
:CCDDD
9==>>>
:HHIII
:@@AAA
:FFGGG
9IIK K K
@@B B B
9>>???
:<<===
:GGI I I I Ir   c                      t                      rJ t                      t          g           k    sJ t                      t          g g          k    sJ d S r"   r   r+   r   r   test_lenr  T  sT    ~~>>\"------>>\2$////////r   c                     t          j        d          t          dt                     k    sJ t          t          j        d                                                    dk    sJ t          j        d          t	          dt                     k    sJ t          t          j        d                                                    dk    sJ d S )Nr   )clsr   )r   r   r   r   r   r+   r   r   test_sparse_zeros_sparse_eyer  Z  s    A#a\":":":::::|""((**++q0000a  E!$>$>$>>>>>|!!$$**,,--222222r   c                  |   t          ddi           } d| d<   | d d df         t          t          g d                    k    sJ | d         dk    sJ | dd         dgk    sJ d| d<   | d         dk    sJ | ddd f         t          ddgg          k    sJ t          d	d
gg          | ddd f<   | dd d f         t          g dg          k    sJ ddgg| ddd f<   | dd d f         t          g dg          k    sJ d| d<   | d d d df         t          g d          k    sJ g d| d<   | d d df         t          g d          k    sJ t          g d          | d<   | d d df         t          g d          k    sJ t          g d          | d<   | d d df         t          g d          k    sJ d S )Nr   r   r.   r   rE   r   *   r9   r;   r7   )r   r;   r7   +   )r   r  r     r   )r  r   r   rU   )r   r   )ss    r   test_copyinr  a  s4   Q2AAdGQQQT7l6)))#4#4555555Q419999QT7qc>>>>AdGT7b====QU8|b!WI......1vhAaeHQT7lIII;//////RzAaeHQT7lKKK=111111AdGQQQU8|JJJ//////iiAdGQQQT7l999------YYYAdGQQQT7l999------999%%AdGQQQT7l999--------r   c            	      B   t          d          } |                                 t          g dg dg dg          k    sJ |                                 |                                 j        z  t          g dg dg dg          k    sJ t          d          } |                                 \  }}d|z  t          g d	g d
g dg          k    sJ |t          g dg dg dg          k    sJ ||z  |j        z  | k    sJ t          d          } |                                 | z  t          t          d                    k    sJ t          g dg dg d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          }|                     d          |k    sJ |                     d          |k    sJ | |z  t          t          d                    k    sJ | 
                    | d d df         d          }| |z  | d d df         k    sJ | 
                    | d d df         d          }| |z  | d d df         k    sJ |                     |           } |                     | d d df         d          }| |z  | d d df         k    sJ |                     | d d df         d          }| |z  | d d df         k    sJ d S )N)   rA   rS   rA   r>   r   rS   r   r\   )r;   r   r   )r   r   r   )rT   r   r   r  r  r  rA   )rA   r   r   )r[   rA   r   )rQ   r;   rA   )r  r   r   )r   r[   r   )r   r   r[   ))r   r   r   rD   rG   r   )r   rT   r   )rT   r   rT   r   r   r   r7   r   rx   ry   r{   )r   choleskyr   r   LDLdecompositionr   r   r   r   Halfsolver   solve_least_squares)r   r   Dansr  s        r   test_sparse_solver!  x  s   =>>A::<<6





#       ::<<!**,,.(F4 - -    
 	=>>ADAqa46

       





       q513;!677A5577Q;,s1vv......

 	 	A 	!Q!Q!Q8	!Q!Q!Q8a79 : :C 555$$$$555#%%%%s7l3q66******	!!!Q$AQ3!AAAqD'>>>>	!!!Q$AQ3!AAAqD'>>>>	

1A	a1gt,,AQ3!AAAqD'>>>>	a1gu--AQ3!AAAqD'>>>>>>r   c                  *   t          t          d            t          t          d            t          t          d            t	          d          \  } }}}t	          d          \  }}}}t          | dg||gg          }t          ||g||gg          }	t          ||g||gg          }
t          || z  || z  g|||z  | z  z
  |z  |||z  | z  z
  |z  gg          }|	                    |	          |k    sJ |	                    |
          |k    sJ d S )Nc                  l    t          ddgg                              t          ddgg                    S r*   r   lower_triangular_solver   r+   r   r   r,   z-test_lower_triangular_solve.<locals>.<lambda>  4    q!fX55fq!fX6F6FGG r   c                  n    t          ddgddgg                              t          dg                    S Nr   r   r   r   r$  r+   r   r   r,   z-test_lower_triangular_solve.<locals>.<lambda>  5    q!fq!f%&&==faSkkJJ r   c                  x    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,   z-test_lower_triangular_solve.<locals>.<lambda>  C    q!fq!f%&&==fq!fqRSfEU>V>VWW r   a:du:xr   )
r   r   r   r   r   r   r   r   r   r%  r   r   r   dur   wr?   r   Br   sols               r   test_lower_triangular_solver5    si   
 "H "H I I I
: K K L L L
: X X Y Y Y JAq!QJAq!Qq!fq!f%&&AaVaV,--A1v1v.//A
1Q3!*AaCE	1}q1Q3q5y!m<=
>
>C##A&&#----##A&&#------r   c                  *   t          t          d            t          t          d            t          t          d            t	          d          \  } }}}t	          d          \  }}}}t          | |gd|gg          }t          ||g||gg          }	t          ||g||gg          }
t          |||z  |z  z
  | z  |||z  |z  z
  | z  g||z  ||z  gg          }|	                    |	          |k    sJ |	                    |
          |k    sJ d S )Nc                  l    t          ddgg                              t          ddgg                    S r*   r   upper_triangular_solver   r+   r   r   r,   z-test_upper_triangular_solve.<locals>.<lambda>  r&  r   c                  n    t          ddgddgg                              t          dg                    S r(  r8  r+   r   r   r,   z-test_upper_triangular_solve.<locals>.<lambda>  r)  r   c                  x    t          ddgddgg                              t          ddgddgg                    S r+  r8  r+   r   r   r,   z-test_upper_triangular_solve.<locals>.<lambda>  r,  r   r-  r.  r   )
r   r   r   r   r   r   r   r   r   r9  r/  s               r   test_upper_triangular_solver<    si   
 "H "H I I I
: K K L L L
9 X X Y Y Y JAq!QJAq!Qq!fq!f%&&AaVaV,--A1v1v.//A
A!AIq=1qs1u9a-01Q3!*=
>
>C##A&&#----##A&&#------r   c                  ~   t          d          \  } }t          d          \  }}}}t          | dgd|gg          }t          ||g||gg          }t          ||g||gg          }t	          || z  || z  g||z  ||z  gg          }	|                    |          |	k    sJ |                    |          |	k    sJ d S )Nza dr.  r   )r   r   r   r   r   diagonal_solve)
r   r0  r1  r   r2  r?   r   r3  r   r4  s
             r   test_diagonal_solver?    s    5>>DAqJAq!Qq!fq!f%&&AaVaV,--A1v1v.//A
1Q3!*qsAaCj)
*
*CA#%%%%A#%%%%%%r   c                  P   t          d          } t          dt          gt           dgg          }|j        sJ t          dt          gt           dgg          }|j        sJ dt          z  |d<   |j        du sJ | |d<   |j        J |d         t          z  |d<   |j        du sJ d S )	Nr?   r   r   r   r   Fr.   r/   )r   r   r   is_hermitian)r?   r   s     r   test_hermitianrB    s    sAq!fr1g&''A>q!fr1g&''A>cAdG>U""""AdG>!!!gaiAdG>U""""""r   N))sympy.core.numbersr   r   r   sympy.core.singletonr   sympy.core.symbolr   r   $sympy.functions.elementary.complexesr	   sympy.polys.polytoolsr
   r   r   r   r   r   r   r   r   r   r   sympy.testing.pytestr   r   r   r   r   r   r   r   r	  r  r  r  r!  r5  r<  r?  rB  r+   r   r   <module>rI     s   3 3 3 3 3 3 3 3 3 3 " " " " " " / / / / / / / / 4 4 4 4 4 4 * * * * * *2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ( ' ' ' ' '/ / /O* O* O*dO O O' ' '
7 7 7
5 5 5H H HI I I 0 0 03 3 3. . ... . .b. . .(. . .(
& 
& 
&# # # # #r   