
    (phc.                     2   S r SSKrSSKrSSKJrJr  SSKJrJ	r	  SSK
Jr  \\	/r\R                  \R                  \R                  /rS r\R$                  S 5       r\R$                  S 5       r\R*                  R-                  S	\5       " S
 S5      5       rg)z Test of 1D arithmetic operations    N)assert_equalassert_allclose)	coo_array	csr_array)isscalarlikec                     [        U [        R                  5      (       d  [        U 5      (       a  U $ U R	                  5       $ N)
isinstancenpndarrayr   toarray)as    W/var/www/html/venv/lib/python3.13/site-packages/scipy/sparse/tests/test_arithmetic1d.pyr   r      s,    !RZZ  LOO99;    c                  4    [         R                  " / SQS5      $ )N)   r      r   d)r   array r   r   dat1dr      s    88L#&&r   c                     [          Vs0 s H  oU R                  U5      _M     nn[         VVVs0 s H0  nX2R                  5        VVs/ s H  u  pXU" U5      4PM     snn_M2     snnn$ s  snf s  snnf s  snnnf r	   )math_dtypesastype
spcreatorsitems)r   dtype
dat_dtypesspdats        r   datsp_math_dtypesr!      sz    :EF+e,,+JF B 	5E5E5GH5Gzue"S'"5GHH  GHs   A,A7	A1A71A7	spcreatorc                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rSrg)TestArithmetic1D#   c                    Sn[         R                  " S5      [         R                  " S5      [         R                  " S5      [         R                  " S5      [         R                  " S5      4 H  nU" X#S9nXD-   nSU-  n[        XDR                  5       -  [         R                  5      (       d   e[        XDR                  5       -  [         R                  5      (       d   eXEU4 HY  nXw-  UR                  5       UR                  5       -  :X  d   eUR                  U:X  d   e[        U5      R                  U:X  a  MY   e   M     g )	N)   int32float32float64	complex64
complex128r      )r   r   r
   tocsrr   tocoor   )selfr"   shapemytyper   bcms           r   test_empty_arithmetic&TestArithmetic1D.test_empty_arithmetic%   s   HHWHHYHHYHH[!HH\"
F %.AAAAa'')mRZZ8888a'')mRZZ8888AYu		aiik 9999ww&(((qz''6111 
r   c                     [         R                  " / SQS5      n[        [        U5      [        U" U5      5      R	                  5       5        g )N)r      r   r   r   r   r   r   r   r   )r   r   r   absr   )r1   r"   As      r   test_absTestArithmetic1D.test_abs8   s3    HH=sCSVS1.6689r   c                     [         R                  " / SQS5      nU" U5      n[        [         R                  " USS9[	        USS9R                  5       5        g )N)ggQ?g     @1@gQr   r   )decimals)ndigits)r   r   r   aroundroundr   r1   r"   r?   Asps       r   
test_roundTestArithmetic1D.test_round<   sA    HH0#6lRYYq1-uS!/D/L/L/NOr   c                 V   [         R                  " / SQS5      nU" U5      n[        [         R                  " US5      UR                  S5      R	                  5       5        [
        R                  " [        SS9   U" U5      R                  U5        S S S 5        g ! , (       d  f       g = f)N)	r=   r:   r   r   r.   r      r   r.   zinput is not scalarmatch)r   r   r   powerr   pytestraisesNotImplementedErrorrG   s       r   test_elementwise_power'TestArithmetic1D.test_elementwise_powerA   sr    HH4c:lRXXa^SYYq\%9%9%;< ]].6KLaLq! MLLs   9B
B(c                     [         R                  " SS/5      nU" U5      n[        UR                  R	                  5       UR                  5        g Ny      ?      @y       @      )r   r   r   realr   r1   r"   Dr?   s       r   	test_realTestArithmetic1D.test_realJ   7    HHff%&aLQVV^^%qvv.r   c                     [         R                  " SS/5      nU" U5      n[        UR                  R	                  5       UR                  5        g rX   )r   r   r   imagr   rZ   s       r   	test_imagTestArithmetic1D.test_imagO   r^   r   c                     X!    HF  u  p4n[        US-  US-  R                  5       5        [        US-  US-  R                  5       5        MH     g Nr.   gL1@r   r   r1   r"   r!   r   r    datsps         r   test_mul_scalar TestArithmetic1D.test_mul_scalarT   sJ    !2!=Eq519"5"5"78tedl%;%;%=> ">r   c                     X!    HF  u  p4n[        SU-  SU-  R                  5       5        [        SU-  SU-  R                  5       5        MH     g rd   re   rf   s         r   test_rmul_scalar!TestArithmetic1D.test_rmul_scalarY   sJ    !2!=ES1u9"5"5"78dUl%;%;%=> ">r   c                     X!    H  u  p4nU[         R                  " S5      :X  a  M"  [        XU-
  R                  5       [         R                  " S5      5        [        US-
  R                  5       U5        U" / SQSS9n[        XV-
  R                  5       XFR                  5       -
  5        [        Xe-
  R                  5       UR                  5       U-
  5        [        UR                  5       US   -
  XDS   -
  5        M     g )NboolrN   r   )r   r=   r   r.   r   r-   )r   r   r   r   zeros)r1   r"   r!   r   r    rg   r?   s          r   test_subTestArithmetic1D.test_sub^   s    !2!=E((%-002BHHQK@%!),,.4-s3A%),,.iik0AB!),,.		c0AB 3q613Q<@ ">r   c                 B   X!    H  u  p4n[        US-   R                  5       U5        [        [        SS5       Vs/ s H  ofU-  PM	     sn5      n[        [        SS5       Vs/ s H  ofU-  PM	     sn5      n[	        UR                  5       U5        M     g s  snf s  snf )Nr   r   r   )r   r   sumranger   )	r1   r"   r!   r   r    rg   ksumSsumDs	            r   	test_add0TestArithmetic1D.test_add0n   s    !2!=E%!),,.45A;7;aE	;78Dq!5AC56DDLLND1 "> 85s   B
#B
c                    [         R                  " / SQ5      n[         R                  " / SQ5      nU" U5      nU" U5      n[        UR                  U5      R	                  5       X#-  5        [        UR                  U5      R	                  5       X#-  5        [         R                  " / SQ5      n[         R                  " / SQ5      nU" U5      nU" U5      n	[        UR                  U	5      R	                  5       Xg-  5        [        UR                  U5      R	                  5       Xg-  5        [        UR                  U	5      R	                  5       X'-  5        [        UR                  U5      R	                  5       X'-  5        g )N)rN   r   	   )r      r:   y      ?       y              @y              y      @       @y      @      y             ?)r   r   r   multiplyr   )
r1   r"   r?   BrH   BspCr[   CspDsps
             r   test_elementwise_multiply*TestArithmetic1D.test_elementwise_multiplyw   s   HHYHHZ llS)113QU;Q//1159 HH./HH./llS)113QU;Q//1159 	S)113QU;Q//1159r   c                    [         R                  " S/5      n[         R                  " S//5      n[         R                  " / SQ5      n[         R                  " / SQ/5      n[         R                  " S/S/S//5      n[         R                  " / SQ/ S	Q/ S
Q/5      n/ SQn[         R                  " S5      n	U	R                  n
[         R                  " S//5      n[         R                  " SS/SS///5      nU" U5      nU" U5      nU" U5      nU" U5      nU" U5      nU" U5      nU" U5      nU" U	5      nU" U	S   5      nU" U
5      nU" U
S S 2SS 4   5      nU" U5      nX#XEXgXXU/nUUUUUUUUUUUU/nXU/nU HY  nU HP  n UR	                  5       UR	                  5       -  nUR                  U5      n[        UR	                  5       U5        MR     M[     U HF  nU H=  n UR	                  5       U-  nUR                  U5      n[        [	        U5      U5        M?     MH     g ! [
         aI    [        R                  " [
        SS9   UR                  U5        S S S 5        O! , (       d  f       O= f M  f = f! [         a     M  [
         aK    Sn [        R                  " [
        U S9   UR                  U5        S S S 5        O! , (       d  f       O= f M  f = f)NrN   )r   r:   r   )r|   r{   r   r   r.   r   )      r   )r=   r   r.   )r   r   r   r   r.   r   )r   rN   r   )r   Ninconsistent shapesrO   z&broadcast together|inconsistent shapes)r   r   onesTr   
ValueErrorrR   rS   r   r   	TypeError)!r1   r"   r?   r   r   r[   EFGHJKLrH   r   Gspr   r   EspFspHspHsppJspJsppKspmatrices
spmatricessp1dmatricesij
dense_multsp_multmatchmes!                                    r   #test_elementwise_multiply_broadcast4TestArithmetic1D.test_elementwise_multiply_broadcast   s   HHaSMHHrdVHHZ HHj\"HHqcA3_%HHiY78GGFOCCHHqcUOHH1v1v&'( llllllll7$l1a:'l!aA!43S#sCdCsS
# A!"qyy{!:J
 **Q- 1:>    A!"qJ **Q- 0*=   " z9NO

1 POO ! ! FGzA

1 BAA	sZ   !H(&I>(#I;I&		I;&
I40I;:I;>
K$K/K
		K

KKKc                    U" U5      n[         R                  " S[         R                  S[         R                  /5      nX3-  n[         R                  R	                  XT5        U" / SQSS9nS[         R                  [         R
                  S/n[         R                  R	                  X6-  U5        [         R                  " / SQ5      n[         R                  " / SQ5      nU" U5      n	U" U5      n
[        X-  Xx-  5        [         R                  " / S	Q5      n[         R                  " / S
Q5      nU" U5      n	U" U5      n
[         R                  " SS9   [        X-  Xx-  5        S S S 5        [         R                  " SS/5      n[         R                  " SS/5      nU" U5      n	U" U5      n
[         R                  " SSS9   [        X-  Xx-  5        S S S 5        g ! , (       d  f       N}= f! , (       d  f       g = f)Nr   )r   r   r   rN   r   r-   r   r   r}   r~   r   )r   r   r.   ignore)divide)r   invalid)	r   r   nantestingassert_array_equalinfr   errstater   )r1   r"   r   rg   expectedactualdenomr?   r   rH   r   s              r   test_elementwise_divide(TestArithmetic1D.test_elementwise_divide   sy   % 88Q26623


%%f7,c2rvvrvvq)


%%emX> HH./HH./ll	15) HHYHHYll[[)AE* * HHaVHHaVll[[(;AE* <; *) <;s   GG,
G),
G:c                    [         R                  " / SQ5      nU" U5      n[        R                  " [        SS9   US-    S S S 5        [        R                  " [
        SS9   US-    S S S 5        S HE  nX4-  nX$-  n[        UR                  5       U5        [        UR                  UR                  5        MG     g ! , (       d  f       N= f! , (       d  f       Nk= f)N)r   r   r.   r   znegative integer powersrO   r:   z
zero powerr   )r   r.   r   g@)	r   r   rR   rS   r   rT   r   r   r   )r1   r"   r?   r   exponentret_spret_nps          r   test_powTestArithmetic1D.test_pow   s    HH\"aL ]]:-FGrE H]].lCqD D 'H[F[F)62v||4	 ' HGCCs   B;!C;
C	
Cc                     U" U5      nSnUR                  U5      nX4-  n[        UR                  5       UR                  5       5        g )N
   )dotr   r   )r1   r"   r   r?   scalarr   r   s          r   test_dot_scalar TestArithmetic1D.test_dot_scalar   s?    ev:((*:*:*<=r   c                 >   U" / SQ5      nU" [         R                  " SS/SS/SS//S5      5      n[         R                  " / SQ/5      R                  n[        X$-  UR	                  5       U-  5        [        X#-  R	                  5       X#-  R	                  5       5        [        UR	                  5       U-  X#-  R	                  5       5        [        X#R	                  5       -  X#-  R	                  5       5        [         R                  " / SQ5      n[        X%-  UR	                  5       U-  5        U" U5      nX&-  n[        U[         R                  5      (       d   eUR                  S:X  d   e[        [         R                  " S	5      U5        [        [         R                  " S	5      UR	                  5       U-  5        [        [         R                  " S	5      X&R	                  5       -  5        [        [         R                  " S	5      UR	                  5       UR	                  5       -  5        [        R                  " [        S
S9   US-    S S S 5        [        R                  " [        S
S9   SU-    S S S 5        g ! , (       d  f       N6= f! , (       d  f       g = f)N)r.   r   g      @r   r   r.   r   r   )r   r   r   r   r   zScalar operands are not allowedrO   )r   r   r   r   r   r
   r   r2   rR   rS   r   )r1   r"   Mspr   colVVspMsp_Vsps           r   test_matmulTestArithmetic1D.test_matmul  s   $bhhAAA7=>hh	{#%% 		3;;=3#67 	))+cg->->-@A)CG+<+<+>?iik)CG+<+<+>? HHY!23l)'2::....}}""" 	W-S[[]S%89S;;=%89S[[]S[[]%BC ]]:-NO!G P]]:-NOG PO POOOs   I=.J=
J
Jc                     X!    HR  u  p4nU[         R                  " S5      :X  a  M"  XD-   U-   U-
  n[        XdU-   5        XU-   U-   U-
  n[        XtU-   5        MT     g )Nrn   )r   r   r   )r1   r"   r!   r   r    rg   sum1sum2s           r   test_sub_denseTestArithmetic1D.test_sub_dense$  sc    !2!=E(( IOu,DSy)ME)S0DSy) ">r   c                    [         R                  " / 5      nUR                  S5      nUR                  S5      n[         R                  " SS/5      nU" U5      nU" U5      n[        R
                  " [        SS9   UR                  U5        S S S 5        [        UR                  U5      [         R                  " X35      5        [        R
                  " [        SS9   UR                  U5        S S S 5        [        UR                  U5      R                  5       [         R                  " X35      5        [        UR                  U5      R                  5       [         R                  " X35      5        [        UR                  S5      R                  5       [         R                  " US5      5        [        R
                  " [        SS9   UR                  U5        S S S 5        [        UR                  U5      R                  5       UR                  U5      5        g ! , (       d  f       GN= f! , (       d  f       GNE= f! , (       d  f       Nk= f)Nr   )r   r   r'   r   rO   zdimension mismatchr   )r   r   reshaper   rR   rS   r   __add__r   r   r   r   )r1   r"   matr   r   faspdsps           r    test_size_zero_matrix_arithmetic1TestArithmetic1D.test_size_zero_matrix_arithmetic2  s   hhrlKKNKKGGQFOll]]:-BCKK D 	SWWS\266!<0 ]]:-ABGGAJ C 	S\\#&..0"++a2CDS\\!_,,.A0ABS\\!_,,.Aq0AB ]]:-BCLLO D 	S[[%--/1>- DC CB DCs$   :HH,H>
H),
H;>
Ir   N)__name__
__module____qualname____firstlineno__r7   r@   rI   rU   r\   ra   rh   rk   rp   rx   r   r   r   r   r   r   r   r   __static_attributes__r   r   r   r$   r$   #   sa    2&:P
"/
/
?
?
A 2:*:>x +D5 > D* ?r   r$   )__doc__rR   numpyr   numpy.testingr   r   scipy.sparser   r   scipy.sparse._sputilsr   r   int64r*   r,   r   r   fixturer   r!   markparametrizer$   r   r   r   <module>r      s    &   7 - . #
xxR]]3
 ' '   j1n? n? 2n?r   