
    _Mhc.                        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                            d	e           G d
 d                      ZdS )z Test of 1D arithmetic operations    N)assert_equalassert_allclose)	coo_array	csr_array)isscalarlikec                     t          | t          j                  st          |           r| S |                                 S )N)
isinstancenpndarrayr   toarray)as    d/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/sparse/tests/test_arithmetic1d.pyr   r      s6    !RZ   LOO 99;;    c                  0    t          j        g dd          S )N)   r      r   d)r
   array r   r   dat1dr      s    8LLL#&&&r   c                 R      fdt           D             fdt          D             S )Nc                 <    i | ]}|                     |          S r   )astype).0dtyper   s     r   
<dictcomp>z%datsp_math_dtypes.<locals>.<dictcomp>   s'    FFF%e,,FFFr   c                 T    i | ]#fd                                  D             $S )c                 2    g | ]\  }}|| |          fS r   r   )r   r   datsps      r   
<listcomp>z0datsp_math_dtypes.<locals>.<dictcomp>.<listcomp>   s,    HHHzuceS""S''"HHHr   )items)r   r    
dat_dtypess    @r   r   z%datsp_math_dtypes.<locals>.<dictcomp>   sM        	HHHHZ5E5E5G5GHHH  r   )math_dtypes
spcreators)r   r#   s   `@r   datsp_math_dtypesr&      sH    FFFF+FFFJ      r   	spcreatorc                   z    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dS )TestArithmetic1Dc                    d}t          j        d          t          j        d          t          j        d          t          j        d          t          j        d          fD ]} |||          }||z   }d|z  }t          ||                                z  t           j                  sJ t          ||                                z  t           j                  sJ |||fD ][}||z  |                                |                                z  k    sJ |j        |k    sJ t          |          j        |k    sJ \d S )	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%   sG   HWHYHYH[!!H\""
 	2 	2F 	%v...AAAAAa!''))mRZ88888a!''))mRZ88888AY 2 21u		aiikk 99999w&((((qzz'6111112	2 	2r   c                     t          j        g dd          }t          t          |          t           ||                                                               d S )N)r      r   r   r   r   r   r   r   r   )r
   r   r   absr   )r5   r'   As      r   test_abszTestArithmetic1D.test_abs8   sR    H===sCCSVVS1..668899999r   c                     t          j        g dd          } ||          }t          t          j        |d          t	          |d                                                     d S )N)ggQ?g     @1@gQr   r   )decimals)ndigits)r
   r   r   aroundroundr   r5   r'   rB   Asps       r   
test_roundzTestArithmetic1D.test_round<   se    H000#66illRYq1---uS!/D/D/D/L/L/N/NOOOOOr   c                 ~   t          j        g dd          } ||          }t          t          j        |d          |                    d                                                     t          j        t          d          5   ||                              |           d d d            d S # 1 swxY w Y   d S )N)	r@   r=   r   r   r2   r      r   r2   zinput is not scalarmatch)r
   r   r   powerr   pytestraisesNotImplementedErrorrI   s       r   test_elementwise_powerz'TestArithmetic1D.test_elementwise_powerA   s    H444c::illRXa^^SYYq\\%9%9%;%;<<< ].6KLLL 	" 	"IaLLq!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   B22B69B6c                     t          j        ddg          } ||          }t          |j                                        |j                   d S Ny      ?      @y       @      )r
   r   r   realr   r5   r'   DrB   s       r   	test_realzTestArithmetic1D.test_realJ   G    Hff%&&IaLLQV^^%%qv.....r   c                     t          j        ddg          } ||          }t          |j                                        |j                   d S rX   )r
   r   r   imagr   rZ   s       r   	test_imagzTestArithmetic1D.test_imagO   r]   r   c                     ||         D ]V\  }}}t          |dz  |dz                                             t          |dz  |dz                                             Wd S Nr2   gL1@r   r   r5   r'   r&   r   r   datsps         r   test_mul_scalarz TestArithmetic1D.test_mul_scalarT   sr    !29!= 	? 	?E3q519"5"5"7"7888tedl%;%;%=%=>>>>	? 	?r   c                     ||         D ]V\  }}}t          d|z  d|z                                             t          d|z  d|z                                             Wd S rb   rc   rd   s         r   test_rmul_scalarz!TestArithmetic1D.test_rmul_scalarY   sr    !29!= 	? 	?E3S1u9"5"5"7"7888dUl%;%;%=%=>>>>	? 	?r   c                    ||         D ]3\  }}}|t          j        d          k    r t          ||z
                                  t          j        d                     t          |dz
                                  |            |g dd          }t          ||z
                                  ||                                z
             t          ||z
                                  |                                |z
             t          |                                |d         z
  ||d         z
             5d S )NboolrO   r   )r   r@   r   r2   r   r1   )r
   r   r   r   zeros)r5   r'   r&   r   r   re   rB   s          r   test_subzTestArithmetic1D.test_sub^   s+   !29!= 	A 	AE3((((%%-0022BHQKK@@@%!),,..444	---s333A%!),,..aiikk0ABBB!e),,..		c0ABBB 3q613Q<@@@@	A 	Ar   c                 Z   ||         D ]\  }t          dz                                              t          fdt          dd          D                       }t          fdt          dd          D                       }t	          |                                |           d S )Nr   c                     g | ]}|z  S r   r   )r   kre   s     r   r!   z.TestArithmetic1D.test_add0.<locals>.<listcomp>s   s    777aE	777r   r   r   c                     g | ]}|z  S r   r   )r   ro   r   s     r   r!   z.TestArithmetic1D.test_add0.<locals>.<listcomp>t   s    555AC555r   )r   r   sumranger   )r5   r'   r&   r   sumSsumDr   re   s         @@r   	test_add0zTestArithmetic1D.test_add0n   s    !29!= 	2 	2E3%!),,..44477775A;;77788D5555q!55566DDLLNND1111	2 	2r   c                    t          j        g d          }t          j        g d          } ||          } ||          }t          |                    |                                          ||z             t          |                    |                                          ||z             t          j        g d          }t          j        g d          } ||          } ||          }	t          |                    |	                                          ||z             t          |                    |                                          ||z             t          |                    |	                                          ||z             t          |                    |                                          ||z             d S )N)rO   r   	   )r      r=   y      ?       y              @y              y      @       @y      @      y             ?)r
   r   r   multiplyr   )
r5   r'   rB   BrJ   BspCr[   CspDsps
             r   test_elementwise_multiplyz*TestArithmetic1D.test_elementwise_multiplyw   s   HYYYHZZZ  illillS))1133QU;;;Q//111q5999 H...//H...//illillS))1133QU;;;Q//111q5999 	S))1133QU;;;Q//111q59999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 ]}|D ]}	 |                                |                                z  }nX# t
          $ rK t          j        t
          d          5  |                    |           d d d            n# 1 swxY w Y   Y w xY w|                    |          }t          |                                |           |D ]}|D ]}	 |                                |z  }ne# t          $ r Y 't
          $ rM d} t          j        t
          |           5  |                    |           d d d            n# 1 swxY w Y   Y |w xY w|                    |          }t          t	          |          |           d S )NrO   )r   r=   r   )rx   rw   r   r   r2   r   )      r   )r@   r   r2   )r   r   r   r   r2   r   )r   rO   r   )r   Ninconsistent shapesrP   z&broadcast together|inconsistent shapes)r
   r   onesTr   
ValueErrorrS   rT   r{   r   	TypeError)!r5   r'   rB   r|   r~   r[   EFGHJKLrJ   r   Gspr}   r   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   HaSMMHrdVHZZZ  Hjjj\""HqcA3_%%HiiiYYY788IIGFOOCHqcUOOH1v1v&'(( illillillillillillillilly7$$illy111a:''illq!Q1aAq!43S#sCdCsS
S#  		? 		?A ? ?!"qyy{{!:JJ!   z9NOOO & &

1& & & & & & & & & & & & & & &H **Q-- 1 1:>>>>?  	> 	>A > >!"qJJ    H!   FGzAAA & &

1& & & & & & & & & & & & & & &H	
 **Q-- 0 0*====>	> 	>sr   )G%H-H	HHHHHH"I::
K&K,K	KKKKKKc                     ||          }t          j        dt           j        dt           j        g          }||z  }t           j                            ||            |g dd          }dt           j        t           j        dg}t           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            n# 1 swxY w Y   t          j        ddg          }t          j        ddg          } ||          }	 ||          }
t          j        dd          5  t          |	|
z  ||z             d d d            d S # 1 swxY w Y   d S )Nr   )r   r   r   rO   r   r1   r   r   ry   rz   r   )r   r   r2   ignore)divide)r   invalid)	r
   r   nantestingassert_array_equalinfr   errstater   )r5   r'   r   re   expectedactualdenomrB   r|   rJ   r}   s              r   test_elementwise_dividez(TestArithmetic1D.test_elementwise_divide   s   	%  8Q26233

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

%%eemX>>> H...//H...//illillc	1q5))) HYYYHYYYillill[))) 	+ 	+sAE***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ HaVHaVillill[(;;; 	+ 	+sAE***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s$   E;;E?E?HH	Hc                    t          j        g d          } ||          }t          j        t          d          5  |dz   d d d            n# 1 swxY w Y   t          j        t
          d          5  |dz   d d d            n# 1 swxY w Y   dD ]H}||z  }||z  }t          |                                |           t          |j        |j                   Id S )N)r   r   r2   r   znegative integer powersrP   r=   z
zero powerr   )r   r2   r   g@)	r
   r   rS   rT   r   rU   r   r   r   )r5   r'   rB   r|   exponentret_spret_nps          r   test_powzTestArithmetic1D.test_pow   sj   H\\\""IaLL ]:-FGGG 	 	rEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	].lCCC 	 	qDD	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ' 	5 	5H[F[F))6222v|4444		5 	5s#   AAA5BBBc                      ||          }d}|                     |          }||z  }t          |                                |                                           d S )N
   )dotr   r   )r5   r'   r   rB   scalarr   r   s          r   test_dot_scalarz TestArithmetic1D.test_dot_scalar   sZ    Ie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  |                                |z             t          ||z                                  ||z                                             t          |                                |z  ||z                                             t          ||                                z  ||z                                             t          j        g d          }t          ||z  |                                |z              ||          }||z  }t          |t           j                  sJ |j        dk    sJ t          t          j        d	          |           t          t          j        d	          |                                |z             t          t          j        d	          ||                                z             t          t          j        d	          |                                |                                z             t          j	        t          d
          5  |dz   d d d            n# 1 swxY w Y   t          j	        t          d
          5  d|z   d d d            d S # 1 swxY w Y   d S )N)r2   r   g      @r   r   r2   r   r   )r   r   r   r   r   zScalar operands are not allowedrP   )r
   r   r   r   r   r	   r   r6   rS   rT   r   )r5   r'   Mspr|   colVVspMsp_Vsps           r   test_matmulzTestArithmetic1D.test_matmul  s   i$$IbhAAA7==>>h			{##% 	c	3;;==3#6777 	q))++cAg->->-@-@AAA)C!G+<+<+>+>???aiikk)C!G+<+<+>+>??? HYYYa!2333ill)'2:.....}"""" 	W---S[[]]S%8999S3;;==%8999S[[]]S[[]]%BCCC ]:-NOOO 	 	!GG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:-NOOO 	 	GG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   J$$J(+J(
KK!$K!c                     ||         D ][\  }}}|t          j        d          k    r||z   |z   |z
  }t          |||z              ||z   |z   |z
  }t          |||z              \d S )Nrj   )r
   r   r   )r5   r'   r&   r   r   re   sum1sum2s           r   test_sub_densezTestArithmetic1D.test_sub_dense$  s    !29!= 
	* 
	*E3(((( #IOu,DsSy)))EME)S0DsSy))))
	* 
	*r   c                 6   t          j        g           }|                    d          }|                    d          }t          j        ddg          } ||          } ||          }t	          j        t          d          5  |                    |           d d d            n# 1 swxY w Y   t          |	                    |          t          j	        ||                     t	          j        t          d          5  |	                    |           d d d            n# 1 swxY w Y   t          |
                    |                                          t          j
        ||                     t          |
                    |                                          t          j
        ||                     t          |
                    d                                          t          j
        |d                     t	          j        t          d          5  |
                    |           d d d            n# 1 swxY w Y   t          |                    |                                          |                    |                     d S )Nr   )r   r   r+   r   rP   zdimension mismatchr   )r
   r   reshaper   rS   rT   r   __add__r   r   r{   r   )r5   r'   matr   r   faspdsps           r    test_size_zero_matrix_arithmeticz1TestArithmetic1D.test_size_zero_matrix_arithmetic2  s   hrllKKNNKKGQFOOillill]:-BCCC 	 	KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	SWWS\\26!Q<<000 ]:-ABBB 	 	GGAJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	S\\#&&..00"+a2C2CDDDS\\!__,,..Aq0A0ABBBS\\!__,,..Aq0A0ABBB ]:-BCCC 	 	LLOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	S[[%%--//1>>>>>s6   B((B,/B,D&&D*-D*$II
I
N)__name__
__module____qualname__r;   rC   rK   rV   r\   r`   rf   rh   rl   ru   r   r   r   r   r   r   r   r   r   r   r   r)   r)   #   s+       2 2 2&: : :P P P
" " "/ / /
/ / /
? ? ?
? ? ?
A A A 2 2 2: : :*:> :> :>x +  +  +D5 5 5 > > >     D* * * ?  ?  ?  ?  ?r   r)   )__doc__rS   numpyr
   numpy.testingr   r   scipy.sparser   r   scipy.sparse._sputilsr   r%   int64r.   r0   r$   r   fixturer   r&   markparametrizer)   r   r   r   <module>r      s$   & &      7 7 7 7 7 7 7 7 - - - - - - - - . . . . . . #
xR]3  
 ' ' '    j11n? n? n? n? n? n? n? 21n? n? n?r   