
    _Mhy7                     @   d dl Z d dlZd dlmZ d dlZd dlm	c m
Z dZd eD             Z ej        g dg dg dg          Z ej        d dgdd gg          Z ej        g d	g d
g dg dge          Zd eD             Zd eD             Zd eD             Ze j                            dee          Ze j                            dee          Ze j                            dee          Zed             Zed             Zed             Zed             Zed             Zed             Z ed             Z!ed             Z"ed             Z#ed             Z$ed             Z%ed              Z&ee j        j'        d!                         Z(ed"             Z)ed#             Z*ed$             Z+ed%             Z,ed&             Z-ed'             Z.ed(             Z/ed)             Z0ed*             Z1ed+             Z2ed,             Z3e j                            d-d.d/g          d0             Z4ed1             Z5ee j                            d2g d3          d4                         Z6ee j                            d2d5d6g          d7                         Z7ed8             Z8ed9             Z9ed:             Z:d; Z;d< Z<e j                            d=ej	        j=        d>d?gfej	        j>        d>d?gfej	        j?        d@dAgfg          e j                            dBej@        ejA        g          dC                         ZBdD ZCdE ZDdF ZEdG ZFdH ZGdI ZHdJ ZIdK ZJdL ZKe j                            dMej	        jL        ej	        jM        f          dN             ZNdO ZOdP ZPdQ ZQdR ZRe j                            dSdTej	        jS        fdUej	        jT        fd/ej	        jU        fd.ej	        jV        fdVej	        jW        fdWej	        jX        fdXej	        jY        ff          dY             ZZdS )Z    N)bsrcoocsccsrdiadoklilc                 H    g | ]}t          t          j        | d            S )_array)getattrscipysparse).0Ts     a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/sparse/tests/test_array_api.py
<listcomp>r   
   s7       ,-GELQ,,,''      )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   dtypec                 .    g | ]} |t                     S  Ar   sparrays     r   r   r   !   s     6667GGAJJ666r   c                 .    g | ]} |t                     S r   Br   s     r   r   r   "   s     ==='771::===r   c                 .    g | ]} |t                     S r   )Xr   s     r   r   r   #   s     :::w

:::r   r   )idsr"   r$   c                     t          |                     d          t          j                  r
J d            |                     d          j        dk    sJ |                     d          j        dk    sJ d S )Nr   axisExpected array, got matrix)r   r   )r   )
isinstancesumnpmatrixshaper   s    r   test_sumr/   0   s    !%%Q%--33 % %$% % %55a5==$&&&&55a5==$&&&&&&r   c                 v    t          |                     d          t          j                  r
J d            d S )Nr   r'   r)   )r*   meanr,   r-   r   s    r   	test_meanr2   8   sC    !&&a&..")44 % %$% % % % %r   c                 J   t          | d          r8t          |                     d          t          j                  r
J d            t          | d          r8t          |                     d          t          j                  r
J d            t          | d          r8t          |                     d          t          j                  r
J d            t          | d          r8t          |                     d          t          j                  rJ d            d S d S )Nminr   r'   r)   maxargminargmax)hasattrr*   r4   r,   r-   r5   r6   r7   r   s    r   test_min_maxr9   >   s@    q% )aeeemmRY77 	) 	)(	) 	) 	)q% )aeeemmRY77 	) 	)(	) 	) 	)q( )ahhAh..	:: 	) 	)(	) 	) 	)q( )ahhAh..	:: 	) 	)(	) 	) 	)) )	) 	)r   c                 r    t          |                                 t          j                  r
J d            d S Nr)   )r*   todenser,   r-   r   s    r   test_todenser=   O   s?    !))++ry11 % %$% % % % %r   c                 |   | j         j        d d         dv rd S | dd d f         | d d df         | dddgf         | ddgdf         | dg         | d d ddgf         | ddgd d f         | dddggf         | ddggdf         f	}|D ]8}t          |t          j        j                  sJ d|j        j                     9d S )Nr   )r   r   r   r   r   r   zExpected sparse array, got )	__class____name__r*   r   r   r   _class__)r   all_resress      r   test_indexingrD   U   s   {BQB#888 	
!QQQ$	!!!Q$	!aV)	1a&!)	1#	!!!aV)	1a&!!!)	!q!fX+	Aq6(A+
G  B B#u|344 	B 	BA#,*?AA	B 	B 	B 	BB Br   c                     t           j                            | j                  }t          | |z   t           j                  r
J d            d S r;   )r,   randomr.   r*   r-   )r   r$   s     r   test_dense_additionrG   k   sD    
	!!A!a%++II-IIIIIIr   c                 ^    t          | | z   t          j        j                  s
J d            d S r;   r*   r   r   r   r   s    r   test_sparse_additionrJ   q   0    q1uu|344RR6RRRRRRr   c                     t          j        | | z                                  |                     d                                          k              sJ d S )Nr   )r,   allr<   powerr   s    r   test_elementwise_mulrO   v   sG    61q5//##qwwqzz'9'9';';;<<<<<<<r   c                 t   t          j        t                    5  d | z   d d d            n# 1 swxY w Y   t          j        t                    5  t	          j        d          t          j                            t	          j	        d          
                    dd                    z   d d d            n# 1 swxY w Y   t	          j        d| z  |                                 dz  k              sJ t	          j        |                                 | z  |                                 dz  k              sJ d S )Nr      r   )pytestraises	TypeError
ValueErrorr,   eyer   r   	csr_arrayarangereshaperM   r<   r   s    r   test_elementwise_rmulrZ   {   s   	y	!	!  q               
z	"	" G G
q		EL**29Q<<+?+?1+E+EFFFFG G G G G G G G G G G G G G G 61q5aiikkAo./////6199;;?		q(89:::::::s   ,00AB77B;>B;c                     t          j        | | j        z                                  |                     | j                                                  k              sJ d S N)r,   rM   r   r<   dotr   s    r   test_matmulr^      sM    61qs7##%%qs););)=)==>>>>>>>r   c                 N   t          | dz  t          j        j                  s
J d            t	          j        | dz                                  |                                 dz             t          j        t          d          5  | dz   d d d            d S # 1 swxY w Y   d S )Nr   r)   z
zero power)matchr   )
r*   r   r   r   nptassert_equalr<   rR   rS   NotImplementedErrorr   s    r   test_power_operatorrd      s    q!tel233QQ5QQQQ ad^^%%		a'7888 
*,	?	?	?  	1                 s   BB!Bc                 D    t          | | z  t          j                  sJ d S r\   )r*   r,   ndarrayr   s    r   test_sparse_dividerg      s$    a!eRZ(((((((r   c                     t          j        t                    5  t          | |                                 z  t
          j        j                  sJ 	 d d d            d S # 1 swxY w Y   d S r\   )rR   warnsRuntimeWarningr*   r<   r   r   r   r   s    r   test_sparse_dense_dividerk      s     
n	%	% C C1qyy{{?U\-ABBBBBBC C C C C C C C C C C C C C C C C Cs   7AA#&A#c                 ^    t          | dz  t          j        j                  s
J d            d S )Nr   r)   rI   r   s    r   test_dense_dividerm      rK   r   c                 x    t          j        t                    5  | j         d d d            d S # 1 swxY w Y   d S r\   )rR   rS   AttributeErrorr   r   s    r   test_no_A_attrrp      }    	~	&	&  	                    /33c                 x    t          j        t                    5  | j         d d d            d S # 1 swxY w Y   d S r\   )rR   rS   ro   Hr   s    r   test_no_H_attrru      rq   rr   c                     t          |                     d          t          j        j                  sJ t          |                     d          t          j        j                  sJ d S )Nr   )r*   _getcolr   r   r   _getrowr   s    r   test_getrow_getcolry      sR    aiillEL$899999aiillEL$89999999r   c                 l    t          j        |           }t          j        |g dz  | g dz             d S )Nr   r   r   r   )splaaslinearoperatorra   assert_allclose)r   Ls     r   test_as_linearoperatorr      s=    a  ALLL(!lll*:;;;;;r   c                 P   | j         j        d d         dk    rd S t          j        |           }t	          |t
          j        j                  sJ t          j	        |
                                t          j                            | 
                                                     d S Nr   r   )r?   r@   r|   invr*   r   r   r   ra   r~   r<   r,   linalgr"   Cs     r   test_invr      s    {BQB5((Aa-.....		RY]]199;;%?%?@@@@@r   c                 x   | j         j        d d         dk    rd S t          j                            |           }t          j        |           }t          |t          j        j                  sJ t          j
        |                                t          j        |                                                     d S r   )r?   r@   r   r   
csc_matrixr|   expmr*   r   ra   r~   r<   )r"   Bmatr   s      r   	test_expmr      s    {BQB5((<""1%%D	!Aa-.....				$!!    r   c           	          | j         j        d d         dk    rd S t          j        t	          j        | t          j        ddg                    t	          j        |           ddgz             d S Nr   r   r   r   )	r?   r@   ra   r~   r|   expm_multiplyr,   arrayr   r!   s    r   test_expm_multiplyr      sq    {BQB5((1bh1v..//	!1v    r   c                     t          j        |           }t          j        |t          j                            |                                                      d S r\   )r|   normra   r~   r,   r   r<   )r   r   s     r   	test_normr      s>    	!A29>>!))++6677777r   c                     t          j        |           }t          j        |t          j                            |                                 d                     d S )Nr   )r|   
onenormestra   r~   r,   r   r   r<   r   s     r   test_onenormestr      sB    A29>>!))++q99:::::r   c                     | j         j        d d         dvrd S t          j        t	          j        | ddg          t          j                            | 	                                ddg                     d S )Nr   )r   r   r   r   )
r?   r@   ra   r~   r|   spsolver,   r   solver<   r!   s    r   test_spsolver      sq    {BQB~55QA
			aV,,    r   fmtr   r   c                     g dg dg dg dg}| dk    r t           j                            |          }nt           j                            |          }t	          j        |g d           d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r{   )r   r   rW   	csc_arrayr|   spsolve_triangular)r   arrr$   s      r   test_spsolve_triangularr      s{     		C e||
,
 
 
%
%aa
,
 
 
%
%aA|||,,,,,r   c                 *   | j         j        d d         dk    rd S t          j        |           }t	          j         |t          j        ddg                    t          j        	                    | 
                                ddg                     d S r   )r?   r@   r|   
factorizedra   r~   r,   r   r   r   r<   )r"   LUs     r   test_factorizedr     s    {BQB5((			B
28QF
			aV,,    r   solver)
bicgbicgstabcgcgsgmreslgmresminresqmrgcrotmktfqmrc                     |dk    ri }nddi} t          t          |          | t          j        ddg          fi |\  }}|dk    sJ t	          j        |ddgd           d S )	Nr   atolgh㈵>r   r   r   g?r   )r   r|   r,   r   ra   r~   )r"   r   kwargsxinfos        r   test_solversr     s     $#gdF##ArxA'7'7BB6BBGAt19999Aq6------r   lsqrlsmrc                      t          t          |          | g d          ^}}t          j        | |z  g d           d S )Nr   r   r   )r   r|   ra   r~   )r   r   r   _s       r   test_lstsqrr   +  sH     "GD&!!!YYY//EAAyyy)))))r   c                 z    t          j        | d          \  }}t          j        | |z  |d         |z             d S Nr   kr   )r|   eigsra   r~   r$   evs      r   	test_eigsr   5  sK    9Q!DAq	A	!q    r   c                     | | j         z   } t          j        | d          \  }}t          j        | |z  |d         |z             d S r   )r   r|   eigshra   r~   r   s      r   
test_eigshr   >  sV    	ACA:a1DAq	A	!q    r   c                 2   t          j        | d          \  }}}t          j                            |                                           \  }}}t          j        |          }t          j        |d d                   }t          j        ||d           d S )Nr   r   gMbP?r   )	r|   svdsr,   r   svdr<   sortra   r~   )r$   usvhu2s2vh2s          r   	test_svdsr   H  s}    ya   HAq")--		,,KBC


A	BQBB2D))))))r   c                  B   t           j                            g dg dg dg dg          } t          j        |           }t          j        |                    t          j	        g d                    t          j
        g dt          j                  dd	           d S 
Nr   r   r   r   r{   r   g+=gMg<)rtolr   )r   r   r   r|   splura   r~   r   r,   r   asarrayfloat64r$   r   s     r   	test_splur   Q  s    	  	 	A 
1B
,,,''((

<<<rz222     r   c                  B   t           j                            g dg dg dg dg          } t          j        |           }t          j        |                    t          j	        g d                    t          j
        g dt          j                  dd	           d S r   )r   r   r   r|   spilura   r~   r   r,   r   r   r   r   s     r   
test_spilur   `  s    	  	 	A 
AB
,,,''((

<<<rz222     r   zcls,indices_attrsindicesindptrrowcolexpected_dtypec                 N   t           j                            t          j        d                              dd                    }|j        |j                            |          |j	                            |          ff} | |          }|D ]}t          ||          j        |k    sJ  | |d          }|D ]}t          ||          j        |k    sJ t          | t           j        j        j                  r|                                }|j        |j                            |          |j                            |          f} | |          }|D ]}t          ||          j        |k    sJ  | |d          }|D ]}t          ||          j        |k    sJ d S d S )N	   r   )r   r   )r.   )r   r   	coo_arrayr,   rX   rY   datar   astyper   r   r   
issubclass_compressed
_cs_matrixtocsrr   r   )	clsindices_attrsr   input_array	coo_tupleresultattrinput_array_csr	csr_tuples	            r   test_index_dtype_compressedr   o  s   & ,((1)=)=a)C)CDDKO"">22O"">22	
I S^^F = =vt$$*n<<<<<S&)))F = =vt$$*n<<<<<#u|/:;; A%++-- #**>::")).99
	 Y! 	A 	AD64((..@@@@@Yf---! 	A 	AD64((..@@@@@A A	A 	Ar   c                      t           j                            g d          } t          | t           j        j                  rJ d S )N)r   r   r   )r   r   diagsr*   r   ms    r   test_default_is_matrix_diagsr     s<    999%%A!U\12222222r   c                      t           j                            d          } t          | t           j        j                  rJ d S Nr   )r   r   rV   r*   r   r   s    r   test_default_is_matrix_eyer    s8    A!U\12222222r   c                      t           j                            g dddd          } t          | t           j        j                  rJ d S )Nr   r   r   )r   r   spdiagsr*   r   r   s    r   test_default_is_matrix_spdiagsr    sB    YYY1a00A!U\12222222r   c                      t           j                            d          } t          | t           j        j                  rJ d S r  )r   r   identityr*   r   r   s    r   test_default_is_matrix_identityr    s8    a  A!U\12222222r   c                      t           j                            t          j        ddgddgg          t          j        ddgddgg                    } t          | t           j        j                  rJ d S )Nr   r   r   r   r   r   kronr,   r   r*   r   r   s    r   !test_default_is_matrix_kron_denser    o    
1a&1a&!""BHq!fq!f-=$>$>	 	A !U\12222222r   c                      t           j                            t          j        ddgddgg          t          j        ddgddgg                    } t          | t           j        j                  rJ d S )Nr   r   r   r   r   r
  r   s    r   "test_default_is_matrix_kron_sparser    r  r   c                      t           j                            t          j        ddgddgg          t          j        ddgddgg                    } t          | t           j        j                  rJ d S )Nr   r   )r   r   kronsumr,   r   r*   r   r   s    r   test_default_is_matrix_kronsumr    so    
1a&1a&!""BHq!fq!f-=$>$>	 	A !U\12222222r   c                      t           j                            dd          } t          | t           j        j                  rJ d S r  )r   r   rF   r*   r   r   s    r   test_default_is_matrix_randomr    s:    Aq!!A!U\12222222r   c                      t           j                            dd          } t          | t           j        j                  rJ d S r  )r   r   randr*   r   r   s    r   test_default_is_matrix_randr    s:    !QA!U\12222222r   fnc                    t           j                            t          j        d                    }t           j                            ddgddgg          } | ||g          }t          |t           j        j                  rJ dS )zbSame idea as `test_default_construction_fn_matrices`, but for the
    stacking creation functions.r   r   r   N)r   r   
coo_matrixr,   rV   r*   r   )r  r   r"   r   s       r   test_default_is_matrix_stacksr    su     	q		**A!Q!Q 011A
Aq6

A!U\12222222r   c                     t           j                            t          j        d                    } t           j                            dgdgg          }t           j                            dgg          }t           j                            | ||f          }t          |t           j        j                  rJ t           j                            | dgd|gg          }t          |t           j        j                  rJ dS )z]Same idea as `test_default_construction_fn_matrices`, but for the block
    creation functionr   r   r   N)	r   r   r  r,   rV   
block_diagr*   r   bmat)r   r"   r   r   s       r   ,test_blocks_default_construction_fn_matricesr    s     	q		**A!qc
++A!&&A 	Aq	**A!U\122222 	At9tQi011A!U\12222222r   c                     t           D ]} t          t          j        |  d          } |ddgg          }|j        | k    sJ |j        | k    sJ t          j        t                    5  d|_        d d d            n# 1 swxY w Y   d S )Nr   r   r   qqq)	sparray_typesr   r   r   format_formatrR   rS   ro   )r   arr_clsMs      r   test_format_propertyr'    s      %,377GaVHx3yC]>** 	 	AH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s   (A<<B 	B 	c                  V   t           j                            d          } t           j                            |           }t	          | t           j        j                  rJ t	          |t           j        j                  sJ t           j                            |          sJ t           j                            |           sJ t           j                            |                                          rJ t           j                            |                                           rJ d S r  )r   r   rV   rW   r*   r   issparser<   r   as     r   test_issparser,    s    Aq!!A!U\122222a-..... <  #####<  ##### |$$QYY[[11111|$$QYY[[1111111r   c                  V   t           j                            d          } t           j                            |           }t	          | t           j        j                  rJ t	          |t           j        j                  sJ t           j                            |          rJ t           j                            |           sJ t           j                            |                                          rJ t           j                            |                                           rJ d S r  )r   r   rV   rW   r*   r   
isspmatrixr<   r*  s     r   test_isspmatrixr/  
  s    Aq!!A!U\122222a-..... |&&q)))))<""1%%%%% |&&qyy{{33333|&&qyy{{3333333r   )r   r  r   r   r   r   r	   c                    t           j                            d|           }t           j                            |                              |           }t          |t           j        j                  rJ t          |t           j        j                  sJ  ||          rJ  ||          sJ  ||                                          rJ  ||                                          rJ d S )Nr   )r#  )r   r   rV   rW   asformatr*   r   r<   )r   r  r   r+  s       r   test_isspmatrix_formatr2    s     	3''Aq!!**3//A!U\122222a-..... r!uu2a55LLL r!))++r!))++r   )[rR   numpyr,   numpy.testingtestingra   scipy.sparser   scipy.sparse.linalgr   r   r|   r"  sparray_classesr   r   r"   floatr$   sparrayssquare_sparrayseig_sparraysmarkparametrizeparametrize_sparraysparametrize_square_sparraysparametrize_eig_sparraysr/   r2   r9   r=   rD   rG   rJ   rO   rZ   r^   rd   rg   thread_unsaferk   rm   rp   ru   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rW   r   r   int64int32r   r   r  r  r  r  r  r  r  r  hstackvstackr  r  r'  r,  r/  isspmatrix_bsrisspmatrix_cooisspmatrix_cscisspmatrix_csrisspmatrix_diaisspmatrix_dokisspmatrix_lilr2  r   r   r   <module>rN     s                  " " " " " " " " " B 1>   BHLLLLLL   BHFF  
 BHLLLLLLLL	
 
   76o666==_===::/:::{..} /    %k55m 6    ";22= 3   
 ' ' ' % % %
 ) ) )  % % %
 B B B* J J J
 S S S = = = 	; 	; 	; ? ? ?    ) ) ) C C  C S S S   
   
 : : : < < <
 A A A       8 8 8
 ; ; ;
    e}--- - .--       
. .  . V * *	  
*
       * * *      L"!	

 L"!	

 L"EN	
 " )BHbh+?@@ A  A A@# $ AF3 3 3
3 3 3
3 3 3
3 3 3
3 3 33 3 33 3 33 3 3
3 3 3
  3U\5HIJJ3 3 KJ33 3 3   2 2 24 4 4 	+,	+,	+,	+,	+,	+,	+,     r   