
    e!hy7                     &	   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eD  cg c]  }  eej                  |  d       c} 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eD cg c]
  } |e       c}ZeD cg c]
  } |e       c}ZeD cg c]
  } |e       c}Ze j.                  j1                  dee      Ze j.                  j1                  dee      Ze j.                  j1                  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.                  jP                  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d)        Z4e j.                  j1                  d*d+d,g      d-        Z5ed.        Z6ee j.                  j1                  d/g d0      d1               Z7ee j.                  j1                  d/d2d3g      d4               Z8ed5        Z9ed6        Z:ed7        Z;d8 Z<d9 Z=e j.                  j1                  d:ej                  j|                  d;d<gfej                  j~                  d;d<gfej                  j                  d=d>gfg      e j.                  j1                  d?ej                  ej                  g      d@               ZCdA ZDdB ZEdC ZFdD ZGdE ZHdF ZIdG ZJdH ZKdI ZLe j.                  j1                  dJej                  j                  ej                  j                  f      dK        ZOdL ZPdM ZQdN ZRdO ZSe j.                  j1                  dPdQej                  j                  fdRej                  j                  fd,ej                  j                  fd+ej                  j                  fdSej                  j                  fdTej                  j                  fdUej                  j                  ff      dV        Z[yc c} w c c}w c c}w c c}w )W    N)bsrcoocsccsrdiadoklil_array)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   dtypeA)idsBXc                     t        | j                  d      t        j                        rJ d       | j                  d      j                  dk(  sJ | j                  d      j                  dk(  sJ y )Nr   axisExpected array, got matrix)r   r   )r   )
isinstancesumnpmatrixshaper   s    i/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/sparse/tests/test_array_api.pytest_sumr    0   sf    !%%Q%-3 %$%355a5=$&&&55a5=$&&&    c                 f    t        | j                  d      t        j                        rJ d       y )Nr   r   r   )r   meanr   r   r   s    r   	test_meanr$   8   s-    !&&a&."))4 %$%44r!   c                    t        | d      r1t        | j                  d      t        j                        rJ d       t        | d      r1t        | j                  d      t        j                        rJ d       t        | d      r1t        | j                  d      t        j                        rJ d       t        | d      r2t        | j                  d      t        j                        rJ d       y y )Nminr   r   r   maxargminargmax)hasattrr   r&   r   r   r'   r(   r)   r   s    r   test_min_maxr+   >   s     q%aeeemRYY7 	)(	)7q%aeeemRYY7 	)(	)7q(ahhAh.		: 	)(	):q(ahhAh.		: 	)(	):: r!   c                 b    t        | j                         t        j                        rJ d       y Nr   )r   todenser   r   r   s    r   test_todenser/   O   s)    !))+ryy1 %$%11r!   c                 h   | j                   j                  d d dv ry | 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 ]D  }t        |t        j                  j
                        r(J d|j                  j                           y )Nr   )r   r   r   r   r   r   zExpected sparse array, got )	__class____name__r   scipysparsesparray_class__)r   all_resress      r   test_indexingr9   U   s    {{BQ#88 	
!Q$	!Q$	!aV)	1a&!)	1#	!aV)	1a&!)	!q!fX+	Aq6(A+
G  B#u||334 	B)#,,*?*?)@A	B4Br!   c                     t         j                  j                  | j                        }t        | |z   t         j                        rJ d       y r-   )r   randomr   r   r   )r   r   s     r   test_dense_additionr<   k   s;    
		!A!a%+I-II++r!   c                 `    t        | | z   t        j                  j                        sJ d       y r-   r   r3   r4   r5   r   s    r   test_sparse_additionr?   q   &    q1uu||334R6RR4r!   c                     t        j                  | | z  j                         | j                  d      j                         k(        sJ y )Nr   )r   allr.   powerr   s    r   test_elementwise_mulrD   v   s5    661q5//#qwwqz'9'9';;<<<r!   c                 J   t        j                  t              5  d | z   d d d        t        j                  t              5  t	        j
                  d      t        j                  j                  t	        j                  d      j                  dd            z   d d d        t	        j                  d| z  | j                         dz  k(        sJ t	        j                  | j                         | z  | j                         dz  k(        sJ y # 1 sw Y   xY w# 1 sw Y   xY w)Nr      r   )pytestraises	TypeError
ValueErrorr   eyer3   r4   	csr_arrayarangereshaperB   r.   r   s    r   test_elementwise_rmulrO   {   s    	y	! q 
z	" G
q	ELL**299Q<+?+?1+EFFG 661q5aiikAo.///66199;?		q(89::: G Gs   DADDD"c                     t        j                  | | j                  z  j                         | j	                  | j                        j                         k(        sJ y N)r   rB   Tr.   dotr   s    r   test_matmulrT      s?    661qss7##%qss););)==>>>r!   c                 :   t        | dz  t        j                  j                        sJ d       t	        j
                  | dz  j                         | j                         dz         t        j                  t        d      5  | dz   d d d        y # 1 sw Y   y xY w)Nr   r   z
zero power)matchr   )
r   r3   r4   r5   nptassert_equalr.   rG   rH   NotImplementedErrorr   s    r   test_power_operatorrZ      s{    q!tell223Q5QQ3 ad^^%		a'78 
*,	? 	1  s   BBc                 B    t        | | z  t        j                        sJ y rQ   )r   r   ndarrayr   s    r   test_sparse_divider]      s    a!eRZZ(((r!   c                     t        j                  t              5  t        | | j	                         z  t
        j                  j                        sJ 	 d d d        y # 1 sw Y   y xY wrQ   )rG   warnsRuntimeWarningr   r.   r3   r4   r5   r   s    r   test_sparse_dense_dividera      sM     
n	% C1qyy{?U\\-A-ABBBC C Cs   8AA%c                 `    t        | dz  t        j                  j                        sJ d       y )Nr   r   r>   r   s    r   test_dense_dividerc      r@   r!   c                 x    t        j                  t              5  | j                   d d d        y # 1 sw Y   y xY wrQ   )rG   rH   AttributeErrorr   r   s    r   test_no_A_attrrf      *    	~	& 	     09c                 x    t        j                  t              5  | j                   d d d        y # 1 sw Y   y xY wrQ   )rG   rH   re   Hr   s    r   test_no_H_attrrk      rg   rh   c                     t        | j                  d      t        j                  j                        sJ t        | j                  d      t        j                  j                        sJ y )Nr   )r   _getcolr3   r4   r5   _getrowr   s    r   test_getrow_getcolro      sF    aiilELL$8$8999aiilELL$8$8999r!   c                 n    t        j                  |       }t        j                  |g dz  | g dz         y )Nr   r   r   r   )splaaslinearoperatorrW   assert_allclose)r   Ls     r   test_as_linearoperatorrv      s,    a AL(!l*:;r!   c                 R   | j                   j                  d d dk7  ry t        j                  |       }t	        |t
        j                  j                        sJ t        j                  |j                         t        j                  j                  | j                                      y Nr   r   )r1   r2   rr   invr   r3   r4   r5   rW   rt   r.   r   linalgr   Cs     r   test_invr}      sn    {{BQ5(Aa--...		RYY]]199;%?@r!   c                 |   | j                   j                  d d dk7  ry t        j                  j	                  |       }t        j                  |       }t        |t        j                  j                        sJ t        j                  |j                         t        j                  |      j                                y rx   )r1   r2   r3   r4   
csc_matrixrr   expmr   r5   rW   rt   r.   )r   Bmatr|   s      r   	test_expmr      s    {{BQ5(<<""1%D		!Aa--...					$!r!   c           	          | j                   j                  d d dk7  ry t        j                  t	        j
                  | t        j                  ddg            t	        j                  |       ddgz         y Nr   r   r   r   )	r1   r2   rW   rt   rr   expm_multiplyr   arrayr   r   s    r   test_expm_multiplyr      s]    {{BQ5(1bhh1v./		!1vr!   c                     t        j                  |       }t        j                  |t        j
                  j                  | j                                      y rQ   )rr   normrW   rt   r   rz   r.   )r   r|   s     r   	test_normr      s2    		!A299>>!))+67r!   c                     t        j                  |       }t        j                  |t        j
                  j                  | j                         d             y )Nr   )rr   
onenormestrW   rt   r   rz   r   r.   r{   s     r   test_onenormestr      s5    A299>>!))+q9:r!   c                     | j                   j                  d d dvry t        j                  t	        j
                  | ddg      t        j                  j                  | j                         ddg             y )Nr   )r   r   r   r   )
r1   r2   rW   rt   rr   spsolver   rz   solver.   r   s    r   test_spsolver      sZ    {{BQ~5QA
				aV,r!   fmtr   r   c                     g dg dg dg dg}| dk(  r t         j                  j                  |      }nt         j                  j                  |      }t	        j
                  |g d       y )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rq   )r3   r4   rL   	csc_arrayrr   spsolve_triangular)r   arrr   s      r   test_spsolve_triangularr      sX     		C e|
,,
 
 
%a
,,
 
 
%aA|,r!   c                 &   | j                   j                  d d dk7  ry t        j                  |       }t	        j
                   |t        j                  ddg            t        j                  j                  | j                         ddg             y r   )r1   r2   rr   
factorizedrW   rt   r   r   rz   r   r.   )r   LUs     r   test_factorizedr     sk    {{BQ5(		B
288Q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       y )	Nr   atolgh㈵>r   r   r   g?r   )getattrrr   r   r   rW   rt   )r   r   kwargsxinfos        r   test_solversr     sg     $#gdF#ArxxA'7B6BGAt199Aq6-r!   lsqrlsmrc                 p     t        t        |      | g d      ^}}t        j                  | |z  g d       y )Nr   r   r   )r   rr   rW   rt   )r   r   r   _s       r   test_lstsqrr   +  s1     "GD&!!Y/EAAy)r!   c                 v    t        j                  | d      \  }}t        j                  | |z  |d   |z         y Nr   kr   )rr   eigsrW   rt   r   evs      r   	test_eigsr   5  s6    99Q!DAq	A	!qr!   c                     | | j                   z   } t        j                  | d      \  }}t        j                  | |z  |d   |z         y r   )rR   rr   eigshrW   rt   r   s      r   
test_eigshr   >  sC    	ACCA::a1DAq	A	!qr!   c                 &   t        j                  | d      \  }}}t        j                  j	                  | j                               \  }}}t        j                  |      }t        j                  |d d       }t        j                  ||d       y )Nr   r   gMbP?r   )	rr   svdsr   rz   svdr.   sortrW   rt   )r   usvhu2s2vh2s          r   	test_svdsr   H  sh    yya HAq"))--		,KBC

A	BQB2D)r!   c                  H   t         j                  j                  g dg dg dg dg      } t        j                  |       }t        j                  |j                  t        j                  g d            t        j                  g dt        j                        dd	       y 
Nr   r   r   r   rq   r   g+=gMg<)rtolr   )r3   r4   r   rr   splurW   rt   r   r   r   asarrayfloat64r   r   s     r   	test_splur   Q  sp    	  	A 
1B
,'(


<rzz2r!   c                  H   t         j                  j                  g dg dg dg dg      } t        j                  |       }t        j                  |j                  t        j                  g d            t        j                  g dt        j                        dd	       y r   )r3   r4   r   rr   spilurW   rt   r   r   r   r   r   r   s     r   
test_spilur   `  sp    	  	A 
AB
,'(


<rzz2r!   zcls,indices_attrsindicesindptrrowcolexpected_dtypec                 d   t         j                  j                  t        j                  d      j                  dd            }|j                  |j                  j                  |      |j                  j                  |      ff} | |      }|D ]  }t        ||      j                  |k(  rJ   | |d      }|D ]  }t        ||      j                  |k(  rJ  t        | t         j                  j                  j                        r|j                         }|j                  |j                   j                  |      |j"                  j                  |      f} | |      }|D ]  }t        ||      j                  |k(  rJ   | |d      }|D ]  }t        ||      j                  |k(  rJ  y y )N	   r   )r   r   )r   )r3   r4   	coo_arrayr   rM   rN   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DKOO"">2OO"">2	
I ^F =vt$**n<<<= &)F =vt$**n<<<= #u||//::;%++-  ##**>:"")).9
	 Y! 	AD64(...@@@	A Yf-! 	AD64(...@@@	A <r!   c                      t         j                  j                  g d      } t        | t         j                  j                        rJ y )N)r   r   r   )r3   r4   diagsr   r5   ms    r   test_default_is_matrix_diagsr     s3    9%A!U\\112222r!   c                      t         j                  j                  d      } t        | t         j                  j                        rJ y Nr   )r3   r4   rK   r   r5   r   s    r   test_default_is_matrix_eyer     s3    A!U\\112222r!   c                      t         j                  j                  g dddd      } t        | t         j                  j                        rJ y )Nr   r   r   )r3   r4   spdiagsr   r5   r   s    r   test_default_is_matrix_spdiagsr     s9    Y1a0A!U\\112222r!   c                      t         j                  j                  d      } t        | t         j                  j                        rJ y r   )r3   r4   identityr   r5   r   s    r   test_default_is_matrix_identityr     s3    a A!U\\112222r!   c                      t         j                  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 y )Nr   r   r   r   r3   r4   kronr   r   r   r5   r   s    r   !test_default_is_matrix_kron_denser    f    
1a&1a&!"BHHq!fq!f-=$>	A !U\\112222r!   c                      t         j                  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 y )Nr   r   r   r   r   r  r   s    r   "test_default_is_matrix_kron_sparser    r  r!   c                      t         j                  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 y )Nr   r   )r3   r4   kronsumr   r   r   r5   r   s    r   test_default_is_matrix_kronsumr
    sf    
1a&1a&!"BHHq!fq!f-=$>	A !U\\112222r!   c                      t         j                  j                  dd      } t        | t         j                  j                        rJ y r   )r3   r4   r;   r   r5   r   s    r   test_default_is_matrix_randomr    s5    Aq!A!U\\112222r!   c                      t         j                  j                  dd      } t        | t         j                  j                        rJ y r   )r3   r4   randr   r5   r   s    r   test_default_is_matrix_randr    s5    !QA!U\\112222r!   fnc                    t         j                  j                  t        j                  d            }t         j                  j                  ddgddgg      } | ||g      }t        |t         j                  j                        rJ y)zbSame idea as `test_default_construction_fn_matrices`, but for the
    stacking creation functions.r   r   r   N)r3   r4   
coo_matrixr   rK   r   r5   )r  r   r   r   s       r   test_default_is_matrix_stacksr    sk     	q	*A!Q!Q 01A
Aq6
A!U\\112222r!   c                     t         j                  j                  t        j                  d            } t         j                  j                  dgdgg      }t         j                  j                  dgg      }t         j                  j                  | ||f      }t        |t         j                  j                        rJ t         j                  j                  | dgd|gg      }t        |t         j                  j                        rJ y)z]Same idea as `test_default_construction_fn_matrices`, but for the block
    creation functionr   r   r   N)	r3   r4   r  r   rK   
block_diagr   r5   bmat)r   r   r|   r   s       r   ,test_blocks_default_construction_fn_matricesr    s     	q	*A!qc
+A!&A 	Aq	*A!U\\11222 	At9tQi01A!U\\112222r!   c                     t         D ]u  } t        t        j                  |  d      } |ddgg      }|j                  | k(  sJ |j
                  | k(  sJ t        j                  t              5  d|_        d d d        w y # 1 sw Y   xY w)Nr
   r   r   qqq)	sparray_typesr   r3   r4   format_formatrG   rH   re   )r   arr_clsMs      r   test_format_propertyr    s     %,,3%v7aVHxx3yyC]]>* 	AH	 	
	 	s   -B  B		c                  X   t         j                  j                  d      } t         j                  j                  |       }t	        | t         j                  j
                        rJ t	        |t         j                  j
                        sJ t         j                  j                  |      sJ t         j                  j                  |       sJ t         j                  j                  |j                               rJ t         j                  j                  | j                               rJ y r   )r3   r4   rK   rL   r   r5   issparser.   r   as     r   test_issparser$    s    Aq!A!U\\11222a--... <<  ###<<  ### ||$$QYY[111||$$QYY[1111r!   c                  X   t         j                  j                  d      } t         j                  j                  |       }t	        | t         j                  j
                        rJ t	        |t         j                  j
                        sJ t         j                  j                  |      rJ t         j                  j                  |       sJ t         j                  j                  |j                               rJ t         j                  j                  | j                               rJ y r   )r3   r4   rK   rL   r   r5   
isspmatrixr.   r"  s     r   test_isspmatrixr'  
  s    Aq!A!U\\11222a--... ||&&q)))<<""1%%% ||&&qyy{333||&&qyy{3333r!   )r   r  r   r   r   r   r	   c                    t         j                  j                  d|       }t         j                  j                  |      j	                  |       }t        |t         j                  j                        rJ t        |t         j                  j                        sJ  ||      rJ  ||      sJ  ||j                               rJ  ||j                               rJ y )Nr   )r  )r3   r4   rK   rL   asformatr   r5   r.   )r   r  r   r#  s       r   test_isspmatrix_formatr*    s     	3'Aq!**3/A!U\\11222a--... !u9a5L5 !))+!))+r!   )\rG   numpyr   numpy.testingtestingrW   scipy.sparser3   scipy.sparse.linalgr4   rz   rr   r  r   sparray_classesr   r   r   floatr   sparrayssquare_sparrayseig_sparraysmarkparametrizeparametrize_sparraysparametrize_square_sparraysparametrize_eig_sparraysr    r$   r+   r/   r9   r<   r?   rD   rO   rT   rZ   r]   thread_unsafera   rc   rf   rk   ro   rv   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rL   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_lilr*  )rR   r5   s   00r   <module>rF     s(       " " B 2?,-GELLQCv,' BHH  BHHFF 
 BHH	
 
 '667GAJ6-<='71:=*9:w
:{{..} /   %kk55m 6   ";;22= 3  
 ' ' % %
 ) )  % %
 B B* J J
 S S = = 	; 	; ? ?   ) ) C  C S S  
  
 : : < <
 A A     8 8
 ; ;
   e}-- .-   
. . V*	 
*
     * *  LL""!	

 LL""!	

 LL""EN	
" )BHHbhh+?@ A A#$ AF3
3
3
3
3333
3
  3 3U\\5H5HIJ3 K33 24 	++,	++,	++,	++,	++,	++,	++,w. 7=:s   Q?R/R	R