
    4[gc.                     2   d Z ddlZddlZddlmZmZ ddlmZm	Z	 ddl
mZ ee	gZej                  ej                  ej                  gZd Zej$                  d        Zej$                  d        Zej*                  j-                  d	e       G d
 d             Zy)z Test of 1D arithmetic operations    N)assert_equalassert_allclose)	coo_array	csr_array)isscalarlikec                 p    t        | t        j                        st        |       r| S | j	                         S N)
isinstancenpndarrayr   toarray)as    _/var/www/html/bid-api/venv/lib/python3.12/site-packages/scipy/sparse/tests/test_arithmetic1d.pyr   r      s'    !RZZ LO99;    c                  2    t        j                  g dd      S )N)   r      r   d)r   array r   r   dat1dr      s    88L#&&r   c                     t         D ci c]  }|| j                  |       }}t        D ci c]/  }||j                         D cg c]  \  }}|| ||      f c}}1 c}}}S c c}w c c}}w c c}}}w r	   )math_dtypesastype
spcreatorsitems)r   dtype
dat_dtypesspdats        r   datsp_math_dtypesr!      s    :EF+%e,,+JF B 	Z5E5E5GH5GzuceS"S'"5GHH  GHs   A'A2A,A2,A2	spcreatorc                   x    e 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 Zd Zd Zy)TestArithmetic1Dc                 v   d}t        j                  d      t        j                  d      t        j                  d      t        j                  d      t        j                  d      fD ]  } |||      }||z   }d|z  }t        ||j                         z  t         j                        sJ t        ||j                         z  t         j                        sJ |||fD ]V  }||z  |j                         |j                         z  k(  sJ |j                  |k(  sJ t        |      j                  |k(  rVJ   y )	N)   int32float32float64	complex64
complex128r      )r   r   r
   tocsrr   tocoor   )selfr"   shapemytyper   bcms           r   test_empty_arithmeticz&TestArithmetic1D.test_empty_arithmetic%   s   HHWHHYHHYHH[!HH\"
F %v.AAAAAa!'')mRZZ888a!'')mRZZ888AY1u		aiik 9999ww&(((qz''6111 
r   c                     t        j                  g dd      }t        t        |      t         ||            j	                                y )N)r      r   r   r   r   r   r   r   r   )r   r   r   absr   )r0   r"   As      r   test_abszTestArithmetic1D.test_abs8   s3    HH=sCSVS1.6689r   c                     t        j                  g dd      } ||      }t        t        j                  |d      t	        |d      j                                y )N)ggQ?g     @1@gQr   r   )decimals)ndigits)r   r   r   aroundroundr   r0   r"   r=   Asps       r   
test_roundzTestArithmetic1D.test_round<   sA    HH0#6lRYYq1-uS!/D/L/L/NOr   c                 L   t        j                  g dd      } ||      }t        t        j                  |d      |j                  d      j	                                t        j                  t        d      5   ||      j                  |       d d d        y # 1 sw Y   y xY w)N)	r;   r8   r   r   r-   r      r   r-   zinput is not scalarmatch)r   r   r   powerr   pytestraisesNotImplementedErrorrD   s       r   test_elementwise_powerz'TestArithmetic1D.test_elementwise_powerA   sr    HH4c:lRXXa^SYYq\%9%9%;< ]].6KLaLq! MLLs   9BB#c                     t        j                  ddg      } ||      }t        |j                  j	                         |j                         y Ny      ?      @y       @      )r   r   r   realr   r0   r"   Dr=   s       r   	test_realzTestArithmetic1D.test_realJ   7    HHff%&aLQVV^^%qvv.r   c                     t        j                  ddg      } ||      }t        |j                  j	                         |j                         y rS   )r   r   r   imagr   rU   s       r   	test_imagzTestArithmetic1D.test_imagO   rX   r   c                     ||   D ]F  \  }}}t        |dz  |dz  j                                t        |dz  |dz  j                                H y Nr-   gL1@r   r   r0   r"   r!   r   r    datsps         r   test_mul_scalarz TestArithmetic1D.test_mul_scalarT   sN    !29!=E3q519"5"5"78tedl%;%;%=> ">r   c                     ||   D ]F  \  }}}t        d|z  d|z  j                                t        d|z  d|z  j                                H y r]   r^   r_   s         r   test_rmul_scalarz!TestArithmetic1D.test_rmul_scalarY   sN    !29!=E3S1u9"5"5"78dUl%;%;%=> ">r   c                    ||   D ]  \  }}}|t        j                  d      k(  r t        ||z
  j                         t        j                  d             t        |dz
  j                         |        |g dd      }t        ||z
  j                         ||j                         z
         t        ||z
  j                         |j                         |z
         t        |j                         |d   z
  ||d   z
          y )NboolrJ   r   )r   r;   r   r-   r   r,   )r   r   r   r   zeros)r0   r"   r!   r   r    r`   r=   s          r   test_subzTestArithmetic1D.test_sub^   s    !29!=E3((%%-002BHHQK@%!),,.4-s3A%!),,.aiik0AB!e),,.		c0AB 3q613Q<@ ">r   c                 :   ||   D ]  \  }}}t        |dz   j                         |       t        t        dd      D cg c]  }||z  	 c}      }t        t        dd      D cg c]  }||z  	 c}      }t	        |j                         |        y c c}w c c}w )Nr   r   r   )r   r   sumranger   )	r0   r"   r!   r   r    r`   ksumSsumDs	            r   	test_add0zTestArithmetic1D.test_add0n   s    !29!=E3%!),,.45A;7;aE	;78Dq!5AC56DDLLND1 "> 85s   B
#B
c                    t        j                  g d      }t        j                  g d      } ||      } ||      }t        |j                  |      j	                         ||z         t        |j                  |      j	                         ||z         t        j                  g d      }t        j                  g d      } ||      } ||      }	t        |j                  |	      j	                         ||z         t        |j                  |      j	                         ||z         t        |j                  |	      j	                         ||z         t        |j                  |      j	                         ||z         y )N)rJ   r   	   )r      r8   y      ?       y              @y              y      @       @y      @      y             ?)r   r   r   multiplyr   )
r0   r"   r=   BrE   BspCrV   CspDsps
             r   test_elementwise_multiplyz*TestArithmetic1D.test_elementwise_multiplyw   s!   HHYHHZ llS)113QU;Q//11q59 HH./HH./llS)113QU;Q//11q59 	S)113QU;Q//11q59r   c                    t        j                  dg      }t        j                  dgg      }t        j                  g d      }t        j                  g dg      }t        j                  dgdgdgg      }t        j                  g dg d	g d
g      }g d}t        j                  d      }	|	j                  }
t        j                  dgg      }t        j                  ddgddggg      } ||      } ||      } ||      } ||      } ||      } ||      } ||      } ||	      } ||	d         } ||
      } ||
d d dd f         } ||      }||||||||	|
||g}||||||||||||g}|||g}|D ]V  }|D ]O  }	 |j	                         |j	                         z  }|j                  |      }t        |j	                         |       Q X |D ]C  }|D ]<  }	 |j	                         |z  }|j                  |      }t        t	        |      |       > E y # t
        $ rE t        j                  t
        d      5  |j                  |       d d d        n# 1 sw Y   nxY wY w xY w# t        $ r Y t
        $ rG d} t        j                  t
        |       5  |j                  |       d d d        n# 1 sw Y   nxY wY w xY w)NrJ   )r   r8   r   )rq   rp   r|   r   r-   r   )      r   )r;   r   r-   )r~   r~   r~   r   r-   r   )r   rJ   r   )r   Ninconsistent shapesrK   z&broadcast together|inconsistent shapes)r   r   onesTr   
ValueErrorrN   rO   rt   r   	TypeError)!r0   r"   r=   ru   rw   rV   EFGHJKLrE   rx   Gsprv   ry   EspFspHspHsppJspJsppKspmatrices
spmatricessp1dmatricesij
dense_multsp_multmatchmes!                                    r   #test_elementwise_multiply_broadcastz4TestArithmetic1D.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q!Q1aAq!43S#sCdCs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+I%!I+*I+.	K9%KJ9	0	K9K>KKc                     ||      }t        j                  dt         j                  dt         j                  g      }||z  }t         j                  j	                  ||        |g dd      }dt         j                  t         j
                  dg}t         j                  j	                  ||z  |       t        j                  g d      }t        j                  g d      } ||      }	 ||      }
t        |	|
z  ||z         t        j                  g d	      }t        j                  g d
      } ||      }	 ||      }
t        j                  d      5  t        |	|
z  ||z         d d d        t        j                  ddg      }t        j                  ddg      } ||      }	 ||      }
t        j                  dd      5  t        |	|
z  ||z         d d d        y # 1 sw Y   zxY w# 1 sw Y   y xY w)Nr   )r   r   r   rJ   r   r,   r   r   rr   rs   r   )r   r   r-   ignore)divide)r   invalid)	r   r   nantestingassert_array_equalinfr   errstater   )r0   r"   r   r`   expectedactualdenomr=   ru   rE   rv   s              r   test_elementwise_dividez(TestArithmetic1D.test_elementwise_divide   s   % 88Q26623


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


%%eemX> HH./HH./llc	1q5) HHYHHYll[[)sAE* * HHaVHHaVll[[(;sAE* <; *) <;s   G$G0$G-0G9c                    t        j                  g d      } ||      }t        j                  t        d      5  |dz   d d d        t        j                  t
        d      5  |dz   d d d        dD ]F  }||z  }||z  }t        |j                         |       t        |j                  |j                         H y # 1 sw Y   ~xY w# 1 sw Y   axY w)N)r   r   r-   r   znegative integer powersrK   r8   z
zero powerr   )r   r-   r   g@)	r   r   rN   rO   r   rP   r   r   r   )r0   r"   r=   ru   exponentret_spret_nps          r   test_powz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                      ||      }d}|j                  |      }||z  }t        |j                         |j                                y )N
   )dotr   r   )r0   r"   r   r=   scalarr   r   s          r   test_dot_scalarz TestArithmetic1D.test_dot_scalar   sA    evv:((*:*:*<=r   c                 *    |g d      } |t        j                  ddgddgddggd            }t        j                  g dg      j                  }t        ||z  |j	                         |z         t        ||z  j	                         ||z  j	                                t        |j	                         |z  ||z  j	                                t        ||j	                         z  ||z  j	                                t        j                  g d      }t        ||z  |j	                         |z          ||      }||z  }t        |t         j                        sJ |j                  dk(  sJ t        t        j                  d	      |       t        t        j                  d	      |j	                         |z         t        t        j                  d	      ||j	                         z         t        t        j                  d	      |j	                         |j	                         z         t        j                  t        d
      5  |dz   d d d        t        j                  t        d
      5  d|z   d d d        y # 1 sw Y   3xY w# 1 sw Y   y xY w)N)r-   r   g      @r   r   r-   r   r   )r   r   r   r   r   zScalar operands are not allowedrK   )r   r   r   r   r   r
   r   r1   rN   rO   r   )r0   r"   Mspru   colVVspMsp_Vsps           r   test_matmulzTestArithmetic1D.test_matmul  s   $bhhAAA7=>hh	{#%% 	c	3;;=3#67 	q))+cAg->->-@A)C!G+<+<+>?aiik)C!G+<+<+>? HHYa!23l)'2::...}}""" 	W-S[[]S%89S3;;=%89S[[]S[[]%BC ]]:-NO!G P]]:-NOG PO POOOs   I=.J	=J	Jc                     ||   D ]S  \  }}}|t        j                  d      k(  r ||z   |z   |z
  }t        |||z          ||z   |z   |z
  }t        |||z          U y )Nre   )r   r   r   )r0   r"   r!   r   r    r`   sum1sum2s           r   test_sub_densezTestArithmetic1D.test_sub_dense$  so    !29!=E3(( #IOu,DsSy)EME)S0DsSy) ">r   c                    t        j                  g       }|j                  d      }|j                  d      }t        j                  ddg      } ||      } ||      }t	        j
                  t        d      5  |j                  |       d d d        t        |j                  |      t        j                  ||             t	        j
                  t        d      5  |j                  |       d d d        t        |j                  |      j                         t        j                  ||             t        |j                  |      j                         t        j                  ||             t        |j                  d      j                         t        j                  |d             t	        j
                  t        d      5  |j                  |       d d d        t        |j                  |      j                         |j                  |             y # 1 sw Y   xY w# 1 sw Y   <xY w# 1 sw Y   \xY w)Nr   )r   r   r&   r   rK   zdimension mismatchr~   )r   r   reshaper   rN   rO   r   __add__r   r   rt   r   )r0   r"   matr   r   faspdsps           r    test_size_zero_matrix_arithmeticz1TestArithmetic1D.test_size_zero_matrix_arithmetic2  s   hhrlKKNKKGGQFOll]]:-BCKK D 	SWWS\266!Q<0 ]]:-ABGGAJ C 	S\\#&..0"++a2CDS\\!_,,.Aq0ABS\\!_,,.Aq0AB ]]:-BCLLO D 	S[[%--/1>- DC CB DCs$   :HH*
H7H'*H47I N)__name__
__module____qualname__r6   r>   rF   rQ   rW   r[   ra   rc   rg   rn   rz   r   r   r   r   r   r   r   r   r   r   r$   r$   #   sa    2&:P
"/
/
?
?
A 2:*:>x +D5 > D* ?r   r$   )__doc__rN   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   