
    -iil                    >
   d Z ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z
 ddlZddlmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlZddlmZmZmZmZm Z m!Z! ddl"m#Z# ddl$m%Z% ddl&Z'ddl(m)Z) ddl(m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< dd	l=m>Z> dd
l?m@Z@mAZAmBZBmCZCmDZD ddlEmFZFmGZGmHZH dejI        v ZJd~dZKd ZL eMdg          ZNdZOd ZP	 	 ddZQd ZR G d d          ZS G d d          ZT G d d          ZU G d d          ZV G d d          ZW G d d           ZX G d! d"          ZYejZ        [                    d#$           G d% d&                      Z\ G d' d(          Z] G d) d*          Z^ G d+ d,          Z_ej`        d-             Za G d. d/          Zb G d0 d1          Zc G d2 d3          Zd G d4 d5          Ze G d6 d7          Zf G d8 d9          Zgdd;Zh	 	 	 	 dd<Zi G d= d>          Zj G d? d@ej ei                      Zkekl                                  G dA dBeVek          ZmdC Zneml                                  G dD dEej ei                      Zoeol                                  G dF dGeVeo          Zpepl                                  G dH dI eiddJ                    Zq G dK dLeVeq          Zreql                                 erl                                  G dM dN eidO                    Zs G dP dQeVes          Ztesl                                 etl                                  G dR dS          Zu G dT dUeu eid:d:d:d:d:V                    Zv G dW dXeVeu eidddddV                    Zwevl                                 ewl                                 dY Zx G dZ d[ eiddddddd\                    Zy G d] d^eVey          Zzeyl                                 ezl                                  G d_ d` eidddddda                    Z{ G db dceVe{          Z|e{l                                 e|l                                 dd Z} G de df          Z~ G dg dhe~          Z G di dje          Z G dk dleek          Z G dm dneem          Z G do dpeeo          Z G dq dreep          Z G ds dtee{          Z G du dvee|          Z G dw dxe~          Z G dy dzeev          Z G d{ d|eew          Zd} ZdS )z Test functions for sparse matrices. Each class in the "Matrix class
based tests" section become subclasses of the classes in the "Generic
tests" section. This is done by the functions in the "Tailored base
class for generic tests" section.

    N)raises)arangezerosarraydotasarrayvstackndarray	transposediagkroninf	conjugateint8)assert_equalassert_array_equalassert_array_almost_equalassert_almost_equalassert_assert_allclose)ComplexWarning)GenericAlias)
csc_matrix
csr_matrix
dok_matrix
coo_matrix
lil_matrix
dia_matrix
bsr_matrix	csc_array	csr_array	dok_array	coo_array	lil_array	dia_array	bsr_arrayeyeissparseSparseEfficiencyWarningsparrayspmatrix)_formats)supported_dtypesisscalarlikeget_index_dtypeasmatrixmatrix)spluexpminvzgoogle.colabc                 B    ||n| d|}t          | |v |           d S )Nz not found in )msg)r   )member
collectionr6   messages       b/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/scipy/sparse/tests/test_base.py	assert_inr;   4   s;    _ccV*S*SZ*S*SGFj g......    c                 \    t          | j        |j        k               t          | |fi | d S N)r   dtyper   )xykwargss      r:   assert_array_equal_dtyperC   9   s7    AGqwq!&&v&&&&&r<   dokzChanging the sparsity structurec                 v    d } ||           D ])} ||          D ]}t          j        ||          r  dS *dS )Nc                     g }| j                                         D ]>}t          |t          j        t          j        z            r|                    |           ?|S r>   )__dict__values
isinstancenpr
   genericappend)r@   arraysas      r:   _underlying_arraysz3sparse_may_share_memory.<locals>._underlying_arraysE   sY     ""$$ 	! 	!A!RZ"*455 !a   r<   TF)rJ   may_share_memory)ABrO   rN   bs        r:   sparse_may_share_memoryrT   B   sv        ""  ##A&& 	 	A"1a(( ttt	 5r<   Fc                       t          j        d           nt          j                    |rddn7dfd	n.|r&t           j                            d          dfd	nd fd		fd
fd}|S )z
    Monkeypatch the maxval threshold at which scipy.sparse switches to
    64-bit index arrays, or make it (pseudo-)random.

    N
    Fc                    t          | ||          }t          t          j        |          j        t          j        t          j                  j                   t          |t          j        k    p|t          j        k               |S r>   )r/   r   rJ   iinfomaxint32r   intc)rM   maxvalcheck_contentstps       r:   new_get_index_dtypez4with_64bit_maxval_limit.<locals>.new_get_index_dtypee   sa     @@B")28BH+=+=+ABBBB"(N3bBGm444Ir<   c                     S r>   rW   )rM   r]   r^   fixed_dtypes      r:   r`   z4with_64bit_maxval_limit.<locals>.new_get_index_dtypek   s	    r<     c                 f    t           j        t           j        f                    d                   S )N   )rJ   r[   int64integers)rM   r]   r^   rngs      r:   r`   z4with_64bit_maxval_limit.<locals>.new_get_index_dtypeo   s!    Hbh'Q88r<   c                    t           j        }||k    rt           j        }| D ]}t          j        |          }|j        t           j        k    rt|rf|j        dk    r9t          j        |j        t           j                  r6|                                }|	                                }| k    r|k    rt           j        }|S Nr   )
rJ   r[   rf   r   r?   size
issubdtypeintegerrZ   min)rM   r]   r^   r?   arrminvalmaxval_limits         r:   r`   z4with_64bit_maxval_limit.<locals>.new_get_index_dtyper   s    HE!L((HE % %joo9rx''% 	)8q==$]39bjAA )%(WWYYF%(WWYYF%,666\;Q;Q (HELr<   c                     |                                  k    rt          d          |                     t          j                  S )Nzdowncast limited)rZ   AssertionErrorastyperJ   intp)ro   downcast_maxvals    r:   new_downcast_intp_indexz8with_64bit_maxval_limit.<locals>.new_downcast_intp_index   s9    wwyy?**$%7888::bg&&&r<   c           
          g t           j        j        t           j        j        t           j        j        t           j        j        t           j        j        t           j        j        t           j        j        t           j        j	        t           j        j
        t           j        j        g
t          j                    fd            }|S )Nc            
      ~   	 D ]t}                     |dt          |dd           f           t          |d
           8                     |dt          |dd           f           t          |d	           u | i |D ]\  }}}|t          |||           S # D ]\  }}}|t          |||           w xY w)Nr/   downcast_intp_index)rL   getattrsetattr)rN   kwmodnameoldfuncbackuprv   funcmodulesrw   r`   s        r:   wrapperz;with_64bit_maxval_limit.<locals>.decorator.<locals>.wrapper   s(   4" U UCMM)%6==#   
 C!24GHHH&21#C)>EE'   
  %:<STTTtQ~"~~*0 4 4&Cw*T73334& 4 4&Cw*T73334s   A>B B<)scipysparse_bsr_coo_csc_csr_dia_dok_lil_sputils_compressed
_construct	functoolswraps)r   r   r   r   rv   rw   r`   s   ` @@r:   	decoratorz*with_64bit_maxval_limit.<locals>.decorator   s    <$el&79J<$el&79J<$el&;<+U\-DF
 
			4 	4 	4 	4 	4 	4 	4 	4 	4 
		4. r<   )rW   NF)rJ   rf   randomdefault_rng)	rq   r   rb   rv   assert_32bitr   rw   r`   rh   s	   ` ``  @@@r:   with_64bit_maxval_limitr   V   s'    x|| x-- !	 	 	 	 	
 
	 	 	 	 	 	 	 		 i##D))	9 	9 	9 	9 	9 	9 	9	 	 	 	 	 	* "	' 	' 	' 	' 	'
      @ r<   c                     t          | t          j                  st          |           r| S |                                 S r>   )rI   rJ   r
   r.   toarray)rN   s    r:   r   r      s6    !RZ   LOO 99;;r<   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
BinopTesterc                     dS Nmatrix on the rightrW   selfmats     r:   __add__zBinopTester.__add__       $$r<   c                     dS r   rW   r   s     r:   __mul__zBinopTester.__mul__   r   r<   c                     dS r   rW   r   s     r:   __sub__zBinopTester.__sub__   r   r<   c                     dS Nmatrix on the leftrW   r   s     r:   __radd__zBinopTester.__radd__       ##r<   c                     dS r   rW   r   s     r:   __rmul__zBinopTester.__rmul__   r   r<   c                     dS r   rW   r   s     r:   __rsub__zBinopTester.__rsub__   r   r<   c                     dS r   rW   r   s     r:   
__matmul__zBinopTester.__matmul__   r   r<   c                     dS r   rW   r   s     r:   __rmatmul__zBinopTester.__rmatmul__   r   r<   N)__name__
__module____qualname__r   r   r   r   r   r   r   r   rW   r<   r:   r   r      s        % % %% % %% % %$ $ $$ $ $$ $ $% % %$ $ $ $ $r<   r   c                   P    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S )BinopTester_with_shapec                     || _         d S r>   _shape)r   shapes     r:   __init__zBinopTester_with_shape.__init__   s    r<   c                     | j         S r>   r   r   s    r:   r   zBinopTester_with_shape.shape   s
    {r<   c                 *    t          | j                  S r>   )lenr   r   s    r:   ndimzBinopTester_with_shape.ndim   s    4;r<   c                     dS r   rW   r   s     r:   r   zBinopTester_with_shape.__add__   r   r<   c                     dS r   rW   r   s     r:   r   zBinopTester_with_shape.__mul__   r   r<   c                     dS r   rW   r   s     r:   r   zBinopTester_with_shape.__sub__   r   r<   c                     dS r   rW   r   s     r:   r   zBinopTester_with_shape.__radd__   r   r<   c                     dS r   rW   r   s     r:   r   zBinopTester_with_shape.__rmul__   r   r<   c                     dS r   rW   r   s     r:   r   zBinopTester_with_shape.__rsub__   r   r<   c                     dS r   rW   r   s     r:   r   z!BinopTester_with_shape.__matmul__   r   r<   c                     dS r   rW   r   s     r:   r   z"BinopTester_with_shape.__rmatmul__   r   r<   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   rW   r<   r:   r   r      s                 % % %% % %% % %$ $ $$ $ $$ $ $% % %$ $ $ $ $r<   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )ComparisonTesterc                     dS )NeqrW   r   others     r:   __eq__zComparisonTester.__eq__       tr<   c                     dS )NnerW   r   s     r:   __ne__zComparisonTester.__ne__   r   r<   c                     dS )NltrW   r   s     r:   __lt__zComparisonTester.__lt__   r   r<   c                     dS )NlerW   r   s     r:   __le__zComparisonTester.__le__   r   r<   c                     dS )NgtrW   r   s     r:   __gt__zComparisonTester.__gt__  r   r<   c                     dS )NgerW   r   s     r:   __ge__zComparisonTester.__ge__  r   r<   N)	r   r   r   r   r   r   r   r   r   rW   r<   r:   r   r      sn                      r<   r   c                   V    e Zd ZdZeZeZeZ	e
ZeZeZeZ ee          Zd Zd Zd ZdS )_MatrixMixinz8mixin to easily allow tests of both sparray and spmatrixc                 .   t          | j                            d                                          | j        dgd d f                    t          | j                            d                                          | j        dgd d f                    d S N   )r   datspgetrowr   datr   s    r:   test_getrowz_MatrixMixin.test_getrow  s    4:,,Q//779948QCF;KLLL4:,,R0088::DHbT111W<MNNNNNr<   c                 .   t          | j                            d                                          | j        d d dgf                    t          | j                            d                                          | j        d d dgf                    d S r   )r   r   getcolr   r   r   s    r:   test_getcolz_MatrixMixin.test_getcol  s    4:,,Q//779948AAAsF;KLLL4:,,R0088::DHQQQW<MNNNNNr<   c                    |                      t          dd                              dd                    }t          |                                j        t          j        d                     t          |                                j        |j                   t          |                    d                                          j        t          j        d                     t          |                    d	                                          j        t          j        d	                     |                                }|                                }t          ||u            d S )
N   r[   r?   re      float64int16float32
complex128)
	spcreatorr   reshaper   asfptyper?   rJ   formatrt   r   r   rQ   rR   Cs       r:   test_asfptypez_MatrixMixin.test_asfptype"  s	   NN6!'222::1Q??@@QZZ\\'))<)<===QZZ\\(!(333QXXg&&//117)9L9LMMMQXXl++4466<bh|>T>TUUUJJLLJJLLQr<   N)r   r   r   __doc__r   bsr_containerr   coo_containerr   csc_containerr   csr_containerr   dia_containerr   dok_containerr   lil_containerstaticmethodr0   asdenser   r   r   rW   r<   r:   r   r     s        BBMMMMMMMl8$$GO O OO O O
 
 
 
 
r<   r   c                      e Zd ZdZeZeZeZ	e
ZeZeZeZeZeZe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 Z*d Z+d Z,d Z-d Z.d Z/d Z0e1j2        j3        d             Z4d Z5d Z6d Z7d  Z8d! Z9d" Z:d# Z;d$ Z<d% Z=d& Z>d' Z?d( Z@d) ZAd* ZBd+ ZCd, ZDd- ZEd. ZFd/ ZGd0 ZHd1 ZId2 ZJd3 ZKd4 ZLd5 ZMd6 ZNd7 ZOd8 ZPd9 ZQd: ZRd; ZSd< ZTd= ZUd> ZVd? ZWd@ ZXdA ZYdB ZZdC Z[dD Z\dE Z]dF Z^dG Z_dH Z`dI ZadJ ZbdK ZcdL ZddM ZedN ZfdO ZgdP ZhdQ ZidR ZjdS ZkdT ZldU ZmdV ZndW ZodX ZpdY ZqdZ Zrd[ Zsd\S )]_TestCommonz6test common functionality shared by all sparse formatsc                    t          g dg dg dgd          | _        |                     | j                  | _        t	          t
                                        | j                  | _        i | _	        i | _
        | j        D ]Y}| j                            |          | j	        |<   |                     | j                            |                    | j
        |<   Zt          | j        | j	        t          j                            t          | j                                        | j
        t          j                                                            t!          | j        t"                    | _        d S )N)r   r   r   re   )r   r   r   r   )r   re   r   r   d)r   r   r   r   setr-   unionmath_dtypeschecked_dtypes
dat_dtypesdatsp_dtypesrt   r   rJ   r   r   rI   r*   is_array_test)clsr?   s     r:   
init_classz_TestCommon.init_class>  s;    |||\\\BCHHMM#'**	
 !!12288II' 	K 	KE$'GNN5$9$9CN5!&)mmCGNN54I4I&J&JCU## 	SWcnRZ8999SY&&((%bj199;;	= 	= 	= 'sy'::r<   c                       fd}t           t                    rt          j        d            j        D ]} ||           d S )Nc                     j         |          }t          t          t          |           t	                              dgg                     t	                              dgg                      d S )Nr   r   )r  assert_raises
ValueErrorboolr   r   )r?   r   r   s     r:   checkz$_TestCommon.test_bool.<locals>.checkW  sg    %e,E*dE222DNNQC5))***u---.....r<   z%Cannot create a rank <= 2 DOK matrix.)rI   TestDOKpytestskipr  r   r  r?   s   `  r:   	test_boolz_TestCommon.test_boolV  sm    	/ 	/ 	/ 	/ 	/ dG$$ 	AK?@@@( 	 	EE%LLLL	 	r<   c                     t          ddgg          }|                     |          }t          d          D ]}||z   }||z   }t          ||                                           d S )NTFrV   )r   r   ranger   r   )r   r   r   _s       r:   test_bool_rolloverz_TestCommon.test_bool_rolloverc  so     dE]O$$s##r 	 	AEME)CC300000r<   c                       fd} j         j        dvrt          j        d            j        D ]} ||           d S )Nc                     t          j                    5  t          j        dt                     t          j        dt                     	j        |          }	j        |          }|                                }d|d d df<   	                    |          }		                    |          }	
                    |          }	                    |          }	                    |          }t          ||k    ||k                                               t          ||k    ||k                                               t          ||k    ||k                                               t          ||k    ||k                                               t          ||k    ||k                                               t          ||k    ||k               t          |dk    |dk                                               t          |dk    |dk                                               t          |t          j        k    |t          j        k                                               d d d            d S # 1 swxY w Y   d S Nignorer   r   )warningscatch_warningssimplefilterr)   r   r  r  copyr   r   r  r  r  rC   r   rJ   nan)
r?   r   r   dat2datsp2datbsrdatcsrdatcscdatlilr   s
            r:   r  z"_TestCommon.test_eq.<locals>.checkp  s   (** F F%h0GHHH%h???oe,)%0xxzzQQQqS	--++C00++C00++C00++C00 )u6O6O6Q6QRRR(v7G6P6P6R6RSSS(v7G6P6P6R6RSSS(v7G6P6P6R6RSSS(v7G6P6P6R6RSSS(#FFF(EQJ3G3G3I3IJJJ(EQJ3G3G3I3IJJJ(*/26/)B)B)D)DF F F3F F F F F F F F F F F F F F F F F Fs   II33I7:I7bsrcsccsr8Bool comparisons only implemented for BSR, CSC, and CSR.r   r   r  r  r  r  s   `  r:   test_eqz_TestCommon.test_eqn  sp    	F 	F 	F 	F 	F: :$999KRSSS( 	 	EE%LLLL	 	r<   c                       fd} j         j        dvrt          j        d            j        D ]} ||           d S )Nc                    t          j                    5  t          j        dt                     t          j        dt                     	j        |          }	j        |          }|                                }d|d d df<   	                    |          }		                    |          }	
                    |          }	                    |          }	                    |          }t          ||k    ||k                                               t          ||k    ||k                                               t          ||k    ||k                                               t          ||k    ||k                                               t          ||k    ||k                                               t          ||k    ||k               t          |dk    |dk                                               t          |dk    |dk                                               t          d|k    d|k                                               t          d|k    d|k                                               t          |t          j        k    |t          j        k                                               d d d            d S # 1 swxY w Y   d S r'  )r)  r*  r+  r)   r   r  r  r,  r   r   r  r  r  rC   r   rJ   r-  )
r?   r   r   r.  r/  r0  r2  r1  r3  r   s
            r:   r  z"_TestCommon.test_ne.<locals>.check  s   (** F F%h0GHHH%h???oe,)%0xxzzQQQqS	--++C00++C00++C00++C00 )u6O6O6Q6QRRR(v7G6P6P6R6RSSS(v7G6P6P6R6RSSS(v7G6P6P6R6RSSS(v7G6P6P6R6RSSS(#FFF(EQJ3G3G3I3IJJJ(EQJ3G3G3I3IJJJ(cAJ3G3G3I3IJJJ(cAJ3G3G3I3IJJJ(*/26/)B)B)D)DF F F7F F F F F F F F F F F F F F F F F Fs   J%KKKr4  r8  r9  r  s   `  r:   test_nez_TestCommon.test_ne  sp    	F 	F 	F 	F 	F> :$999KRSSS( 	 	EE%LLLL	 	r<   c                     | j         j        dvrt          j        d           | j         | j         j        k    du sJ | j         | j         j        k    du sJ d S )Nr4  r8  FT)r   r   r  r  Tr   s    r:   test_eq_ne_different_shapesz'_TestCommon.test_eq_ne_different_shapes  sb    :$999KRSSS
djl*u4444
djl*t333333r<   c                       fd} j         j        dvrt          j        d            j        D ]} ||           d S )Nc                    t          j                    5  t          j        dt                     t          j        dt                     j        |          }j        |          }|                                }d|d d df<                       |          }|	                    t                    }d|d d df<                       |          }                    |          }                    |          }                    |          }	                    |          }
t          ||k     ||k                                                t          ||k     ||k                                                t          ||k     ||k                                                t          ||k     ||k                                                t          ||k     |	|k                                                t          ||k     |
|k                                                t          ||k     ||k                                                t          ||k     ||k                                                t          ||k     ||	k                                                t          ||k     ||
k                                                t          ||k     ||k                t          ||k     ||k                dD ]j}t#          j        |          }t          ||k                                     ||k                t          ||k                                     ||k                kt#          j        d          5  t          |t"          j        k                                     |t"          j        k                d d d            n# 1 swxY w Y   j        |          }j        |          }|                                }d|d d df<                       |          }t          ||k     ||k                d d d            d S # 1 swxY w Y   d S Nr(  r         ?      ?)re   r   r   r   invalidr)  r*  r+  r)   r   r  r  r,  r   rt   complexr   r  r  r  rC   r   rJ   rf   errstater-  r?   r   r   r.  r/  
datcomplexdatspcomplexr0  r2  r1  r3  valr   s               r:   r  z"_TestCommon.test_lt.<locals>.check  s   (** 4E 4E%h0GHHH%h???oe,)%0xxzzQQQqS	-- ZZ00
"(
111Q3#~~j99++C00++C00++C00++C00 )tefn5M5M5O5OPPP(d):*6*?)H)H)J)JL L L )tfvo5N5N5P5PQQQ(tfvo5N5N5P5PQQQ(tfvo5N5N5P5PQQQ(tfvo5N5N5P5PQQQ(fvo5N5N5P5PQQQ(fvo5N5N5P5PQQQ(fvo5N5N5P5PQQQ(fvo5N5N5P5PQQQ(tUT\BBB(d):L4<OPPP, Q QC(3--C,eck-B-B-D-DcCiPPP,cEk-B-B-D-DcCiPPPP[222 ; ;,ebfn-E-E-G-G-026\; ; ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
 oe,)%0xxzzQQQqS	-- )vut|DDDi4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E7   M#P?8?O7P?O	P?
O	A'P??QQr4  r8  r9  r  s   `  r:   test_ltz_TestCommon.test_lt  sq    5	E 5	E 5	E 5	E 5	En :$999KRSSS( 	 	EE%LLLL	 	r<   c                       fd} j         j        dvrt          j        d            j        D ]} ||           d S )Nc                    t          j                    5  t          j        dt                     t          j        dt                     j        |          }j        |          }|                                }d|d d df<                       |          }|	                    t                    }d|d d df<                       |          }                    |          }                    |          }                    |          }	                    |          }
t          ||k    ||k                                               t          ||k    ||k                                               t          ||k    ||k                                               t          ||k    ||k                                               t          ||k    |	|k                                               t          ||k    |
|k                                               t          ||k    ||k                                               t          ||k    ||k                                               t          ||k    ||	k                                               t          ||k    ||
k                                               t          ||k    ||k               t          ||k    ||k               dD ]j}t#          j        |          }t          ||k                                    ||k               t          ||k                                    ||k               kt#          j        d          5  t          |t"          j        k                                    |t"          j        k               d d d            n# 1 swxY w Y   j        |          }j        |          }|                                }d|d d df<                       |          }t          ||k    ||k               d d d            d S # 1 swxY w Y   d S rC  rH  rK  s               r:   r  z"_TestCommon.test_gt.<locals>.check  s   (** 3E 3E%h0GHHH%h???oe,)%0xxzzQQQqS	-- ZZ00
"(
111Q3#~~j99++C00++C00++C00++C00 )tefn5M5M5O5OPPP(d):*6*?)H)H)J)JL L L )tfvo5N5N5P5PQQQ(tfvo5N5N5P5PQQQ(tfvo5N5N5P5PQQQ(tfvo5N5N5P5PQQQ(fvo5N5N5P5PQQQ(fvo5N5N5P5PQQQ(fvo5N5N5P5PQQQ(fvo5N5N5P5PQQQ(tUT\BBB(d):L4<OPPP, Q QC(3--C,eck-B-B-D-DcCiPPP,cEk-B-B-D-DcCiPPPP[222 ; ;,ebfn-E-E-G-G-026\; ; ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
 oe,)%0xxzzQQQqS	-- )vut|DDDg3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3ErO  r4  r8  r9  r  s   `  r:   test_gtz_TestCommon.test_gt  sq    4	E 4	E 4	E 4	E 4	El :$999KRSSS( 	 	EE%LLLL	 	r<   c                       fd} j         j        dvrt          j        d            j        D ]} ||           d S )Nc                    t          j                    5  t          j        dt                     t          j        dt                     j        |          }j        |          }|                                }d|d d df<                       |          }|	                    t                    }d|d d df<                       |          }                    |          }                    |          }                    |          }	                    |          }
t          ||k    ||k                                               t          ||k    ||k                                               t          ||k                                    ||k               t          ||k                                    ||k               t          |	|k                                    ||k               t          |
|k                                    ||k               t          ||k                                    ||k               t          ||k                                    ||k               t          ||	k                                    ||k               t          ||
k                                    ||k               t          ||k    ||k               t          ||k    ||k               dD ]j}t#          j        |          }t          ||k                                    ||k               t          ||k                                    ||k               kj        |          }j        |          }|                                }d|d d df<                       |          }t          ||k    ||k               d d d            d S # 1 swxY w Y   d S Nr(  r   rD  )re   r   r   rE  r)  r*  r+  r)   r   r  r  r,  r   rt   rI  r   r  r  r  rC   r   rJ   rf   rK  s               r:   r  z"_TestCommon.test_le.<locals>.check8     (** /G /G%h0GHHH%h???oe,)%0xxzzQQQqS	-- ZZ00
"(
111Q3#~~j99++C00++C00++C00++C00 )u6O6O6Q6QRRR(t);*6&*@)I)I)K)KM M M )&F*:)C)C)E)Esd{SSS(&F*:)C)C)E)Esd{SSS(&F*:)C)C)E)Esd{SSS(&F*:)C)C)E)Esd{SSS(&F*:)C)C)E)Ets{SSS(&F*:)C)C)E)Ets{SSS(&F*:)C)C)E)Ets{SSS(&F*:)C)C)E)Ets{SSS($tDDD()=zT?QRRR) S SC(3--C,esl-C-C-E-EsczRRR,cUl-C-C-E-EsczRRRR oe,)%0xxzzQQQqS	-- )FFF_/G /G /G /G /G /G /G /G /G /G /G /G /G /G /G /G /G /G   N2OOOr4  r8  r9  r  s   `  r:   test_lez_TestCommon.test_le7  q    0	G 0	G 0	G 0	G 0	Gd :$999KRSSS( 	 	EE%LLLL	 	r<   c                       fd} j         j        dvrt          j        d            j        D ]} ||           d S )Nc                    t          j                    5  t          j        dt                     t          j        dt                     j        |          }j        |          }|                                }d|d d df<                       |          }|	                    t                    }d|d d df<                       |          }                    |          }                    |          }                    |          }	                    |          }
t          ||k    ||k                                               t          ||k    ||k                                               t          ||k                                    ||k               t          ||k                                    ||k               t          |	|k                                    ||k               t          |
|k                                    ||k               t          ||k                                    ||k               t          ||k                                    ||k               t          ||	k                                    ||k               t          ||
k                                    ||k               t          ||k    ||k               t          ||k    ||k               dD ]j}t#          j        |          }t          ||k                                    ||k               t          ||k                                    ||k               kj        |          }j        |          }|                                }d|d d df<                       |          }t          ||k    ||k               d d d            d S # 1 swxY w Y   d S rV  rW  rK  s               r:   r  z"_TestCommon.test_ge.<locals>.checkp  rX  rY  r4  r8  r9  r  s   `  r:   test_gez_TestCommon.test_geo  r[  r<   c                    t          |                     d                                          t          d                     t          |                     d          j        d           t          |                     d                                          d           | j        j        dv rHt          |                     d                              d          t          g d                     d S d S )Nr   r   r   coor7  r6  lilaxisr   r   r   )	r   r   r   r   nnzcount_nonzeror   r   r   r   s    r:   
test_emptyz_TestCommon.test_empty  s    T^^F++3355uV}}EEET^^F++/333T^^F++99;;Q???: <<<//==1=EEuYYYGWGWXXXXX =<r<   c                    | j         j        dv }|rg dnd g}| j         | j         j        fD ]S}|D ]N}t          j        |                                |          }t          |                    |          |           OT|sLt          t          d          5  | j                             d           d d d            d S # 1 swxY w Y   d S d S )Nra  )Nr   r   r   rE  rd  znot implemented .* formatmatchr   )	r   r   r?  rJ   rh  r   r   r  NotImplementedError)r   axis_supportaxesrQ   axexpecteds         r:   test_count_nonzeroz_TestCommon.test_count_nonzero  sA   z(,HH'3?####$*djl+ 	A 	AA A A+AIIKKbAAAQ__"_55x@@@@A  	12:UVVV 1 1
((a(0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1	1 	1s   C  CCc                     t          t          | j        d           t          t          | j        d           t          t          | j        d           d S )Nr   r   r   r   r   r   )r  r  r   r   s    r:   test_invalid_shapesz_TestCommon.test_invalid_shapes  sD    j$.&999j$.&999j$.':::::r<   c                 ,   |                      g dg dg dg          }|j        dk    rdn|j        dk    rdnd}t          |j                 \  }}| j        rd	nd
}d| d| d|j         d|j         d| d|j         d}t          |          |k    sJ d S )Nr   r   r   rf  r   r   rE  dia(1 diagonals) r5  (blocksize=1x1)  r   r1   < sparse  of dtype ''
	with  stored elements 
and shape >)r   r   r,   r  r?   rg  r   reprr   r   extrar#  fmt
sparse_clsrq  s          r:   	test_reprz_TestCommon.test_repr  s   			999jjjABB % 5 5',|u'<'<## 	
 %,'3 $ 2@WW
R R RZ R REK R RiR R27R RCH;R R R 	 E{{h&&&&&&r<   c                    |                      t          j        d                              dd                    }|j        dk    sJ t          t          |                              d                    dk    sJ t          j        d                              dd          }|                      |          }|j        dk    rd	n|j	        }|                      |d
          }t          t          |                              d                    |dz   k    sJ t          t          |                              d                    dk    sJ |                      |dddd          }|                      |dddd          }t          j        t          d          5  |                      |dddd           d d d            d S # 1 swxY w Y   d S )NK         2   
6   r   r{     r   )maxprintrV   )r  r   iF   )r   r?   r,  r  z'positional argument|unpack non-iterablerk  )r   rJ   r   r   r  r   strsplitr   rg  r  r   	TypeError)r   r   r   	nnz_small	datsp_mp6s        r:   test_str_maxprintz_TestCommon.test_str_maxprint  s   ry}}44Q;;<<~####3u::##D))**f4444imm##Aa((s##,%//BBUY	NN3N33	3u::##D))**i!m;;;;3y>>''--..%7777 s&%RSTTsFCCC]9,UVVV 	7 	7NN3UA666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   "G		GGc                 F   |                      g dg dg dg          }|j        dk    rd S |j        dk    rdn|j        dk    rdnd	}t          |j                 \  }}| j        rd
nd}d| d| d|j         d|j         d| d|j         d}t          |          |k    sJ d S )Nry  rf  rz  re   r{  r|  r5  r}  r~  r   r1   r  r  r  r  r  r  z(>
  Coords	Values
  (0, 0)	1
  (2, 2)	-2)r   rg  r   r,   r  r?   r   r  r  s          r:   test_strz_TestCommon.test_str  s   			999jjjABB9>>F % 5 5',|u'<'<## 	
 %,'3 $ 2@WW
  Z  EK  i 27 CH;   	 5zzX%%%%%%r<   c                    d}t          j        d          t          j        d          t          j        d          t          j        d          t          j        d          fD ]}|                     ||          }||z   }d|z  }||                                z  }||                                z  }||                                z  }||||||fD ]}	t          |	                                |                                |                                z             t          |	j        |           t          |	                                j        |           d S )	Nr  r  r[   r   r   	complex64r   r   re   )rJ   r?   r   tocsctocsrtocoor   r   )
r   r   mytyperN   rS   cr  efms
             r:   test_empty_arithmeticz!_TestCommon.test_empty_arithmetic  s:   x(("(9*=*=##RXk%:%:&&( 	7 	7F uF33AAAAAAGGIIAAGGIIAAGGIIA!Aa] 7 7QYY[[!))++aiikk*ABBBQWV,,,QYY[[.v6666	7	7 	7r<   c                     t          g dg dg dg dgd          }t          t          |          t          |                     |                                                               d S )Nr   r      r   r   r   r   rf  r  )r   r   absr   r   r   rQ   s     r:   test_absz_TestCommon.test_abs
  sf    ;;;


JJJ			BCHHSVVS!2!233;;==>>>>>r<   c                     d}t          ddgddggd          }t          t          j        ||          t	          |                     |          |                                                     d S )	Nr   ggQ?g     @1@gQr  )decimals)ndigits)r   r   rJ   aroundroundr   r   )r   decimalrQ   s      r:   
test_roundz_TestCommon.test_round  s}    E4=5%.1377RYq73334>>!,,g>>>FFHH	J 	J 	J 	J 	Jr<   c                 J   t          g dg dg dgd          }t          t          j        |d          |                     |                              d                                                     t          t          |                     |          j        |           d S )N)r  rE  r   r   r   re   r   r  r  re   )r   r   rJ   powerr   r   r  rm  r  s     r:   test_elementwise_powerz"_TestCommon.test_elementwise_power  s    <<<YYY7==RXa^^T^^A%6%6%<%<Q%?%?%G%G%I%IJJJ 	)4>>!+<+<+BAFFFFFr<   c                 0   t          g dg dg dg dgd          }t          | |                     |                                                      t          g dg dg          }t	          t
          |                     |          j                   d S )Nr  r  r  rf  r  )TFF)FFT)r   r   r   r   r  rm  __neg__r  s     r:   test_negz_TestCommon.test_neg  s    ;;;


JJJ			BCHHaR4>>!,,,5577888 ''')=)=)=>??)4>>!+<+<+DEEEEEr<   c                     t          ddgg          }|                     |          }t          |j                                        |j                   d S N      ?      @y       @      )r   r   r   realr   r   DrQ   s      r:   	test_realz_TestCommon.test_real#  L    FF#$%%NN1QV^^%%qv.....r<   c                     t          ddgg          }|                     |          }t          |j                                        |j                   d S r  )r   r   r   imagr   r  s      r:   	test_imagz_TestCommon.test_imag(  r  r<   c           	      D   g }|                     g dg           |                     dgdgdgg           |                     ddgddgddgg           |                     g dg dg dg           |                     ddgddgg           |                     t          |d         ddgg                     |                     t          |d         dgdgg                     |                     t          |d         ddgdd	gg                     |                     t          |d         ddgdd	gg                     |                     t          |d         ddgdd	gg                     |                     t          |d         g d
g                     |D ]}t          |          j        \  }}|                     |          }t          | dz
  |dz             D ]5}t          |                    |          t          ||                     6t          |                    d          t          |d                     t          |                    d          t          |d                     t          |                     d                                          t          j
        d                     t          |                     d                                          t          j        d                     t          |                     d                                          t          j        d                     t          |                     d                              d          t          j        d                     d S )Nr   r   re   r   r   re   r   r   r   r   )r   r   re   r   r   r   r  r   re   r   r  krV   i)(   i?  r  r   r   )r  r   r   r  )rL   r   r   r   r   r"  r   diagonalr   rJ   r   empty)r   matsr  rowscols
sparse_matr  s          r:   test_diagonalz_TestCommon.test_diagonal-  sH   WWWIaS!aSM"""aUAa5!A'(((WWWWWWWWW-...aUAa5M"""Da1Q%))***Da1#qc++,,,Da1Q%1//000Da1Q%1//000Da1Q%1//000Da)))--... 	E 	EAqJD$**JD57DF++ E EZ001055tA|||DDDD,,r,22DbMMMBBB,,s,33T!s^^^DDDD 	T^^K0099;;RXb\\JJJ 	T^^F++4466DDDT^^G,,5577!EEET^^F++44R88"(1++FFFFFr<   c                    t          j        g dg dg dg          }|                     |          }t          dd          D ]:}t	          |                    |          |                    |                     ;t          j        g dg dg          }|                     |          }t          dd          D ]:}t	          |                    |          |                    |                     ;d S )Nr   re   r   r  r  r   )      	   rE  r   )offsetr   )rJ   r   r   r"  r   trace)r   rQ   rR   r  s       r:   
test_tracez_TestCommon.test_traceN  s    HiiiIII677NN1r1 	? 	?A**AGG1G,=,=>>>> Hiii+,,NN1r1 	? 	?A**AGG1G,=,=>>>>	? 	?r<   c           	         |                      g dg dg dg dg          }dD ]e}dD ]`}t          |                    ||                                          |                                                    ||                     af|                      g dg d	g d
g          }|                    d          }g dg dg}t          |                                |           |                    d          }t          |                                |           |                    d          }t          |                                |           t	          t
          |j        d           |                    dd          }t          |                                |           t	          t          |j        ddd           |                    d          }t          ||u            |                    dd          }t          ||u           t          |j        d           | j	        r6t	          t          d          5  d|_        d d d            n# 1 swxY w Y   n)d|_        t          |                                |           t	          t
          |j        |j        f           t	          t
          |j        d|j        df           d S )N)r   r   r  rf  r  )r   r   r  )r   F))   r   )r   r  orderr   rV   r   r   r   r   r   r   r         r  re   r   )r   rV   r   r   r   r   )r   r   r   r  r  r  re   r   )r   r   rv  re   r   r   )
not_an_argr   r  Tr,  zhas no setter|n't set attributerk  )r   r   r   r   r  r  r  r   r   r  AttributeErrorrk   )r   r@   r  srA   desireds         r:   test_reshapez_TestCommon.test_reshape[  s   NNIIIyyy)))YYYGHH 	H 	HE' H H"199Qe9#<#<#D#D#F#F#$99;;#6#6q#6#F#FH H H HH NNMMM<<<IJJIIf&&&(=(=(=>199;;000 IIg199;;000IIg199;;000j!)X666 IIaOO199;;000iAqQ???? IIfQIIf4I((
 	17F+++ 	5~5VWWW ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! AGqyy{{G444 	j!)afY777j!)a^<<<<<s   II!Ic                    fdfd}t           j                            d           g d}t           j        t           j        fD ]}|D ]\  }}t          j        | dz   |dz
            }|D ]}t          j        ||f|          }|                     ||f|          }	 |||	|           t           j                            |t          t          |          d                    D ]}
 |||	|
           d S )	Nc                    t          j        |          }|dk    rt          | j        d         | j        d         |z
            }|j        dk    r't          |t          |                    }|d |         }t          j        d|          }t          j        |||z             }|| ||f<   d S |dk     r | j        ||            d S d S Nr   r   )rJ   r   rn   r   r   r   r   r?  )rN   vr  nr  jdense_setdiags         r:   r  z=_TestCommon.test_setdiag_comprehensive.<locals>.dense_setdiag  s    
1AAvv
AGAJN336Q;;As1vvA"1"AIaOOIaQ''!A#Qac1qb))))) r<   c                 P   dt          t          j        | |                    ddfD ]|}|dk     r.t          j                            t          dd                    }n"t          j                            dd|          } | ||           t          j                    5  t          j	        dt          t                     |                    ||           d d d            n# 1 swxY w Y   t          j        | |          }t          j        |          j        dk    rt          ||d	
           nLt!          t          |          t          |                    }t          |d |         |d |         d	
           t          |                                | d	
           ~d S )Nr   re   r  r   r   r  rk   r(  z	{msg} {r}err_msg)r   rJ   r   r   choicer"  randintr)  r*  filterwarningsWMSGr)   setdiagr   r   r   rn   r   )rN   rS   r  rr   r  r  r  s          r:   check_setdiagz=_TestCommon.test_setdiag_comprehensive.<locals>.check_setdiag  s    #bgamm,,a4 H Hq55	((q"66AA	))!Ra)88AaA&&&,.. $ $+Hd<STTTIIaOOO$ $ $ $ $ $ $ $ $ $ $ $ $ $ $
 GAqMM:a==%**&q![AAAAACFFCFF++A&q!uae[IIII"199;;;GGGGG'H Hs   !7C$$C(	+C(	rc   )r  r  r   r   r  r  r   r  r   r   r  r  )rJ   r   seedr   r   r   r   r   r  rn   r   )r   r  shapesr?   r  r  ksr  rN   rS   k2r  s              @r:   test_setdiag_comprehensivez&_TestCommon.test_setdiag_comprehensive  sY   	* 	* 	* 	* 	*	H 	H 	H 	H 	H2 		t444grz* 	0 	0E 
0 
0!Yr!tQqS)) 0 0A!Qu555A1vU;;A!M!Q*** !i..rCGGQ.HH 0 0%aB////00
0	0 	0r<   c           
      (   |                      t          j        d                    }|                      d          }g d}t          j                    5  t          j        dt          t                     t          t          |j
        |d           |
                    |           t          |                                |           |
                    |d           t          |                                t          j        g dg d	g d
g                     |
                    |d           t          |                                t          j        g dg d	g dg                     |
                    dd           t          |                                d         d           |
                    dd           t          |                                d         d           |
                    dgd           t          |                                d         g d           |
                    ddgd           t          |                                d d         g dg dg           d d d            d S # 1 swxY w Y   d S )Nr   r  r  )r   re   r   r(  r  r  r   )r   r   r   )r   re   re   r  rE  r   r   r   )r  re   r   re   r  re   r   r   r   r   r   r   )r   r   r   r   )r   rJ   r'   r)  r*  r
  r  r)   r  r  r  r   r  r   r   )r   r  m2rH   s       r:   test_setdiagz_TestCommon.test_setdiag  s   NN26!99%%^^F##$&& 	A 	A#Hd4KLLL*ai1====IIfqzz||V444IIfI"""qyy{{BHiii6?ii6?ii6A -B -B C C C IIfI###qyy{{BHiii6?ii6?ii6A -B -B C C C IIdaI   qyy{{3/333IIdbI!!!qyy{{3/333JJsaJ   rzz||A===JJ1vJ###rzz||BQB/,,,2>,,2@ A A A-	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   H&JJJc                 ,   t          g dg dg dg          }|                     |          }d t          |                                          D             }d t          |                                          D             }t	          ||           d S )Nr   r   r   r   r   r   r  c                 ,    h | ]}t          |          S rW   tuple.0ijs     r:   	<setcomp>z+_TestCommon.test_nonzero.<locals>.<setcomp>  s    ;;;bb		;;;r<   c                 ,    h | ]}t          |          S rW   r#  r%  s     r:   r(  z+_TestCommon.test_nonzero.<locals>.<setcomp>  s    ???%))???r<   )r   r   r   nonzeror   r   rQ   AspA_nzAsp_nzs        r:   test_nonzeroz_TestCommon.test_nonzero  s    999YYYyyy122nnQ;;Iaiikk$:$:;;;??i&>&>???T6"""""r<   c                 ,   t          g dg dg dg          }|                     |          }d t          t          j        |                    D             }d t          t          j        |                    D             }t          ||           d S )Nr   r!  r  c                 ,    h | ]}t          |          S rW   r#  r%  s     r:   r(  z1_TestCommon.test_numpy_nonzero.<locals>.<setcomp>  s    ===bb		===r<   c                 ,    h | ]}t          |          S rW   r#  r%  s     r:   r(  z1_TestCommon.test_numpy_nonzero.<locals>.<setcomp>  s    AAA%))AAAr<   )r   r   r   rJ   r*  r   r+  s        r:   test_numpy_nonzeroz_TestCommon.test_numpy_nonzero  s    999iii344nnQ==Ibjmm$<$<===AAi
3&@&@AAAT6"""""r<   c                    	 t           j                            d           t          j        g dg dg dg          }t           j                            dd          }t          j        g g          }t          j        d          }t          j        ddd                                          }|||||g		 fd	} j        D ]-}t          t          	                    D ]} |||           .d S )
Nrc   r   r   re   r   r  r  r  r  r  )r  r  g{Gz?)densityc                                         |         |           }                    ||           }t          j        d          5  t	          |                                |                                           t          |                                j        |                                j                   t          t          j	        |                    d                                t	          |                    d           |                    d                      t          |                    d           j        |                    d           j                   t	          |                    d          |                    d                     t          |                    d          j        |                    d          j                   t	          |                    d          |                    d                     t          |                    d          j        |                    d          j                   t	          |                    d          |                    d                     t          |                    d          j        |                    d          j                   t	          |                    d          |                    d                     t          |                    d          j        |                    d          j                   t	          |                    d	          |                    d	                     t          |                    d	          j        |                    d	          j                   d d d            d S # 1 swxY w Y   d S )
Nr   r(  )overrd  r   r   rE  r   r   r   )
r  r   rJ   rJ  r   sumr   r?   r   isscalar)r?   r  r   r   matricesr   s       r:   r  z#_TestCommon.test_sum.<locals>.check  sS   ,,x{%,88CNN3eN44E(+++ W W)#''))UYY[[AAASWWYY_eiikk.?@@@EII4I$8$899:::)#''t'*<*<eiiTi>R>RSSSSWW$W//5uyydy7K7K7QRRR)#''q'//599!9;L;LMMMSWW!W__2EII1I4E4E4KLLL)#''q'//599!9;L;LMMMSWW!W__2EII1I4E4E4KLLL)#''r'*:*:EII2I<N<NOOOSWW"W--3UYYBY5G5G5MNNN)#''r'*:*:EII2I<N<NOOOSWW"W--3UYYBY5G5G5MNNN)#''v'*>*>		v	@V@VWWWSWW&W1179O9O9UVVVW W W W W W W W W W W W W W W W W Ws   NOO #O )rJ   r   r  r   randr   r   r   r  r"  r   )
r   dat_1dat_2dat_3dat_4dat_5r  r?   r  r?  s
   `        @r:   test_sumz_TestCommon.test_sum  s   
	t)))"

"

$ % % 	q!$$"""Aq$///77995%6	W 	W 	W 	W 	W 	W( ( 	  	 E3x==))    eQ 	  	 r<   c                    t          j        d          }t          g dg dg dg          }|                     |          }t	          t
          d          5  |                    d           d d d            n# 1 swxY w Y   t	          t
          d          5  |                    d	           d d d            n# 1 swxY w Y   t	          t          d
          5  |                    d           d d d            n# 1 swxY w Y   t	          t
          d          5  |                    d|           d d d            d S # 1 swxY w Y   d S Nr   r   r5  r6  r7  zaxis out of rangerk  r   rd  r   r   zaxis must be an integer      ?z&do.*n.t match.*shape|wrong.*dimensionsr   re  out)	rJ   r   r   r   r  r  r=  r  meanr   rM  r   r   s       r:   test_sum_invalid_paramsz#_TestCommon.test_sum_invalid_params  sS   hvYYYZZZZ! " " s##:-@AAA 	 	II1I	 	 	 	 	 	 	 	 	 	 	 	 	 	 	:-@AAA 	# 	#II6I"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#9,EFFF 	  	 II3I	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  :-UVVV 	( 	(JJA3J'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(sH   A;;A?A?B??CC DD
D$E		EEc                     t          g dg dg dg          |                               fd}| j        D ]} ||           d S )Nr5  r6  r7  c                                          |           }                     |           }t          ||           t          |j        |j                   d S Nr   )r=  r   r   r?   )r?   dat_sum	datsp_sumr   r   s      r:   r  z)_TestCommon.test_sum_dtype.<locals>.check,  sS    ggEg**G			..I%gy999	88888r<   r   r   r  r   r  r?   r   r   s      @@r:   test_sum_dtypez_TestCommon.test_sum_dtype&  s    YYYZZZZ! " " s##	9 	9 	9 	9 	9 	9 ( 	 	EE%LLLL	 	r<   c                 8   | j          }t          g dg dg dg          }|                     |          }| j         rt          d          nt          dgg          }| j         rt          d          nt          dgg          }|                    ||           |                    |           t          ||           | j         rt          j        d          nt          j        d          }| j         rt          j        d          n t          t          j        d                    }|                    d	||
           |                    d	|           t          ||           t          t          d          5  |                    t          dg                     d d d            n# 1 swxY w Y   t          t          d          5  |                    t          | j         rdggnd                     d d d            d S # 1 swxY w Y   d S )Nr5  r6  r7  r   rM  keepdimsrM  r   r   r   r   re  rM  r[  rL  zoutput parameterrk  )
r  r   r   r1   r=  r   rJ   r   r  r  r   keepr   r   dat_out	datsp_outs         r:   test_sum_outz_TestCommon.test_sum_out6  s   %%YYYZZZZ! " " s##"0B%(((eaSEll $ 2EE!HHHu	Gd+++		i	   !'9555$($6L"(4...BHV<L<L&*&8VBHTNNNfRXfEUEU>V>V	QGd333		qi	(((!'9555 :-?@@@ 	& 	&II%**I%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&:-?@@@ 	E 	EII%); B!CCIDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E$   %F22F69F6/HHHc                    t          g dg dg dg          }|                     |          }t          j        |          }t          j        |          }t	          ||           t          |j        |j                   d S Nr5  r6  r7  )r   r   rJ   r=  r   r   r?   )r   r   r   rT  rU  s        r:   test_numpy_sumz_TestCommon.test_numpy_sumQ  s    YYYZZZZ! " " s##&++F5MM	!'9555W]IO44444r<   c                 P   t          g dg dg dg          }|                     |          }t          |                                          sJ | j        rt
          nt          j        }t          |                    d          |          sJ t          |                    d          |          sJ t          |	                                          sJ t          |	                    d          |          sJ t          |	                    d          |          sJ d S Nr5  r6  r7  r   rd  r   )
r   r   r.   r=  r  r
   rJ   r1   rI   rN  )r   r   r   matrix_or_arrays       r:   test_sum_mean_container_typez(_TestCommon.test_sum_mean_container_type^  s   YYYZZZZ! " " s##EIIKK(((((%)%7F''RY%)))++_=====%)))++_=====EJJLL)))))%**!*,,o>>>>>%**!*,,o>>>>>>>r<   c                 P      j           fd} j        D ]} ||           d S )Nc                 |   t          g dg dg dg|           }                    ||           }t          |                                |                                           t	          |                                j        |                                j                   t          t          j        |                    d                                t          |                    d           |                    d                      t	          |                    d           j        |                    d           j                   t          |                    d          |                    d                     t	          |                    d          j        |                    d          j                   t          |                    d          |                    d                     t	          |                    d          j        |                    d          j                   t          |                    d	          |                    d	                     t	          |                    d	          j        |                    d	          j                   t          |                    d
          |                    d
                     t	          |                    d
          j        |                    d
          j                   t          |                    d          |                    d                     t	          |                    d          j        |                    d          j                   d S )Nr5  )r   r  r  )r   r  r  r   rd  re  r[  r   r   rE  r   r<  )	r   r   r   rN  r   r?   r   rJ   r>  )r?   r   r   ra  r   s      r:   r  z$_TestCommon.test_mean.<locals>.checko  s2   ""$+02 2 2C NN3eN44E%chhjj%**,,???)5::<<+=>>>BK


 5 566777%dT22EJJDJ4I4I   t,,2EJJDJ4I4I4OPPP%a$//1C1C   q))/1C1C1IJJJ%a$//1C1C   q))/1C1C1IJJJ%b400%**"*2E2E   r**0%**"*2E2E2KLLL%b400%**"*2E2E   r**0%**"*2E2E2KLLL%ft44ejjfj6M6M   v..4ejjfj6M6M6STTTTTr<   )r  r  )r   r  r?   ra  s   `  @r:   	test_meanz_TestCommon.test_meanm  sa    %% 	U  	U  	U  	U  	U  	UF ( 	 	EE%LLLL	 	r<   c                    |                      t          j        d                    }t          g dg dg dg          }|                     |          }t          t          d          5  |                    d           d d d            n# 1 swxY w Y   t          t          d          5  |                    d	           d d d            n# 1 swxY w Y   t          t          d
          5  |                    d           d d d            n# 1 swxY w Y   t          t          d          5  |                    d|           d d d            d S # 1 swxY w Y   d S rH  )	r  rJ   r   r   r   r  r  rN  r  rO  s       r:   test_mean_invalid_paramz#_TestCommon.test_mean_invalid_param  s_   ll28F++,,YYYZZZZ! " " s##:-@AAA 	 	JJAJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	:-@AAA 	$ 	$JJFJ###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$9,EFFF 	! 	!JJCJ   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! :-UVVV 	( 	(JJA3J'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(sH   +BBB/CCC3DDD7EE #E c                     t          g dg dg dg          |                               fd}| j        D ]} ||           d S )Nr5  r6  r7  c                                          |           }                     |           }t          ||           t          |j        |j                   d S rS  )rN  r   r   r?   )r?   dat_mean
datsp_meanr   r   s      r:   r  z*_TestCommon.test_mean_dtype.<locals>.check  sT    xxex,,H%00J%h
;;;)9:::::r<   rV  rW  s      @@r:   test_mean_dtypez_TestCommon.test_mean_dtype  s    YYYZZZZ! " " s##	; 	; 	; 	; 	; 	; ( 	 	EE%LLLL	 	r<   c                 8   | j          }t          g dg dg dg          }|                     |          }| j         rt          d          nt          dgg          }| j         rt          d          nt          dgg          }|                    ||           |                    |           t          ||           | j         rt          j        d          nt          j        d          }| j         rt          j        d          n t          t          j        d                    }|                    d	||
           |                    d	|           t          ||           t          t          d          5  |                    t          dg                     d d d            n# 1 swxY w Y   t          t          d          5  |                    t          | j         rdggnd                     d d d            d S # 1 swxY w Y   d S )Nr5  r6  r7  r   rZ  r\  r]  r^  r   r_  rL  z"output parameter.*wrong.*dimensionrk  )
r  r   r   r1   rN  r   rJ   r   r  r  r`  s         r:   test_mean_outz_TestCommon.test_mean_out  s   %%YYYZZZZ! " " s##"0B%(((eaSEll $ 2EE!HHHu	Wt,,,

y
!!!!'9555$($6L"(4...BHV<L<L&*&8VBHTNNNfRXfEUEU>V>V	aWt444

y
)))!'9555 :-QRRR 	' 	'JJ5!::J&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	':-QRRR 	F 	FJJ5$*<!C1#!DDJEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fre  c                    t          g dg dg dg          }|                     |          }t          j        |          }t          j        |          }t	          ||           t          |j        |j                   d S rg  )r   r   rJ   rN  r   r   r?   )r   r   r   ru  rv  s        r:   test_numpy_meanz_TestCommon.test_numpy_mean  s    YYYZZZZ! " " s##73<<WU^^
!(J777X^Z%566666r<   c                 ^   t          g dg dg dgt                    }|                     |dt                    }t          j                            |          }t          g dg dg dg          }|                     |dt                    }t          j                            |          }t          j                    5  t          j        d	d
t                     t          j        d	dt                     t          j        d	dt                     t          |          
                                }t          |          
                                }d d d            n# 1 swxY w Y   t          ||z
  t          d                     t          ||z
  t          d                     d S )Nr  r   r   r   r  r  r   r`  r   r?   )      @              ?)r         @r  )r  r  r  r(  &splu converted its input to CSC formatCspsolve is more efficient when sparse b is in the CSC matrix format.spsolve requires A be CSC or CSR matrix format)r   floatr   r   linalgr3   r)  r*  r
  r)   r   r   r   )	r   MsMMexpNsNNexpsMexpsNexps	            r:   	test_expmz_TestCommon.test_expm  s   999iii4e<<^^AU%^88|  ##<<<|||<==^^AU%^88|  ##$&& 	' 	'#8'  
 #U'  
 #@'  
 HH$$&&EHH$$&&E#	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'& 	"54<%--@@@!54<%--@@@@@s   BE""E&)E&c                 >      fd}t           fD ]} ||           d S )Nc                 D   t          g dg dg dg|           }t          j                    5  t          j        ddt                     t          j        ddt                     t          j        ddt                                         |d| 	          }t          |          }d d d            n# 1 swxY w Y   t          |                    |          	                                t          j        d
                     t          t          t          |           d S )Nr  r}  r~  r(  r  r  r  r`  r  r   )r   r)  r*  r
  r)   r   r4   r   r   r   rJ   r'   r  r  )r?   r  r  sMinvr   s       r:   r  z#_TestCommon.test_inv.<locals>.check  sU   yyy)))ZZZ8%@@A(**    'D+  
 '2+	   '<+  
 ^^AU%^@@B%                             & &eiimm&;&;&=&=rvayyIII)S!,,,,,s   A9B33B7:B7)r  r  s   `  r:   test_invz_TestCommon.test_inv  sH    	- 	- 	- 	- 	-. W 	 	EE%LLLL	 	r<   c                 `   t          j                    5  t          j        dt                     t	          g dg dg dg dg          }t          |                     |                                          |           t	          g dg dg dg          }t          |                     |                                          |           t          |                     |d	                                          |                    d                     d d d            d S # 1 swxY w Y   d S 
Nr(  ry  r  )r   r  r   rf  )r  r   r   )r         @r   r   r   )	r)  r*  r+  r   r   r   r   r   rt   r  s     r:   test_from_arrayz_TestCommon.test_from_array  s   $&& 
	N 
	N!(N;;;wwwwwwwwwwww788At~~a0088::A>>>'''& yy" # #A t~~a0088::A>>>q0088::188G;L;LN N N
	N 
	N 
	N 
	N 
	N 
	N 
	N 
	N 
	N 
	N 
	N 
	N 
	N 
	N 
	N 
	N 
	N 
	N   DD##D'*D'c                 x   t          j                    5  t          j        dt                     |                     g dg dg dg dg          }t          |                     |                                          |           |                     g dg dg dg          }t          |                     |                                          |           t          |                     |d	                                          |                    d                     d d d            d S # 1 swxY w Y   d S r  )	r)  r*  r+  r   r  r   r   todensert   r  s     r:   test_from_matrixz_TestCommon.test_from_matrix&  sr   $&& 	 	!(N;;;iiiIIIyyyIJJAt~~a0088::A>>>...-oo'ii) * *A t~~a0088::A>>>q0088::AHHW<M<M  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   DD//D36D3c                 `   t          j                    5  t          j        dt                     g dg dg dg dg}t	          |                     |                                          |           g dg dg dg}t	          |                     |                                          t          |                     t	          |                     |d	                                          t          |                              d                     d d d            d S # 1 swxY w Y   d S r  )	r)  r*  r+  r   r   r   r   r   rt   r  s     r:   test_from_listz_TestCommon.test_from_list4  sa   $&& 	 	!(N;;;1At~~a0088::A>>>!!! A t~~a0088::E!HHEEEq0088::E!HHOOG<T<T  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                 p   t          j                    5  t          j        dt                     t	          g dg dg dg dg          }|                     |          }t          |                     |                                          |           |                     |          }t          |                     |                                          |           t	          g dg dg dg          }|                     |          }t          |                     |                                          |           t          |                     |d	                                          |	                    d                     |                     |          }t          |                     |                                          |           t          |                     |d	                                          |	                    d                     d d d            d S # 1 swxY w Y   d S r  )
r)  r*  r+  r   r   r  r   r   r   rt   r   r  Ss      r:   test_from_sparsez_TestCommon.test_from_sparseB  sA   $&& 	2 	2!(N;;;wwwwwwwwwwww788A""1%%At~~a0088::A>>>q!!At~~a0088::A>>>'''& yy" # #A ""1%%At~~a0088::A>>>t~~aw~??GGII xx002 2 2q!!At~~a0088::A>>>t~~aw~??GGII xx002 2 2#	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   H
H++H/2H/c                    | j                                         }t          || j        rt          j        nt          j                  sJ t          || j                   t          |j
        j        |j
        j        k               | j                             d          }t          || j                   t          |j
        j                   t          |j
        j                    | j                             d          }t          || j                   t          |j
        j                    t          |j
        j                   t	          j        | j         j        | j         j                  }| j                             |          }t          | j        |           t          | j        |           t	          j        ||          sJ |                     t	          j        | j         j        | j         j                            }| j                             |          }t          | j        |           t          | j        |           t	          j        ||          sJ t%          g dg          }|| j        z  }|| j                                         z  }t          ||           t%          g dg          j        }| j        |z  }| j                                         |z  }t          ||           |                     | j        t*                    }| j                            t*                    }	t          |                                |	           d S )Nr   r  r  r   r\  r  r  r  r  r  r        @)r   r  rI   r  rJ   r
   r1   r   r   r   flagsc_contiguousf_contiguousr   r   r?   rP   r  r   r?  r   r  rt   )
r   chkrM  rN   dense_dot_denser  rS   check2spboolmatbools
             r:   test_todensez_TestCommon.test_todense[  s   j  ""#T-?NrzzRYOOOOO3)))	&#)*@@AAAj  s ++3)))	&'''CI**+++j  s ++3)))CI**+++	&'''htz'tz/?@@@j  S ))48S)))48S)))"3,,,,,ll28DJ$4DJ<LMMMNNj  S ))48S)))48S)))"3,,,,,:::,dh,DJ&&(((?E222===/""$(Q,##%%)?F33355(//$''6>>++W55555r<   c                 j   t          | j                  }| j                                        }t	          ||           t          |j        j        |j        j        k               | j                            d          }t	          ||           t          |j        j                   t          |j        j                    | j                            d          }t	          ||           t          |j        j                    t          |j        j                   t          j
        | j        j        | j        j                  }| j                            |           t	          ||           d|d<   | j                            |           t	          ||           t          g d          }t          ||          }t          || j                                                  }t	          ||           t          g d	          }t          ||          }t          | j                                        |          }t	          ||           |                     | j        t                     }	|                    t                     }
t	          |	                                |
           d S )
Nr   r  r  r   r\  r  .r  r  )r   r   r   r   r   r   r  r  r  rJ   r   r   r?   r   r   r   r  rt   )r   r   r  rM  rN   r  r  rS   r  r  arrbools              r:   test_toarrayz_TestCommon.test_toarray  sJ   dhj  ""3$$$	&#)*@@AAAj  s ++3$$$	&'''CI**+++j  s ++3$$$CI**+++	&'''htz'tz/?@@@
s###3$$$C
s###3$$$***a++Atz))++,,?E222---  c1++TZ''))1--?F33355**T""6>>++W55555r<   c                 d  	 t          j                    5  t          j        dt                     t	          g dg dg dg          }|                     |          }t          D ]0}|                    |          }dD ]o}|                    ||          t          j	        |j	                   t          
                                |           t          j        |j                   pt                              |d          u                                |d          	t          	u           	fd	}j        d
v rdD ]} ||           j        dk    rdD ]} ||           j        dk    rdD ]} ||           2	 d d d            d S # 1 swxY w Y   d S )Nr(  y       @      @r   r   r   y      @      @r   rf  )TFr  FTc                    t          |           }t          |           }t          ||           t          ||u           d|j        z  }||         }||          ||<   t          ||         ||         k               |||<   d S )N)r   )r{   r   r   r   )	attributerN   rS   r  b_iS_castedS_copieds        r:   (check_equal_but_not_same_array_attributezI_TestCommon.test_astype.<locals>.check_equal_but_not_same_array_attribute  s    )44A)44A&q!,,,AQJ'''qvAA$C t8AaDAaDAaDL)))AaDDDr<   r7  r6  r5  )indicesindptrdatarb  )rowcolr  r{  )offsetsr  )r)  r*  r+  r   r   r   r-   rt   r   r?   r   r   r   )
r   r  r  r@   D_castedr,  r  r  r  r  s
           @@r:   test_astypez_TestCommon.test_astype  s   $&& '	L '	L!(N;;;'''''' yy" # #A q!!A%  L  L88A;;) < <D xxx55H @@@ !1!1!3!3X>>> !(;;;;66(BCCC#??14?880111	 	 	 	 	 	 ?&;;;%B L L	@@KKKKL_--%; L L	@@KKKKL_--%8 L L	@@KKKKA L'	L '	L '	L '	L '	L '	L '	L '	L '	L '	L '	L '	L '	L '	L '	L '	L '	L '	Ls   FF%%F),F)c                 "   t          j                    5  t          j        dt                     t	          g dg dg dg          }|                     |          }t          |d          rd|j        j        _	        |j
        dv r"d|j        j        _	        d|j        j        _	        t          D ]F}|                    |          }|                    |          }t          |j        |j                   G	 d d d            d S # 1 swxY w Y   d S )Nr(  r  r  rf  r  Fr  )r)  r*  r+  r   r   r   hasattrr  r  	writeabler   r  r  r-   rt   r   r?   )r   r  r  r@   r  r  s         r:   test_astype_immutablez!_TestCommon.test_astype_immutable  sU   $&& 	= 	=!(N;;;'''''' yy" # #A q!!Aq&!! /).&x000+0(,1	)% = =88A;;88A;;X^X^<<<<=	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s   C"DDDc                 <      fd} j         D ]} ||           d S )Nc                     j         |          }j        |          }t          |dz  |dz                                             t          |dz  |dz                                             d S Nre   L1@r  r  r   r   r?   r   r   r   s      r:   r  z*_TestCommon.test_mul_scalar.<locals>.check  sj    /%(C%e,Es1uuQw&7&7&9&9:::s4x%*)=)=)?)?@@@@@r<   r  r  s   `  r:   test_mul_scalarz_TestCommon.test_mul_scalar  N    	A 	A 	A 	A 	A % 	 	EE%LLLL	 	r<   c                 <      fd} j         D ]} ||           d S )Nc                     j         |          }j        |          }t          d|z  d|z                                             t          d|z  d|z                                             d S r  r  r  s      r:   r  z+_TestCommon.test_rmul_scalar.<locals>.check  sj    /%(C%e,Equqw&7&7&9&9:::tCx$u*)=)=)?)?@@@@@r<   r  r  s   `  r:   test_rmul_scalarz_TestCommon.test_rmul_scalar  r  r<   c                     | j         t          j                 }t          t                    5  d |z   d d d            d S # 1 swxY w Y   d S r>   )r  rJ   r   r  r  )r   r   s     r:   test_rmul_scalar_type_errorz'_TestCommon.test_rmul_scalar_type_error  s    !"*-9%% 	 	5LL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ?AAc                 <      fd} j         D ]} ||           d S )Nc                    j         |          }j        |          }|                                }d|d<   |}||z   }t          ||                                |z              ||                                z   }t          |                                |                                |                                z              ||d         z   }t          ||                                |d         z              d S )Nr  r  r   )r  r  r,  r   r   r  r?   r   r   rN   rS   r  r   s         r:   r  z#_TestCommon.test_add.<locals>.check  s    /%(C%e,E

AAcFAAAq!))++/222AGGIIAqyy{{ yy{{QYY[[8: : : AaDAq!))++!"455555r<   r  r  s   `  r:   test_addz_TestCommon.test_add   sI    	6 	6 	6 	6 	6$ % 	 	EE%LLLL	 	r<   c                 <      fd} j         D ]} ||           d S )Nc                     j         |          }j        |          }|                                }d|d<   |}||z   }t          |||                                z              d S )Nr  r  )r  r  r,  r   r   r  s         r:   r  z$_TestCommon.test_radd.<locals>.check  sb    /%(C%e,E

AAcFAAAq!aiikk/22222r<   r  r  s   `  r:   	test_raddz_TestCommon.test_radd  sI    	3 	3 	3 	3 	3 % 	 	EE%LLLL	 	r<   c                 n      fd} j         D ]&}|t          j        d          k    r ||           'd S )Nc                    j         |          }j        |          }t          ||z
                                  t	          j        d                     t          |dz
                                  |                               t	          j        g dg dg dgd                    }t          ||z
                                  ||                                z
             t          ||z
                                  |                                |z
             t          ||d         z
  ||d         z
             d S )Nr  r   r   r   r   r  r   r   r   r   r   r  r   r  r  )r  r  r   r   rJ   r   r   r   r?   r   r   rQ   r   s       r:   r  z#_TestCommon.test_sub.<locals>.check%  s   /%(C%e,E6688"(6:J:JKKK	2244c:::,,,}}}EsKK A 	2244cAIIKK6GHHHE	2244aiikkC6GHHH us1v~sSV|<<<<<r<   r  r  rJ   r?   r  s   `  r:   test_subz_TestCommon.test_sub$  sa    	= 	= 	= 	= 	=  % 	 	E((((E%LLLL	 	r<   c                 n      fd} j         D ]&}|t          j        d          k    r ||           'd S )Nc                    j         |          }j        |          }t          ||z
  g dg dg dg           t          ||z
  g dg dg dg           t          d|z
                                  |                                g dg dg dgd          }t          ||z
  ||                                z
             t          ||z
  |                                |z
             t          |                                |z
  |                                |z
             t          ||                                z
  ||                                z
             t          |d         |z
  |d         |z
             d S )Nr  r   r  r  r  r  r   )r  r  r   r   r   r  s       r:   r  z$_TestCommon.test_rsub.<locals>.check=  sr   /%(C%e,Eeiii			)))-LMMMiii			)))-LMMME	2244sd;;;			***ZZZ@sKKAa#		*;<<<C!))++*;<<<qyy{{U2AIIKK#4EFFFuqyy{{2C!))++4EFFF s1v~s1v|<<<<<r<   r  r  r  s   `  r:   	test_rsubz_TestCommon.test_rsub<  sa    	= 	= 	= 	= 	=" % 	 	E((((E%LLLL	 	r<   c                 <      fd} j         D ]} ||           d S )Nc                 r   j         |          j        |          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 rW   rW   )r&  r  r   s     r:   
<listcomp>z8_TestCommon.test_add0.<locals>.check.<locals>.<listcomp>]  s    777aE	777r<   r   r   c                     g | ]}|z  S rW   rW   )r&  r  r   s     r:   r  z8_TestCommon.test_add0.<locals>.check.<locals>.<listcomp>^  s    555AC555r<   )r  r  r   r   r=  r"  r   )r?   sumSsumDr   r   r   s      @@r:   r  z$_TestCommon.test_add0.<locals>.checkV  s    /%(C%e,E 	2244c:::77775A;;77788D5555q!55566D55555r<   r  r  s   `  r:   	test_add0z_TestCommon.test_add0U  sI    		6 		6 		6 		6 		6 % 	 	EE%LLLL	 	r<   c                 Z   t          g dg dg          }t          g dg dg          }|                     |          }|                     |          }|j        dv r|j        nd}|                    |          j        |k    sJ t	          |                    |                                          ||z             t	          |                    |                                          ||z             t          g dg dg          }t          g d	g d
g          }|                     |          }|                     |          }	t	          |                    |	                                          ||z             t	          |                    |                                          ||z             t	          |                    |	                                          ||z             t	          |                    |                                          ||z             d S )N)r  r   r  )re   r  r  )r   r  r   )r   r  r   )r6  r{  r5  r7  y      ?       y              @y              y      @      y            @r  y      @       @y      @      y             ?y              y             @r  )r   r   r   multiplyr   r   )
r   rQ   rR   r,  Bspout_fmtr   r  CspDsps
             r:   test_elementwise_multiplyz%_TestCommon.test_elementwise_multiplyd  s   777888$%%777888$%%nnQnnQ #
.C C C#**S!!)W4444CLL--55771===CLLOO3355qs;;; $$$^^^455$$$^^^455nnQnnQCLL--55771===CLLOO3355qs;;; 	CLL--55771===CLLOO3355qs;;;;;r<   c                    t          dg          }t          dgg          }t          g d          }t          g dg          }t          dgdgdgg          }t          g dg d	g d
g          }g d}t          j        d          }|j        }	t          dgg          }
t          ddgddggg          }|                     |          }|                     |          }|                     |          }|                     |          }|                     |          }|                     |d                   }|                     |	          }|                     |	d d dd f                   }|                     |
          }|||||||||	|
|g}|||||||||g	}|D ]}|D ]}	 |                                |                                z  }n+# t          $ r t          t          |j        |           Y Tw xY w|                    |          }t          |                                |           |D ]}|D ]}	 |                                |z  }n6# t          $ r Y 't          $ r t          t          |j        |           Y Mw xY w	 |                    |          }n# t          $ r Y tw xY wt          |          r#t          |                                |           t          ||           d S )Nr  r   r   r   )r  r  r  r   re   r   )r  r   r   )r  r   re   )r   r   r   r  r  r   r   N)r   rJ   onesr?  r   r   r  r  r  r   r  r(   )r   rQ   rR   r   r  Er  GHJKLr  r  EspFspHspHsppJspJsppKspr?  
spmatricesr  r  
dense_multsp_mults                              r:   #test_elementwise_multiply_broadcastz/_TestCommon.test_elementwise_multiply_broadcast|  sV   1#JJB4&MM(((OO888*A3sA3-  777888GGG,--IIGFOOCA3%LLQqE1Q%=/"" nnQnnQnnQnnQnnQ~~ai((nnQ~~a!Dk**nnQq!Q1aAq!43S#tS$D
  	C 	CA C C!"qyy{{!:JJ!   !*aj!<<<H **Q--#GOO$5$5zBBBBC  	= 	=A = =!"qJJ    H!   !*aj!<<<HjjmmGG!   HG$$ ='(9(9:FFFF'<<<<=	= 	=s<   ')G%G98G9>I
J	"$J	J	J##
J0/J0c           	         dt           j        t           j        dgdt           j        dt           j        gt           j        dt           j        t           j        gg}t          t          | j        | j        z            |           |                     g dg dg dgd          }dt           j        t           j        dgdt           j        t          t           j        gt           j        d	t           j        d
gg}t          t          | j        |z            |           t          g dg dg          }t          g dg dg          }|                     |          }|                     |          }t          t          ||z            ||z             t          g dg dg          }t          g dg dg          }|                     |          }|                     |          }t          j	        d          5  t          t          ||z            ||z             d d d            n# 1 swxY w Y   t          d
dgdd
gg          }t          dd
gdd
gg          }|                     |          }|                     |          }t          j	        dd          5  t          t          j        t          ||z                      ||z             d d d            d S # 1 swxY w Y   d S )Nr   r  r  r  r  r         ?r  g      ?r   r  r  r  r  r  )r  re   r   r5  )r   rE  r   r(  )divide)r  rG  )
rJ   r-  r   r   r   r   r   r   r   rJ  )r   rq  denomrQ   rR   r,  r  s          r:   test_elementwise_dividez#_TestCommon.test_elementwise_divide  sI   rvbfQ'rva'VAbfRV,. 	74:
#:;;XFFF			***ZZZ@sKKrvbfS)s26*VD*, 	74:#566AAA $$$^^^455$$$^^^455nnQnnQGC#I..!444 777888$%%777888$%%nnQnnQ[))) 	: 	:wsSy111q5999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: Aa5!A-  Aa5!A-  nnQnnQ[(;;; 	D 	Drxc	(:(:;;QUCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds$   9$H))H-0H-6K!!K%(K%c                    t          g dg dg dg dg          }|                     |          }| j        rdD ]H}||z  }||z  }t          |                                |           t          |j        |j                   It          t          |j	        d           t          t          |j	        d           |                     |d dd d f                   }t          |d	z                                  |                                           d S d
D ]c}||z  }t          j                            ||          }t          |                                |           t          |j        |j                   ddD ]}t          t          |j	        |           |                     |d dd d f                   }t          t          |j	        d	           d S )Nr   r   re   r   )r   r   r  r   )r   r  r   r   )r   r   r  r  )r   re   皙@r   r  r   r   r   r   r   r   re   r   )r   r  r  )r   r   r  r   r   r   r?   r  rm  __pow__r  rJ   r  matrix_powerr  )r   rQ   rR   exponentret_spret_nps         r:   test_powz_TestCommon.test_pow  s   <<<|||\\\JKKNN1 	30 9 9HH"6>>#3#3V<<<V\6<8888 -qy!<<<*ai444 q!AAAw''A!Q$))199;;77777% 9 9H//8<<"6>>#3#3V<<<V\6<8888 . ? ?j!)X>>>> q!AAAw''A)QY22222r<   c                 *   |                      g dg dg dg dg          }t          g d|z  t          g d|                                                     t	          g dg          }t          ||z  ||                                z             d S )Nr   r   r   r   r   r   re   r   r  re   r   r   r  )r   r   r   r   r   )r   r  r  s      r:   test_rmatvecz_TestCommon.test_rmatvec  s    NNGGGGGGIIIggg>??!)))a-YYY		1L1LMMMYYYK  !#'3+<=====r<   c                    |                      dgdgdgg          }t          t          |t          d          z                       t	          |t          d          z                                  dgdgdgg           t	          |t          dg          z  t          g d                     t	          |t          dgg          z  t          dgdgdgg                     t	          |t          j        d          z  t          dgdgdgg                     t	          |t          j        d          z  t          j        d                     d S )Nr   re   r   r  r   r   r   r   r   r   )r   r   r(   r   r   r   rJ   r  r  s     r:   test_small_multiplicationz%_TestCommon.test_small_multiplication   s(   NNQCQC=))U1XX&&'''a%((l++--aS1#???Qs^U999%5%5666Qu%uqcA3_'='=>>>Q(%!qcA3*@*@AAAQ("'&//:::::r<   c                    t          j        dgdgdgg          }|                     |          }| j        rmt	          |t          j        d          z                                  |           t	          |t          dgg          z                                  |           d S t          |t          dg          z  t          g d                     t          |t          dgg          z  t          dgdgdgg                     t          |t          j        d          z  t          j        d                     d S )Nr   re   r   r^  r  r*  r+  )rJ   r   r   r  r   r  r   r   )r   rQ   r,  s      r:   -test_star_vs_at_sign_for_sparray_and_spmatrixz9_TestCommon.test_star_vs_at_sign_for_sparray_and_spmatrix  s   HqcA3_%%nnQ 	A%sRWV__'<&E&E&G&GKKK%sUQC5\\'9&B&B&D&DaHHHHHuaSzz)5+;+;<<<uqcU||+UQC!qc?-C-CDDDrwv.@@@@@r<   c                    |                      dgdgdgg          }t                      }t          ||z   d           t          ||z
  d           t          ||z  d           t          ||z   d           t          ||z
  d           t          ||z  d           t          ||z  d           t          ||z  d           d S )Nr   re   r   r   r   )r   r   r   r   rQ   rR   s      r:   test_binop_custom_typez"_TestCommon.test_binop_custom_type  s    
 NNQC!qc?++MMQU0111QU0111QU0111QU1222QU1222QU1222QU0111QU122222r<   c                    |                      dgdgdgg          }t          d          }t          ||z   d           t          ||z
  d           t          ||z  d           t          ||z   d           t          ||z
  d           t          ||z  d           t          ||z  d           t          ||z  d           d S )Nr   re   r   r^  r   r   )r   r   r   r0  s      r:   !test_binop_custom_type_with_shapez-_TestCommon.test_binop_custom_type_with_shape*  s    NNQC!qc?++"5))QU0111QU0111QU0111QU1222QU1222QU1222QU0111QU122222r<   c                      G d d          }d}|                      dgdgdgg          } ||          }||z  }||z  }t          |                                |                                           t          |j        |j                   d S )Nc                       e Zd Zd Zd ZdS )0_TestCommon.test_mul_custom_type.<locals>.Customc                     || _         d S r>   scalar)r   r9  s     r:   r   z9_TestCommon.test_mul_custom_type.<locals>.Custom.__init__9  s    $r<   c                     || j         z  S r>   r8  r   s     r:   r   z9_TestCommon.test_mul_custom_type.<locals>.Custom.__rmul__<  s    t{**r<   N)r   r   r   r   r   rW   r<   r:   Customr6  8  s2        % % %+ + + + +r<   r;  re   r   r   )r   rC   r   r   r   )r   r;  r9  rQ   r  A_scalarA_cs          r:   test_mul_custom_typez _TestCommon.test_mul_custom_type7  s    	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ NNQCQC=))F6NNv:!e !1!1!3!3S[[]]CCCX_cj11111r<   c                 H   |                      dgdgdgg          }t                      }t          ||k    d           t          ||k    d           t          ||k    d           t          ||k    d           t          ||k     d           t          ||k    d	           d S )
Nr   re   r   r   r   r   r   r   r   )r   r   r   r0  s      r:   test_comparisons_custom_typez(_TestCommon.test_comparisons_custom_typeG  s    NNQC!qc?++Q!VT"""Q!VT"""QUD!!!Q!VT"""QUD!!!Q!VT"""""r<   c           	         |                      t          g dg dg dg dg                    }d}|                    |          }||z  }t          |                                |                                           d S )Nr#  r$  r%  r&  rV   )r   r   r   r   r   )r   r  r9  actualrq  s        r:   test_dot_scalarz_TestCommon.test_dot_scalarQ  s}    NN5'''''')))GGG!DEEFFvv:(((*:*:*<*<=====r<   c           	      @   |                      t          g dg dg dg dg                    }|                      t          ddgddgddggd                    }t          g d	g          j        }t          j        }t           |||          |                                |z             t           |||                                          ||z                                             t           ||                                |          ||z                                             t           |||                                          ||z                                             t          t          ||d           t          t          |d|           d S )
Nr#  r$  r%  r&  r   r   re   r  r  )	r   r   r?  operatormatmulr   r   r  r  )r   r  rR   r  rF  s        r:   test_matmulz_TestCommon.test_matmulY  sp   NN5'''''')))GGG!DEEFFNN51Q%1qe!4S99::WWWI !&&C..!))++2CDDD 	"&&A,,"6"6"8"81q5//:K:KLLL!&&a"8"81q5//:K:KLLL!&&AIIKK"8"81q5//:K:KLLL 	j&!Q///j&!Q/////r<   c           
         |                      g dg dg dg dg          }t          g dg          j        }t          ||z  |                                |z             t          |t          g d          z  j        d           t          |t          dgdgd	gg          z  j        d
           t          |t          dgdgd	gg          z  j        d
           t          t          |t          g d          z  t                               | j        rt          nt          j        }t          t          |t          g d          j        z  |                     t          ddg          t          g d          t          dgdgg          t          g d          t          dgdgg          g}|D ]}t          t          |j        |           t!          |t          g d          z  t#          |                                g d                     t!          |dgdgd	ggz  t          j        t#          |                                g d                    j                   d S )Nr#  r$  r%  r&  r  )r  r   re   r   )r  r   r  )r   r   r?  r   r   r   r   r1   r   rI   r
   r  rJ   r  r  r   r   r   
atleast_2d)r   r  r  rk  bad_vecsr@   s         r:   test_matvecz_TestCommon.test_matveck  s@   NNGGGGGGIIIggg>??WWWI !!c'199;;+<=== 	a%..(/555a%!aS!...5e<<<a&1#qc1#///6u=== 	
1uWWW~~-w77888%)%7F''RY
1vggg00/BBCCC 1Q%LL%			"2"2EA3s)4D4D777OOVaS!I%6%68 	7 	7A*alA6666 	AeGGGnn,c!))++ggg.F.FGGGAsA3smOR]3qyy{{777;S;S-T-T-VWWWWWr<   c                    t          g dg dg dg dg          }t          g dg dg dg dg          }t          ddgddgddggd          }|                     |          }|                     |          }t          ||z                                  ||z             t          ||z  ||z             t          ||z  ||z             t          ||z  ||z             |                                }|}||z  }t          ||z                                  |           t          ||z  |           t          ||z  |           t          ||z  |           |                                }t          ||z                                  |           t          ||z  |           t          ||z  |           t          ||z  |           |                                }t          ||z                                  |           t          ||z  |           t          ||z  |           t          ||z  |           d	}	d
}
t          j	        d           t          |	df          }t          |	          D ]7}t          d          D ]%}t          j                    }||
k     r
||
z  |||f<   &8|                     |          }||j        z  }t          |                                |                                |j                                        z             t          |                                |                                |                                j        z             |                     ddgddgg          }|                     ddgddgddgg          }t          t          |j        |           | j        rt          t          |j        |           d S d S )Nr#  r$  r%  r&  r   r   re   r  r  g333333?r   r  r  r   )r1   r   r   r   r   r  r  r  r   r  r   r"  r?  r  r  r   r  r   )r   rN   a2rS   aspbspcspr  wantr  fracrQ   r  r  r  rR   s                   r:   test_matmat_sparsez_TestCommon.test_matmat_sparse  s   GGGGGGIIIggg677GGGGGGIIIggg677QqE1Q%1&s++nnQnnQ!39"5"5"7"7Q???!#'1q5111!!c'1q5111!"s(AE222 iikk1u!39"5"5"7"7>>>!#'4000!!c'4000!"s(D111iikk!39"5"5"7"7>>>!#'4000!!c'4000!"s(D111iikk!39"5"5"7"7>>>!#'4000!!c'4000!"s(D111 A1Q%LLq 	$ 	$A1XX $ $MOOt88tVAacF$
 NN1G!!))++qyy{{QS[[]]/JKKK!!))++qyy{{QYY[[]/JKKK NNQqE1Q%=))NNQqE1Q%1.//j!,222 	4*ai33333	4 	4r<   c           	         g dg dg dg dg}|                      |          }t          ddgddgd	d
gg          t          ddgddgd	d
gg          g}|D ]r}||z  }t          t	          || j        rt          nt          |                               t          |j	        d           t          |t          ||                     sd S )Nr#  r$  r%  r&  r   re   r   r  r  r   r  re   )r   r   r1   r   rI   r  r
   typer   r   r   )r   rN   rN  bsrS   results         r:   test_matmat_densez_TestCommon.test_matmat_dense  s    WWWWWYYYwww/nnQ aUAa5!A'((&1Q%1qe1D*E*EF 	+ 	+A1WFJv$2D'Qww$q''RRSSSu---Qq****		+ 	+r<   c                    t          j        g dg dg dgddgddgg          }|                                }|                     |          }dD ]}|                    |          }t          |j        |           t          |                                |           |                     |d	z                                 |          }t          |j        |           t          |                                |d	z              |                     |                              |          }t          |j        |           t          |                                |           d
D ]e}|                    |          }t          ||           |                     |d	z                                 |          }t          ||d	z              fd S )Nr  r   r   r  )r  r   r   r   re   r   r   )r5  rb  r6  r7  r{  rD   rc                @)r   dense)r   r   r   r   asformatr   r   r   )r   rQ   r  r   rN   rS   r  s          r:   test_sparse_format_conversionsz*_TestCommon.test_sparse_format_conversions  s   K1QqE1Q%=AAIIKKNN1A 	/ 	/F

6""A&)))qyy{{A...qt$$--f55A&)))qyy{{AbD111q!!**622A&)))qyy{{A....( 	( 	(F

6""Aq!$$$qt$$--f55Aq!B$''''	( 	(r<   c           	      J   t          g dg dg dg          }t          g dg dg          }t          ||          }|                     |          }dD ]M}t          |d|z             }dD ]5}d	D ]0}t	           |||f
                                          |           16Nd S )Nr  r  r   r   r  r  r5  r   r   r  )r5  to)r   re   r   r   )r   re   r   r  r   r  	blocksize)r   r   r   r{   r   r   )	r   r@   rA   rQ   r,  r   fnXYs	            r:   
test_tobsrz_TestCommon.test_tobsr  s    999YYYyyy122777777#$$1IInnQ 	D 	DFdVm,,B! D D, D DA q!f!5!5!5!=!=!?!?CCCCDD	D 	Dr<   c                 0     j         }t          j        g g          }||g fd}                     d          }t	          t          j        |                                          t          j        t          d                               t	          |j                                        t          d                     t          t          |j        d            j        D ]-}t          t                              D ]} |||           .d S )Nc                    t          |         |           }                    |          }|                                }|                                }t          |                                |           t          |                                                                |           t          |                    d                                          |           t          |j        |j                   d S )Nr   r*  ro  )r   r   r   r   r   r   r?   )r?   r  r   r   rN   rS   r?  r   s         r:   r  z)_TestCommon.test_transpose.<locals>.check  s    5111CNN3''E!!AAqyy{{A...q{{}}4466<<<uF;;CCEEqIII!'*****r<   r  r  r   r   rl  )r   rJ   r   r   r   r   r   r   r?  r  r  r  r"  r   )r   rA  rB  r  r  r?   r  r?  s   `      @r:   test_transposez_TestCommon.test_transpose  s   "5>
	+ 
	+ 
	+ 
	+ 
	+ 
	+ v&&2<..6688<f66	8 	8 	857??,,eFmm<<<j%/::::( 	  	 E3x==))    eQ 	  	 r<   c                 <      fd} j         D ]} ||           d S )Nc                     j         |          }j        |          }||z   }t          |||z              ||z   }t          |||z              d S r>   )r  r  r   r?   r   r   sum1sum2r   s        r:   r  z)_TestCommon.test_add_dense.<locals>.check  s^    /%(C%e,E ;DtS3Y///3;DtS3Y/////r<   r  r  s   `  r:   test_add_densez_TestCommon.test_add_dense  sI    	0 	0 	0 	0 	0 % 	 	EE%LLLL	 	r<   c                 n      fd} j         D ]&}|t          j        d          k    r ||           'd S )Nc                 8   j         |          }j        |          }|j        t          k    r2||z
  }t	          |||z
             ||z
  }t	          |||z
             d S ||z   |z   |z
  }t	          |||z              ||z   |z   |z
  }t	          |||z              d S r>   )r  r  r?   r  r   rq  s        r:   r  z)_TestCommon.test_sub_dense.<locals>.check   s    /%(C%e,E yD  U{"4s333s{"4s33333 c	C50"4s333-4"4s33333r<   r  r  r  s   `  r:   test_sub_densez_TestCommon.test_sub_dense  sa    	4 	4 	4 	4 	4$ % 	 	E((((E%LLLL	 	r<   c           	          t          j        g dg dg dg          t          j        g dg dg dg          t          j        g dg dg dg           fd	} j        D ]^}t           j        t           j        t           j        fD ]8}d
D ]3} |t          j        |          t          j        |          |           49_d S )N)r   r   r   )r   r  r  rf  )r   r   re   )r   r   r   r  )r   y      @       @r  )r                 ?y             c                    t          j        | t           j                  r)                    
                    |                     }n(                    	                    |                     }|dk    r|                    d          }nu|dk    r|                    d          }nY|dk    r                    |          }n=|dk    r)                                        |                    }nt                      t          j                    5  t          j	        ddt                     |                    |          }|                    |          }d d d            n# 1 swxY w Y   t          j        t          |          t          |                    }t          t          |          |           t          |j        |j                   t          j        t          |          t          |                    }t          t          |          |           t          |j        |j                   d S )	Nr9  r   scalar2r   r]  r   r(  zTTaking (maximum|minimum) with a (positive|negative) number results in a dense matrix)rJ   rl   complexfloatingr   rt   rV  r  r)  r*  r
  r)   maximumminimumr   r   r   r?   )r?   dtype2btyperQ   rR   max_smin_smax_dmin_dA_denseA_dense_cpxB_denser   s            r:   r  z/_TestCommon.test_maximum_minimum.<locals>.check?  s   }UB$677 :NN;#5#5e#<#<==NN7>>%#8#899  KKNN)##KKOO'!!NN6**(""NN7>>&#9#9:: ll"(** 	% 	%'0+	   		!		!	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% Jwqzz71::66Ewu~~u555ek222Jwqzz71::66Ewu~~u555ek22222s   AE((E,/E,)r9  r{  r]  r   )rJ   r   r  r   r   r   r?   )r   r  r?   r  r  r  r  r  s   `    @@@r:   test_maximum_minimumz _TestCommon.test_maximum_minimum9  s   (IIIyyy)))<==(IIIyyy***=>>h			<<<FGG!	3 !	3 !	3 !	3 !	3 !	3 !	3 !	3F % 	D 	DE7BJ> D DE D DEE"(5//28F+;+;UCCCCDD	D 	Dr<   c                    | j         }t          |                                j        |j                   t          |                    |d          j        |j                   t          |                    |d          j        |j                   t          |                                                                |                                           t          |                    |d                                          |                                           t          |                    |d                                          |                                           t          |d|j        z             }t           |            |u            t           |d          |u            t           |d          j        |j                   t           |d                                          |                                           t          t          |                                |                      d S )NTr  Frc  )	r   r   r,  r   	__class__r   r{   r   rT   )r   rQ   toselfs      r:   	test_copyz_TestCommon.test_copyg  s   J 	QVVXX_ah///Q[[[--4ah???Q[[[..5qx@@@QVVXX%%''555Q[[[..6688!))++FFFQ[[[//7799199;;GGG 4!(?++AE"""a'(((VV&&&-qx888VV&&&..00!))++>>> 	+AFFHHa88899999r<   c                    |                      t          j        d                              dd                    }|                     |          }t          ||          D ]'\  }}t          |                                |           (d S )Nr  r  rV   )r  rJ   r   r   r   zipr   r   )r   rR   rQ   r@   rA   s        r:   test_iteratorz_TestCommon.test_iterator  s|    LL2..q"5566NN11II 	) 	)DAqa((((	) 	)r<   c                    t          g           }|                    d          }|                    d          }|                    d          }|                    d          }|                    d          }t          j        ddg          }|                     |          }|                     |          }	|                     |          }
|                     |          }|                     |          }|                     |          }t          |                    |                                          t          j        ||                     t          |	                    |                                          t          j        ||                     t          |                    |	                                          t          j        ||                     t          |
                    |                                          t          j        ||                     t          |
                    |                                          t          j        ||                     t          |                    |
                                          t          j        ||                     t          |                    |
                                          t          j        ||                     t          |                    |                                          t          j        ||                     t          t          |j        |           t          t          |j        |           t          |
                    |                                          t          j
        ||                     t          |	
                    |	                                          t          j
        ||                     t          |
                    |                                          t          j
        ||                     t          |
                    |                                          t          j
        ||                     t          |	
                    |                                          t          j
        ||                     t          |
                    |                                          t          j
        ||                     t          |
                    d                                          t          j
        |d                     t          |	
                    d                                          t          j
        |d                     t          |
                    d                                          t          j
        |d                     t          t          |j
        |           t          t          |j
        |           t          |                    |                                          |                    |                     t          |	                    |	                                          |                    |                     t          |                    |                                          |                    |                     t          t          |j        |           t          t          |	j        |           d S )Nr  r<  r  r*  r  r  r   )r   r   rJ   r  r   r   r   r   r  r  r  r   )r   r   rN   rS   r  r  r  r  rN  rO  rP  dspespfsps                 r:    test_size_zero_matrix_arithmeticz,_TestCommon.test_size_zero_matrix_arithmetic  sC    BiiKKKKKKKKKKGQFOOnnQnnQnnQnnQnnQnnQ 	3773<<//1126!Q<<@@@3773<<//1126!Q<<@@@3773<<//1126!Q<<@@@3773<<//1126!Q<<@@@3773<<//1126!Q<<@@@3773<<//1126!Q<<@@@3773<<//1126!Q<<@@@3773<<//1126!Q<<@@@ 	j#'1---j#'1--- 	3<<,,4466Aq8I8IJJJ3<<,,4466Aq8I8IJJJ3<<,,4466Aq8I8IJJJ3<<??2244bk!Q6G6GHHH3<<??2244bk!Q6G6GHHH3<<??2244bk!Q6G6GHHH3<<??2244bk!Q6G6GHHH3<<??2244bk!Q6G6GHHH3<<??2244bk!Q6G6GHHH 	j#,222j#,222 	3;;s++3355qyy||DDD3;;s++3355qyy||DDD3;;s++3355qyy||DDD 	j#+s333j#+s33333r<   c                 P   t          g           }|                    d          }|                    d          }|                    d          }|||fD ]P}|                     |          }t          |                                                                |           t          |                                                                |           t          |                                                                |           t          |                                                                |           t          |	                                                                |           t          |
                                                                |           Rd S )Nr  r  r  )r   r   r   r   r  r   r  r  toliltodoktobsr)r   r   rN   rS   r  r  spms          r:   test_size_zero_conversionsz&_TestCommon.test_size_zero_conversions  sK   BiiKKKKKKQ 	9 	9A..##Csyy{{2244a888syy{{2244a888syy{{2244a888syy{{2244a888syy{{2244a888syy{{2244a8888	9 	9r<   c                    t          j        g dg dgt           j                  }t          t          d          5  |                     |           d d d            n# 1 swxY w Y   |                     |                    t           j                            }t          t          d          5  |                     |t           j                   d d d            d S # 1 swxY w Y   d S )N)g      @r   g?rf  r   zdoes not support dtyperk  )rJ   r   float16r  r  r   rt   r   )r   rN   A32s      r:   test_dtype_checkz_TestCommon.test_dtype_check  sQ   HmmmYYY/rzBBB:-EFFF 	 	NN1	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 nnQXXbj1122:-EFFF 	2 	2NN3bjN111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s#   AA#&A#2"C!!C%(C%c                 2     dd l  fd} |             d S )Nr   c                     t          j                    5  t          j        dt                     j                                        } t          j                  D ][}                    	                    | |                    }t          | j        |j                   t          |                                 |                                           t          | j        |j                   | j                                        D ]\  }}t#          |t$          j                  rt          ||j        |                    ;t#          |t(                    r>|r<t#          |d         t$          j                  rt          ||j        |                    t+          ||j        |         k               ]	 d d d            d S # 1 swxY w Y   d S )Nr(  )protocolr   )r)  r*  r+  r)   r   r,  r"  HIGHEST_PROTOCOLloadsdumpsr   r   r   r   r   rG   itemsrI   rJ   r
   r$  r   )r   r  sploadedkeyrN  pickler   s        r:   r  z&_TestCommon.test_pickle.<locals>.check  s   (** C C%h0GHHH
)) %f&= > > C CH%||FLLL,R,RSSH hn===&u}}8H8H8J8JKKK x??? %*N$8$8$:$: C CS%c2:66 C.sH4Ec4JKKKK(e44 C C",SVRZ"@"@C.sH4Ec4JKKKK#C8+<S+A$ABBBBCCC C C C C C C C C C C C C C C C C Cs   F%GGG)r  )r   r  r  s   ` @r:   test_picklez_TestCommon.test_pickle  sB    	C 	C 	C 	C 	C 	C, 	r<   c                 2      fd}dD ]} ||           d S )Nc                    | dk    rt          j        d           j        j        dv rt          j        d           t	          t
          |           }                    t          j        d                              dd          dz            } ||	                                          } ||          }t          |	                                |           d S )	Nsignz2sign conflicts with comparison op support on Numpy)rD   rc  z%Unary ops not implemented for dok/lilr  r  r        4@)r  r  r   r   r{   rJ   r   r   r   r   r   )r   ufuncrg  X0X2r   s        r:   r  z5_TestCommon.test_unary_ufunc_overrides.<locals>.check  s    v~~ / 0 0 0z N22CDDDB%%Ery}}44Q::S@AAAqyy{{##BqBrzz||R00000r<   )sintanarcsinarctansinhtanharcsinharctanhrintr  expm1log1pdeg2radrad2degfloorceiltruncsqrtr  rW   )r   r  r   s   `  r:   test_unary_ufunc_overridesz&_TestCommon.test_unary_ufunc_overrides  sH    	1 	1 	1 	1 	1 	 	D E$KKKK		 	r<   c                 `   t          j        g dg dg dg          }|                     |          }t          |                    d          d u            t          |                                ddgddgddgg           |                    d	           t          |                                ddgddgg           |                    d           t          |                                ddgddgddgg           |                    d
           t          |                                g dg dg dg           |                    d
           t          |                                g dg dg dg           |                    dd           t          |                                ddgddgddgg           | j        r|j        dv r|                    d           n(t          t          t          t          f|j        d           dD ]}t          t          |j        |           d S )Nr   r   r   r  re   r   r   r   r   r   r   r   r   re   r   r   re   r   re   re   r`  ry  )re   r   r   rf  )rb  r7  ))r   re   r  r  )rJ   r   r   r   resizer   r   r  r   r  r  rm  
IndexError)r   r  r  	bad_shapes       r:   test_resizez_TestCommon.test_resize	  sn   Hlll"ll"ll$ % % NN1  D()))199;;!Q*+Q*+Q)1 	2 	2 	2 	
199;;!Q*+Q)1 	2 	2 	2	199;;!Q*+Q*+Q)1 	2 	2 	2 	
199;;)2)2)4 	5 	5 	5 	
199;;)2)2)4 	5 	5 	5
 	
A199;;!Q*+Q*+Q)1 	2 	2 	2  	V!(n"<"<HHQKKKK:':JGSTUUU6 	; 	;I*ah	::::	; 	;r<   c                    | j         }|j        }|                    |d          }t          |                                |                                           |t
          vrt          t          ||                     |                    ||j        d          }t          |                                |                                           |t
          vrt          t          ||                     |                    |t          j
        d          }t          |                                |                                           |                    |d          }t          |                                |                                           t          t          ||                      dD ]}||k    r	|                    |          }|                    |d          }t          |                                |                                           |                    |d          }t          |                                |                                           t          t          ||                      d S )NFr  )r?   r,  T)r7  r6  rb  r{  rD   rc  )r   r   r  rC   r   NON_ARRAY_BACKED_FORMATSr   rT   r?   rJ   r   r   r^  )r   rQ   self_formatr   other_formatrR   s         r:   test_constructor1_basez"_TestCommon.test_constructor1_base0	  s   JhKKK&& aiikk:::666+Aq11222KKuK55 aiikk:::666+Aq11222KK%K88199;;		444KKK%% aiikk:::+Aq111222F 		7 		7L{**

<((AAE**A$QYY[[!))++>>>AD))A$QYY[[!))++>>>/15556666		7 		7r<   N)tr   r   r   r   r-   r  r&   r   r#   r  r    r  r!   r  r%   r  r"   r  r$   r  r   r  classmethodr  r   r$  r:  r=  r@  rP  rS  rZ  r^  ri  rr  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  markslowr  r  r/  r3  rF  rP  rX  rd  rh  rl  rp  rr  rw  ry  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.  r1  r3  r>  r@  rC  rG  rK  rS  rY  r_  ri  rn  rt  rw  r  r  r  r  r  r  r  r  r  r  rW   r<   r:   r
  r
  1  s       @@"KMMMMMMMG; ; [;.  	1 	1 	1" " "H# # #J4 4 4; ; ;z: : :x6 6 6p6 6 6pY Y Y1 1 1; ; ;
' ' '7 7 7(& & &(7 7 7$? ? ?J J JG G GF F F/ / /
/ / /
G G GB? ? ?-= -= -=^ [40 40 40lA A A<# # ## # #!  !  ! F( ( ("   E E E65 5 5? ? ?& & &P( ( ("   F F F67 7 7A A A>  6N N N    2 2 22'6 '6 '6R#6 #6 #6J(L (L (LT= = ="	 	 		 	 	  
  ,    0  2  < < <08= 8= 8=t!D !D !DF3 3 3B> > >
; 
; 
;A A A3 3 3"3 3 32 2 2 # # #> > >0 0 0$X X X>64 64 64p+ + +( ( (2
D 
D 
D     8    6,D ,D ,D\: : :0) ) )84 84 84t9 9 92 2 2  4  *'; '; ';R7 7 7 7 7r<   r
  c                   &    e Zd Zd Zd Zd Zd ZdS )_TestInplaceArithmeticc                 h   t          j        d          }|                     |          }|                                }|                                }||z  }||z  }t	          ||           |                                }|                                }||z  }||z  }t	          ||           | j        r|                                }|                                }t          t          d          5  ||j        z  }d d d            n# 1 swxY w Y   ||z  }||z  }t	          ||	                                           n|                                }|                                }t          t          d          5  ||z  }d d d            n# 1 swxY w Y   |
                    |j                  }||j        z  }t	          ||           |                                }||j        z  }|                                }|                                }t          t          d          5  ||z  }d d d            n# 1 swxY w Y   |
                    |j                  }||j        z  }t	          ||           t          t          d          5  ||z  }d d d            d S # 1 swxY w Y   d S )Nr  inconsistent shapesrk  zdimension mismatchunsupported operand)rJ   r  r   r,  r   r  r  r  r?  r   r   r  )r   rN   rS   r@   rA   s        r:   test_inplace_densez)_TestInplaceArithmetic.test_inplace_denseS	  sm   GFOONN1FFHHFFHH	Q	Q1a   FFHHFFHH	Q	Q1a    	%AAz1FGGG  QS              AAFAq!))++.... AAz1EFFF  Q              ac

AHAq!$$$ FFHH	QSFFHHFFHH:-ABBB 	 	FA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	EE!#JJ	QS1a    9,ABBB 	 	!GA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sH   3D

DD FFF-H??IIJ''J+.J+c                 <      fd} j         D ]} ||           d S )Nc                     j         |          }j        |          }t          j        t          | d          rT|                                }|dz  }|                                }|dz  }t          ||                                           t          j        t          | d          rV|                                }|dz  }|                                }|dz  }t          ||                                           d S d S N	same_kind)castingre   r  	r  r  rJ   can_castintr,  r   r   r  r?   r   r   rN   rS   r   s        r:   r  z6_TestInplaceArithmetic.test_imul_scalar.<locals>.check	  s    /%(C%e,E {3{;;; 3JJLLQHHJJQ"1aiikk222{5%=== 3JJLLT	HHJJT	"1aiikk222223 3r<   r  r  s   `  r:   test_imul_scalarz'_TestInplaceArithmetic.test_imul_scalar	  sI    	3 	3 	3 	3 	3& % 	 	EE%LLLL	 	r<   c                       fd} j         D ]9}t          j        |t          j        t                              s ||           :d S )Nc                     j         |          }j        |          }t          j        t          | d          rT|                                }|dz  }|                                }|dz  }t          ||                                           t          j        t          | d          rV|                                }|dz  }|                                }|dz  }t          ||                                           d S d S r  r  r  s        r:   r  z6_TestInplaceArithmetic.test_idiv_scalar.<locals>.check	  s    /%(C%e,E{3{;;; 3JJLLQHHJJQ"1aiikk222{5%=== 3JJLLT	HHJJT	"1aiikk222223 3r<   )r  rJ   r  r?   r  r  s   `  r:   test_idiv_scalarz'_TestInplaceArithmetic.test_idiv_scalar	  sf    	3 	3 	3 	3 	3$ % 	 	E ;ubhsmm44 e		 	r<   c                 V   |                      t          j        d                    }|                      t          j        d                    }|                      t          j        d                    }||z  }||z   }t          |                                |                                           | j        r>||z  }||z  }t          |                                |                                           ||z  }||z  }t          |                                |                                           ||z  }||z
  }t          |                                |                                           t          t          d          5  ||z  }d d d            d S # 1 swxY w Y   d S )Nr  r  rk  )r   rJ   r'   r   r   r  r  r  )r   rN   rS   bps       r:   test_inplace_successz+_TestInplaceArithmetic.test_inplace_success	  s    NN26!99%%NN26!99%%^^BF1II&&	Q!V		RZZ\\222 	7FAaBAIIKK666	Q!V		RZZ\\222	Q!V		RZZ\\2229,ABBB 	 	!GA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   FF"%F"N)r   r   r   r  r  r  r  rW   r<   r:   r  r  R	  sQ        0 0 0d  .  2    r<   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )_TestGetSetc                 `      fd}t           D ]} |t          j        |                      d S )Nc                    t          g dg dg dg dg|           }                    |          }|j        \  }}t          | |          D ]6}t          | |          D ]"}t	          |||f         |||f                    #7t	          t          |d                   |            dD ]$}t          t          t          f|j	        |           %d S )Nry  r  r   r   r   re   r   rf  r   r)  rJ  rt  )r  r   rm  )r  r   r  )
r   r   r   r"  r   rV  r  r  r  __getitem__)	r?   r  rQ   r  r  r  r  r'  r   s	           r:   r  z*_TestGetSet.test_getelement.<locals>.check	  s	   wwwwwwwww  (-. . .A q!!A'CAaA2q\\ 1 1r1 1 1A 1Q31Q300001 afu---B J Jz95q}bIIIIJ Jr<   r-   rJ   r?   r  s   `  r:   test_getelementz_TestGetSet.test_getelement	  sW    	J 	J 	J 	J 	J$ & 	# 	#EE"(5//""""	# 	#r<   c                       fd}d t           j        d g}|D ]*}t          D ] } |t          j        |          |           !+d S )Nc                 b                        d|           }t          j                    5  t          j        dt          t
                      ||                     d                    |d<    ||                     d                    |d<    ||                     d                    |d	<    ||                     d
                    |d<    ||                     d                    |d<    ||                     d                    |d<    ||                     d                    |d	<   d d d            n# 1 swxY w Y   | t          j        k    r+t          |
                                g dg dg dg           dD ]}t          t          |j        |d           g dt          g d          fD ]}t          t          |j        d|           t          j        | t          j                  s1| t          j        k    r#dD ]"}t          t$          |j        d|           d S d S d S )Nr  r   r(  r   r  r  r   re   r   r<  r  r  r  r   r   r  r   rE  r  )r   r  r   r  )r   r   r  r   )re   r   r  r   ))r   r  )r   r  r+  r  ru  g     ^@r  )r\  )r   r)  r*  r
  r  r)   rV  rJ   bool_r   r   r  r  __setitem__r   r  rl   r|  r  )r?   scalar_containerrQ   r'  r   r   s        r:   r  z*_TestGetSet.test_setelement.<locals>.check	  s}   vU33A(** : :'$8OPPP**5::a==99$**5::c??;;$**5::a==99$**5::c??;;$++EJJqMM::%,,UZZ]];;&	**5::a==99$: : : : : : : : : : : : : : :   "IIKK,,,lll!K   A D Dj!-UCCCCiiyyy!1!12 D Dj!-CCCC=(:;; G@Q@Q G GA!)Q]FAFFFFG G@Q@QG Gs   DE  EEc                 H    t          t          j        | gg                    S r>   )r!   rJ   r   r@   s    r:   <lambda>z-_TestGetSet.test_setelement.<locals>.<lambda>
  s    i1#00 r<   c                     | S r>   rW   r  s    r:   r  z-_TestGetSet.test_setelement.<locals>.<lambda>
  s    a r<   )rJ   r   r-   r?   )r   r  scalar_containersr  r?   s   `    r:   test_setelementz_TestGetSet.test_setelement	  s    	G 	G 	G 	G 	G8 10"(KK
 !2 	9 	9) 9 9bhuoo'788889	9 	9r<   c                 `      fd} j         D ]} |t          j        |                      d S )Nc                                         d|           }t          j                    5  t          j        dt          t
                     d|d<   d d d            n# 1 swxY w Y   t          |d         d           d S )N)r   rV   r   r(  r   )r   r  )r   r)  r*  r
  r  r)   r   r?   rQ   r   s     r:   r  z9_TestGetSet.test_negative_index_assignment.<locals>.check
  s    we44A(**  '$8OPPP%               51%%%%%s   &AA"%A"r  r  s   `  r:   test_negative_index_assignmentz*_TestGetSet.test_negative_index_assignment
  sU    	& 	& 	& 	& 	& % 	# 	#EE"(5//""""	# 	#r<   c           	           d\   fd}dddt          d          dfdt          d          ft          d          t          d          ffD ]\  }} |||d           d S )	Nr  rV   c                 j   | d|d|}                     f          }t          j                    5  t          j        dt          t
                     d|| |f<   d d d            n# 1 swxY w Y   t          |                                ||           t          || |f         d|           d S )Nz ; r(  r   r  )r   r)  r*  r
  r  r)   r   r=  )r  r  nitemsr6   rQ   r  r  r   s        r:   	_test_setz3_TestGetSet.test_scalar_assign_2.<locals>._test_set
  s    //Q//V//C1v&&A(**  '$8OPPP!Q$                ====!Q$C888888s   (A**A.1A.re   r   r   r  r  r   rE  r   )r   r   r  r  r  r  r  s   `   @@r:   test_scalar_assign_2z _TestGetSet.test_scalar_assign_2
  s    1	9 	9 	9 	9 	9 	9 	9 WhrB"eBiiBiir+- 	 	DAqIaA	 	r<   c                 `   |                      d          }t          j        d          }t          j                    5  t          j        dt          t                     ||fD ]}d|d<   d|d<   d|d<   	 d d d            n# 1 swxY w Y   t          |	                                |           d S )Nr  r(  r   r<  r  r+  r  
r   rJ   r   r)  r*  r
  r  r)   r   r   r   s       r:   test_index_scalar_assignz$_TestGetSet.test_index_scalar_assign)
  s    NN6""HV$&& 	 	#Hd4KLLLV  ###	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	199;;*****s   7BBBN)r   r   r   r  r  r  r  r  rW   r<   r:   r  r  	  s`        # # #,!9 !9 !9F# # #  "	+ 	+ 	+ 	+ 	+r<   r  zfails in parallelreasonc                       e Zd Zd ZdS )
_TestSolvec                    d}t           j                            d           t          ||ft                    }t           j                            |          }t           j                            |dz
            dt           j                            |dz
            z  z   }t           j                            |          }t          t          |                    D ]}||         |||f<   t          t          |                    D ]/}||         |||dz   f<   t          ||                   ||dz   |f<   0| 	                    |          }t          j                    5  t          j        ddt                     t          |                              |          }d d d            n# 1 swxY w Y   t!          ||z  |           d S )Nr  r   r   r   ry  r(  r  )rJ   r   r  r   rI  r@  r"  r   r   r   r)  r*  r
  r)   r2   solver   )r   r  rQ   r@   rA   r  r  s          r:   
test_solvez_TestSolve.test_solve7
  s    
	q1Q%w'''INN1INN1Q329>>!A##6#6 66INN1s1vv 	 	AqTAacFFs1vv 	' 	'AtAa!eH 1Aac!eHHNN1$&& 	! 	!#B') ) ) Qa  A		! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!
 	AE!$$$$$s    >F**F.1F.N)r   r   r   r  rW   r<   r:   r  r  5
  s#        % % % % %r<   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                            d          d	             Zd
 Zd Zd Zd Zd ZdS )_TestSlicingc                 F   t          |                     dt          j                  dddf         j        t          j                   t          |                     dt          j                  dddf         j        t          j                   t          |                     dt          j                  dddf         j        t          j                   t          |                     dt          j                  dddf         j        t          j                   d S )Nr   rV   r   r   r   r  )r   r   rJ   r   r?   r[   r   r   r   s    r:   test_dtype_preservationz$_TestSlicing.test_dtype_preservationO
  s    T^^F"(^;;AacEBH"(SSST^^F"(^;;AacEBH"(SSST^^F"*^==a!eDJBJWWWT^^F"*^==a!eDJBJWWWWWr<   c                    t           j        t           j        t           j        t           j        fD ]}|                     d|          }t          |d d dddf         j        |           t          |dddd d f         j        |           t          |ddddf         j        |           t          |ddddf         j        |           d S )Nr  r   r   re   rJ   r   r[   r   r   r   r   r?   r   dtrQ   s      r:   #test_dtype_preservation_empty_slicez0_TestSlicing.test_dtype_preservation_empty_sliceU
  s     8RXrz2:> 	0 	0BvR00A111a!e8*B///1Qq5!!!8*B///1a!e8*B///1Qq5!8*B////	0 	0r<   c           	      d   |                      t          d                              dd                    }|                     |          }| j        rdndgdgdgf\  }}}t          ||d d f         |dd d f                                                    t          ||ddf         |dddf                                                    |                      g dg d	g d
g dg          }|                     |          }t          ||ddf         |dddf                                                    |                      g dg dg d
g dg          }|                     |          }	t          ||ddf         |	dddf                                                    t          ||dd f         |	ddd f                                                    t          t          |j	        t          d           df           t          t          |j	        dt          dd          f           d S )N      I@r  rV   r5  r   r   re   r   re   r   r  r   r   rf  r  r   r  r   r   rE     r   r  )r  r   r   r   r  r   r   r  r  r  slice)
r   rR   rQ   r0r1r2r   r  r  r  s
             r:   test_get_horiz_slicez!_TestSlicing.test_get_horiz_slice_
  s   LL,,Qr2233NN1"&"4IYYA3aS/
B1RU8Qq!!!tW__%6%67771R1W:qAaCy'8'8':':;;;LL)))YYY			999EFFNN11R1W:qAaCy'8'8':':;;; LL)))YYY			999EFFNN11R1W:qAaCy'8'8':':;;;1RW:qBCCy'8'8':':;;; 	j!-%++r1BCCCj!-!U1a[[1ABBBBBr<   c           	         t          d                              dd          }|                     |          }| j        rdndgdgdgf\  }}}t	          |dd|f         |dddf                                                    t	          |d d |f         |d d df                                                    t          g dg d	g d
g dg          }|                     |          }t	          |dd|f         |dddf                                                    t	          |d d |f         |d d df                                                    t          g dg dg d
g dg          }|                     |          }	t	          |d d |f         |	d d df                                                    t	          |dd |f         |	dd df                                                    t          t          |j	        t          d           df           t          t          |j	        dt          dd          f           d S )Nr%  r  rV   r5  r   r   re   r&  r'  rf  r  r   r   r(  rE  r)  r   r  )r   r   r   r  r   r   r   r  r  r  r*  )
r   rR   rQ   c0c1c2r   r  r  r  s
             r:   test_get_vert_slicez _TestSlicing.test_get_vert_slicet
  s;   3KK2&&NN1"&"4IYYA3aS/
B1QqS"W:q1ay'8'8':':;;;1QQQU8Qqqq!tW__%6%6777999iiiIII>??NN11QqS"W:q1ay'8'8':':;;;1QQQU8Qqqq!tW__%6%6777 999iiiIII>??NN11QQQU8Qqqq!tW__%6%67771RSS"W:qay'8'8':':;;; 	j!-%++r1BCCCj!-!U1a[[1ABBBBBr<   c                    t          d                              dd          }|                     |          }t          |ddddf                                         |ddddf                    t          |dd d df                                         |dd d df                    t          |d ddd f                                         |d ddd f                    t          g d	g d
g dg dg          }|                     |          }t          |ddddf         |ddddf                                                    t          |d d dd f         |d d dd f                                                    d S )Nr%  r  rV   re   r   r   r   r   r   r(  rf  r  )r   r   r   r   r   r   )r   rR   rQ   r  r  s        r:   test_get_slicesz_TestSlicing.test_get_slices
  s   3KK2&&NN11QqS!A#X;..00!AaC1H+>>>1QRR"W:--//122ss7<<<1SbS!""W:--//3B37<<< 999iiiIII>??NN11QqS!A#X;!A#qs((;(;(=(=>>>1QQQU8Qqqq!""uX%5%5%7%788888r<   c                 4   t           j                            dd          }	 |                     |          ddddddf         }n"# t          $ r t          j        d          w xY wt          |                                |ddddddf                    d S )Nr  r      re   r  r   feature not implemented)	rJ   r   r@  r   r  r  r  r   r   )r   v0r   s      r:    test_non_unit_stride_2d_indexingz-_TestSlicing.test_non_unit_stride_2d_indexing
  s    Y^^B##	9r""1R61R6>2AA 	9 	9 	9+7888	9 	199;;1R61R6>(:;;;;;s   #A A%c                     |                      t          d                              dd                    }|                     |          }t	          |d         |d                    t	          |d         |d                    t	          |d         |d                    t	          |t          d          df         |d                    t	          |dt          d          f         |d                    t	          |t          d          t          d          f         |d                    t	          |d	d d f                                         |d	d d f                    t	          |d	ddf                                         |d	ddf                    t	          |t          d	          ddf                                         |d	ddf                    t	          |d d d	f                                         |d d d	f                    t	          |d
ddf                                         |d
ddf                    t	          |dddf                                         |dddf                    t	          |d	dd
f                                         |d	dd
f                    t	          |d	dt          d
          f                                         |d	dd
f                    t	          |dd	dd	f                                         |dd	dd	f                    t	          |dd d
d f                                         |dd d
d f                    t	          |d dd df                                         |d dd df                    t	          |d	dd df                                         |d	dd df                    t	          |dd d f                                         |dd d f                    t	          |dd d f                                         |dd d f                    t	          |t          d          d d f                                         |dd d f                    t	          |dd                                         |dd                    t	          |dd                                         |dd                    t          t          d	          t          d          d           }t	          ||d d f                                         |d	dd d f                    t	          |d d |f                                         |d d d	df                    d S )Nr  r  rV   r  r  r  r   rE  re   r   r  r  r   r  )	r  r   r   r   r   r   r   r*  r   )r   rR   rQ   r  s       r:   test_slicing_2z_TestSlicing.test_slicing_2
  s   LL++Ab1122NN1 	QsVQsV$$$QtWag&&&QuXah'''QuRyy|_QuX...Qr%))|_QuX...QuRyyr*+AeH555 	Qq!!!tW__&&!QQQ$000Qq!B$wZ''))1Q"W:666QuQxx2~&..00!AqtG*=== 	Qqqq!tW__&&!!!Q$000QqsAvY&&((!AaCF)444QqsBwZ''))1QqS"W:666QqtQwZ''))1QrT1W:666QqtU1XX~&..00!AbD!G*=== 	QqsAaCx[((**Aac1Q3hK888Qqrr122vY&&((!ABBF)444Qrr2A2vY&&((!BQBF)444QqtRaRx[((**AadBQBhK888 	Qq!!!tW__&&!QQQ$000Qr111uX%%''2qqq5222QuRyy!!!|_,,.."aaa%999 	QqsV^^%%q1v...QqtW__&&!B$000 $q''$q''$''Qq!!!tW__&&!A#qqq&	222Qqqq!tW__&&!!!QqS&	22222r<   re   c                 x   |                      t          d                              dd                    |                               t          j        }|d d         |dd         |dd          |dd d         |dd         |dd         |d	dd
         |dd d         |d dd
         dd|d d          |dd         d
ddt          d
          t	          j        d          g}fd}t          |          D ]\  }} ||           fd}t          |          D ]&\  }}t          |          D ]\  }} |||           'g }	t          j
        dgdz   D ]1\  }}}
|
dk    r|	                    t          |||
                     2|	D ]&} |||            ||d            |d|           'd S )Nr  r  rV   re   r   r   r  r  r  r   r  rE  r   r  r  c                    |          }|          }|j         dk    r t          ||t          |                      d S |j        dk    r|j        dk    rd S t	          |                                |t          |                      d S NrW   r   )r   r   r  rk   r   r   )rN   r@   rA   rQ   rR   s      r:   check_1z,_TestSlicing.test_slicing_3.<locals>.check_1
  s~    !A!Aw"}}Q477+++++6Q;;16Q;;D&qyy{{AtAww?????r<   c                    t          | t          j                  rt          |           }n| }t          |t          j                  rt          |          }n|}| |f         }||f         }|j        dk    r"t          ||t          | |f                     d S |j        dk    r|j        dk    rd S t          |	                                |t          | |f                     d S r?  )
rI   rJ   r
   r  r   r   r  rk   r   r   )rN   rS   aibir@   rA   rQ   rR   s         r:   check_2z,_TestSlicing.test_slicing_3.<locals>.check_2
  s     !RZ(( VV!RZ(( VV!Q$A"b&	Aw"}}Q4A<<000006Q;;16Q;;D&qyy{{AtQF||DDDDDr<   )
Nr   r   re   r  r  r   rE  r  i)r  r   r   r   rJ   s_r   r   	enumerate	itertoolsproductrL   r*  )r   rE  slicesr@  r  rN   rD  r  rS   extra_slicesr  rQ   rR   s              @@r:   test_slicing_3z_TestSlicing.test_slicing_3
  sP   LL++Ab1122NN1URaR&"QqS'2abb62add8RU)R!WQqV*bBiEQrEQ111r!A#wB))RWR[[	*		@ 		@ 		@ 		@ 		@ 		@ f%% 	 	DAqGAJJJJ	E 	E 	E 	E 	E 	E0 f%% 	 	DAq!&))  11  ( -= ,>>?,@ B 	0 	0GAq!AvvaA//// 	 	AGAqMMMGArNNNGBNNNN	 	r<   c                    |                      t          d                              dd                    }|                     |          }|d         j        dk    sJ |d dddf         j        dk    sJ |d	         j        d
k    sJ |d         j        dk    sJ |d         j        dk    sJ |d dd d f         j        dk    sJ |dd d d f         j        dk    sJ |dd d d f         j        dk    sJ |d dddf         j        |d dddf         j        cxk    rdk    sn J |ddd df         j        |ddd df         j        cxk    rdk    sn J |dddd f         j        |dddd f         j        cxk    rdk    sn J |d dddf         j        |d dddf         j        cxk    rdk    sn J |dd ddf         j        |dd ddf         j        cxk    rdk    sn J |dddd f         j        |dddd f         j        cxk    rdk    sn J | j        r|dddf         j        |dddf         j        cxk    rdk    sn J |dddf         j        |dddf         j        cxk    rdk    sn J |d         j        |d         j        cxk    rdk    sn J |d         j        |d         j        cxk    rdk    sn J |d         j        |d         j        cxk    rdk    sn J d S |dddf         j        |dddf         j        cxk    rdk    sn J |dddf         j        |dddf         j        cxk    rdk    sn J |d         j        |d         j        cxk    rd
k    sn J |d         j        |d         j        cxk    rd
k    sn J |d         j        |d         j        cxk    rd
k    sn J d S )Nr  r  rV   r  r   r   re   r  )Nr   re   Nr)  )Nr   r  )r   N)rV   r   r   re   r   )re   )Nr   re   )r   )r   Nre   )r   re   N)r  r   r   r   r   r   r  r   rR   rQ   s      r:   test_None_slicingz_TestSlicing.test_None_slicing  s   LL++Ab1122NN1w|q    q!A#$....!"(F2222 z7****z7****q!!!}"g----D!!!}"g----AAAt}"g----qsA$$!Q,(=GGGGGGGGGG1dA$!A#tQ,(=GGGGGGGGGG1a$!A#q$,(=GGGGGGGGGGq!A#$$1Q3,(=GGGGGGGGGGD!A#$!T1Q3,(=GGGGGGGGGGAaC$!QqS$,(=GGGGGGGGGG  	HQqS!V9?a!Qio==========Q!V9?a1Q3io==========Z=&!J-*=EEEEEEEEEEZ=&!J-*=EEEEEEEEEEZ=&!J-*=EEEEEEEEEEEEQ!V9?a1Q3io??????????QqS!V9?a!Qio??????????Z=&!J-*=GGGGGGGGGGZ=&!J-*=GGGGGGGGGGZ=&!J-*=GGGGGGGGGGGGr<   c                    |                      t          d                              dd                    }|                     |          }t	          |d                                         |d                    t	          |d                                         |d                    t	          |d                                         |d                    t	          |d                                         |d                    t	          |d                                         |d                    t          j        t          d	
          5  |d          d d d            n# 1 swxY w Y   t          j        t          d
          5  |d          d d d            n# 1 swxY w Y   t          j        t          d	
          5  |j	        d          d d d            n# 1 swxY w Y   t	          |dd df                                         |dd df                    t	          |ddd f                                         |ddd f                    t	          |d ddf                                         |d ddf                    t	          |dd df                                         |dd df                    t	          |d ddf                                         |d ddf                    t	          |dd df                                         |dd df                    t	          |dd df                                         |dd df                    t	          |ddd f                                         |ddd f                    t	          |dd df                                         |dd df                    t	          |ddd f                                         |ddd f                    t	          |dd ddf                                         |dd ddf                    t	          |dddd f                                         |dddd f                    t	          |dddd f                                         |dddd f                    t	          |d dddf                                         |d dddf                    t	          |ddd df                                         |ddd df                    t	          |ddd df                                         |ddd df                    t          |d         |d                    t          |d         |d                    d S )Nr  r  rV   .).)r  .).r  ).r  zindex .5. out of rangerk  )r  .zindex .10. out of range).rV   r   re   )r   r   .)r   .r   )r  r   r   r   r   r   r  r   r  r?  r   r   rS   rN   s      r:   test_ellipsis_slicingz"_TestSlicing.test_ellipsis_slicing6  s   LL++Ab1122NN11S6>>++QsV4441T7??,,ag6661V9,,..&	:::1V9,,..&	:::1V9,,..&	:::]:-EFFF 	 	fII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:-FGGG 	 	gJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:-EFFF 	 	CKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	1QRRW:--//122s7<<<1S!""W:--//37<<<1RaRW:--//2A2s7<<<1S"1"W:--//37<<< 	1RaRW:--//2A2s7<<<1S"1"W:--//37<<<1QRRW:--//122s7<<<1S!""W:--//37<<<1RSS#X;..00!BCCH+>>>1S"##X;..00!CH+>>> 	1QRRCZ=0022Aabb!SjMBBB1QQRRZ=0022AaabbjMBBB1S!QRRZ=0022AaabbjMBBB1RaRCZ=0022Abqb!SjMBBB1QRaRZ=0022AabqbjMBBB1S!RaRZ=0022AabqbjMBBBQy\1Y<000Qy\1Y<00000s6   	E""E&)E&	FF!$F!GG!$G!c                    |                      t          d                              dd                    }|                     |          }g d}dgdz  |z   }||z   }|gdz  }t	          t          ||df                   ||df                    t	          t          |d|f                   |d|f                    t	          t          ||df                   ||df                    t	          t          |d|f                   |d|f                    t	          t          ||d|f                   ||d|f                    t	          t          |d||f                   |d||f                    t	          t          |||df                   |||df                    t          t          d          5  |||f          d d d            d S # 1 swxY w Y   d S )	Nr  r  rV   )TFTFTF.zshape mismatchrk  )r  r   r   r   r   r   r  r  )r   numpy_arN   ix5ix10
ix10_6Truefull_ixs          r:   test_ellipsis_fancy_boolz%_TestSlicing.test_ellipsis_fancy_bool_  s   ,,vbzz11!R8899NN7##...w{S 3Y
&1*71Wc\?33WWc\5JKKK71S'\?33WS'\5JKKK71S#X;//c1BCCC71S$Y<00'#t)2DEEE71S#t^#455wsC~7NOOO71S#t^#455wsC~7NOOO71S$^#455wsD#~7NOOO:-=>>> 	 	c:o	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ;GGGc           	         |                      t          d                              dd                    }|                     |          }t	          |dgdf                                         |dgdf                    t	          |ddgdf                                         |ddgdf                    t	          |ddgf                                         |ddgf                    t	          |dddgf                                         |dddgf                    t	          |dgddf                                         |dgddf                    t	          |ddgddf                                         |ddgddf                    t	          |dgddf                                         |dgddf                    t	          |ddgdf                                         |ddgdf                    t	          t          |ddgdddgf                   |ddgdddgf                    t	          t          |dddgddgf                   |dddgddgf                    d S )Nr  r  rV   r  .re   r   )r  r   r   r   r   r   rQ  s      r:   test_ellipsis_fancy_slicingz(_TestSlicing.test_ellipsis_fancy_slicingu  s^   LL++Ar2233NN11aS#X;..00!QCH+>>>1aVS[>1133Q1vs{^DDD1S1#X;..00!C!H+>>>1S1a&[>1133QsQF{^DDD1aS!S[>1133QsAs{^DDD1aVQ^,44661a&!S.8IJJJ1aS#q[>1133QsC{^DDD1S1#q[>1133QsQC{^DDD71aVS1a&%8#9::Aq!fcAq6>Q<RSSS71S1a&1a&%8#9::AcAq6Aq6>Q<RSSSSSr<   c                 `   |                      t          d                              dd                    }t          j        t
          d          5  |d          d d d            n# 1 swxY w Y   t          j        t
          d          5  |d          d d d            d S # 1 swxY w Y   d S )Nr   r   re   z(an index can only have a single ellipsisrk  )..).r   .)r   r   r   r  r   r  r   rN   s     r:   test_multiple_ellipsis_slicingz+_TestSlicing.test_multiple_ellipsis_slicing  s4   NN6!99,,Q2233]:!KM M M 	 	hKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:!KM M M 	 	kNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   	A''A+.A+	B##B'*B'N)r   r   r   r  r#  r.  r3  r5  r:  r<  r  r  	fail_slowrK  rO  rR  rY  r[  r^  rW   r<   r:   r  r  N
  s
       X X X0 0 0C C C*C C C,9 9 9	< 	< 	<+3 +3 +3Z [1@ @ @D"H "H "HH'1 '1 '1R  ,T T T"    r<   r  c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
_TestSlicingAssignc                    |                      d          }t          j        d          }t          j                    5  t          j        dt          t                     ||fD ]2}d|dddf<   d|dddf<   d|dddf<   d|ddd f<   d|dd ddd f<   3	 d d d            n# 1 swxY w Y   t          |	                                |           d S )	Nr  r(  r   r   r  r   r  r   r  r   s       r:   test_slice_scalar_assignz+_TestSlicingAssign.test_slice_scalar_assign  s1   NN6""HV$&& 	  	 #Hd4KLLLV    !A#a%!A#a%!A#a%!ABB$!%R%( 	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	199;;*****s   AB""B&)B&c                      d\   fd}dt          d          fdt          d dd          fdt          dd          ft          d          t          dd          ffD ]\  }} |||           d S )	Nr  c                 l   d| d|}                     f          }t          j                    5  t          j        dt          t
                     d|| |f<   d d d            n# 1 swxY w Y   t          j        f          }d|| |f<   t          |	                                ||           d S )Nzi=z; j=r(  r   r  )
r   r)  r*  r
  r  r)   rJ   r   r   r   )r  r  r6   rQ   rR   r  r  r   s        r:   r  z9_TestSlicingAssign.test_slice_assign_2.<locals>._test_set  s    %q%%%%C1v&&A(**  '$8OPPP!Q$               !Q  AAadG%aiikk1cBBBBBBs   (A((A,/A,re   r   rV   r  r  rE  )r*  r   r  s   `   @@r:   test_slice_assign_2z&_TestSlicingAssign.test_slice_assign_2  s    1	C 	C 	C 	C 	C 	C 	C q]QdB(:(:$;aq"=NAhha-/ 	 	DAqIaOOOO	 	r<   c                 8   |                      d          }t          j                    5  t          j        dt          t
                     d|d<   d|d<   d|d<   d	|d
<   |d	z  }|dd d f         |dd d f<   t          |dd d f                                         |dd d f                                                    |d	z  }|d dd df         |d d d d f<   t          t          j	        d          |d         z   |                                           |d	z  }|d dd d f         j
        |d ddf<   t          |dd d f                                         j
        |d ddf                                                    d d d            d S # 1 swxY w Y   d S )Nrm  r(  re   r  r  r  r   rM  rV   r+  r   r   r   )r   r)  r*  r
  r  r)   r   r   rJ   r   r?  rN  s      r:   test_self_self_assignmentz,_TestSlicingAssign.test_self_self_assignment  s   NN5!!$&& 	G 	G#Hd4KLLLAcFAcFAcFAcFBAqsVAacFq111v~~//1QQQ31A1ABBBBArr"1"uXAaaacFrx37EEEBAa{}Acrc!eHq111v~~//11SbSU83C3C3E3EFFF#	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	Gs   EFFFc                 >   |                      d          }t          g dg dg dg dg          }ddgddgg}t          j                    5  t          j        d	t
          t                     d
|d<   d|d<   d|d<   ||z   |d d d d f<   t          |                                |           | 	                    t          |                    |d dd df<   t          |                                d dd df         |           d d d            d S # 1 swxY w Y   d S )Nrm  rV   r   r   )r   r   r   )r   r  r   rf  r   r   r  r(  r  r  r   r  r  rM  re   )
r   r   r)  r*  r
  r  r)   r   r   r  )r   rR   rq  blocks       r:   test_slice_assignmentz(_TestSlicingAssign.test_slice_assignment  s|   NN5!!(((!''"((!''# $ $ A!u$&& 		; 		;#Hd4KLLLAcFAcFAcFqSAaaacFqyy{{H555))%,,77Abqb!eHqyy{{2A2rr62E:::		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		;s   B9DDDc                    |                      d          }t          j                    5  t          j        dt          t
                     d|d<   d|d<   d|d<   d	|d
<   |                     t          j        d                    |d d<   d d d            n# 1 swxY w Y   t          g dg dg dg dg          }t          |                                |           d S )Nrm  r(  r  r  r   r  r  rM  rV   r+  ry  r$  r  rj  )r   r)  r*  r
  r  r)   r  rJ   r'   r   r   r   )r   rR   rq  s      r:   "test_sparsity_modifying_assignmentz5_TestSlicingAssign.test_sparsity_modifying_assignment  s   NN5!!$&& 	2 	2#Hd4KLLLAcFAcFAcFAcF&&rvayy11AbqbE	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 '''''''''(((;<<199;;11111s   A!BBBc                    |                      d          }t          t          dt                              }t          j        }|d d         |dd         |dd          |dd d         |ddd         |dd d         |d d	d         d
d|d d          |dd	         dddt          d          t	          j        d          g}t          j                    5  t          j	        dt          t                     t          |          D ]?\  }}|||<   |||<   t          |                                |t          |                     @t          |          D ]r\  }}t          |          D ]]\  }}d|z  d|dz   z  z   |||f<   d|z  d|dz   z  z   |||f<   t          |                                |t          ||f                     ^st!          ddd          |d
dddf<   t!          ddd          |d
dddf<   t          |                                |           t	          j        dd	d          d d d f         |dd	dd
f<   t	          j        dd	d          d d          |dd	dd
f<   t          |                                |           d d d            n# 1 swxY w Y   t%          t&          |j        dt+          t!          d                               t%          t&          |j        dt#          d                     t%          t&          |j        d
t-          d           ft+          t!          d                               t%          t&          |j        t-          d           dft+          t!          d                               t%          t&          |j        t-          d           df|                                           t%          t&          |j        g dg dgg dfg d           t%          t&          |j        g dg dg dgg dg dgfg d           t%          t&          |j        t-          d          d
fddgddgg           d S )Nr  re   r   r   r  r   r  rE  r  r   r  r  r(  rV     r  d   r  r[  r  )r  r   r   r   re   r  )r   r   r   r  )r   r   r   r  rJ   rE  r   r)  r*  r
  r  r)   rF  r   r   r  r"  r   r  r  r  listr*  r,  )	r   rQ   rR   rE  rI  r  rN   r  rS   s	            r:   test_set_slicez!_TestSlicingAssign.test_set_slice  s   NN6""%''((URaR&"QqS'2abb62add8QqV*bBiEQrEQ111r!A#wB))RWR[[*
 $&& 	/ 	/#Hd4KLLL!&)) < <1!!"199;;477;;;;!&)) E E1%f-- E EDAqTD!A#J.AacFTD!A#J.AacF&qyy{{AtQF||DDDDE
 !B??Aa2aiL B??Aa2aiLqyy{{A...)Aq!,,QQQW5Aa!eQhK)Aq!,,QQQ/Aa!eQhKqyy{{A...%	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/* 	j!-eCjj9I9IJJJj!-EEEj!-!U4[[1A5::&&	( 	( 	(j!-%++q1A5::&&	( 	( 	(j!-%++q1A16688LLLj!-!		999-yyy9<<<	I 	I 	Ij!-!		999iii8!		999-/09			; 	; 	; 	j!-%((A1v1v&	( 	( 	( 	( 	(s   F6JJJc                     |                      t          j        d                    }|                      d          }||dd df<   t          |                                g dg dg           d S )Nr  r  r   re   r   r   r   r  )r   rJ   r  r   r   r0  s      r:   test_assign_emptyz$_TestSlicingAssign.test_assign_empty  sj    NN276??++NN6"" !RaR%199;;III(>?????r<   c                     |                      t          j        d                    }t          j        d          }||d d df<   ||dd d f<   t	          |                                g dg dg dg           d S )Nr`  r   r   r   r!  rf  )r   rJ   r  r   r   r   r   rQ   r@   s      r:   test_assign_1d_slicez'_TestSlicingAssign.test_assign_1d_slice  s{    NN276??++HQKK!!!Q$!QQQ$199;;IIIyyy(IJJJJJr<   N)r   r   r   rc  rf  rh  rl  rn  rt  rw  rz  rW   r<   r:   ra  ra    s        + + +  "G G G,; ; ;&2 2 2+( +( +(Z@ @ @K K K K Kr<   ra  c                   T    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S )_TestFancyIndexingzTests fancy indexing features.  The tests for any matrix formats
    that implement these features should derive from this class.
    c                    t           j        t           j        t           j        t           j        fD ]}|                     d|          }t          |d d ddgf         j        |           t          |g dd d f         j        |           t          |d d g f         j        |           t          |g d d f         j        |           d S )Nr  r   F)FFFr   r!  s      r:   #test_dtype_preservation_empty_indexz6_TestFancyIndexing.test_dtype_preservation_empty_index(  s     8RXrz2:> 	- 	-BvR00A111uen,-3R888000!!!34:B???111b5,,,2qqq5,,,,	- 	-r<   c                 H   |                      t          j        ddg                    }t          t          t
          t          f|j        d           t          t          t
          t          f|j        d           t          t          t
          f|j        g dg df           d S )Nr  foore   r  r  r  )r   rJ   r   r  r  r  r  r  r  s     r:   test_bad_indexz!_TestFancyIndexing.test_bad_index2  s    NN28QF++,,z:y91=%PPPz:y91=*UUUz:. yy,,,/	1 	1 	1 	1 	1r<   c           
      ~   |                      t          d                              dd                    }|                     |          }t	          |dg                                         |dg                    t	          |ddg                                         |ddg                    t	          |ddgf                                         |ddgf                    t	          |dddgf                                         |dddgf                    t	          |dddgf                                         |dddgf                    t	          |t          d          ddgf                                         |dddgf                    t	          |dt          ddg          f                                         |dddgf                    t	          |t          d          t          ddg          f                                         |dddgf                    t	          |d d g d	f                                         |d d g d	f                    t	          |dd
dgf                                         |dd
dgf                    t	          |dd
ddgf                                         |dd
ddgf                    t	          |dd
t          ddg          f                                         |dd
ddgf                    t	          |dgdf                                         |dgdf                    t	          |ddgdf                                         |ddgdf                    t	          |ddgdf                                         |ddgdf                    t	          |t          ddg          df                                         |ddgdf                    t	          |ddgt          d          f                                         |ddgdf                    t	          |t          ddg          t          d          f                                         |ddgdf                    t	          |dgd d f                                         |dgd d f                    t	          |ddgd d f                                         |ddgd d f                    t	          |ddgddf                                         |ddgddf                    t	          |t          ddg          ddf                                         |ddgddf                    t	          t          |dgd
gf                   |dgd
gf                    t	          t          |ddgdd
gf                   |ddgdd
gf                    t	          t          |ddgddgf                   |ddgddgf                    t	          t          |t          ddg          ddgf                   |ddgddgf                    t	          t          |ddgt          ddg          f                   |ddgddgf                    t	          t          |t          ddg          t          ddg          f                   |ddgddgf                    t	          |dgdggdd
gf                                         |dgdggdd
gf                    t	          |dgdgdggddgf                                         |dgdgdggddgf                    t	          |t          dgdgdgg          ddgf                                         |dgdgdggddgf                    t	          |dgdgdggt          ddg          f                                         |dgdgdggddgf                    t	          |t          dgdgdgg          t          ddg          f                                         |dgdgdggddgf                    t	          |ddg                                         |ddg                    t	          |ddg                                         |ddg                    t	          |t          ddg                                                   |ddg                    t	          |dgd d f         d d d
gf                                         |dgd d f         d d d
gf                    t	          |ddgd d f         d d dd
gf                                         |ddgd d f         d d dd
gf                    t	          |ddgd d f         d d ddgf                                         |ddgd d f         d d ddgf                    t	          |t          ddg          d d f         d d t          ddg          f                                         |ddgd d f         d d ddgf                    t	          |dddggf         ddggdf                                         |dddggf         ddggdf                    t	          |dddggf         ddggdf                                         |dddggf         ddggdf                    |j        dk    ryt	          |d dddggf                                         |d dddggf                    t	          |ddggd df                                         |ddggd df                    nt          j	        t          d          5  |d dddggf          d d d            n# 1 swxY w Y   t          j	        t          d          5  |ddggd df          d d d            n# 1 swxY w Y   t	          |d d ddgf         dd
gd d f                                         |d d ddgf         dd
gd d f                    t	          |d d ddgf         ddgd d f                                         |d d ddgf         ddgd d f                    t	          |d d t          ddg          f         t          ddg          d d f                                         |d d ddgf         ddgd d f                    t          t          d          t          d
          d           }t	          ||d d f                                         |dd
d d f                    t	          |d d |f                                         |d d dd
f                    t          j        dggt                    }t	          |||f                                         |||f                    t	          |g gg gf                                         |g gg gf                    d S )Nr  r  rV   r   r   r   re   r  )re   r  r   r   r  r  r  r  r  rE  r   rb  z"Only 1D or 2D|>2D is not supportedrk  r   )r  r   r   r   r   r   r   r   r  r   r  r*  r   rJ   r  )r   rR   rQ   r  r  s        r:   test_fancy_indexingz&_TestFancyIndexing.test_fancy_indexing9  s\   LL++Ab1122NN1 	QsV^^%%q!v...Q1vY&&((!QF)444 	Qq1#vY&&((!AsF)444Qq1a&y\))++Qq1a&y\:::QrAr7{^++--qaW~>>>QuRyy1b')*2244aQGnEEEQr5!R>>)*2244aQGnEEEQuRyy%B..0199;;QrAr7{^LLL 	Qqqq---'(0022Aaaa6F4GHHHQqsQCx[((**AacA3hK888QqsRH}%--//1Q3R=1ABBBQqsE2r(OO+,4466!A#Bx-8HIII 	QsAvY&&((!QCF)444Q1vqy\))++Q1vqy\:::Q2w{^++--q!R"~>>>QuaW~~r)*2244aBnEEEQ2wb		)*2244aBnEEEQuaW~~uRyy0199;;Q2w{^LLL 	QsAAAvY&&((!QCF)444Q1vqqqy\))++Q1vqqqy\:::Q2w"}%--//Ar7AbD=1ABBBQuaW~~qt+,44661b'1R4-8HIII 	WQsQCx[))1aS1#X;777WQ1v1v~.//Aq6Aq6>1BCCCWQBx!R0122Ar2hB6G4HIIIAeRHoo2w./00!RHq"g4E2F	
 	
 	
 	Ar2hq"g./00!RHq"g4E2F	
 	
 	
 	AeRHoouaW~~5677B8aW;L9M	
 	
 	

 	QaSzAq6)*2244a!qc
QF8J6KLLLtbTB4 1b')*2244tbTB4 1b')*	
 	
 	
 	ebTB4"&''!R0199;;tbTB4 1b')*	
 	
 	
 	tbTB4 %B..0199;;tbTB4 1b')*	
 	
 	
 	ebTB4"&''2w78@@BBtbTB4 1b')*	
 	
 	
 	Q1vY&&((!QF)444QBx[((**Ar2hK888Qub"X'//111b"X;??? 	QsAAAvYqqq1#v&..00!QCF)AAAsF2CDDDq!faaaiLQF#++--q!Q|AAA1vI/F	
 	
 	
 	r2hkN111q"g:&..00!RHaaaK.QG2L	
 	
 	
 	eRHooqqq !!!!UAr7^^"34<<>>r2hkN111q"g:&	
 	
 	

 	a1a&kNQF8Q;'//111Q!Q[>Aq6(A+3N	
 	
 	
 	a2r(mq"gY\*2244aRH:6FByRS|6T	
 	
 	
 8u2A2Ax<0022AbqbAq6(lODDDQF8RaR<0022A1vhlODDDDz1UVVV    "1"1vh,                             z1UVVV    Aq6(BQB,                              	aaa!QiL!Q#++--qQF|QFAAAI/F	
 	
 	
 	aaa"bkNAr7AAA:&..00!AAABxK.!R!!!2L	
 	
 	
 	aaaBx !%B..!!!"34<<>>aaa"bkNAr7AAA:&	
 	
 	
 $q''$q''$''Qq!!!tW__&&!A#qqq&	222Qqqq!tW__&&!!!QqS&	222 HqcU#&&&Qq!tW__&&!Q$000 	QtbTz]**,,ard
m<<<<<s$   $o  oo&pp	pc                    t           j                            d           d}d}d}|                     t           j                            ||                    }t          j        ||dk              }t           j                            | dz   ||          }t           j                            | dz   ||          }|                     |          }|||f         }t          |          r|	                                }t          ||||f                    ||z   }	||z
  }
t          t          |j        |	|f           t          t          |j        ||
f           d S )Nrc   r  r   r  r  r   r  )rJ   r   r  r  r@  r  r	  r   r(   r   r   r  r  r  )r   NUM_SAMPLESr  r  r  Ir  r  SIJI_badJ_bads              r:   test_fancy_indexing_randomizedz1_TestFancyIndexing.test_fancy_indexing_randomized  s8   
	tLL!,,--K1s7##Iqb1fak::Iqb1fak::NN1!fC== 	 ++--CS!AaC&!!!AAj!-%;;;j!-!E;;;;;r<   c                    d\  }}|                      t          ||z                                ||                    }|                     |          }t	          j        |dz   t                    }t	          j        |dz
  t                    }t	          j        |dz   t                    }t	          j        |dz
  t                    }d}	t          j        ||t          d           f||t          d           f          D ]m\  }
}t          |
t                    rt          |t                    r0t          j        t          |	          5  ||
|f         }d d d            n# 1 swxY w Y   nd S )Nr  r   r   re   z(bool index .* has shape .* instead of .*rk  )r  r   r   r   rJ   r  r  rG  rH  r*  rI   r  r   r  )r   r  r  rR   rQ   row_long	row_shortcol_long	col_shortrl  r  r  r#  s                r:   test_missized_maskingz(_TestFancyIndexing.test_missized_masking  s   1LLA..q!4455NN1 71q5---GAE...	71q5---GAE...	8%y%++.y%++.
 
 	 	DAq !U## 
1e(<(< z777  adG              	 	s   E%%E)	,E)	c                    t           j                            d           |                     t	          d                              dd                    }|                     |          }t          j        t           j                            ddd          t                    }t          j        t           j                            ddd          t                    }t          j        t           j                            ddd	          t                    }t          t          ||                   ||                    t          t          |d d |f                   |d d |f                    t          t          ||                   ||                    t          t          ||d
k                       ||d
k                        t          j        g d          }t          j        g d          }t          t          |||f                   |||f                    t          j        dt                    }t          j        dt                    }d|d<   t          j        dt                    }d|d<   t          t          |j        |           t          t          |j        |           t          t          |j        |           t          t          t           f|j        |df           d S )Nrc   r  r  rV   r   re   r  r   r  r  )TFTTF)
FTTFTFFFFF)r   r)  Tr  )r   r   r   )rJ   r   r  r  r   r   r   r   r	  r  r   r   r   r  r  r  r  )	r   rR   rQ   r  r  rg  Z1Z2Z3s	            r:   test_fancy_indexing_booleanz._TestFancyIndexing.test_fancy_indexing_boolean  sp   
	tLL++Ab1122NN1HRY&&q!!&44DAAAHRY&&q!"&55TBBBHRY&&q!'&::$GGGWQqT]]AaD)))WQqqq!tW%%qAw///WQqT]]AaD)))WQq1uX&&!a%111H55566H 9 9 9 : : 	WQq!tW%%qAw///XgT***XgT***4XgT***4j!-444j!-444j!-444z:.1vFFFFFr<   c                 "   t           j                            d           |                     t	          d                              dd                    }|                     |          }t          j        t           j                            ddd          t          	          }| 
                    |          }t          t          ||                   ||                    t          t          ||d
k                       ||d
k                        t          j        t           j                            ddd          t          	          }t          j        t           j                            ddd          t          	          }| 
                    |          }| 
                    |          }t          t          |j        |           t          t          |j        |           t          t          t           f|j        |df           d S )Nrc   r  r  rV   r   re   r  r  r   r  )r  r)  )r   rV   r   )rJ   r   r  r  r   r   r   r   r	  r  r  r   r   r  r  r  r  )	r   rR   rQ   rg  XspZrh  ZspYsps	            r:   "test_fancy_indexing_sparse_booleanz5_TestFancyIndexing.test_fancy_indexing_sparse_boolean	  s   
	tLL++Ab1122NN1HRY&&q!'&::$GGG  ##WQsV__ad+++WQq1uX&&!a%111HRY&&q!'&::$GGGHRY&&q!'&::$GGG  ##  ##j!-555j!-555z:.QxHHHHHr<   c                    |                      t          g dg dg dg                    }t          j        |                    d                    dk    }t          |d d |f                                         ddgddgddgg           d S )Nry  r$  r   r   )r   r   rJ   ravelr=  r   r   )r   r   desired_colss      r:   #test_fancy_indexing_regression_3087z6_TestFancyIndexing.test_fancy_indexing_regression_3087   s    nnUIIIwww#@AABBx

++a/SL)1133q!fq!fq!f5MNNNNNr<   c           	          |                      t          ddgddgg                    }t          t          |j        dt          j        ddg                     d S )Nr   r   r  re   )r   r   r  r  r  rJ   r   s     r:   test_fancy_indexing_seq_assignz1_TestFancyIndexing.test_fancy_indexing_seq_assign%  sP    nnUQFQF#34455j#/628QqE??KKKKKr<   c                 z   |                      t          ddgddgg                    }t          j                    5  t          j        dt
          t                     |ddgddgf         |ddgddgf<   d d d            n# 1 swxY w Y   t          t          |          t          ddgddgg                     d S )Nr   r   re   r   r(  )	r   r   r)  r*  r
  r  r)   r   r   r   s     r:   test_fancy_indexing_2d_assignz0_TestFancyIndexing.test_fancy_indexing_2d_assign)  s    nnUQFQF#34455$&& 	6 	6#Hd4KLLL"%q!fq!fn"5CAA	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	WS\\51a&1a&)9#:#:;;;;;s   8B  BBc                 ,   |                      t          d                              dd                    }d|dd d f<   d|d d df<   d|d<   |                     |          }t	          j        g d          }t          t          ||                   ||                    t	          j        g t          	          }t          t          ||                   ||                    t          t          |||f                   |||f                    t	          j        g d
t          	          d d d f         }t          t          |||f                   |||f                    t          t          |||f                   |||f                    d S )Nr  r  rV   r   r   re   r   r   FFFFFr   r   r   re   r   r  	r  r   r   r   rJ   r   r   r   r  r   rR   rQ   r  r  s        r:   test_fancy_indexing_emptyz,_TestFancyIndexing.test_fancy_indexing_empty1  sn   LL++Ab1122!AAA#!!!A##NN1H88899WQqT]]AaD)))HRs###WQqT]]AaD)))WQq!tW%%qAw///H___C00048WQq!tW%%qAw///WQq!tW%%qAw/////r<   N)r   r   r   r   r~  r  r  r  r  r  r  r  r  r  r  rW   r<   r:   r|  r|  #  s         - - -1 1 1~= ~= ~=@< < <4  ,G G G@I I I.O O O
L L L< < <0 0 0 0 0r<   r|  c              #      K   t          | d          r| j        sdV  dS dV  | j                                        }d| _        |                                  t          || j        d           dS )zIChecks that sorted indices property is retained through an operation
    has_sorted_indicesNFz'Expected sorted indices, found unsorted)r  r  r  r,  sort_indicesr   )rg  r  s     r:   check_remains_sortedr  B  s       1*++ 13G 	EEEinnG ANNw	@B B B B Br<   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )_TestFancyIndexingAssignc                     |                      t          j        ddg                    }t          t          t
          t          f|j        dd           t          t          t
          t          f|j        dd           d S )Nr  r  re   r  )r   rJ   r   r  r  r  r  r  r  s     r:   test_bad_index_assignz._TestFancyIndexingAssign.test_bad_index_assignR  sc    NN28QF++,,z:y91=%QRSSSz:y91=*VWXXXXXr<   c                 l    d\   fd}dt          d dd          ft          j        d          t          dd          ft          d	d          t          dd          ffD ]\  }} |||           t          j        d          t          j        d          fd
fD ]\  }} |||           d S )Nr  c                                         f          }                    t          j        f                    }t	          j                    5  t	          j        dt          t                     d|| |f<   t          |          5  d|| |f<   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          |                                |           d S Nr(  r   )r   r  rJ   r   r)  r*  r
  r  r)   r  r   r   r  r  rQ   rR   r  r  r   s       r:   _test_set_slicezI_TestFancyIndexingAssign.test_fancy_indexing_set.<locals>._test_set_sliceZ  sN   1v&&ARXq!f--..A(**    '$8OPPP!Q$)!,,    AadG                                                          
 &aiikk155555s6   7B7B B7 B$	$B7'B$	(B77B;>B;r  rV   r  r   r  rE  re   )r[  rr  )r*  rJ   r   r   r  r  r  r  r  s   `   @@r:   test_fancy_indexing_setz0_TestFancyIndexingAssign.test_fancy_indexing_setW  s    1	6 	6 	6 	6 	6 	6 	6  tR!3!34illE!RLL1Aqkk5B<<02 	" 	"DAq OAq!!!!illBIaLL13IJ 	" 	"DAqOAq!!!!	" 	"r<   c                 `      fd}t           D ]} |t          j        |                      d S )Nc                                         d|           }t          j                    5  t          j        dt          t
                     |                     d          |ddgddgf<   t          |                                |                     d          dz             |                     d          |ddddf<   t          |                                |                     d          dz             |                     d          |d	<   t          |                                |                     d          dz  |                     d          z              d d d            d S # 1 swxY w Y   d S )
Nr  r   r(  r   r   re   r  r  r  )	r   r)  r*  r
  r  r)   rV  r   r=  r  s     r:   r  zD_TestFancyIndexingAssign.test_fancy_assignment_dtypes.<locals>.checkl  s   vU33A(** G G'$8OPPP!&A1Q%1+QUUWWejjmmAo666"ZZ__!A#ac'
QUUWWejjmmAo666C#QUUWWejjmmAo

1&EFFFG G G G G G G G G G G G G G G G G Gs   D3E,,E03E0r  r  s   `  r:   test_fancy_assignment_dtypesz5_TestFancyIndexingAssign.test_fancy_assignment_dtypesk  sW    		G 		G 		G 		G 		G & 	# 	#EE"(5//""""	# 	#r<   c                    |                      d          }|                      t          dd                    }g d}d}t          |          }t          j                    5  t          j        dt          t                     t          |          5  ||df         j	        |d|f<   ||df         j	        |d|f<   ||df         j	        |d|f<   d d d            n# 1 swxY w Y   t          |                                |j	                                                   |                      d	          }t          |          5  d
dg|dddf<   d d d            n# 1 swxY w Y   t          |                                g dg dg           |                      d          }t          |          5  d
gdgg|dddf<   d d d            n# 1 swxY w Y   t          |                                ddgdd
gddgg           |                      d          }|                     t          j        d                    }t          |          5  ||fD ]}g d|g dg df<   	 d d d            n# 1 swxY w Y   t          |                                |           |                      d          }t          |          5  g d|d<   d d d            n# 1 swxY w Y   t          |                                d           |                     t          j        d                    }g d|d<   t          |                                |           d d d            d S # 1 swxY w Y   d S )Nrm  r   r  r5  r(  r   r   re   r  rV   r  rf  )r   rV   r  r  r`  r  r  )r  r5  r   )r   r'   r   r)  r*  r
  r  r)   r  r?  r   r   r  rJ   r   r   r=  )r   rQ   rR   i0i1i2r   s          r:   test_sequence_assignmentz1_TestFancyIndexingAssign.test_sequence_assignmentz  s   NN5!!NN3q88$$WW2YY$&& #	/ #	/#Hd4KLLL%a(( $ $BqD')!B$BqD')!B$BqD')!B$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ qyy{{ACKKMM::: u%%A%a(( # #r7!AaC%# # # # # # # # # # # # # # #qyy{{YYY,DEEE u%%A%a(( ' 'D";!A#a%' ' ' ' ' ' ' ' ' ' ' ' ' ' 'qyy{{aVaWq"g,FGGG u%%ARXe__--A%a(( 2 2Q 2 2A*1''Agggwww&''22 2 2 2 2 2 2 2 2 2 2 2 2 2 2 qyy{{A... v&&A%a(( 4 4*3))&'4 4 4 4 4 4 4 4 4 4 4 4 4 4 4+++RXf--..A&/iiA"#qyy{{A...G#	/ #	/ #	/ #	/ #	/ #	/ #	/ #	/ #	/ #	/ #	/ #	/ #	/ #	/ #	/ #	/ #	/ #	/s   !0M=CMC	M!C	"A MEME	M!E	"AM1G?MG	MG	A9MI."M.I2	2M5I2	6A	M?KMK	MK	A5MM!$M!c                    |                      t          d                              dd                    }d|dd d f<   d|d d df<   d|d<   |                     |          }t	          j        g d          }d	||<   t          t          |          |           t	          j        g t          
          }d	||<   t          t          |          |           d	|||f<   t          t          |          |           t	          j        g dt          
          d d d f         }d	|||f<   t          t          |          |           d	|||f<   t          t          |          |           d S )Nr  r  rV   r   r   re   r  r  *   r   r  r  r  s        r:   test_fancy_assign_emptyz0_TestFancyIndexingAssign.test_fancy_assign_empty  sa   LL++Ab1122!AAA#!!!A##NN1H88899!WQZZ###HRs###!WQZZ###!A#WQZZ###H___C00048!A#WQZZ###!A#WQZZ#####r<   N)r   r   r   r  r  r  r  r  rW   r<   r:   r  r  Q  sc        Y Y Y
" " "(# # #+/ +/ +/Z$ $ $ $ $r<   r  c                       e Zd Zd ZdS )_TestFancyMultidimc           
      ,   t          j        dgdgdgg          t          j        g d          ft          j        dgdgdgg          t          j        g dg          ft          j        g dg          t          j        dgdgdgg          ft          j        g d          t          j        dgdgdgg          ft          j        g dg dg          t          j        g dg dg          fg}t           j                            d	           |                     t           j                            d
d                    }|                     |          }|j        dk    rW|                    t          j        dgdgdggdgdgdggg          t          j        d
gdgdggdgdgdggg          f           |D ]S\  }}|||f         }|||f         }t          t          |          |           |d
z   }|dz   }	t          t          |j        ||f           t          t          |j        ||	f           |j        dk    rYt          t          |j        ||gt          d           f           t          t          |j        t          d           ||gf           t          |||gd d f         
                                |||gd d f                    t          |d d ||gf         
                                |d d ||gf                    Ud S )Nr   re   r   r   r  re   r  r  r  r   r   re   r   r   rc   r  r  rb  r   )rJ   r   r   r  r  r@  r   r   rL   r   r   r  r  r  r*  )
r   IandJr  r  r  r  r  DIJr  r  s
             r:   test_fancy_indexing_ndarrayz._TestFancyMultidim.test_fancy_indexing_ndarray  s   XsQC!o&&(;(;<XsQC!o&&)))(=(=>Xyyyk""BHqcA3_$=$=>Xiii  "(QC!qc?";";<Xyyy))),--rxIII8N/O/OP
 		tLL1--..NN1 8uLLQC!qc?aS1#sO<==QC!qc?aS1#sO<==?  
  	C 	CDAqAqD'CAqD'Cs+++EEEE*ameQZ@@@*amaZ@@@x5  j!-1a&%++9NOOOj!-%++1v9NOOOOQ1vqqqy\1133Q1vqqqy\BBBQqqq1a&y\1133Qqqq1a&y\BBBB!	C 	Cr<   N)r   r   r   r  rW   r<   r:   r  r    s(        $C $C $C $C $Cr<   r  c                   &    e Zd Zd Zd Zd Zd ZdS )_TestFancyMultidimAssignc                    t           j                            d           |                     t           j                            dd                    }|                     |          }t           j                            dd          }t          j        g dg dg          }t          j        g dg d	g          }t          |          5  ||||f<   d d d            n# 1 swxY w Y   ||||f<   t          |	                                |           |dz   }|dz   }g d}t          |          5  ||||f<   d d d            n# 1 swxY w Y   ||||f<   t          |	                                |           t          |          5  d|||f<   d d d            n# 1 swxY w Y   d|||f<   t          |	                                |           t          t          |j        ||f|           t          t          |j        ||f|           d S )
Nrc   r  r  re   r   r  r  r  r  )rJ   r   r  r  r@  r   r   r  r   r   r  r  r  	r   r  r  rg  r  r  r  r  r   s	            r:   test_fancy_assign_ndarrayz2_TestFancyMultidimAssign.test_fancy_assign_ndarray  s   
	tLL1--..NN1INN1a  Hiii+,,Hiii+,,!!$$ 	 	AacF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	!A#QYY[[!$$$AAII!!$$ 	 	AacF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	!A#QYY[[!$$$!!$$ 	 	AacF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	!A#QYY[[!$$$j!-%A>>>j!-!EA>>>>>s6   CC#&C#0EEEFF"Fc                      d\   fd}t          j        ddgddgg          ddgft          j        ddg          ddgddggfg dg d	gg d
g dgffD ]\  }} |||           d S )Nr  c                                         f          }t          |          5  t          j                    5  t          j        dt
          t                     d|| |f<   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y                       t          j	        f                    }d|| |f<   t          |                                |           d S r  )r   r  r)  r*  r
  r  r)   r  rJ   r   r   r   r  s       r:   r  zR_TestFancyMultidimAssign.test_fancy_indexing_multidim_set.<locals>._test_set_slice  sM   1v&&A%a((  (*A*C*C  '$8OPPP!Q$                              RXq!f--..AAadG%aiikk155555s4   B(A0$B0A4	4B7A4	8BBBr   re   r   r   r  r  r   re   r  )r   r  r   )r  r   re   )rJ   r   r  s   `   @@r:    test_fancy_indexing_multidim_setz9_TestFancyMultidimAssign.test_fancy_indexing_multidim_set	  s    1	6 	6 	6 	6 	6 	6 	6 hAA/001a&91a&))QFQF+;<#))YYY/)))YYY1GHJ 	" 	"DAq OAq!!!!	" 	"r<   c                    t           j                            d           |                     t           j                            dd                    }|                     |          }t           j                            dd          }g dg dg}g dg d	g}||||f<   ||||f<   t          |                                |           d
 |D             }d |D             }g d}||||f<   ||||f<   t          |                                |           d|||f<   d|||f<   t          |                                |           t          t          |j
        ||f|           t          t          |j
        ||f|           d S )Nrc   r  r  re   r   r  r  r  r  c                 &    g | ]}d  |D             S )c                     g | ]}|d z   S r  rW   r&  iis     r:   r  zN_TestFancyMultidimAssign.test_fancy_assign_list.<locals>.<listcomp>.<listcomp>(      %%%R"q&%%%r<   rW   )r&  r  s     r:   r  zC_TestFancyMultidimAssign.test_fancy_assign_list.<locals>.<listcomp>(  '    111!%%1%%%111r<   c                 &    g | ]}d  |D             S )c                     g | ]}|d z   S r  rW   r&  jjs     r:   r  zN_TestFancyMultidimAssign.test_fancy_assign_list.<locals>.<listcomp>.<listcomp>)  r  r<   rW   )r&  r  s     r:   r  zC_TestFancyMultidimAssign.test_fancy_assign_list.<locals>.<listcomp>)  r  r<   )rJ   r   r  r  r@  r   r   r   r  r  r  r  s	            r:   test_fancy_assign_listz/_TestFancyMultidimAssign.test_fancy_assign_list  s   
	tLL1--..NN1INN1a  YY			"YY			"!A#!A#QYY[[!$$$11q11111q111II!A#!A#QYY[[!$$$!A#!A#QYY[[!$$$j!-%A>>>j!-!EA>>>>>r<   c                    t           j                            d           |                     t           j                            dd                    }|                     |          }g d}g d}d |D             }d |D             }g d}t          j        d          d d d f         }t          t          |j	        |t          d           f|           t          t          |j	        t          d           |f|           d S )	Nrc   r  r  )r   re   r   r   r  re   )r  r   r   re   r   r   c                     g | ]}|d z   S r  rW   r  s     r:   r  zD_TestFancyMultidimAssign.test_fancy_assign_slice.<locals>.<listcomp>@      $$$Ba$$$r<   c                     g | ]}|d z   S r  rW   r  s     r:   r  zD_TestFancyMultidimAssign.test_fancy_assign_slice.<locals>.<listcomp>A  r  r<   )r   re   r   r  r  r   r  )rJ   r   r  r  r@  r   r   r  r  r  r*  )	r   r  r  r  r  r  r  C1C2s	            r:   test_fancy_assign_slicez0_TestFancyMultidimAssign.test_fancy_assign_slice7  s    
	tLL1--..NN1$$!$$$$$!$$$"""Yq\\!!!T'"j!-%t1ErJJJj!-%++u1ErJJJJJr<   N)r   r   r   r  r  r  r  rW   r<   r:   r  r    sV        ? ? ?B" " ""? ? ?:K K K K Kr<   r  c                   d    e Zd ZdZd Zej                            d          d             Zd Z	dS )_TestArithmeticz&
    Test real/complex arithmetic
    c                 2   t          g dg dg dg dgd          }t          g dg dg dg d	gd
          }t          g dg dg dg dgd          |_        t          |dz                      d          d|z             t          |j        dz                      d          d|j        z             t          |j        dz                      d          d|j        z             |                     |          }|                     |          }||||fS )N)g      g      @r         @r   r   )g      	@g     g      ?r   r   r   )r   r         r  r   r   )r   r   g      @r   r   r   r   )g      ?r   r   r   r  g      @)g     ,@g      r   r   r  r   )r   g      @r   r   r   r   )g     2@      r   r   r   r   r   )g      ?r   r   r   r   g      )r       @r   r   r   g      @)r   r  r   r   r   r   )r  r   r   r   r   r      r[   )r   r  r   rt   r  r   )r   _TestArithmetic__A_TestArithmetic__B_TestArithmetic__Asp_TestArithmetic__Bsps        r:   __arith_initz_TestArithmetic.__arith_initM  sp   ///9993330002 4=> > ...999///5557 9EF F 444;;;5557779 ;DE E 	CF??733BsF;;;CHRK//88CHEEECHRK//88CHEEEs##s##C%%r<   r  c                 l   |                                  \  }}}}t          ||z                                   ||z              t          D ]}t	          j        d          5  |                    |          }d d d            n# 1 swxY w Y   |                     |          }t          D ]}t	          j        |t          j	                  sHt	          j        d          5  |j
                            |          }	d d d            n# 1 swxY w Y   n|                    |          }	|                     |	          }
||	z   }||
z   }t          |j        |j                   t          |                                |           t          ||	z   |           t          ||
z   |           t	          j        d          ||fv r||	z
  }||
z
  }t          |j        |j                   t          |                                |           t          ||	z
  |           t          ||
z
  |           d S )Nr(  rF  r  )_TestArithmetic__arith_initr   r   r-   rJ   rJ  rt   r   rl   r|  r  r   r?   r   r  r  r  r  r@   rQ   r,  rA   rR   r  D1S1s                r:   test_add_subz_TestArithmetic.test_add_sube  s   !%!2!2!4!4S% 	U]##%%sSy	
 	
 	

 "  	/  	/AX... " "JJqMM" " " " " " " " " " " " " " "..##C% / /}Q(:;; &X666 / /HOOA../ / / / / / / / / / / / / / / 

1AnnQ'' U3YRXbh///"2::<<444"372..."1s72... 8F##1v--U3YRXbh///"2::<<444"372..."1s72....9/	 	/  	/s$   !BB	
B	!DDDc           
         |                                  \  }}}}t          ||j        z                                  ||j        z             t          D ]k}t          j        d          5  |                    |          }d d d            n# 1 swxY w Y   |                     |          }t          D ]}t          j	        |t
          j
                  r|                    |          }	nGt          j        d          5  |j                            |          }	d d d            n# 1 swxY w Y   |                     |	          }
||	j        z  }||
j        z  }t          |                                |dt          |                                          z             t          |j        |j                   
md S )Nr(  rF  g+=)atol)r  r   r?  r   r-   rJ   rJ  rt   r   rl   r|  r  r   r  rZ   r   r?   r  s                r:   test_muz_TestArithmetic.test_mu  s   !%!2!2!4!4S% 	EEGO4466#%K	) 	) 	) " 	0 	0AX... " "JJqMM" " " " " " " " " " " " " " "..##C% 0 0=B$677 /

1AAX666 / /HOOA../ / / / / / / / / / / / / / /nnQ''W35[

b%*3r77;;==%8: : : :RXbh////0		0 	0s$   +BB	B	D((D,/D,N)
r   r   r   r   r  r  r  r_  r  r  rW   r<   r:   r  r  I  si         & & &0 [2)/ )/ )/V0 0 0 0 0r<   r  c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	_TestMinMaxc                    t           j        t           j        t           j        t           j        t           j        fD ]}t          j        d|                              dd          }|                     |          }t          |
                                d           t          |                                d           t          |
                                j        |           t          |                                j        |           |dz  }|                     |          }t          |
                                d           t          |                                d           |dz  }|                     |          }t          |
                                d	           t          |                                d           |                     t          j        d
d                              dd                    }t          |
                                d
           t          |
                                j        |j                   t          |
                    d          d
           | }t          |                                d           t          |                    d          d           |                     t          j        d                    }t          |
                                d           t          |                                d           t          |                                j        |j                   t          j        dt                                        dd          }d|ddd d f<   |                     |          }t          |
                                d           t          |                                d           t          j        d          t          j        d          t          j        d          fD ]K}|                     |          }t          t           |j
                   t          t           |j                   Ld S )Nr  r   r  r  r      r   iir   rV   r   Texplicitr)  re   r  r   rV   rV   r   )rJ   r   r   r[   rf   r   r   r   r   r   rn   rZ   r?   r   r  r  r  )r   r?   r  rg  r  s        r:   test_minmaxz_TestMinMax.test_minmax  sq   j"*bh"-P 	% 	%E	"E***221Q77Aq!!A!$$$"%%%......GAq!!A#&&&!$$$FAq!!A#&&&!$$$$ NN29Q++33Aq99::QUUWWa   QUUWW]AG,,,QUUDU))1---BQUUWWb!!!QUUDU))2... NN28F++,,QUUWWa   QUUWWa   QUUWW]AG,,, Ib&&&..q33!A#qqq&	NN1QUUWWa   QUUWWb!!! (6""BHW$5$5rx7H7HI 	- 	-Aq!!A*ae,,,*ae,,,,	- 	-r<   c                    | j          }t          j        d                              dd          }d|dd d f<   d|d d df<   d|d<   d|d	<   |                     |          }dd
g}ddg}||z   D ]}t          |                    |                                          |                    ||                     t          |                    |                                          |                    ||                     |D ]}t          |                    |d                                          | 
                    g d                     t          j        |j        dk              r| 
                    g d          }n| 
                    g d          }t          |                    |d                                          |           |D ]}t          j        g d          }t          j        g d          }	| j         s*|                    d          }|	                    d          }	t          |                    |d                                          |           t          |                    |d                                          |	           t          j        dd                              dd          }|                     |          }||z   D ]}t          |                    |                                          |                    ||                     t          |                    |                                          |                    ||                     t          |                    d          |                    d|                     |D ]}|dd d f         }|dd d f         }	| j         s|d dd d f         }|d dd d f         }	t          |                    |d                                          |           t          |                    |d                                          |	           |D ]}|d d df         }|d d df         }	| j         s|d d dd f         }|d d dd f         }	t          |                    |d                                          |           t          |                    |d                                          |	           | 
                    t          j        d                    }|                     |          }||z   D ]}t          |                    |d                                          |                    |                     t          |                    |d                                          |                    |                     | 
                    t          j        d                    }|                     |          }ddg}
t          t!          j        ||
                    }t          t!          j        ||
                    }|D ]?\  }}t%          t&          |j        ||           t%          t&          |j        ||           @|D ]\  }}t          |                    ||                                          |                    |                     t          |                    ||                                          |                    |                     | 
                    t          j        d                    }|                     |          }|D ]?\  }}t%          t&          |j        ||           t%          t&          |j        ||           @|D ]\  }}t          |                    ||                                          |                    |                     t          |                    ||                                          |                    |                     d S )Nr  r  rV   r   r   r  r`  r   r  rE  rd  ro  Tre  r  )
r  )   r  +   ,   -   .   /   0   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   r   r  r  r  3   r<  )rV   r  r	  Fr
  )r  rJ   r   r   r   r   rZ   r   rn   r   r  anyr  r   r   rs  rG  rH  r  r  )r   ra  r  rg  	axes_evenaxes_oddre  rq  expected_maxexpected_minexplicit_valueseven_explicit_pairsodd_explicit_pairsexs                 r:   test_minmax_axisz_TestMinMax.test_minmax_axis  sH   %%IbMM!!!R((!QQQ$!!!Q$$$NN1G	r7y( 	 	D4  ((**AEEtdE,K,K   4  ((**AEEtdE,K,K     
	N 
	ND4$//7799DDDEE   vafk"" J<<(H(H(HII<<(H(H(HIID488@@BBHMMMM 	R 	RD8$6$6$677L8$6$6$677L% <+33F;;+33F;;D488@@BBLQQQD488@@BBLQQQQ Ia$$R++NN1y( 	 	D4  ((**AEEtdE,K,K   4  ((**AEEtdE,K,K    	QUUU''FT)J)JKKK 	R 	RDRU8LQT7L% - r111~ q!!!}D488@@BBLQQQD488@@BBLQQQQ 	R 	RDQQQU8LQQQT7L% - B~ At}D488@@BBLQQQD488@@BBLQQQQ LL'**++NN1( 	V 	VDD488@@BBAEEtEDTDTUUUD488@@BBAEEtEDTDTUUUU LL'**++NN1-"9#4Y#P#PQQ!)"3Ho"N"NOO+ 	E 	EHD"*ae$DDDD*ae$DDDDD* 	T 	THD"D266>>@@!%%T%BRBRSSSD266>>@@!%%T%BRBRSSSSLL'**++NN1* 	E 	EHD"*ae$DDDD*ae$DDDDD+ 	T 	THD"D266>>@@!%%T%BRBRSSSD266>>@@!%%T%BRBRSSSS	T 	Tr<   c                    t          g dg dg dg          }|                     |          }| j        rt          nt          j        }| j        rt          nt          }t          |	                                          sJ t          |	                    d          |          sJ t          |	                    d          |          sJ t          |                                          sJ t          |                    d          |          sJ t          |                    d          |          sJ t          |                                          sJ t          |                    d          |          sJ t          |                    d          |          sJ t          |                                          sJ t          |                    d          |          sJ t          |                    d          |          sJ t          |                                          sJ t          |                    d          |          sJ t          |                    d          |          sJ t          |                                          sJ t          |                    d          |          sJ t          |                    d          |          sJ d S rj  )r   r   r  r
   rJ   r1   r*   r+   r.   rn   rI   rZ   nanminnanmaxargminargmax)r   r   r   rk  spmatrix_or_sparrays        r:   test_minmax_container_typez&_TestMinMax.test_minmax_container_typeD  s   YYYZZZZ! " " s##%)%7F''RY)-);IggEIIKK(((((%)))++-@AAAAA%)))++-@AAAAAEIIKK(((((%)))++-@AAAAA%)))++-@AAAAAELLNN+++++%,,A,..0CDDDDD%,,A,..0CDDDDDELLNN+++++%,,A,..0CDDDDD%,,A,..0CDDDDDELLNN+++++%,,A,..@@@@@%,,A,..@@@@@ELLNN+++++%,,A,..@@@@@%,,A,..@@@@@@@r<   c                 f   |                      t          j        d                              dd          t                    }d|dd d f<   d|d d df<   d|d<   d	|d
<   t          j        |d<   t          j        |d<   |                     |          }|                                }t          j        |          sJ |t          j        |          k    sJ |	                                }t          j        |          sJ |t          j	        |          k    sJ |	                    d          }t          j        |          sJ |t          j	        |d          k    sJ g d}|D ]}|                    |          }t          |                                t          j        ||                     t          || j                  sJ |	                    |          }t          |                                t          j	        ||                     t          || j                  sJ d S )Nr  r  rV   r   r   r   r  r`  r   r  rU  )r   r  r<  rd  )rE  r   r   r   )r  rJ   r   r   r  r-  r   r$  r>  r#  r   r   rI   r  )	r   r  rg  X_nan_maximumX_nan_minimumro  re  X_nan_maximaX_nan_minimas	            r:   test_nanminmaxz_TestMinMax.test_nanminmaxd  s"   LL2..q44ELBB!QQQ$!!!Q$$$&$&$NN1

{=)))))	!,,,,

{=)))))	!,,,,f--{=)))))	!& 9 9 99999~~ 	@ 	@D888..LL0022BIad4K4K4KLLLlD,>?????888..LL0022BIad4K4K4KLLLlD,>??????	@ 	@r<   c                 ~   t          g dg dg dg          }|                     |          }dD ]}t          ||          }t          ||          }t          t          |d           t          t
          |d           t          t          |dd	           t           |d
           |d
                     d S )Nr5  r6  r7  )rn   rZ   r   rd  rK  r   rL  r<  )r   r   r{   r  r  r  r   )r   r   r   fnamedatfuncr   s         r:   test_minmax_invalid_paramsz&_TestMinMax.test_minmax_invalid_params  s    YYYZZZZ! " " s### 	B 	BEc5))G5%((D*d3333)T4444*d::::6***GG,@,@,@AAAA	B 	Br<   c                 j   ddl m} t          g dg dg dg          }|                     |          }t	          ||j                  rjt          t          j        |          t          j        |                     t          t          j	        |          t          j	        |                     d S d S )Nr   _datar5  r6  r7  )
scipy.sparser5  r   r   rI   _minmax_mixinr   rJ   rn   rZ   )r   r5  r   r   s       r:   test_numpy_minmaxz_TestMinMax.test_numpy_minmax  s     	'&&&&&YYYZZZZ! " " s## eU011 	;rve}}bfSkk:::rve}}bfSkk:::::	; 	;r<   c                    ddl m} t          j        g dg dg dg dg dg          }|                                }t          j        dd	gd
dgg          }t          j        dd	gd
dgg          }t          j        g dg dg dg          }|||||fD ]}|                     |          }|                     |          }t          ||j                  sCt          |
                                t          j
        |                     t          |                                t          j        |                     t          |
                    d          t          j
        |d                     t          |                    d          t          j        |d                     t          |
                    d          t          j
        |d                     t          |                    d          t          j        |d                     |                     |                     |                    }t          |
                    d          d           t          | 
                    d          d           t          |                    d          d           t          |                     d          d           |                     t          j        d                    }	|                     t          j        d                    }
ddg}t          j        |	|
gg d|          D ]1\  }}}||j        |         dk    rt!          j        t$          d          5  |
                    ||           d d d            n# 1 swxY w Y   t!          j        t$          d          5  |                    ||           d d d            n# 1 swxY w Y   | j        rt          j        d          }nt          j        |dk    rdnd          }t          |                    ||          |           t          |
                    ||          |           3|                     |          }t          |
                    dd          |                     g d                     t          |                    dd          |                     g d                     t          j        g d          }t          j        g d           }|j        d!k    rd|d"<   | j        s*|                    d#          }|                    d#          }t          |
                    dd          |           t          t/          |                    dd                    |           t          j        d$          }|                     |          }|j        dk    rLt          |                    d d          d           t          |
                    d d          d           d S t!          j        t$          d          5  |                    d d           d d d            n# 1 swxY w Y   t!          j        t$          d          5  |
                    d d           d d d            d S # 1 swxY w Y   d S )%Nr   r4  )r   r  re   r   )r   r   r   rE  )r   rE  r  r  r  )r   re   r   r   r  r   r  r  )r  r  r   )r  r  rV   )r   r  r  rd  r   Tr  re   r  r  Fr  zCannot applyrk  r  r<  r*  )r   r   r   r   )r   re   re   re   )r   re   r   r   r   )r   r   r   r   r   r  r   r  r  )r6  r5  rJ   r   r   r  r   rI   r7  r   r&  r%  r  rG  rH  r   r  r   r  r  r   rg  r   r   )r   r5  r  D2D3D4D5r  r   D6D7	explicitsre  r   rq  r  r  s                    r:   test_argmaxz_TestMinMax.test_argmax  sG   &&&&&&XMMNNLLLL
   \\^^X1v1v&''X1v1v&''Xyyy***iii899b"b"% 	C 	CAQA..##Cc5#677 ry||444ry||444++RYqq-A-A-ABBB++RYqq-A-A-ABBB++RYqq-A-A-ABBB++RYqq-A-A-ABBBB nnT\\"--..SZZZ..222sd]]D]111555SZZZ..222sd]]D]111555 ^^BHV,,--^^BHV,,--5M	&.BxyQQ 	K 	KMCr|sy!33]:^DDD 7 7JJD2J6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7]:^DDD 7 7JJD2J6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 % I!x{{HH!x$!))HHHSZZTBZ??JJJSZZTBZ??JJJJnnR  SZZQZ66\\\8R8RSSSSZZQZ66\\\8R8RSSSx00x007b== L! 	8'//77L'//77LSZZQZ66EEEWSZZQZ>>??NNN HVnnQ7a<<==qAAA==qAAAAA z@@@ 5 5

t
4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5z@@@ 5 5

t
4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5sH   >N""N&	)N&	O,,O0	3O0	$ZZZ.[[[N)
r   r   r   r  r!  r(  r.  r2  r8  rA  rW   r<   r:   r  r    s        /- /- /-bdT dT dTLA A A@@ @ @@B B B; ; ;$T5 T5 T5 T5 T5r<   r  c                       e Zd Zd ZdS )_TestGetNnzAxisc                 4   t          ddgddgddgg          }|                    t                    }|                     |          }t          j        t          j        f}| j        r|j        n|j	        }t          |                    d            |d                      t          |                                 |                       t          |                    d           |d                     t           |d          j        |           t          |                    d           |d                     t           |d          j        |           t          |                    d	           |d	                     t           |d	          j        |           t          |                    d
           |d
                     t           |d
          j        |           t          t          |d           d S )Nr   re   r   r  r8  r  rd  r   rE  r   )r   rt   r  r   rJ   r[   rf   r  rh  getnnzr   r=  r;   r?   r  r  )r   r   bool_datr   accepted_return_dtypesrE  s         r:   test_getnnz_axisz _TestGetNnzAxis.test_getnnz_axis  s   aVV!W   ::d##s##"$(BH!5(,(:L$$8<<T<22FF4E4E4EFFF8<<>>66884448<<Q<//Q@@@&&a...&(>???8<<Q<//Q@@@&&a...&(>???8<<R<00&&b///BBB&&b///')?@@@8<<R<00&&b///BBB&&b///')?@@@j&q111111r<   N)r   r   r   rH  rW   r<   r:   rC  rC    s#        2 2 2 2 2r<   rC  Tc                     |r| S d }t          | j                  }| j                                        D ](\  }}|                    d          r ||          ||<   )t	          | j        dz   | j        |          S )z
    Construct a class that either runs tests as usual (require=True),
    or each method skips if it encounters a common error.
    c                 F     t          j                    fd            }|S )Nc                      	  | i |S # t           t          t          t          t          f$ r t          j        d          w xY w)Nr8  )rm  r  r  r  r  r  r  )rN   r}   fcs     r:   r   z6_possibly_unimplemented.<locals>.wrap.<locals>.wrapper!  sY    A2q<B<<'+Y
"N4 A A A +&?@@@As	    8A)r   r   )rL  r   s   ` r:   wrapz%_possibly_unimplemented.<locals>.wrap   s=    _R  A A A A ! A Nr<   test_NotImplemented)dictrG   r  
startswithrV  r   	__bases__)r  requirerM  new_dictr   r   s         r:   _possibly_unimplementedrU    s    
  
		 		 		 %%,,,.. 	, 	,JD$w'' ,!%dCL#33M  	r<   c	                    t           t          t          |           t          t          t
          t          t          |          t          t          |          t          t          |          t          t          |          t          t          |o|          t          t          |o|          t          t          |          t          t          |          f}	i }
|	D ]`}|j        D ]V}|                    d          s|
                    |          }|"t#          d|j         d| d|j                   ||
|<   Wat'          d|	i           S )z
    Construct a base class, optionally converting some of the tests in
    the suite to check that the feature is not implemented.
    rN  NzTest class z overloads test z defined in TestBase)r
  rU  r  r  r  r  r  ra  r|  r  r  r  r  rC  rG   rQ  getr  r   rV  )getsetslicingslicing_assignfancy_indexingfancy_assignfancy_multidim_indexingfancy_multidim_assignminmaxnnz_axisbasesnamesr  r   old_clss                 r:   sparse_test_classre  4  ss    $[&99#$\7;;$%7HH$%7HH$%=%13 3$%7%3%O8OQ Q$%=%:%K|M M$[&99$_h??AE$ E  L 	 	D??7++ iiooG"  "Is| "I "I$("I "I6=6F"I "I J J JE$KK	 
E2&&&r<   c                        e Zd Zd Zd Zd ZdS )_CompressedMixinc                 H   |                      |          }d|_        |                                 |j        sJ t          |          5  |                    d           d d d            n# 1 swxY w Y   t          j        |                                dk              sJ d S )NFr  )r   r  r  r  r  rJ   allr  r  s      r:   _test_setdiag_sortedz%_CompressedMixin._test_setdiag_sorteda  s    NN1$	####!!$$ 	 	IIaLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	vajjlla'(((((((s   	A++A/2A/c                     d}t          j        d|dz             }t           j        g d         |z  }d}d|d| d f<   g d}|                     ||f||f          }|                     |          S )N  r   r   re   r   r   r  r  r   rJ   r   c_r  rj  )r   r  valsdiagsN_newr  r  s          r:   test_setdiag_noconvertz'_CompressedMixin.test_setdiag_noconvertl  s     yAE""jjj!D( a%j**w/1v>>((+++r<   c                     d}t          j        d|dz             }t           j        g d         |z  }d|ddd f<   g d}|                     ||f||f          }|                     |          S )Nrl  r   rm  r  r  r  rn  ro  )r   r  rq  rr  r  r  s         r:   test_setdiag_cooconvertz(_CompressedMixin.test_setdiag_cooconvert}  s    
 yAE""jjj!D(ae**w/1v>>((+++r<   N)r   r   r   rj  rt  rv  rW   r<   r:   rg  rg  `  sA        	) 	) 	), , ,", , , , ,r<   rg  c                       e Zd Zed             Zej        ej        ej        ej	        g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 )TestCSRc                     t          j                    5  t          j        dt          t                     t          |i |cd d d            S # 1 swxY w Y   d S Nr(  )r)  r*  r
  r  r)   r!   r  argsrB   s      r:   r   zTestCSR.spcreator      $&& 	. 	.#Hd4KLLLd-f--	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.   ,AAAc                    t          g dg dg dgd          }|                     |          }t          |j        g d           t	          |j        g d           t	          |j        g d           t          |j        d           t          |j	        d	           t	          |
                                |           d S )
N)r   r  r   r#  r  r  )r  r   re   r   r  r   r7  )r   r  r   r  r   r  r  r   rg  r   r   r   rS   rO  s      r:   test_constructor1zTestCSR.test_constructor1  s    9999999"$ $   ##!#(7773333;www///3:iii000SWQSZ&&&3;;==!,,,,,r<   c                 $   t          dd          }d|d<   |                     |          }t          |j        dg           t	          |j        dg           t	          |j        g d           t          |                                |           d S )Nr   r   r  r  r  r  )r   r   r   r   r   r   r   )r   r  r   r  r   r  r  r   r  s      r:   test_constructor2zTestCSR.test_constructor2  s    %#  ##!#(A3///3;s+++3:ooo666!#++--33333r<   c                 0   t          ddgddgddggd          }|                     |          }t          |j        g d           t	          |j        g d           t	          |j        g d           t          |                                |           d S )	Nr   r   re   r   r  r  r$  r  )r   r  r   r  r   r  r  r   r  s      r:   test_constructor3zTestCSR.test_constructor3  s    Aq6q6q6! !   ##!#(7773333;www///3:iii000!#++--33333r<   c                 x   t          g d          }t          g d          }t          g d          }t          ||f          }|                     ||fd          }t          t	          d                              dd          |                                           |                     dd	gd
d	gd
d	gfft          j                  }t          dd
gd
d	ggt          j                  }t          ||                                           |                     g dg dg dff          }|j	        dk    sJ d S )Nre   r   r   r   r   r   r   r   re   r   re   r   r   r   r   r   r   re   re   re   re   r         @g      $@r        "@r  r  g      &@r         @      @r  rm  r  r  r              r   r   r   r   r   r   r   r   re   re   r   r   r   r   r   re   )
r   r	   r  r   r   r   r   rJ   uint64rg  )r   r  r  r  r'  r7  r]  s          r:   test_constructor4zTestCSR.test_constructor4  sK   5556655566 3 3 3 4 4 SI  $r5116"::--a33S[[]]CCC   9a.Aq6Aq62B!C29 UU	1~1v.bi@@@5#++--000   )))iii-C!DEEw!||||||r<   c                     t          g d          }t          g d          }t          g d          }|                     |||f          }t          |j        d           d S Nr   r   r   r   r   r  r   re   r  r  )r   r  r   r   r   r  r  r  r7  s        r:   test_constructor5zTestCSR.test_constructor5  g    yyy!!			""YYY  $!89939U+++++r<   c                     g d}g d}g d}|                      |||f          }t          |j        d           t          t	          j        |j        t          j                             d S r  )r  r   r   r   rJ   rl   r?   signedintegerr  s        r:   test_constructor6zTestCSR.test_constructor6  sn    ,,||  $!89939e,,,ci)9::;;;;;r<   c                    t          d          dz   }t          g dt          j                  }t          g dt          j                  }|                     |||fd          }t          g dg d	g d
gd          }t          j        | j        rt          j        nt          j                  }t          |j	        j        |           t          |j
        j        |           t          |                                |           d S )Nr   r   )r   re   r   r   r   re   r   r   re   r  r   r`  rn  r5  r  )r  r   r   r  )r   r   rJ   rf   r  r?   r  r[   r   r  r  r   r   )r   r  r  ptrrN   rS   expected_dtypes          r:   test_constructor_smallcolz!TestCSR.test_constructor_smallcol  s    ayy1}&&&bh777LLL111c3/v>>9999999"$ $
 d.@"N"((bhOOQX^^444QY_n555199;;*****r<   c           	      T   t          d          dz   }t          j        t          j                  j        dz   }t          ddd||dz   |dz   gt          j                  }t          g dt          j                  }|                     |||f          }t          |j	        j
        t          j
        t          j                             t          |j        j
        t          j
        t          j                             t          |j        dt	          |          dz   f           d S )	Nr   r   rq  r   re   r   r  r   )r   rJ   rY   r[   rZ   r   rf   r  r   r  r?   r  r   r   )r   r  larger  r  rN   s         r:   test_constructor_largecolz!TestCSR.test_constructor_largecol  s    ayy1}""&,Q1eU1WeAg6bhGGGLLL111c3/00QX^RXbh%7%7888QY_bhrx&8&899917QC
O44444r<   c                    t          d          }t          g d          }t          g d          }|                     |||fd          }|                                }|                                 t          |j        g d           t          |                                |                                           d S )Nr  r  re   r   r  r  r   r   r  re   rV   rn  r   re   r  r  r  )r   r   r  r,  r  r   r  r   r   r  r  r  rN  rO  s         r:   test_sort_indiceszTestCSR.test_sort_indices  s    ayy((yyy!!  $!8 GGhhjj3;7773;;==#++--88888r<   c                    t          g d          }t          g d          }t          g d          }|                     |||fd          }|                                }|                                 t	          |j        d           t	          |j        g d           t	          |                                |                                           d S )Nr   r   r   r   re   r   r   r   r   re   r   r  r  r   r  r  r   r   r  r  rn  r   r  )r   r  r,  eliminate_zerosr   rg  r  r   r  s         r:   test_eliminate_zeroszTestCSR.test_eliminate_zeros      ---..00011yyy!!  $!8 GGhhjj37A&&&38III...3;;==#++--88888r<   c           	      >   |                      t          j        d                              dd          dz            }dD ]}t	          t          | j        |          d            t          ||                      }t	          |j        |j                   t          |j
        |j
                   t          |j        |j                   t          |                                 t          t          |          |                                                     d S )Nr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  T)r  rJ   r   r   r   r  r   r{   r   r   r  r  r   r   rg  r  r  s       r:   test_ufuncszTestCSR.test_ufuncs      ry}}44Q::S@AAJ 	J 	JA Q//666AB"(+++qy"*555qx333rzz||^WR^^AIIKK-H-HIIII	J 	Jr<   c                    t          d          }t          g d          }t          g d          }|                     |||fd          }t          d          }t          g d          }t          g d          }|                     |||fd          }t          ||z                                   |                                |                                z              d S )	Nr  r  r  r  rn  r   r  r   r  r  re   r  r   re   r   )r   r   r  r   r   r  s         r:   test_unsorted_arithmeticz TestCSR.test_unsorted_arithmetic      ayy((yyy!!  $!8 GGayy***++yyy!!  $!8 GGcCi((**CKKMMCKKMM,IJJJJJr<   c                    t          j        dgdgdgg          }t          j        g d          }t           j                            d           |                     t           j                            dd                    }|                     |          }|||f         }t          |          r|                                }t          ||||f                    d S Nr   re   r   r  rc   r  r  
rJ   r   r   r  r  r@  r   r(   r   r   r   r  r  r  r  r  s         r:   test_fancy_indexing_broadcastz%TestCSR.test_fancy_indexing_broadcast#      HqcA3_%%HYYY
	tLL1--..NN1!fC== 	 ++--CS!AaC&!!!!!r<   c                 n   t          j        ddg          }t          j        ddg          }t          j        ddg          }t          j        ddg          }|                     |||f                                          }t	          d|j                   t          |j        t                    sJ |                     |||f                                          }t	          d|j                   |                                 t	          d|j                   t          |j
        |           |                     |||f                                          }d|_        t	          d|j                   t          |j
        |           |                                 t          |j
        |           dS )z@Ensure has_sorted_indices memoizes sorted state for sort_indicesr   r   re   TFN)rJ   r   r  r,  r   r  rI   r  r  r   r  )r   sorted_indsunsorted_indsr  r  r  s         r:   test_has_sorted_indiceszTestCSR.test_has_sorted_indices1  s   h1v&&!Q((xA1a&!!k6:;;@@BBT1/000!.55555mV<==BBDDUA0111 	
T1/00019k222mV<==BBDD#T1/00019m444 	
19m44444r<   c                 	   t          j        dg          t          j        dg          t          j        ddg          f}t          j        ddg          t          j        ddg          t          j        ddg          f}|                     |          }t          d|j                   |                     |                                          }t          d|j                   t          |j        t                    sJ |                                 t          d|j                   t          dt          |j
                             |                     |                                          }d|_        t          d|j                   t          dt          |j
                             |                                 t          dt          |j
                             d|_        |                                 t          dt          |j
                             t          d|j                   d|_        t          d|j                   |                     |j        |j
        |j        f          }t          d|j                   |                                 t          d|j                   |                     t          j        dg          t          j        dg          t          j        g d          f          }t          |j        d           t          j                    5  t          j        dt"          t$                     d|d	<   |dd
d
fxx         dz  cc<   d|d<   d
d
d
           n# 1 swxY w Y   t          d|j                   |                     |j        |j
        |j        f          }t          d|j                   |                     |          }|\  |_        |_
        |_        t          d|j                   t          dt          |j
                             |                     |          }|j         |\  |_        |_
        |_        t          d|j                   t          dt          |j
                             |                                 t          dt          |j
                             d
S )=Ensure has_canonical_format memoizes state for sum_duplicatesre   r   r   TF)r   r   r   r   r`  r(  r<  Nr  r   r  )rJ   r   r  r   has_canonical_formatr,  rI   r  sum_duplicatesr   r  r  r  r   r)  r*  r
  r  r)   )r   info_no_dupsinfo_with_dupsr  Mchecks        r:   test_has_canonical_formatz!TestCSR.test_has_canonical_formatM  sn    !rx}}bh1v6F6FG(Aq6**BHaV,<,<bh1v>N>NO|,,T11222~..3355UA2333!0$77777 	
T11222QAI''' ~..3355!%T11222QAI'''	QAI'''!&	QAI'''T11222 "'UA2333##QVQY$ABBT66777	T11222 !rx}}bh|||>T>TUVVQWf%%%$&& 	 	#Hd4KLLLAdGadGGGqLGGGAdG		 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	T11222##QVQY$ABBT66777 |,,&4#	18UA2333QAI''' |,,	&4#	18T11222QAI'''	QAI'''''s   6?NNNc                    t          j        dt           j                  }t          j        dt           j                  }t          j        d          }|                     |||fd          }|                     |||fd          }t          j        dt           j                  }|                     ||fd          }|                     ||fd          }|                     d          }	|                     d          }
t	          |j        j        t           j                   t	          |j        j        t           j                   t	          |j        j        t           j                   t	          |j        j        t           j                   t	          |	j        j        t           j                   t	          |
j        j        t           j                   |||||	|
fD ]}||z    d S )Nre   r   r   r   rn  r           r  )rJ   r   r[   r  r   r  r?   rf   r   r  r  rq  rN   rS   r'  r  r  r  r  r@   s               r:   test_scalar_idx_dtypezTestCSR.test_scalar_idx_dtype      !28,,,(1BH---x{{gv6lKKgv6jIIXfBH---bz>>bz<<|,,z**QX^RX...QX^RX...QX^RX...QX^RX...QX^RX...QX^RX... Q1a# 	 	AEEE	 	r<   c                     |                      g dg          }|                      g dg          }||z   j        dk    sJ |                    |          j        dk    sJ d S )Nr$  r   r   r   re   r   )r  rg  r  r   rN   rS   s      r:   test_binop_explicit_zerosz!TestCSR.test_binop_explicit_zeros  sq     			{++			{++A{azz!}} A%%%%%%r<   N)r   r   r   r  r   rJ   r  int_r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rW   r<   r:   rx  rx    sN       . . [. 8RWbj"-@K
- 
- 
-4 4 44 4 4  (, , ,< < <+ + +$5 5 59 9 9	9 	9 	9
J 
J 
J	K 	K 	K" " "5 5 58B( B( B(H  0& & & & &r<   rx  c                   $    e Zd Zed             ZdS )TestCSRMatrixc                     t          j                    5  t          j        dt          t                     t          |i |cd d d            S # 1 swxY w Y   d S rz  )r)  r*  r
  r  r)   r   r{  s      r:   r   zTestCSRMatrix.spcreator      $&& 	/ 	/#Hd4KLLLt.v..	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/r~  Nr   r   r   r  r   rW   r<   r:   r  r    -        / / [/ / /r<   r  c                      t           t          j                 } t          | t                    sJ | j        t           u sJ | j        t          j        fk    sJ d S r>   )r   rJ   r   rI   r   
__origin____args__rX  s    r:   test_spmatrix_subscriptabler    sU     Ffl+++++
****?rwj((((((r<   c                       e Zd Zed             Zej        ej        ej        ej	        g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 )TestCSCc                     t          j                    5  t          j        dt          t                     t          |i |cd d d            S # 1 swxY w Y   d S rz  )r)  r*  r
  r  r)   r    r{  s      r:   r   zTestCSC.spcreator  r}  r~  c                 t   t          g dg dg dgd          }|                     |          }t          |j        g d           t	          |j        g d           t	          |j        g d           t          |j        d           t          |j	        |j	                   t          |j
        d	           d S )
Nr   r   r   r   r  r   re   r   r   r  )r   re   r   r   )r   re   r   re   r  r  r6  )r   r  r   r  r   r  r  r   rg  r   r   r  s      r:   r  zTestCSC.test_constructor1  s    <<<|||<cBB  ##!#(9995553;yyy1113:kkk222SWQSYqw'''SZ&&&&&r<   c                     t          dd          }d|d<   |                     |          }t          |j        dg           t	          |j        dg           t	          |j        g d           d S )Nr  r  r  re   r  re   )r   r   r   r   r   r   r   )r   r  r   r  r   r  r  r  s      r:   r  zTestCSC.test_constructor2  sq    %#  ##!#(A3///3;s+++3:ooo66666r<   c                     t          ddgddgddggd          }|                     |          }t          |j        ddg           t	          |j        ddg           t	          |j        g d           d S )Nr   r   re   r  r5  )r   r  r   r  r   r  r  r  s      r:   r  zTestCSC.test_constructor3  s    Aq6Aq6Aq6*C00  ##!#(Aa51113;!u---3:ggg.....r<   c                    t          g d          }t          g d          }t          g d          }t          ||f          }|                     ||fd          }t          t	          d                              dd          |                                           |                     g dg d	g d
ff          }|j        dk    sJ d S )Nr  r  r  rm  r  r  r   r  r  r  re   )r   r	   r  r   r   r   r   rg  )r   r  r  r  r'  r6  s         r:   r  zTestCSC.test_constructor4  s    5556655566CCCDDSI  $r5116"::--a33S[[]]CCC   )))iii-C!DEEw!||||||r<   c                     t          g d          }t          g d          }t          g d          }|                     |||f          }t          |j        d           d S Nr  r  r  )r   r   )r   r  r   r   r   r  r  r  r6  s        r:   r  zTestCSC.test_constructor5  r  r<   c                     g d}g d}g d}|                      |||f          }t          |j        d           t          t	          j        |j        t          j                             d S r  )r  r   r   r   rJ   rl   r?   r  r  s        r:   r  zTestCSC.test_constructor6  sn    ,,||  $!89939U+++ci)9::;;;;;r<   c                    t          g d          }t          g d          }t          g d          }|                     |||fd          }|                                }|                                 t	          |j        d           t	          |j        g d           t	          |                                |                                           d S )Nr  r  r  rV   re   rn  r   r  )r   r  r,  r  r   rg  r  r   r  s         r:   r  zTestCSC.test_eliminate_zeros  r  r<   c                 h   t          d          }t          g d          }g d}|                     |||fd          }|                                }|                                 t          |j        g d           t          |                                |                                           d S )Nr  r  r  r  rn  r  )r   r   r  r,  r  r   r  r   )r   r  r  r  rN  rO  s         r:   r  zTestCSC.test_sort_indices  s    ayyOOO$$ii  $S!1 @@hhjj3;7773;;==#++--88888r<   c           	      >   |                      t          j        d                              dd          dz            }dD ]}t	          t          | j        |          d            t          ||                      }t	          |j        |j                   t          |j
        |j
                   t          |j        |j                   t          |                                 t          t          |          |                                                     d S )N   r  r   g      5@r  T)r  rJ   r   r   r   r  r   r{   r   r   r  r  r   r  s       r:   r  zTestCSC.test_ufuncs  r  r<   c                    t          d          }t          g d          }t          g d          }|                     |||fd          }t          d          }t          g d          }t          g d          }|                     |||fd          }t          ||z                                   |                                |                                z              d S )	Nr  r  r  r  rn  r   r  r  )r   r   r  r   r   r  s         r:   r  z TestCSC.test_unsorted_arithmetic'  r  r<   c                    t          j        dgdgdgg          }t          j        g d          }t           j                            d           |                     t           j                            dd                    }|                     |          }|||f         }t          |          r|                                }t          ||||f                    d S r  r  r  s         r:   r  z%TestCSC.test_fancy_indexing_broadcast2  r  r<   c                    t          j        dt           j                  }t          j        dt           j                  }t          j        d          }|                     |||fd          }|                     |||fd          }t          j        dt           j                  }|                     ||fd          }|                     ||fd          }|                     d          }	|                     d	          }
t          |j        j        t           j                   t          |j        j        t           j                   t          |j        j        t           j                   t          |j        j        t           j                   t          |	j        j        t           j                   t          |
j        j        t           j                   |||||	|
fD ]}||z    d S )
Nre   r   r   )r  r   rn  )r  r   r  r  r  )	rJ   r   r[   r  r  r   r  r?   rf   r  s               r:   r  zTestCSC.test_scalar_idx_dtype@  r  r<   N)r   r   r   r  r   rJ   r  r  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  rW   r<   r:   r  r    s        . . [. 8RWbj"-@K' ' '7 7 7/ / /  , , ,< < <	9 	9 	99 9 9
J 
J 
J	K 	K 	K" " "    r<   r  c                   $    e Zd Zed             ZdS )TestCSCMatrixc                     t          j                    5  t          j        dt          t                     t          |i |cd d d            S # 1 swxY w Y   d S rz  )r)  r*  r
  r  r)   r   r{  s      r:   r   zTestCSCMatrix.spcreator]  r  r~  Nr  rW   r<   r:   r   r   \  r  r<   r   c                   ^    e Zd ZeZej        ej        ej        gZ	d Z
d Zd Zd Zd Zd ZdS )r  c                     |                      d          }d|d<   d|d<   ||j        z  }||j                                        z  }t          |                                |                                           d S )N)rV   r  rV   rJ  r  r  r   )r  r?  r   r   r   )r   rQ   r  r  s       r:   	test_multzTestDOK.test_multk  sl    x(($$G199;;		44444r<   c                    |                      d          }d|d<   d|d<   |dz   }t          ddgddgddgg          }t          |                                |           |d	z   }|d	z   }t          |                                |           d S )
Nr  r<  r  r  rV   r   r  ry  )r   r   r   r   r0  s      r:   test_add_nonzerozTestDOK.test_add_nonzeros  s    NN5!!##FB7RHr2h/00199;;***FF199;;*****r<   c                 ,   |                      d          }d|d<   d|d<   t          |dz                                  |                                dz             t          |dz                                  |                                dz             d S Nr  r  r<  r  r  ry  r  r   r   r   r  s     r:   test_dok_divide_scalarzTestDOK.test_dok_divide_scalar  s}    NN5!!##AbD>>++QYY[[^<<<AaC==??AIIKKM:::::r<   c                    d\  }}|                      ||f          }d|d<   d|d<   d|d<   d|d	<   d
|d<   d|d<   t          |                                d d |dz
  f         t          |                     |                                }t          |                                d d |dz
  f         t          |                     ||}}|                                }t          |j        ||f           t          |                                |dz
  d d f         t          |                     |                                }t          |                                |dz
  d d f         t          |                     d S )N)r   r  r   rM  re   r  r   r^  r  r  r  rm  r   rU  )	r  r   r   r   r  r   r   r   r  )r   r  r  rN   r6  rS   r7  s          r:   test_convertzTestDOK.test_convert  sj   A1v&& ###### 	199;;qqq1u-uQyy999 ggii3;;==1Q3/q;;; QAKKMMQWq!f%%%199;;qs111u-uQyy999 ggii3;;==1QQQ/q;;;;;r<   c                    t          t          | j                   t          g dg dg dgd          }|                     |          }t	          |j        |j                   t	          |                                |           |                     |          }t	          |                                |                                           g dg dg}|                     |t          j	                  }t	          |j        t          j	                   |                                }t	          |j        t          j	                   t          ||           d S )Nr  r  r  r  r5  r#  r   )r  r  r  r   r   r?   r   r  rJ   r   r   )r   rS   rQ   r  r  r  das          r:   	test_ctorzTestDOK.test_ctor  s$   i!3444 <<<|||<cBBq!!QWag&&&QYY[[!$$$ q!!QYY[[!))++...		999%t2:66QWbj)))YY[[RXrz***2t$$$$$r<   c                 $   |                      d          }d|d<   t          d|                                vd           |                      d          }d|d d df<   t          t          |                                          dk    d           d S )Nr`  r   r  zUnexpected entry (0,0) in keyszUnexpected entries in keys)r  r   keysr   r  s      r:   test_ticket1160zTestDOK.test_ticket1160  s    u%%# 	QVVXX%'GHHH u%%!!!A#AFFHH"$@AAAAAr<   N)r   r   r   r"   r   rJ   r  r   r   r  r  r  r  r  r  r  rW   r<   r:   r  r  g  s        I7BJ6K5 5 5
+ 
+ 
+; ; ;< < <>% % %*B B B B Br<   r  )r`  ra  c                       e Zd ZeZdS )TestDOKMatrixN)r   r   r   r   r   rW   r<   r:   r  r            IIIr<   r  c                   p    e Zd ZeZej        ej        ej        gZ	d Z
d Zd Zd Zd Zd Zd Zd Zd	 Zd
S )TestLILc                    t          dt          j                  }d|d<   d|d<   |                     dt          j                  }d|d<   d|d<   t	          j                    dk    r2t          ||j        z  ||j        z                                             t          ||	                                j        z  ||	                                j        z                                             d S )NrV   rV   rV   rJ  y              4@r  r   ppc64le)
r   rJ   r   r  platformmachiner   r?  r   r   r0  s      r:   test_dotzTestLIL.test_dot  s    (BM**$$xr}==$$ **q13wQS(9(9(;(;<<<1q{{}}.Q[[]]_1D0M0M0O0OPPPPPr<   c                     |                      d          }d|d<   |dz  }t          |d         d           |dz  }t          |d         d           d S )Nr`  re   r  r  r   )r  r   )r   r@   s     r:   test_scalar_mulzTestLIL.test_scalar_mul  s^    v&&$aCQtWa   aCQtWa     r<   c                 ,   |                      d          }d|d<   d|d<   t          |dz                                  |                                dz             t          |dz                                  |                                dz             d S r
  r  r  s     r:   test_truediv_scalarzTestLIL.test_truediv_scalar  s    NN6""$$AF++--qyy{{R/?@@@AE??,,aiikkAo>>>>>r<   c                    |                      g dg dg          }|                      g dg dg          }|||z   f|||z
  fd|dz  fd}|                                D ]m\  }\  }}|                                } t          |d| d          |           t	          |                                |                                           n|                      dt          j        d	          
          }|                     g d          }|dd d fxx         |z  cc<   t	          |dd d f                                         |           d S )Nr   re   r   r'  r$  r   )addsubmul__i__rI  r   r   )皙?r+  r+  r   )	r  r  r,  r{   r   r   rJ   r?   r  )r   rQ   rR   r  opr   rq  rX  s           r:   test_inplace_opszTestLIL.test_inplace_ops  sn   			999566			9995661q5z1q5z1q5z# # &*ZZ\\ 	E 	E!B!VVXXF)GFL"LLL))%000v~~//1A1A1C1CDDDD vRXi-@-@AALL))	!QQQ$11QT7??,,a00000r<   c                     g dg dg}|                      t          |                    }t          |          D ]A\  }}t          |                                t          ||         |j                             Bd S )Nr  r  )ndmin)r  r   rF  r   r   r   )r   row_datarR   r  r  s        r:   test_lil_iterationzTestLIL.test_lil_iteration
  s    IIyyy)uX//ll 	R 	RFAss{{}}eHQKsx.P.P.PQQQQ	R 	Rr<   c                    |                      d          }d|d<   d|d<   d|d<   d|d	<   d
|d<   |                                }|                      |          }t          |                                |                                           d S )Nr  rV   rJ  r  r  r  )r  r   r  )r   r  r  )r  r  )r  r  r   r   )r   rR   r   r  s       r:   test_lil_from_csrzTestLIL.test_lil_from_csr  s    x(($$$$$GGIIq!!199;;		44444r<   c                 D   |                      t          d                              dd                    }|                     |          }t	          |t          g d          ddf                                         |t          g d          ddf                    d S )Nr7  r  r  re   r   )r  r   r   r  r   r   r   )r   r  rQ   s      r:   test_fancy_indexing_lilzTestLIL.test_fancy_indexing_lil  s    LL++Aq1122q!!QuYYY''1,-5577uYYY''1,-	/ 	/ 	/ 	/ 	/r<   c                    |                      d          }d|d<   d|d<   d|d<   d|d	<   |                      d          }d|d<   d|d
<   d|d<   d|d	<   d|d<   t          |                    |                                          |                    |                                                     t          |                    |                                          g dg dg dg dg           d S )Nrm  r   r  re   r)  r   r  r  r^  r<  r  ry  rf  r   r   r  )r   r  r   )r  r   r  r   )r   lr  s      r:   test_point_wise_multiplyz TestLIL.test_point_wise_multiply#  s   v&&$$$$v&&$$$$$1::a==0022::a==0022	4 	4 	4 	1::a==0022%II%II%II&JJ(	) 	) 	) 	) 	)r<   c                 p    |                      t          j        d                    }|dz  }d|dd d f<   d S )Nr`  r  r   )r  rJ   r  r]  s     r:   test_lil_multiply_removalz!TestLIL.test_lil_multiply_removal:  s;    rwv//	R!QQQ$r<   N)r   r   r   r$   r   rJ   r  r   r   r  r  r!  r#  r-  r1  r3  r5  r9  r;  rW   r<   r:   r  r    s        I7BJ6KQ Q Q! ! !? ? ?1 1 1(R R R
5 
5 
5/ / /) ) ).    r<   r  )r`  c                       e Zd ZeZdS )TestLILMatrixN)r   r   r   r   r   rW   r<   r:   r=  r=  A  r  r<   r=  c                       e Zd Zej        ej        ej        gZd Zd Z	d Z
d Zd Zej                            dd          d	             Zd
 Zd Zd Zd Zd Zd Zd Zd ZdS )BaseTestCOOc                    t          g d          }t          g d          }t          g d          }|                     |||ffd          }t          t          d                              dd          |                                           |                     dd	gd
d	gd
d	gfft          j                  }t          dd
gd
d	ggt          j                  }t          ||                                           d S )Nr  r  r  rm  r  r  r   r  r   r   r   )r   r  r   r   r   r   rJ   r  )r   r  r  r  rb  r]  s         r:   r  zBaseTestCOO.test_constructor1L  s    5556655566CCCDD  $Cy!1%886"::--a33S[[]]CCC   9a.Aq6Aq62B!C29 UU	1~1v.bi@@@5#++--00000r<   c                    t          g d          }t          g d          }t          g d          }|                     |||ffd          }t          g dg dg dg          }t          ||                                           d S )N)
r   r   re   re   re   re   r   r   re   re   )
r   re   r   re   r   r   r   r   r   re   )
re   r  r  r  r  r   r   re   r   r  r`  )r  r   r   r7  )r  r  r   )r   r  r   r   )r   r  r  r  rb  r   s         r:   r  zBaseTestCOO.test_constructor2Z  s    )))**)))**---..  $Cy!1%88ZZZJJJ7883.....r<   c                 6   |                      d          }t          |j        d           t          |j        g            t          |j        g            t          |j        g            t          |                                t          d                     d S )Nrm  )r  r   r   r  r  r  r   r   r   rb  s     r:   r  zBaseTestCOO.test_constructor3e  s      ''39U+++372&&&372&&&38B'''3;;==%--88888r<   c                    t          g dg dg dg          }|                     |          }t          |                                |           t          g d          }|                     |          }| j        r|n|                    dd          }t          |                                |           t          j        t          d          5  |                     g dg d	g d
f           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     g dd           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   )r  r   r   r   )r   r  r   r   r   r   zobject cannot be interpretedrk  )r   r)     !   r  r  r  r  rn  )
r   r  r   r   r  r   r  r   r  r  )r   r   rb  rq  s       r:   r  zBaseTestCOO.test_constructor4o  s   YYYYYYY  ! !   %%3;;==#... III  %%,D33#++a2D2D3;;==(333 ]9,KLLL 	N 	N|||0LMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N ]:-CDDD 	> 	>f===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s$   C==DD#E

EEc                     dg}|                      |dgdgffd           }|j        t          j        |          j        k    sJ d S )Nr   r   r   )r  r?   rJ   r   )r   r  rb  s      r:   "test_constructor_data_ij_dtypeNonez.BaseTestCOO.test_constructor_data_ij_dtypeNone  sR    s  $!qc
!34 @@yBHTNN0000000r<   FzCOO does not have a __getitem__runr  c                     d S r>   rW   r   s    r:   r  zBaseTestCOO.test_iterator      r<   c                     ddgg}|                      |                                          }t          |                                |           d S rj   )r  todiar   r   )r   r   r{  s      r:   test_todia_all_zerosz BaseTestCOO.test_todia_all_zeros  sJ    Q  ''--//3;;==%00000r<   c                 H   |                      d          }|                                 |                      ddgddgddgff          }|                                 t          |                                ddgddgg           |                      ddgddgddgff          }|                                 t          |                                ddgddgg           t          |j        dg           t          |j        dg           t          |j        dg           d S )Nrm  r   re   r   r   )r  r  r   r   r  r  r  rC  s     r:   test_sum_duplicateszBaseTestCOO.test_sum_duplicates  s%     ''  1Q%1Q%!A!8993;;==Aa5!A-888  1Q%1Q%!A!8993;;==Aa5!A-88837QC(((37QC(((38aS)))))r<   c                     |                      g dg dg dff          }|                                }t          |                                |                                           d S )Nr  r  r  )r  r  r   r   )r   rb  rD   s      r:   test_todok_duplicatesz!BaseTestCOO.test_todok_duplicates  s^      )))iii-C!DEEiikk3;;==#++--88888r<   c                    |                      g dg dg dff          }|                                }t          |j        dz   |j                   |                                }t          |j        dz   |j                   d S )Nr  r  r  re   )r  r  r   rg  r  )r   rb  r7  r6  s       r:   test_tocompressed_duplicatesz(BaseTestCOO.test_tocompressed_duplicates  s{      )))iii-C!DEEiikkSWq[#'***iikkSWq[#'*****r<   c                 r   |                      d          }t          |j        d           t          j        g dg          }t          j        dg          t          j        dg          t          j        dg          ff}t          j        ddg          t          j        ddg          t          j        ddg          ff}|                      |          }|j        du sJ |                      |          }|j        du sJ |                                 |j        du sJ |                      |d          }|j        du sJ |                      |d          }|j        du sJ |                                 |j        du sJ |                      |          }|j        du sJ t          |j        d           |                                 |j        du sJ t          |j        d           d|_        t          |j        d           t          |j        d           |                                 t          |j        d           |                      |          }d|_        t          |j        d           t          |j        d           |                                 t          |j        d           d	S )
r  r  Tr  re   r   r   Fr  N)r  r   r  rJ   r   r  rg  )r   rQ   A_arrayA_coords_formA_coords_dupss        r:   r  z%BaseTestCOO.test_has_canonical_format  s    v&&Q+T222(III;''1#1#!(FG1a&))BHaV,<,<bh1v>N>N+OPw''%----}--%....	%----qt,,%----qu--%....	%----}--%....QUA	%----QUA "'Q+U333QUA	Q+T222}--!%Q+T222QUA	QUAr<   c                    t          g d          }t          g d          }t          g d          }|                     |||ffd          }|                                }|                                 t	          |j        dk                                               t          |                                |                                           d S )Nr  )r   r   r   r   r   r   r   r   r  r  rn  r   )	r   r  r,  r  r   r  ri  r   r   )r   r  r  r  rN  rO  s         r:   r  z BaseTestCOO.test_eliminate_zeros  s    ---..,,,--,,,--  $c
!36 BBhhjjQ##%%&&&3;;==#++--88888r<   c                    g dg dg dg}d}|                      |          }|                    |          }t          |j        |j        u            |                    |d          }t          |j        |j        u            |                    |d          }t          t	          j        |j        |j                              d S )Nr  r  r  r  Fr  T)r  r   r   r  rJ   rP   )r   ro   	new_shaper@   rA   s        r:   test_reshape_copyzBaseTestCOO.test_reshape_copy  s    }}lllOOO<	s##IIi  !& !!!IIieI,,!& !!!IIidI++B'77788888r<   c                 >   |                      dgdgdgffd          }|                      dgdgdgffd          }t          |                    dd          |k    j        dk               t          |                    dd	          |k    j        dk               d S )
Nr   i- rp  )-   )ra  r`  r   r  r   r  )r  r   r   rg  )r   mat1mat2s      r:   test_large_dimensions_reshapez)BaseTestCOO.test_large_dimensions_reshape  s     !!A3'TF(;"<oNN!!A3$'(;"<oNN 	oS99TAF!KLLLoS99TAF!KLLLLLr<   N)r   r   r   rJ   r  r   r   r  r  r  r  r  rI  r  r  xfailr  rP  rR  rT  rV  r  r  r^  rd  rW   r<   r:   r?  r?  I  s"       7BJ6K1 1 1	/ 	/ 	/9 9 9> > >,1 1 1
 [5)JKK  LK1 1 1
* * *9 9 9
+ + ++ + +Z9 9 99 9 9	M 	M 	M 	M 	Mr<   r?  c                       e Zd ZeZdS )TestCOON)r   r   r   r#   r   rW   r<   r:   rg  rg    s         IIIr<   rg  )rY  rZ  r[  r\  r]  c                       e Zd ZeZdS )TestCOOMatrixN)r   r   r   r   r   rW   r<   r:   ri  ri    s        
 IIIr<   ri  c                     t           t          j        t          t                   f         } t          | t                    sJ | j        t           u sJ | j        t          j        t          t                   fk    sJ t           t          j                 } t          | t                    sJ | j        t           u sJ | j        t          j        fk    sJ d S r>   )	r#   rJ   r   r$  r  rI   r   r  r  r  s    r:   test_sparray_subscriptablerk    s    rwc
*+Ffl+++++	))))?rwc
33333rwFfl+++++	))))?rwj((((((r<   c                   6   e Zd ZeZej        ej        ej        gZ	d Z
ej                            dd          d             Z ed          d             Zd Zd	 Zej                            d
          d             Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestDIAc                 2   t          g dg dg dg dg          }t          j         g dg                              dd          }t          j         g d	          }t          |                     ||fd
                                          |           d S )N)r   r   r   r   )r   re   r   r  )r   re   r   r   )r   r   r   r  r  r   r   rd  r   r   re   r  rn  )r   rJ   repeatr   r  r   )r   r  r  r  s       r:   r  zTestDIA.test_constructor1   s    <<<<<<<<<! " " x$$++A1+55(888$$T''wv'FFNNPPRSTTTTTr<   FzDIA does not have a __getitem__rJ  c                     d S r>   rW   r   s    r:   r  zTestDIA.test_iterator)  rM  r<   r   c                    |                      t          j        d                    }t          |j        j        t          j                   |                    dd           t          |j        j        t          j                   |                      t          j        d                    }t          |j        j        t          j                   |                    dd           t          |j        j        t          j                   d S )Nr   r]  re   r  r  )	r  rJ   r'   r   r  r?   r[   r  rf   r   r  s     r:   test_setdiag_dtypezTestDIA.test_setdiag_dtype-  s    rvayy))QY_bh///			$!	QY_bh///rvayy))QY_bh///			$!	QY_bh/////r<   c                    dgg}g dg}|dgdddgddggdf|dgdddgddggdf|dgdddgddggdf|d	gdddgddggd
f|dgdddgddggdf|dgdddgddggdf|dgdddgddggdf|d	gdddgddggdfd d dddgddggdfddggdgdddgddggdft          j        dd                              d          g ddddgddggdft          j        dd                              d          g ddddgddggdfgS )Nr   r  r   r   zshorter diagonal withinz+shorter diagonal above (but within if full)r   z$shorter diagonal, all elements abover  z$shorter diagonal, all elements belowz"longer diagonal within (only head)re   z"longer diagonal within (only tail)z#longer diagonal, all elements abovez#longer diagonal, all elements belowzempty inputzexplicit zerosr  )r  r   )r   r   re   r   r   rE  r  r  z)overfilled shorter-diagonal, out of orderrF  )r  r   r     z(overfilled longer-diagonal, out of order)rJ   r   r   )r   d1d3s      r:   	ill_caseszTestDIA.ill_cases9  s   
 cUii[bT11v1v.*,aS11v1v.>@aS11v1v.79bT11v1v.79bT11v1v.57aS11v1v.57aS11v1v.68bT11v1v.68tQ!Q!Q 0 a&A3QFQF#3!#1e$$,,V44)))aVaV$<> 1i((0088)))aVb!W%;=1> 	>r<   c                    |                                  D ]i\  }}}}}dD ]^}||                     |          }n|                     ||f|          }d|v rd}|                                |k    sJ d|z               _jd S )Nr  r  r  rn  r   case: )ry  r  _getnnz)r   r  ofsetsrg  refcaser   rQ   s           r:   test_getnnzzTestDIA.test_getnnz^  s    ,0NN,<,< 	; 	;(D&#sD1 ; ;<**511AA**D&>*GGA::Cyy{{c)))8d?))));	; 	;r<   zDIA stores extra zerosr  c                     d S r>   rW   r   s    r:   rH  zTestDIA.test_getnnz_axisi  rM  r<   c                    |                                  D ]\  }}}}}dD ]}||                     |          }n|                     ||f|          }|                                }t          j        |          d |d         d |d         f         }	t          j        |	          }
|j        |
k    sJ t          |                                |	d|z              d S )Nr{  rn  r   r   r|  r  )	ry  r  r  rJ   r   rh  rg  r   r   )r   r  r~  r#  r  r  r   rQ   rR   r  rg  s              r:   
test_tocsrzTestDIA.test_tocsrm  s     )-(8(8 
	N 
	N$D&!Q1 	N 	N<**511AA**D&>*GGAGGIIhqkk)58)YeAhY"67&s++u||||"199;;X_MMMMM	N
	N 
	Nr<   c                 8   |                      g dgdgfd          }|                                }t          |                                                                |           t          |                                                                |           d S )Nr  r   rU  rn  )r  r   r   r  r  )r   r  rq  s      r:   test_convert_gh14555zTestDIA.test_convert_gh14555}  s    bT2&AA99;;17799,,..99917799,,..99999r<   c                    |                      ddgddgg                                          }t          j        |j        |j        f|j                  }t          j        t          j        |          dk              }|j	        |k    sJ d S )Nr   re   r   r  r   )
r  r  rJ   ravel_multi_indexr  r  r   ri  diffr  )r   r  	flat_indsinds_are_sorteds       r:   test_tocoo_gh10050zTestDIA.test_tocoo_gh10050  s    AA/006688(!%AA	&!3!3a!788%888888r<   c                    t          j        g dg                              dd          }t          j        g dt           j                  }t	          j        ||fd          }|                                }|j        j        t           j        k    sJ |	                                }|j
        j        t           j        k    sJ |                                }|j
        j        t           j        k    sJ d S )	Nr  r   r   rd  ro  r   r  rn  )rJ   r   rp  r[   r   r%   r  r  r?   r  r  r  )r   r  r  r{  rb  r7  r6  s          r:   test_tocoo_tocsr_tocsc_gh19245z&TestDIA.test_tocoo_tocsr_tocsc_gh19245  s    x''..qq.99(:::RX666gf===iikkw}((((iikk{ BH,,,,iikk{ BH,,,,,,r<   c                    t          ddg          }|t          dgd          z   }|                     |          }|                     |          }||z   }t          || j                  sJ t          |                                ||z              ||z   }t          || j                  sJ t          |                                ||z              d S )Nr   re   r   )r   r  rI   r   r   r   rQ   rR   r,  r  r  s         r:   test_add_sparsezTestDIA.test_add_sparse  s    !QLLaS!  ##  ##Ci#t1222223;;==!a%000Ci#t1222223;;==!a%00000r<   c                 r   t          ddg          }|t          dgd          z   }|                     |          }|                     |          }||z
  }t          || j                  sJ t          |                                ||z
             ||z
  }t          || j                  sJ t          |                                ||z
             |                    d          }t          ||z
                                  ||z
             t          ||z
                                  ||z
             d S )Nr   re   r   r7  )r   r  rI   r   r   r^  r  s         r:   test_sub_sparsezTestDIA.test_sub_sparse  s&   !QLLaS!  ##  ##Ci#t1222223;;==!a%000Ci#t1222223;;==!a%000ll5!!C#I..00!a%888C#I..00!a%88888r<   c                 l   |                      ddgddgg          }|dz  }t          ||j                  sJ t          |                                ddgddgg           |                    d          }t          ||j                  sJ t          |                                ddgddgg           d S )Nr   re   r   r  r   r   r  )r  rI   r  r   r   r  )r   r  resres2s       r:   r  zTestDIA.test_mul_scalar  s    AA/00!e#q{+++++3;;==Aq6Ar7*;<<<zz!}}$,,,,,4<<>>QFQG+<=====r<   c                 4   t          g dg dg          }t          ddgddgddgg          }|                     |          }|                     |          }d	|j        |j        d
k    <   d	|j        |j        d
k    <   t          |                                |           t          |                                |           ||z  }||z  }t          || j                  sJ t          |                                |           t          |j        g d           t          |j        |                     |          j                   ||z  }||z  }t          || j                  sJ t          |                                |           t          |j        g d           t          |j        |                     |          j                   |                     g dg dgddgfd          }|                     g dg dgd	dgfd          }||z  }t          |j        t          dd
g                     t          |j        g dg dg           ||z  }t          |j        t          dd
g                     t          |j        g dg dg           d S )Nr  r  r)  r  rv  r  r  r  r   r   r  )rE  r   r   r   re   )r  r  r  )r  r  r  r   rE  r  )r  r  r  )r  r  r  re   r  )      8@g     A@r  )r        ,@      ;@)r  r  r  )r  r  r  )r   r  r  r   r   rI   r  )r   rQ   rR   r,  r  r   r  s          r:   test_matmul_diazTestDIA.test_matmul_dia  s    99999  B888     ##  ##"$Q"$Q3;;==!,,,3;;==!,,,ECi#t1222223;;==!,,,3;


33338T%7%7%:%:%?@@@ECi#t1222223;;==!,,,3;(9(9(9:::38T%7%7%:%:%?@@@   <<<">B!H&QQ  <<<">Q!H&QQCi3;r1g77738nnn&4nn&6 	7 	7 	7 Ci3;r1g77738mmm&4nn&6 	7 	7 	7 	7 	7r<   N)r   r   r   r%   r   rJ   r  r   r   r  r  r  r  re  r  r   rt  ry  r  r  rH  r  r  r  r  r  r  r  r  rW   r<   r:   rm  rm    sc        I7BJ6KU U U [5)JKK  LK Q	0 	0  	0#> #> #>J	; 	; 	; [566  76N N N : : :9 9 9- - -1 1 19 9 9&	> 	> 	>*7 *7 *7 *7 *7r<   rm  )rY  rZ  r[  r\  r]  r`  ra  c                       e Zd ZeZdS )TestDIAMatrixN)r   r   r   r   r   rW   r<   r:   r  r    r  r<   r  c                      e Zd ZeZej        ej        ej        g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ej                            dd          d             Zej                            dd          d             Zd Zej                            dd          d             Zej                            ed          d             ZdS )TestBSRc                 R   t          g d          }t          g d          }t          d          }t          g dg dg          |d<   t          g dg dg          |d	<   t          g d
g dg          |d<   t          g dg dg          |d<   t          g dg dg dgg dg dg          }|                     |||fd          }t	          |                                |           |                     |||f          }t	          |                                |           d S N)r   re   re   r  )r   re   re   r   )r  re   r   r5  rb  r   r  )r   r   rV   r   )r   r  r  )r  r   r  re   )r   r  rV   )r  r   r7  r   r  r  ra  r   r  rn  )r   r   r   r   r   r   )r   r  r  r  rQ   r,  s         r:   r  zTestBSR.test_constructor1  se   yyy!!			""W~~"$ % %Q#% & &Q$& ' 'Q$& ' 'Q )))IIIiii07777772CDD  $wv!6V DDS[[]]A&&&   $wv!677S[[]]A&&&&&r<   c                    dD ]F}t          |          }t          |                     |                                          |           Gt          d          }t          |                     |d                                          |           t          |                     |d                                          |           t	          g dg dg dgg d	g d
g          }t          |                     |                                          |           t          |                     |d                                          |           t          |                     |d                                          |           t          |                     |d                                          |           t          |                     |d                                          |           t          |                     |d                                          |           t          |                     |d                                          |           t          |                     |d                                          |           t	          g dg dg dgg d	g d
g          }t          |                     |d                                          |           d S )N)r)  r  r  )rV   r  )r   r  rM  )r  r   r  rd  r  r  r  ra  r5  rb  r  rn  r)  r  )re   r  )r   r  rE  )r   r   r   r   r   )r   r   rQ   s      r:   r  zTestBSR.test_constructor2  s    B 	= 	=EeA++A..6688!<<<<%LLT''V'<<DDFFJJJT''V'<<DDFFJJJ)))IIIiii07777772CDDT''**2244a888T'''99AACCQGGGT''V'<<DDFFJJJT''V'<<DDFFJJJT''V'<<DDFFJJJT''W'==EEGGKKKT''W'==EEGGKKKT''W'==EEGGKKK)))IIIiii07777772CDDT''V'<<DDFFJJJJJr<   c                     g dg dg dff}t          ddgddgg          }t          |                     |d	                                          |           d S )
Nr  r!  r  r   r   re   r   r  rd  )r   r   r   r   )r   argrQ   s      r:   r  zTestBSR.test_constructor30  sk    ww'''*+Aa5!A-  T''v'>>FFHH!LLLLLr<   c                    d}t          j        ||dft           j                  }t          j        d|gt           j                  }t          j        |t           j                  }|                     |||f|dfd           d S )Nr  r   r   r   F)re  r,  )rJ   r  r   r   r[   r   r   )r   r  r  r  r  s        r:   r  zTestBSR.test_constructor46  s     w1ay0001a&111)ARX...D'62q!f5QQQQQr<   c                 V   d}t          j        |          }t          j        |||f          }t          j        d|g          }t          j        |          }t	          t
                    5  |                     |||f           d d d            n# 1 swxY w Y   t	          t
                    5  |                     |||fd           d d d            n# 1 swxY w Y   t	          t
                    5  |                     |||fd           d d d            d S # 1 swxY w Y   d S )Nr  r   rv  rd  r)  )rJ   r  r   r   r  r  r   )r   r  	data_1dimr  r  r  s         r:   r  zTestBSR.test_constructor5?  s   GAJJ	w1ay!!1a&!!)A,,:&& 	= 	=	7F;<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= :&& 	M 	Mgv6)LLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M :&& 	J 	Jgv6&III	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	Js6   ,BBB0CCC6DD"%D"c                 "   dgdggdgdggg}t          j        ddgt           j                  }t          j        ddgt           j                  }|                     |||fd          }|j        t          j        |          j        k    sJ d S )Nr   r   re   r   rM  rd  )rJ   r   r[   r   r?   )r   rH   r  r  rS   s        r:   test_default_dtypezTestBSR.test_default_dtypeS  s    3*sQCj)1a&111(Aq62228FKKw"(6**0000000r<   c                    t          g d          }t          g d          }t          d          }t          g dg dg          |d<   t          g dg dg          |d	<   t          g d
g dg          |d<   t          g dg dg          |d<   t          g dg dg dgg dg dg          }|                     |||fd          }|                                }|                                                                }t          |                                |           t          |                                |                                           d S r  )r   r   r   r   r  r  r   r   )r   r  r  r  rQ   AbsrAcsrAcsr_via_coos           r:   test_bsr_tocsrzTestBSR.test_bsr_tocsr[  s   |||$$%%Y"$ % %Q#% & &Q$& ' 'Q$& ' 'Q ,,,lll;))YYY') )!!4&"9!IIzz||zz||))++T\\^^Q'''T\\^^\%9%9%;%;<<<<<r<   c                    t          g dddgddgg          j        }|                    ddd          }t          g d          }t          g d          }|                     |||fd          }|                                }|                                 t          |j        d	           t          |	                                |	                                           d S )
Nr  r   r   re   r  r  )r  r  rn  r  )
r   r?  r   r   r   r,  r  r   rg  r   r  s         r:   r  zTestBSR.test_eliminate_zerosr  s    ,,,!uaUm<<>||Bq##00011yyy!!  $!8 GGhhjj37C(((3;;==#++--88888r<   c                 Z   t           j                            d           |                     t           j                            d          d          }d|j        |j        dk    <   |                                 t          |j        d           t          |j        j	        d           d|j        |j        dk    <   |                                 t          |j        d           t          |j        j	        d	           t          |
                                t          j        d                     |                                 t          |j        d           t          |j        j	        d	           t          |
                                t          j        d                     d S )
Nr   )r  r  r  rd  g?B   )r)  re   r   r  r%  )rJ   r   r  r   r  r  r   rg  r   r   r   r   rs  s     r:   test_eliminate_zeros_all_zeroz%TestBSR.test_eliminate_zeros_all_zero~  sZ   
	qry//99VLL !"qv}	QUB16<444 !"qv}	QUA16<333199;;(:(:;;; 	
QUA16<333199;;(:(:;;;;;r<   c                 D   t          j        g dg dg dg          }|                     |          }t          d|j                   t          j        ddg          }t          j        ||dz  g          }t          j        ddg          }|                     |||f                                          }t          d|j                   t          |j        t                    sJ |                                 t          d|j                   t          dt          |j
                             |                     |||f                                          }d|_        t          d|j                   t          dt          |j
                             |                                 t          dt          |j
                             d|_        |                                 t          dt          |j
                             t          d|j                   |                     |          }d|_        t          d|j                   t          dt          |j
                             |                                 t          d|j                   |                     |          }|||c|_        |_
        |_        t          d|j                   t          dt          |j
                             |                     |          }|j         |||c|_        |_
        |_        t          d|j                   t          dt          |j
                             |                                 t          dt          |j
                             d	S )
r  )re   r   re   )r   re   r   )r  r   re   Tr   re   Fr   N)rJ   r   r   r   r  r,  rI   r  r  r   r  r  r  )r   rQ   r  r  r  r  s         r:   r  z!TestBSR.test_has_canonical_format  s4    HiiiJJJ788q!!T11222(Aq6""xAaC!!1a&!!gv677<<>>UA2333!0$77777	T11222QAI''' gv677<<>>!%T11222QAI'''	QAI'''!&	QAI'''T11222 q!!!&UA2333QAI'''	T11222 q!!&*GV#	18UA2333QAI''' q!!	&*GV#	18T11222QAI'''	QAI'''''r<   c                 "   |                      t          d                              dd          d          }t          |j        d                                       dd          }t	          ||z  |                                |z             d S )Nx   r  r  r  r  rd  r   r   r   r   r   r   r   r   ry  s      r:   test_bsr_matveczTestBSR.test_bsr_matvec  sy    vg66s3??5QQ171:&&r!,,QUAIIKK!O,,,,,r<   c                 (   |                      t          d                              dd          d          }t          |j        d         dz                                dd          }t	          ||z  |                                |z             d S )	Nr  r  r  r  rd  r   r   r   r  ry  s      r:   test_bsr_matvecszTestBSR.test_bsr_matvecs  s}    vg66s3??5QQ171:a<  ((A..QUAIIKK!O,,,,,r<   FzBSR does not have a __getitem__rJ  c                     d S r>   rW   r   s    r:   r  zTestBSR.test_iterator  rM  r<   zBSR does not have a __setitem__c                     d S r>   rW   r   s    r:   r  zTestBSR.test_setdiag  rM  r<   c                    t          j        g dg dg dg          }|                     |d          }t          |                    d          d u            t          |                                ddgd	dgd
dgg           |                    d           t          |                                ddgd	dgg           |                    d           t          |                                ddgd	dgddgg           |                    d           t          |                                g dg dg dg           t          t          |j        d           d S )Nr  r  r  r  rd  r  r   r   re   r   r  r  r  r  r  )	rJ   r   r   r   r  r   r   r  r  r  s      r:   test_resize_blockedzTestBSR.test_resize_blocked  s   Hlll"ll"ll$ % % NN1N//  D()))199;;!Q*+Q*+Q)1 	2 	2 	2 	
199;;!Q*+Q)1 	2 	2 	2	199;;!Q*+Q*+Q)1 	2 	2 	2 	
199;;)5)5)7 	8 	8 	8 	j!(F33333r<   c                     d S r>   rW   r   s    r:   r  z"TestBSR.test_setdiag_comprehensive  rM  r<   zexceeds memory limitr  c                 ,   t          j        dt           j                  }t          j        dt           j                  }t          j        d          }|                     |||fd          }|                     |||fd          }|                     d          }|                     d          }t	          |j        j        t           j                   t	          |j        j        t           j                   t	          |j        j        t           j                   t	          |j        j        t           j                   	 t          j        d          }t          j        d	          }	|                     |||fd          }
|                     |	||fd          }t	          |
j        j        t           j                   t	          |j        j        t           j                   n# t          t          f$ r d}
d}Y nw xY w|||||
|fD ]}||z    d S )
Nre   r   r   r!  r  rn  r  )r   r   r  )r   r   r  )
rJ   r   r[   r   r   r  r?   rf   MemoryErrorr  )r   r  r  rq  rN   rS   r  r  vals2vals3r  r  r@   s                r:   r  zTestBSR.test_scalar_idx_dtype  s    !28,,,(1BH---x	""gv6lKKgv6jII|,,z**QX^RX...QX^RX...QX^RX...QX^RX...
	H_--EH]++E""E7F#;<"PPA""E7F#;:"NNA2222222Z( 	 	 	AAAA	 Q1a# 	 	AEEE	 	s   B$G) )H HN) r   r   r   r&   r   rJ   r  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  re  r  r  r  r  skipifIS_COLABr  rW   r<   r:   r  r    s        I7BJ6K' ' '.K K K0M M MR R RJ J J(1 1 1= = =.	9 	9 	9< < <.7( 7( 7(r- - -
- - -
 [5)JKK  LK [5)JKK  LK4 4 4. [5)JKK  LK [)?@@  A@  r<   r  )rY  rZ  r[  r\  r]  ra  c                       e Zd ZeZdS )TestBSRMatrixN)r   r   r   r   r   rW   r<   r:   r  r    r  r<   r  c                    |                     dd          }t          j        | j        t          j                  s$t          j        | j        t          j                  r|| f|z   S | f|z   |fz   S | dk                                    }|                     dd          } | dddxx         dz  cc<   d| ddd<   |d         j        dk    rTt          d |D                       }d|d         z  f|dd         z   }d|d         z  dz   f|dd         z   }d| |<   d| |<   t          d |D                       }|| f|z   S | f|z   |dz  fz   S )	z-Duplicates entries to produce the same matrixr  Nr   re   rd  r   c              3   &   K   | ]}|d          V  dS r   rW   )r&  ps     r:   	<genexpr>z&_same_sum_duplicate.<locals>.<genexpr>;  s&      ,,QAaD,,,,,,r<   c              3   @   K   | ]}|                     d           V  dS )re   N)rp  )r&  r  s     r:   r  z&_same_sum_duplicate.<locals>.<genexpr>A  s.      77w""777777r<   )
poprJ   rl   r?   r  unsignedintegerr*  rp  rk   r$  )r  indsrB   r  	zeros_pospospos1pos2s           r:   _same_sum_duplicater  (  s   ZZ$''F	}TZ** .	}TZ!344.>7T>!7T>VI--##%%I ;;qq;!!D1IIINIIIDAJ |1,,),,,,,#a&{SW$#a&
}s122w&T
T
77$77777D~w~w~!--r<   c                        e Zd Zdd fd
Zej                            d          d             Zej                            d          d             Zej                            d	          d
             Z	 xZ
S )_NonCanonicalMixinFsorted_indicesc                :   t                      j        } ||g|R i |}|                                dk                                    }|d         j        dk    }|r|d         j        dz  }	t          j                    5  t          j        dt          t                     | 
                    ||d         |	         |d         |	                   }ddd           n# 1 swxY w Y   |                     ||          }
d|vr
|j        |d<    ||
fi |}|j        t          j        t          j        fv rd}nd}t#          |                                |                                |	           |r*t%          |j        dk                                               |S )
zcReplace D with a non-canonical equivalent: containing
        duplicate elements and explicit zerosr   re   r(  r   Nr   gh㈵>gHz>)rtol)superr   r   r*  rk   r)  r*  r
  r  r)   _insert_explicit_zero_arg1_for_noncanonicalr   r?   rJ   r   r  r   r   r  r  )r   r  r  r|  rB   	constructr  zero_pos	has_zerosr  arg1NCr  r  s                r:   r   z_NonCanonicalMixin.spcreatorJ  s    GG%	Ia)$)))&))IIKK1$--//a[%)	 	R !#A(** R R'$8OPPP..q(1+a.(1+a.QQR R R R R R R R R R R R R R R **1n==&  gF7OYt&&v&& 8
BL111
 DDD

aiikk====  	*RW\&&(())) 	s   ACC!$C!z"bool(matrix) counts explicit zerosr  c                     d S r>   rW   r   s    r:   r   z_NonCanonicalMixin.test_boolo  rM  r<   z!getnnz-axis counts explicit zerosc                     d S r>   rW   r   s    r:   rH  z#_NonCanonicalMixin.test_getnnz_axiss  rM  r<   znnz counts explicit zerosc                     d S r>   rW   r   s    r:   ri  z_NonCanonicalMixin.test_emptyw  rM  r<   )r   r   r   r   r  r  r  r   rH  ri  __classcell__)r  s   @r:   r  r  I  s        16 # # # # # # #J [ABB  CB [@AA  BA [899  :9    r<   r  c                       e Zd ZddZd ZdS )_NonCanonicalCompressedMixinFc                 >   t          |j        |j        |j                  \  }}}|srt	          ||dd                   D ]Y\  }}|||         ddd                                         |||<   |||         ddd                                         |||<   Z|||fS )5Return non-canonical constructor arg1 equivalent to M)r  r   Nr   )r  r  r  r  r  r,  )r   r  r  r  r  r  startstops           r:   r  z3_NonCanonicalCompressedMixin._arg1_for_noncanonical}  s     3AFAI;<8!E !E !Egv 	A"66!"":66 A At&-eDj&9$$B$&?&D&D&F&Fd
##'d
#3DDbD#9#>#>#@#@U4Z  Wf$$r<   c                     d|||f<   |S rj   rW   r   r  r  r  s       r:   r  z2_NonCanonicalCompressedMixin._insert_explicit_zero  s    !A#r<   N)F)r   r   r   r  r  rW   r<   r:   r  r  |  s7        % % % %    r<   r  c                       e Zd Zd Zd Zej                            dd          d             Zej                            dd          d             Z	d	S )
_NonCanonicalCSMixinc                 l      fd}t           D ]%}dD ] } |t          j        |          |           !&d S )Nc                 b   t          g dg dg dg dg|           }	                    ||          }|j        \  }}t          | |          D ]6}t          | |          D ]"}t	          |||f         |||f                    #7dD ]$}t          t          t          f|j        |           %d S )Nry  r  r  rf  r   r  r  )	r   r   r   r"  r   r  r  r  r  )
r?   r  r  rQ   r  r  r  r  r'  r   s
            r:   r  z3_NonCanonicalCSMixin.test_getelement.<locals>.check  s    wwwwwwwww  (-. . .A q@@A'CAaA2q\\ 1 1r1 1 1A 1Q31Q300001 C J Jz95q}bIIIIJ Jr<   )FTr  )r   r  r?   r  s   `   r:   r  z$_NonCanonicalCSMixin.test_getelement  sm    	J 	J 	J 	J 	J  & 	7 	7E"/ 7 7bhuoo~66667	7 	7r<   c                    t          j        d          }|                     |          }|                     g dg          }|                                |dd d f<   t	          j                    5  t	          j        dt          t                     ||dd d f<   d d d            n# 1 swxY w Y   t          |                                |           |                                
                                |d d df<   t	          j                    5  t	          j        dt          t                     |j        |d d df<   d d d            n# 1 swxY w Y   t          |                                |           d S )Nr   r  r   r(  re   )rJ   r'   r   r   r)  r*  r
  r  r)   r   r  r?  )r   r  rQ   rR   s       r:   test_setitem_sparsez(_NonCanonicalCSMixin.test_setitem_sparse  s   F1IINN1NNGGG9%%!AAA#$&& 	 	#Hd4KLLLAacF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	199;;***""$$!!!A#$&& 	 	#Hd4KLLLSAaaacF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	199;;*****s$   0*B&&B*-B*/EEEFz(inverse broken with non-canonical matrixrJ  c                     d S r>   rW   r   s    r:   r  z_NonCanonicalCSMixin.test_inv  rM  r<   z&solve broken with non-canonical matrixc                     d S r>   rW   r   s    r:   r  z_NonCanonicalCSMixin.test_solve  rM  r<   N)
r   r   r   r  r  r  r  re  r  r  rW   r<   r:   r  r    s        7 7 7*+ + +" [5)STT  UT [5)QRR  SR  r<   r  c                       e Zd ZdS )TestCSRNonCanonicalNr   r   r   rW   r<   r:   r  r            Dr<   r  c                       e Zd ZdS )TestCSRNonCanonicalMatrixNr  rW   r<   r:   r  r    r  r<   r  c                       e Zd ZdS )TestCSCNonCanonicalNr  rW   r<   r:   r  r    r  r<   r  c                       e Zd ZdS )TestCSCNonCanonicalMatrixNr  rW   r<   r:   r  r    r  r<   r  c                       e Zd Zd Zej                            dd          d             Zej                            dd          d             ZdS )	TestBSRNonCanonicalc                 n    |                                 }d|||f<   |                    |j                  S )Nr   rd  )r  r  re  )r   r  r  r  r@   s        r:   r  z)TestBSRNonCanonical._insert_explicit_zero  s2    GGII!A#www---r<   Fz&diagonal broken with non-canonical BSRrJ  c                     d S r>   rW   r   s    r:   r  z!TestBSRNonCanonical.test_diagonal  rM  r<   z"expm broken with non-canonical BSRc                     d S r>   rW   r   s    r:   r  zTestBSRNonCanonical.test_expm  rM  r<   N)	r   r   r   r  r  r  re  r  r  rW   r<   r:   r  r    s        . . .
 [5)QRR  SR [5)MNN  ON  r<   r  c                       e Zd ZdS )TestBSRNonCanonicalMatrixNr  rW   r<   r:   r  r    r  r<   r  c                   "    e Zd ZddZd Zd ZdS )COONonCanonicalMixinNc                 V    t          |j        |j        |j                  \  }}}|||ffS )r  )r  r  r  r  )r   r  r  r  r  r  s         r:   r  z+COONonCanonicalMixin._arg1_for_noncanonical  s.    ,QVQUAEBBc3c3Zr<   c                 h   t           j        |j        j                            d          |j        f         |_        t           j        |j        j                            |          |j        f         |_        t           j        |j        j                            |          |j        f         |_        |S rj   )rJ   r_r  r?   rV  r  r  r  s       r:   r  z*COONonCanonicalMixin._insert_explicit_zero  s|    qv|((++QV34aek&&q))1501aek&&q))1501r<   c                 N   |                      t          j        d                    }|                                 |                    ddgd           |                                 t          t          j        t          j        |j                  dk                         d S )Nr   re   r   r  r   )	r   rJ   r'   r  r  r   ri  r  r  rs  s     r:   test_setdiag_noncanonicalz.COONonCanonicalMixin.test_setdiag_noncanonical  s    NN26!99%%				1a&A		rwqu~~*++,,,,,r<   r>   )r   r   r   r  r  r  rW   r<   r:   r
  r
    sF               
  - - - - -r<   r
  c                       e Zd ZdS )TestCOONonCanonicalNr  rW   r<   r:   r  r    r  r<   r  c                       e Zd ZdS )TestCOONonCanonicalMatrixNr  rW   r<   r:   r  r    r  r<   r  c                  x   t          j        g dg          } t          j        dgdgdgg          }t          j        g dg dg          }t          j        dgg          }t          j        dgg          }t          j        g dg          }t          t          t          t
          fD ]} ||                               d          } ||                              d	          } ||                              d          }	 ||                              d
          }
 ||                              d          } ||                              d          }t          |                                t          j	        | d                     t          |                                t          j	        |d	                     t          |	                                |           t          |
                                t          j	        |d
                     t          |                                t          j	        |d                     t          |                                t          j	        |d                     t          j        t          d          5   |g dg dg                              d           d d d            n# 1 swxY w Y   t          j        t          d          5   |g dg                              d           d d d            n# 1 swxY w Y   d S )Nr  r   r   re   r  r  r  r  r  r  r  r  zcannot be broadcastrk  )r   re   r   r  rM  rn  r5  r  )rJ   r   r   r    r   r!   _broadcast_tor   r   broadcast_tor  r   r  )rN   rS   r  r  r  r  	containerres_ares_bres_cres_dres_eres_fs                r:   test_broadcast_tor    sT   
)))A
1#sQC!!A
)))YYY'((A
1#A
1#A
)))A )ZC ? ?		!**511	!**511	!**511	!**511	!**511	!**5115==??BOAu,E,EFFF5==??BOAu,E,EFFF5==??A...5==??BOAu,E,EFFF5==??BOAu,E,EFFF5==??BOAu,E,EFFF]:-BCCC 	J 	JIyyy))),--;;&;III	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J ]:-BCCC 	? 	?Iyyyk""00v0>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?#? ?s$   &&KK	K	>#L--L1	4L1	r>   )NFNNF)T)	TTTTTTTTT)r   
contextlibr   rE  r  rG  sysr)  r  r   r  numpyrJ   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   numpy.testingr   r   r   r   r   r   numpy.exceptionsr   typesr   scipy.linalgr   r6  r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   scipy.sparse._baser,   scipy.sparse._sputilsr-   r.   r/   r0   r1   scipy.sparse.linalgr2   r3   r4   r   r  r;   rC   	frozensetr  r  rT   r   r   r   r   r   r   r
  r  r  r  thread_unsafer  r  ra  r|  contextmanagerr  r  r  r  r  r  rC  rU  re  rg  rx  r  r  r  r  r   r  r  r  r=  r?  rg  ri  rk  rm  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  rW   r<   r:   <module>r,     s                  



   * * * * * *                                                  , + + + + +                C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C
 ( ' ' ' ' 'F F F F F F F F F F F F F F / / / / / / / / / /ck)/ / / /
' ' '
 %9eW-- (  ( JN?DW W W Wt  $ $ $ $ $ $ $ $6"$ "$ "$ "$ "$ "$ "$ "$H       4       D^ 7 ^ 7 ^ 7 ^ 7 ^ 7 ^ 7 ^ 7 ^ 7BA| | | | | | | |~a+ a+ a+ a+ a+ a+ a+ a+H "566% % % % % % % 76%0@ @ @ @ @ @ @ @F
OK OK OK OK OK OK OK OKd\0 \0 \0 \0 \0 \0 \0 \0~ B B Bk$ k$ k$ k$ k$ k$ k$ k$\%C %C %C %C %C %C %C %CP_K _K _K _K _K _K _K _KD`0 `0 `0 `0 `0 `0 `0 `0FL5 L5 L5 L5 L5 L5 L5 L5^
2 2 2 2 2 2 2 2:   8 AE8<JN,0%' %' %' %'X), ), ), ), ), ), ), ),Xc& c& c& c& c& 1 1 3 3 c& c& c&L	      / / / / /L' / / /) ) )      P P P P P 1 1 3 3 P P Pf      / / / / /L' / / /      _B _B _B _B _Buu=== _B _B _BD    L'               m m m m mu--- m m m`    L'               qM qM qM qM qM qM qM qMf    kt(,T/3$H H H      L%%U.3E5:P P P              	) 	) 	)U7 U7 U7 U7 U7ueE/45',u> > > U7 U7 U7p    L'               _ _ _ _ _u(-e/45).0 0 0 _ _ _D	    L'               . . .B0 0 0 0 0 0 0 0f    #5    - - - - -7 - - -`	 	 	 	 	. 	 	 		 	 	 	 	 3] 	 	 		 	 	 	 	. 	 	 		 	 	 	 	 3] 	 	 	    6   	 	 	 	 	 3] 	 	 	- - - - -- - - -(	 	 	 	 	. 	 	 		 	 	 	 	 4m 	 	 	? ? ? ? ?r<   